From 45729fca56479bd9158486e0cda0c4a94b4dd1dc Mon Sep 17 00:00:00 2001 From: Steve Brokenshire Date: Tue, 28 Jul 2015 15:06:42 +0100 Subject: [PATCH] Initial import of code already done for Xestia Address Book --- source/.directory | 5 + source/.libs/libtest.a | 1 + source/AppXestiaAddrBk.cpp | 7213 +++++++++++ source/AppXestiaAddrBk.h | 1940 +++ source/Makefile | 92 + source/Makefile.in | 44 + source/aclocal.m4 | 366 + source/autom4te.cache/output.0 | 4990 +++++++ source/autom4te.cache/output.0t | 4992 +++++++ source/autom4te.cache/output.1 | 5273 ++++++++ source/autom4te.cache/requests | 150 + source/autom4te.cache/traces.0 | 294 + source/autom4te.cache/traces.0t | 295 + source/autom4te.cache/traces.1 | 314 + source/autoscan.log | 0 source/bitmapcode.helper | Bin 0 -> 58704 bytes source/bitmaps.h | 11 + source/bitmaps/bigimgs.h | 17 + .../bitmaps/bigimgs/.exportest.cpp.kate-swp | Bin 0 -> 122 bytes source/bitmaps/bigimgs/aboutimage.cpp | 1409 ++ source/bitmaps/bigimgs/aboutimage.png | Bin 0 -> 11192 bytes source/bitmaps/bigimgs/appicon.cpp | 10713 ++++++++++++++++ source/bitmaps/bigimgs/appicon.png | Bin 0 -> 85626 bytes source/bitmaps/bigimgs/appicon48.cpp | 500 + source/bitmaps/bigimgs/appicon48.png | Bin 0 -> 3923 bytes source/bitmaps/bigimgs/appicon64.cpp | 749 ++ source/bitmaps/bigimgs/appicon64.png | Bin 0 -> 5918 bytes source/bitmaps/bigimgs/contactpersonicon.cpp | 7828 +++++++++++ source/bitmaps/bigimgs/contactpersonicon.png | Bin 0 -> 62548 bytes .../bitmaps/bigimgs/contactpersonicon48.cpp | 642 + .../bitmaps/bigimgs/contactpersonicon48.png | Bin 0 -> 5057 bytes .../bitmaps/bigimgs/contactpersonicon64.cpp | 642 + .../bitmaps/bigimgs/contactpersonicon64.png | Bin 0 -> 5057 bytes source/bitmaps/buttons.h | 14 + source/bitmaps/buttons/add.cpp | 81 + source/bitmaps/buttons/add.png | Bin 0 -> 572 bytes source/bitmaps/buttons/minus.cpp | 47 + source/bitmaps/buttons/minus.png | Bin 0 -> 296 bytes source/bitmaps/buttons/play.cpp | 68 + source/bitmaps/buttons/play.png | Bin 0 -> 463 bytes source/bitmaps/buttons/stop.cpp | 51 + source/bitmaps/buttons/stop.png | Bin 0 -> 331 bytes source/bitmaps/icons.h | 31 + source/bitmaps/icons/.directory | 4 + source/bitmaps/icons/accgroup.cpp | 70 + source/bitmaps/icons/accgroup.png | Bin 0 -> 481 bytes source/bitmaps/icons/accinet.cpp | 83 + source/bitmaps/icons/accinet.png | Bin 0 -> 587 bytes source/bitmaps/icons/acclocal.cpp | 64 + source/bitmaps/icons/acclocal.png | Bin 0 -> 432 bytes source/bitmaps/icons/accnone.cpp | 57 + source/bitmaps/icons/accnone.png | Bin 0 -> 380 bytes source/bitmaps/icons/act1.cpp | 94 + source/bitmaps/icons/act1.png | Bin 0 -> 673 bytes source/bitmaps/icons/act2.cpp | 92 + source/bitmaps/icons/act2.png | Bin 0 -> 662 bytes source/bitmaps/icons/act3.cpp | 94 + source/bitmaps/icons/act3.png | Bin 0 -> 675 bytes source/bitmaps/icons/act4.cpp | 94 + source/bitmaps/icons/act4.png | Bin 0 -> 674 bytes source/bitmaps/icons/activitywindow.cpp | 618 + source/bitmaps/icons/activitywindow.png | Bin 0 -> 4863 bytes source/bitmaps/icons/actsleep.cpp | 92 + source/bitmaps/icons/actsleep.png | Bin 0 -> 658 bytes source/bitmaps/icons/ciext.cpp | 159 + source/bitmaps/icons/ciext.png | Bin 0 -> 1194 bytes source/bitmaps/icons/cikey.cpp | 166 + source/bitmaps/icons/cikey.png | Bin 0 -> 1253 bytes source/bitmaps/icons/cilog.cpp | 157 + source/bitmaps/icons/cilog.png | Bin 0 -> 1180 bytes source/bitmaps/icons/cipto.cpp | 167 + source/bitmaps/icons/cipto.png | Bin 0 -> 1262 bytes source/bitmaps/icons/cisnd.cpp | 185 + source/bitmaps/icons/cisnd.png | Bin 0 -> 1404 bytes source/bitmaps/icons/civen.cpp | 171 + source/bitmaps/icons/civen.png | Bin 0 -> 1293 bytes source/bitmaps/icons/nossl.cpp | 60 + source/bitmaps/icons/nossl.png | Bin 0 -> 404 bytes source/bitmaps/icons/offline.cpp | 64 + source/bitmaps/icons/offline.png | Bin 0 -> 436 bytes source/bitmaps/icons/online.cpp | 59 + source/bitmaps/icons/online.png | Bin 0 -> 398 bytes source/bitmaps/icons/ssl.cpp | 62 + source/bitmaps/icons/ssl.png | Bin 0 -> 419 bytes source/bitmaps/icons/sslwarning.cpp | 71 + source/bitmaps/icons/sslwarning.png | Bin 0 -> 494 bytes source/bitmaps/misc.h | 24 + source/bitmaps/misc/.directory | 4 + source/bitmaps/misc/activity1.cpp | 554 + source/bitmaps/misc/activity1.png | Bin 0 -> 4354 bytes source/bitmaps/misc/activity10.cpp | 534 + source/bitmaps/misc/activity10.png | Bin 0 -> 4196 bytes source/bitmaps/misc/activity11.cpp | 544 + source/bitmaps/misc/activity11.png | Bin 0 -> 4276 bytes source/bitmaps/misc/activity12.cpp | 547 + source/bitmaps/misc/activity12.png | Bin 0 -> 4297 bytes source/bitmaps/misc/activity2.cpp | 543 + source/bitmaps/misc/activity2.png | Bin 0 -> 4265 bytes source/bitmaps/misc/activity3.cpp | 541 + source/bitmaps/misc/activity3.png | Bin 0 -> 4247 bytes source/bitmaps/misc/activity4.cpp | 538 + source/bitmaps/misc/activity4.png | Bin 0 -> 4226 bytes source/bitmaps/misc/activity5.cpp | 546 + source/bitmaps/misc/activity5.png | Bin 0 -> 4287 bytes source/bitmaps/misc/activity6.cpp | 548 + source/bitmaps/misc/activity6.png | Bin 0 -> 4308 bytes source/bitmaps/misc/activity7.cpp | 551 + source/bitmaps/misc/activity7.png | Bin 0 -> 4329 bytes source/bitmaps/misc/activity8.cpp | 552 + source/bitmaps/misc/activity8.png | Bin 0 -> 4342 bytes source/bitmaps/misc/activity9.cpp | 543 + source/bitmaps/misc/activity9.png | Bin 0 -> 4266 bytes source/bitmaps/misc/activitysleep.cpp | 531 + source/bitmaps/misc/activitysleep.png | Bin 0 -> 4174 bytes source/bitmaps/misc/emptyimage.cpp | 28 + source/bitmaps/misc/emptyimage.png | Bin 0 -> 144 bytes source/carddav/carddav.cpp | 3636 ++++++ source/carddav/carddav.h | 123 + source/common/.directory | 4 + source/common/base64.cpp | 124 + source/common/base64.cpp~ | 1 + source/common/base64.h | 4 + source/common/base64.h~ | 1 + source/common/defaults.cpp | 172 + source/common/defaults.h | 11 + source/common/dirs.cpp | 166 + source/common/dirs.h | 13 + source/common/etag.cpp | 430 + source/common/etag.h | 92 + source/common/events.cpp | 4 + source/common/events.h | 71 + source/common/filename.cpp | 28 + source/common/filename.h | 9 + source/common/getcontactinfo.cpp | 1692 +++ source/common/getcontactinfo.cpp~ | 81 + source/common/getcontactinfo.h | 19 + source/common/getcontactinfo.h~ | 11 + source/common/mime.cpp | 45 + source/common/mime.h | 8 + source/common/preferences.cpp | 374 + source/common/preferences.h | 105 + source/common/preferences.h~ | 99 + source/common/sslcertstructs.h | 22 + source/common/svrblist.cpp | 22 + source/common/svrblist.h | 8 + source/common/textprocessing.cpp | 105 + source/common/textprocessing.h | 114 + source/common/timers.cpp | 596 + source/common/timers.h | 154 + source/common/uuid.cpp | 48 + source/common/uuid.h | 9 + source/config.log | 582 + source/config.status | 920 ++ source/configure | 5273 ++++++++ source/configure.ac | 61 + .../contacteditor/frmContactEditor-Load.cpp | 7356 +++++++++++ source/contacteditor/frmContactEditor.cpp | 7740 +++++++++++ source/contacteditor/frmContactEditor.h | 1191 ++ .../contacteditor/frmContactEditorAddress.cpp | 505 + .../contacteditor/frmContactEditorAddress.h | 73 + .../contacteditor/frmContactEditorCalAdr.cpp | 258 + source/contacteditor/frmContactEditorCalAdr.h | 50 + .../frmContactEditorCategory.cpp | 259 + .../contacteditor/frmContactEditorCategory.h | 52 + .../contacteditor/frmContactEditorEmail.cpp | 208 + source/contacteditor/frmContactEditorEmail.h | 54 + .../frmContactEditorGeoposition.cpp | 214 + .../frmContactEditorGeoposition.h | 54 + .../contacteditor/frmContactEditorGroups.cpp | 262 + source/contacteditor/frmContactEditorGroups.h | 50 + source/contacteditor/frmContactEditorIM.cpp | 369 + source/contacteditor/frmContactEditorIM.h | 54 + source/contacteditor/frmContactEditorKey.cpp | 469 + source/contacteditor/frmContactEditorKey.h | 58 + .../frmContactEditorLanguages.cpp | 211 + .../contacteditor/frmContactEditorLanguages.h | 51 + .../frmContactEditorNickname.cpp | 231 + .../contacteditor/frmContactEditorNickname.h | 54 + .../contacteditor/frmContactEditorNotes.cpp | 258 + source/contacteditor/frmContactEditorNotes.h | 53 + .../frmContactEditorOrganisations.cpp | 278 + .../frmContactEditorOrganisations.h | 57 + .../contacteditor/frmContactEditorPicture.cpp | 356 + .../contacteditor/frmContactEditorPicture.h | 57 + .../contacteditor/frmContactEditorRelated.cpp | 509 + .../contacteditor/frmContactEditorRelated.h | 54 + .../contacteditor/frmContactEditorRoles.cpp | 214 + source/contacteditor/frmContactEditorRoles.h | 53 + .../contacteditor/frmContactEditorSound.cpp | 355 + source/contacteditor/frmContactEditorSound.h | 60 + .../frmContactEditorTelephone.cpp | 529 + .../contacteditor/frmContactEditorTelephone.h | 52 + .../frmContactEditorTimezones.cpp | 209 + .../contacteditor/frmContactEditorTimezones.h | 55 + .../contacteditor/frmContactEditorTitles.cpp | 214 + source/contacteditor/frmContactEditorTitles.h | 53 + .../contacteditor/frmContactEditorVendor.cpp | 177 + source/contacteditor/frmContactEditorVendor.h | 43 + .../frmContactEditorWebsites.cpp | 214 + .../contacteditor/frmContactEditorWebsites.h | 54 + .../contacteditor/frmContactEditorXToken.cpp | 147 + source/contacteditor/frmContactEditorXToken.h | 41 + source/debug.h | 1 + source/enums.h | 47 + source/export/export-vcard3.cpp | 114 + source/export/export-vcard3.h | 10 + source/export/export-vcard4.cpp | 101 + source/export/export-vcard4.h | 11 + source/export/export.cpp | 89 + source/export/export.h | 12 + source/frmAbout.cpp | 45 + source/frmAbout.h | 27 + source/frmActivityMgr.cpp | 1897 +++ source/frmActivityMgr.h | 97 + source/frmConflictResolution.cpp | 54 + source/frmConflictResolution.h | 40 + source/frmContact.cpp | 131 + source/frmContact.h | 40 + source/frmEditAccount.cpp | 231 + source/frmEditAccount.h | 34 + source/frmInvalidSSLCertificate.cpp | 55 + source/frmInvalidSSLCertificate.h | 42 + source/frmMain.cpp | 2833 ++++ source/frmMain.h | 233 + source/frmMain.h~ | 40 + source/frmNewAccount.cpp | 490 + source/frmNewAccount.h | 34 + source/frmPreferences.cpp | 400 + source/frmPreferences.h | 43 + source/frmSSLCertificate.cpp | 246 + source/frmSSLCertificate.h | 51 + source/frmSearch.cpp | 1668 +++ source/frmSearch.h | 82 + source/frmUpdate.cpp | 188 + source/frmUpdate.h | 30 + source/import/frmImportContacts.cpp | 241 + source/import/frmImportContacts.h | 44 + source/import/frmImportResults.cpp | 54 + source/import/frmImportResults.h | 28 + source/import/import-struct.h | 15 + source/import/import-vcard3.cpp | 65 + source/import/import-vcard3.h | 11 + source/import/import-vcard4.cpp | 61 + source/import/import-vcard4.h | 12 + source/import/import.cpp | 302 + source/import/import.h | 11 + source/main.cpp | 141 + source/photo.log | 16 + source/search/XABSearchPanel.cpp | 176 + source/search/XABSearchPanel.h | 47 + source/search/frmSearchAccounts.cpp | 99 + source/search/frmSearchAccounts.h | 34 + source/tools/bitmapcode.cpp | 563 + source/tools/bitmapcode.cpp~ | 301 + source/vcard/vcard.cpp | 749 ++ source/vcard/vcard.cpp~ | 88 + source/vcard/vcard.h | 53 + source/vcard/vcard.hpp~ | 20 + source/vcard/vcard.h~ | 27 + source/vcard/vcard34conv.cpp | 9973 ++++++++++++++ source/vcard/vcard34conv.h | 61 + source/version.h | 12 + source/widgets/XABAccountView.cpp | 97 + source/widgets/XABAccountView.h | 38 + 264 files changed, 120490 insertions(+) create mode 100644 source/.directory create mode 100644 source/.libs/libtest.a create mode 100644 source/AppXestiaAddrBk.cpp create mode 100644 source/AppXestiaAddrBk.h create mode 100644 source/Makefile create mode 100644 source/Makefile.in create mode 100644 source/aclocal.m4 create mode 100644 source/autom4te.cache/output.0 create mode 100644 source/autom4te.cache/output.0t create mode 100644 source/autom4te.cache/output.1 create mode 100644 source/autom4te.cache/requests create mode 100644 source/autom4te.cache/traces.0 create mode 100644 source/autom4te.cache/traces.0t create mode 100644 source/autom4te.cache/traces.1 create mode 100644 source/autoscan.log create mode 100644 source/bitmapcode.helper create mode 100644 source/bitmaps.h create mode 100644 source/bitmaps/bigimgs.h create mode 100644 source/bitmaps/bigimgs/.exportest.cpp.kate-swp create mode 100644 source/bitmaps/bigimgs/aboutimage.cpp create mode 100644 source/bitmaps/bigimgs/aboutimage.png create mode 100644 source/bitmaps/bigimgs/appicon.cpp create mode 100644 source/bitmaps/bigimgs/appicon.png create mode 100644 source/bitmaps/bigimgs/appicon48.cpp create mode 100644 source/bitmaps/bigimgs/appicon48.png create mode 100644 source/bitmaps/bigimgs/appicon64.cpp create mode 100644 source/bitmaps/bigimgs/appicon64.png create mode 100644 source/bitmaps/bigimgs/contactpersonicon.cpp create mode 100644 source/bitmaps/bigimgs/contactpersonicon.png create mode 100644 source/bitmaps/bigimgs/contactpersonicon48.cpp create mode 100644 source/bitmaps/bigimgs/contactpersonicon48.png create mode 100644 source/bitmaps/bigimgs/contactpersonicon64.cpp create mode 100644 source/bitmaps/bigimgs/contactpersonicon64.png create mode 100644 source/bitmaps/buttons.h create mode 100644 source/bitmaps/buttons/add.cpp create mode 100644 source/bitmaps/buttons/add.png create mode 100644 source/bitmaps/buttons/minus.cpp create mode 100644 source/bitmaps/buttons/minus.png create mode 100644 source/bitmaps/buttons/play.cpp create mode 100644 source/bitmaps/buttons/play.png create mode 100644 source/bitmaps/buttons/stop.cpp create mode 100644 source/bitmaps/buttons/stop.png create mode 100644 source/bitmaps/icons.h create mode 100644 source/bitmaps/icons/.directory create mode 100644 source/bitmaps/icons/accgroup.cpp create mode 100644 source/bitmaps/icons/accgroup.png create mode 100644 source/bitmaps/icons/accinet.cpp create mode 100644 source/bitmaps/icons/accinet.png create mode 100644 source/bitmaps/icons/acclocal.cpp create mode 100644 source/bitmaps/icons/acclocal.png create mode 100644 source/bitmaps/icons/accnone.cpp create mode 100644 source/bitmaps/icons/accnone.png create mode 100644 source/bitmaps/icons/act1.cpp create mode 100644 source/bitmaps/icons/act1.png create mode 100644 source/bitmaps/icons/act2.cpp create mode 100644 source/bitmaps/icons/act2.png create mode 100644 source/bitmaps/icons/act3.cpp create mode 100644 source/bitmaps/icons/act3.png create mode 100644 source/bitmaps/icons/act4.cpp create mode 100644 source/bitmaps/icons/act4.png create mode 100644 source/bitmaps/icons/activitywindow.cpp create mode 100644 source/bitmaps/icons/activitywindow.png create mode 100644 source/bitmaps/icons/actsleep.cpp create mode 100644 source/bitmaps/icons/actsleep.png create mode 100644 source/bitmaps/icons/ciext.cpp create mode 100644 source/bitmaps/icons/ciext.png create mode 100644 source/bitmaps/icons/cikey.cpp create mode 100644 source/bitmaps/icons/cikey.png create mode 100644 source/bitmaps/icons/cilog.cpp create mode 100644 source/bitmaps/icons/cilog.png create mode 100644 source/bitmaps/icons/cipto.cpp create mode 100644 source/bitmaps/icons/cipto.png create mode 100644 source/bitmaps/icons/cisnd.cpp create mode 100644 source/bitmaps/icons/cisnd.png create mode 100644 source/bitmaps/icons/civen.cpp create mode 100644 source/bitmaps/icons/civen.png create mode 100644 source/bitmaps/icons/nossl.cpp create mode 100644 source/bitmaps/icons/nossl.png create mode 100644 source/bitmaps/icons/offline.cpp create mode 100644 source/bitmaps/icons/offline.png create mode 100644 source/bitmaps/icons/online.cpp create mode 100644 source/bitmaps/icons/online.png create mode 100644 source/bitmaps/icons/ssl.cpp create mode 100644 source/bitmaps/icons/ssl.png create mode 100644 source/bitmaps/icons/sslwarning.cpp create mode 100644 source/bitmaps/icons/sslwarning.png create mode 100644 source/bitmaps/misc.h create mode 100644 source/bitmaps/misc/.directory create mode 100644 source/bitmaps/misc/activity1.cpp create mode 100644 source/bitmaps/misc/activity1.png create mode 100644 source/bitmaps/misc/activity10.cpp create mode 100644 source/bitmaps/misc/activity10.png create mode 100644 source/bitmaps/misc/activity11.cpp create mode 100644 source/bitmaps/misc/activity11.png create mode 100644 source/bitmaps/misc/activity12.cpp create mode 100644 source/bitmaps/misc/activity12.png create mode 100644 source/bitmaps/misc/activity2.cpp create mode 100644 source/bitmaps/misc/activity2.png create mode 100644 source/bitmaps/misc/activity3.cpp create mode 100644 source/bitmaps/misc/activity3.png create mode 100644 source/bitmaps/misc/activity4.cpp create mode 100644 source/bitmaps/misc/activity4.png create mode 100644 source/bitmaps/misc/activity5.cpp create mode 100644 source/bitmaps/misc/activity5.png create mode 100644 source/bitmaps/misc/activity6.cpp create mode 100644 source/bitmaps/misc/activity6.png create mode 100644 source/bitmaps/misc/activity7.cpp create mode 100644 source/bitmaps/misc/activity7.png create mode 100644 source/bitmaps/misc/activity8.cpp create mode 100644 source/bitmaps/misc/activity8.png create mode 100644 source/bitmaps/misc/activity9.cpp create mode 100644 source/bitmaps/misc/activity9.png create mode 100644 source/bitmaps/misc/activitysleep.cpp create mode 100644 source/bitmaps/misc/activitysleep.png create mode 100644 source/bitmaps/misc/emptyimage.cpp create mode 100644 source/bitmaps/misc/emptyimage.png create mode 100644 source/carddav/carddav.cpp create mode 100644 source/carddav/carddav.h create mode 100644 source/common/.directory create mode 100644 source/common/base64.cpp create mode 100644 source/common/base64.cpp~ create mode 100644 source/common/base64.h create mode 100644 source/common/base64.h~ create mode 100644 source/common/defaults.cpp create mode 100644 source/common/defaults.h create mode 100644 source/common/dirs.cpp create mode 100644 source/common/dirs.h create mode 100644 source/common/etag.cpp create mode 100644 source/common/etag.h create mode 100644 source/common/events.cpp create mode 100644 source/common/events.h create mode 100644 source/common/filename.cpp create mode 100644 source/common/filename.h create mode 100644 source/common/getcontactinfo.cpp create mode 100644 source/common/getcontactinfo.cpp~ create mode 100644 source/common/getcontactinfo.h create mode 100644 source/common/getcontactinfo.h~ create mode 100644 source/common/mime.cpp create mode 100644 source/common/mime.h create mode 100644 source/common/preferences.cpp create mode 100644 source/common/preferences.h create mode 100644 source/common/preferences.h~ create mode 100644 source/common/sslcertstructs.h create mode 100644 source/common/svrblist.cpp create mode 100644 source/common/svrblist.h create mode 100644 source/common/textprocessing.cpp create mode 100644 source/common/textprocessing.h create mode 100644 source/common/timers.cpp create mode 100644 source/common/timers.h create mode 100644 source/common/uuid.cpp create mode 100644 source/common/uuid.h create mode 100644 source/config.log create mode 100644 source/config.status create mode 100644 source/configure create mode 100644 source/configure.ac create mode 100644 source/contacteditor/frmContactEditor-Load.cpp create mode 100644 source/contacteditor/frmContactEditor.cpp create mode 100644 source/contacteditor/frmContactEditor.h create mode 100644 source/contacteditor/frmContactEditorAddress.cpp create mode 100644 source/contacteditor/frmContactEditorAddress.h create mode 100644 source/contacteditor/frmContactEditorCalAdr.cpp create mode 100644 source/contacteditor/frmContactEditorCalAdr.h create mode 100644 source/contacteditor/frmContactEditorCategory.cpp create mode 100644 source/contacteditor/frmContactEditorCategory.h create mode 100644 source/contacteditor/frmContactEditorEmail.cpp create mode 100644 source/contacteditor/frmContactEditorEmail.h create mode 100644 source/contacteditor/frmContactEditorGeoposition.cpp create mode 100644 source/contacteditor/frmContactEditorGeoposition.h create mode 100755 source/contacteditor/frmContactEditorGroups.cpp create mode 100755 source/contacteditor/frmContactEditorGroups.h create mode 100644 source/contacteditor/frmContactEditorIM.cpp create mode 100644 source/contacteditor/frmContactEditorIM.h create mode 100644 source/contacteditor/frmContactEditorKey.cpp create mode 100644 source/contacteditor/frmContactEditorKey.h create mode 100644 source/contacteditor/frmContactEditorLanguages.cpp create mode 100644 source/contacteditor/frmContactEditorLanguages.h create mode 100644 source/contacteditor/frmContactEditorNickname.cpp create mode 100644 source/contacteditor/frmContactEditorNickname.h create mode 100644 source/contacteditor/frmContactEditorNotes.cpp create mode 100644 source/contacteditor/frmContactEditorNotes.h create mode 100644 source/contacteditor/frmContactEditorOrganisations.cpp create mode 100644 source/contacteditor/frmContactEditorOrganisations.h create mode 100644 source/contacteditor/frmContactEditorPicture.cpp create mode 100644 source/contacteditor/frmContactEditorPicture.h create mode 100644 source/contacteditor/frmContactEditorRelated.cpp create mode 100644 source/contacteditor/frmContactEditorRelated.h create mode 100644 source/contacteditor/frmContactEditorRoles.cpp create mode 100644 source/contacteditor/frmContactEditorRoles.h create mode 100644 source/contacteditor/frmContactEditorSound.cpp create mode 100644 source/contacteditor/frmContactEditorSound.h create mode 100644 source/contacteditor/frmContactEditorTelephone.cpp create mode 100644 source/contacteditor/frmContactEditorTelephone.h create mode 100644 source/contacteditor/frmContactEditorTimezones.cpp create mode 100644 source/contacteditor/frmContactEditorTimezones.h create mode 100644 source/contacteditor/frmContactEditorTitles.cpp create mode 100644 source/contacteditor/frmContactEditorTitles.h create mode 100644 source/contacteditor/frmContactEditorVendor.cpp create mode 100644 source/contacteditor/frmContactEditorVendor.h create mode 100644 source/contacteditor/frmContactEditorWebsites.cpp create mode 100644 source/contacteditor/frmContactEditorWebsites.h create mode 100644 source/contacteditor/frmContactEditorXToken.cpp create mode 100644 source/contacteditor/frmContactEditorXToken.h create mode 100644 source/debug.h create mode 100644 source/enums.h create mode 100644 source/export/export-vcard3.cpp create mode 100644 source/export/export-vcard3.h create mode 100644 source/export/export-vcard4.cpp create mode 100644 source/export/export-vcard4.h create mode 100644 source/export/export.cpp create mode 100644 source/export/export.h create mode 100644 source/frmAbout.cpp create mode 100644 source/frmAbout.h create mode 100644 source/frmActivityMgr.cpp create mode 100644 source/frmActivityMgr.h create mode 100644 source/frmConflictResolution.cpp create mode 100644 source/frmConflictResolution.h create mode 100644 source/frmContact.cpp create mode 100644 source/frmContact.h create mode 100644 source/frmEditAccount.cpp create mode 100644 source/frmEditAccount.h create mode 100644 source/frmInvalidSSLCertificate.cpp create mode 100644 source/frmInvalidSSLCertificate.h create mode 100644 source/frmMain.cpp create mode 100644 source/frmMain.h create mode 100644 source/frmMain.h~ create mode 100644 source/frmNewAccount.cpp create mode 100644 source/frmNewAccount.h create mode 100644 source/frmPreferences.cpp create mode 100644 source/frmPreferences.h create mode 100644 source/frmSSLCertificate.cpp create mode 100644 source/frmSSLCertificate.h create mode 100644 source/frmSearch.cpp create mode 100644 source/frmSearch.h create mode 100644 source/frmUpdate.cpp create mode 100644 source/frmUpdate.h create mode 100644 source/import/frmImportContacts.cpp create mode 100644 source/import/frmImportContacts.h create mode 100644 source/import/frmImportResults.cpp create mode 100644 source/import/frmImportResults.h create mode 100644 source/import/import-struct.h create mode 100644 source/import/import-vcard3.cpp create mode 100644 source/import/import-vcard3.h create mode 100644 source/import/import-vcard4.cpp create mode 100644 source/import/import-vcard4.h create mode 100644 source/import/import.cpp create mode 100644 source/import/import.h create mode 100644 source/main.cpp create mode 100644 source/photo.log create mode 100644 source/search/XABSearchPanel.cpp create mode 100644 source/search/XABSearchPanel.h create mode 100644 source/search/frmSearchAccounts.cpp create mode 100644 source/search/frmSearchAccounts.h create mode 100644 source/tools/bitmapcode.cpp create mode 100644 source/tools/bitmapcode.cpp~ create mode 100644 source/vcard/vcard.cpp create mode 100644 source/vcard/vcard.cpp~ create mode 100644 source/vcard/vcard.h create mode 100644 source/vcard/vcard.hpp~ create mode 100644 source/vcard/vcard.h~ create mode 100644 source/vcard/vcard34conv.cpp create mode 100644 source/vcard/vcard34conv.h create mode 100644 source/version.h create mode 100644 source/widgets/XABAccountView.cpp create mode 100644 source/widgets/XABAccountView.h diff --git a/source/.directory b/source/.directory new file mode 100644 index 0000000..1796c00 --- /dev/null +++ b/source/.directory @@ -0,0 +1,5 @@ +[Dolphin] +AdditionalInfoV2=CustomizedDetails,Details_Size,Details_Date,Details_Type +Timestamp=2012,8,19,9,34,5 +Version=2 +ViewMode=1 diff --git a/source/.libs/libtest.a b/source/.libs/libtest.a new file mode 100644 index 0000000..8b277f0 --- /dev/null +++ b/source/.libs/libtest.a @@ -0,0 +1 @@ +! diff --git a/source/AppXestiaAddrBk.cpp b/source/AppXestiaAddrBk.cpp new file mode 100644 index 0000000..57ad0b1 --- /dev/null +++ b/source/AppXestiaAddrBk.cpp @@ -0,0 +1,7213 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Feb 26 2014) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#include "AppXestiaAddrBk.h" + +/////////////////////////////////////////////////////////////////////////// + +frmMainADT::frmMainADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + mnuMain = new wxMenuBar( 0 ); + mnuManage = new wxMenu(); + wxMenuItem* mnuNewAB; + mnuNewAB = new wxMenuItem( mnuManage, ID_MANAGE_NEWAB, wxString( wxT("New Address Book...") ) , wxEmptyString, wxITEM_NORMAL ); + mnuManage->Append( mnuNewAB ); + + mnuManage->AppendSeparator(); + + wxMenuItem* mnuRefreshAB; + mnuRefreshAB = new wxMenuItem( mnuManage, wxID_ANY, wxString( wxT("Refresh Address Book") ) + wxT('\t') + wxT("CTRL+R"), wxEmptyString, wxITEM_NORMAL ); + mnuManage->Append( mnuRefreshAB ); + + mnuManage->AppendSeparator(); + + wxMenuItem* mnuImport; + mnuImport = new wxMenuItem( mnuManage, ID_MANAGE_IMPORT, wxString( wxT("Import...") ) , wxEmptyString, wxITEM_NORMAL ); + mnuManage->Append( mnuImport ); + + wxMenuItem* mnuExport; + mnuExport = new wxMenuItem( mnuManage, ID_MANAGE_EXPORT, wxString( wxT("Export...") ) , wxEmptyString, wxITEM_NORMAL ); + mnuManage->Append( mnuExport ); + + mnuManage->AppendSeparator(); + + wxMenuItem* mnuPreferences; + mnuPreferences = new wxMenuItem( mnuManage, ID_MANAGE_PREFERENCES, wxString( wxT("Preferences...") ) , wxEmptyString, wxITEM_NORMAL ); + mnuManage->Append( mnuPreferences ); + + mnuManage->AppendSeparator(); + + wxMenuItem* mnuExit; + mnuExit = new wxMenuItem( mnuManage, ID_MANAGE_EXIT, wxString( wxT("Exit") ) + wxT('\t') + wxT("CTRL+Q"), wxEmptyString, wxITEM_NORMAL ); + #ifdef __WXMSW__ + mnuExit->SetBitmaps( wxNullBitmap ); + #elif defined( __WXGTK__ ) + mnuExit->SetBitmap( wxNullBitmap ); + #endif + mnuManage->Append( mnuExit ); + + mnuMain->Append( mnuManage, wxT("Manage") ); + + mnuContact = new wxMenu(); + wxMenuItem* mnuNewContact; + mnuNewContact = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("New Contact...") ) + wxT('\t') + wxT("CTRL+N"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuNewContact ); + + wxMenuItem* mnuEditContact; + mnuEditContact = new wxMenuItem( mnuContact, ID_CONTACT_EDIT, wxString( wxT("Edit Contact...") ) + wxT('\t') + wxT("CTRL+E"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuEditContact ); + + wxMenuItem* deleteContact; + deleteContact = new wxMenuItem( mnuContact, ID_CONTACT_DELETE, wxString( wxT("Delete Contact...") ) + wxT('\t') + wxT("CTRL+D"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( deleteContact ); + + mnuContact->AppendSeparator(); + + setContactAsMyself = new wxMenuItem( mnuContact, ID_SET_CONTACT_AS_MYSELF, wxString( wxT("Set contact as myself") ) + wxT('\t') + wxT("CTRL+M"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( setContactAsMyself ); + + m_separator5 = mnuContact->AppendSeparator(); + + wxMenuItem* mnuFindContact; + mnuFindContact = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Find Contacts...") ) + wxT('\t') + wxT("CTRL+F"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuFindContact ); + + mnuMain->Append( mnuContact, wxT("Contact") ); + + mnuView = new wxMenu(); + mnuShowContactsAs = new wxMenu(); + wxMenuItem* mnuViewFNLN; + mnuViewFNLN = new wxMenuItem( mnuShowContactsAs, ID_VIEW_FNLN, wxString( wxT("First Name, Last Name") ) , wxEmptyString, wxITEM_NORMAL ); + mnuShowContactsAs->Append( mnuViewFNLN ); + + wxMenuItem* mnuViewLNFN; + mnuViewLNFN = new wxMenuItem( mnuShowContactsAs, ID_VIEW_LNFN, wxString( wxT("Last Name, First Name") ) , wxEmptyString, wxITEM_NORMAL ); + mnuShowContactsAs->Append( mnuViewLNFN ); + + wxMenuItem* mnuViewNick; + mnuViewNick = new wxMenuItem( mnuShowContactsAs, ID_VIEW_NICK, wxString( wxT("Nickname") ) , wxEmptyString, wxITEM_NORMAL ); + mnuShowContactsAs->Append( mnuViewNick ); + + wxMenuItem* mnuViewDisplayAs; + mnuViewDisplayAs = new wxMenuItem( mnuShowContactsAs, wxID_ANY, wxString( wxT("Display As Name") ) , wxEmptyString, wxITEM_NORMAL ); + mnuShowContactsAs->Append( mnuViewDisplayAs ); + + mnuView->Append( -1, wxT("Show Contacts As"), mnuShowContactsAs ); + + mnuViewSortBy = new wxMenu(); + wxMenuItem* mnuViewAsc; + mnuViewAsc = new wxMenuItem( mnuViewSortBy, ID_VIEW_ASC, wxString( wxT("Ascending") ) , wxEmptyString, wxITEM_NORMAL ); + mnuViewSortBy->Append( mnuViewAsc ); + + wxMenuItem* mnuViewDesc; + mnuViewDesc = new wxMenuItem( mnuViewSortBy, ID_VIEW_DESC, wxString( wxT("Descending") ) , wxEmptyString, wxITEM_NORMAL ); + mnuViewSortBy->Append( mnuViewDesc ); + + mnuView->Append( -1, wxT("Sort By"), mnuViewSortBy ); + + mnuViewShow = new wxMenu(); + wxMenuItem* mnuViewStatusBar; + mnuViewStatusBar = new wxMenuItem( mnuViewShow, ID_VIEW_STATUSBAR, wxString( wxT("Status Bar") ) , wxEmptyString, wxITEM_NORMAL ); + mnuViewShow->Append( mnuViewStatusBar ); + + mnuView->Append( -1, wxT("Show"), mnuViewShow ); + + mnuView->AppendSeparator(); + + wxMenuItem* mnuViewActivity; + mnuViewActivity = new wxMenuItem( mnuView, wxID_ANY, wxString( wxT("Activity Manager") ) , wxEmptyString, wxITEM_NORMAL ); + mnuView->Append( mnuViewActivity ); + + mnuMain->Append( mnuView, wxT("View") ); + + mnuEdit = new wxMenu(); + wxMenuItem* mnuCut; + mnuCut = new wxMenuItem( mnuEdit, ID_MANAGE_CUT, wxString( wxT("Cut") ) + wxT('\t') + wxT("CTRL+X"), wxEmptyString, wxITEM_NORMAL ); + mnuEdit->Append( mnuCut ); + + wxMenuItem* mnuCopy; + mnuCopy = new wxMenuItem( mnuEdit, ID_MANAGE_COPY, wxString( wxT("Copy") ) + wxT('\t') + wxT("CTRL+C"), wxEmptyString, wxITEM_NORMAL ); + mnuEdit->Append( mnuCopy ); + + wxMenuItem* mnuPaste; + mnuPaste = new wxMenuItem( mnuEdit, ID_MANAGE_PASTE, wxString( wxT("Paste") ) + wxT('\t') + wxT("CTRL+V"), wxEmptyString, wxITEM_NORMAL ); + mnuEdit->Append( mnuPaste ); + + mnuMain->Append( mnuEdit, wxT("Edit") ); + + mnuWindow = new wxMenu(); + mnuMain->Append( mnuWindow, wxT("Window") ); + + mnuHelp = new wxMenu(); + wxMenuItem* showHelp; + showHelp = new wxMenuItem( mnuHelp, ID_HELP_SHOW, wxString( wxT("Show Help...") ) + wxT('\t') + wxT("F1"), wxEmptyString, wxITEM_NORMAL ); + mnuHelp->Append( showHelp ); + + mnuHelp->AppendSeparator(); + + wxMenuItem* mnuHelpUpdates; + mnuHelpUpdates = new wxMenuItem( mnuHelp, ID_MANAGE_UPDATE, wxString( wxT("Check for updates...") ) , wxEmptyString, wxITEM_NORMAL ); + mnuHelp->Append( mnuHelpUpdates ); + + mnuHelp->AppendSeparator(); + + wxMenuItem* mnuAbout; + mnuAbout = new wxMenuItem( mnuHelp, ID_HELP_ABOUT, wxString( wxT("About") ) + wxT('\t') + wxT("SHIFT+CTRL+A"), wxEmptyString, wxITEM_NORMAL ); + mnuHelp->Append( mnuAbout ); + + mnuMain->Append( mnuHelp, wxT("Help") ); + + this->SetMenuBar( mnuMain ); + + szrMain = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer396; + bSizer396 = new wxBoxSizer( wxHORIZONTAL ); + + bmpIcon = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bSizer396->Add( bmpIcon, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + AccCtrl = new wxComboCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCB_READONLY|wxEXPAND); + bSizer396->Add( AccCtrl, 0, wxALL, 5 ); + + + szrMain->Add( bSizer396, 0, wxEXPAND|wxLEFT, 5 ); + + m_splitter13 = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D ); + m_splitter13->Connect( wxEVT_IDLE, wxIdleEventHandler( frmMainADT::m_splitter13OnIdle ), NULL, this ); + m_splitter13->SetMinimumPaneSize( 1 ); + + m_panel19 = new wxPanel( m_splitter13, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + szrContactList = new wxFlexGridSizer( 0, 1, 0, 0 ); + szrContactList->AddGrowableCol( 0 ); + szrContactList->AddGrowableRow( 1 ); + szrContactList->SetFlexibleDirection( wxBOTH ); + szrContactList->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + szrAccList = new wxFlexGridSizer( 0, 2, 0, 0 ); + szrAccList->SetFlexibleDirection( wxVERTICAL ); + szrAccList->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + + szrContactList->Add( szrAccList, 0, 0, 5 ); + + lstContacts = new wxListCtrl( m_panel19, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_NO_HEADER|wxLC_REPORT|wxSUNKEN_BORDER ); + szrContactList->Add( lstContacts, 1, wxALL|wxEXPAND, 5 ); + + + m_panel19->SetSizer( szrContactList ); + m_panel19->Layout(); + szrContactList->Fit( m_panel19 ); + m_panel20 = new wxPanel( m_splitter13, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer12; + bSizer12 = new wxBoxSizer( wxVERTICAL ); + + htmContactData = new wxHtmlWindow( m_panel20, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO|wxSUNKEN_BORDER ); + bSizer12->Add( htmContactData, 1, wxALL|wxEXPAND, 5 ); + + + m_panel20->SetSizer( bSizer12 ); + m_panel20->Layout(); + bSizer12->Fit( m_panel20 ); + m_splitter13->SplitVertically( m_panel19, m_panel20, 184 ); + szrMain->Add( m_splitter13, 1, wxEXPAND, 5 ); + + + this->SetSizer( szrMain ); + this->Layout(); + stbBottom = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY ); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( mnuNewAB->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenNewABDialog ) ); + this->Connect( mnuRefreshAB->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::RefreshAddressBook ) ); + this->Connect( mnuImport->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenImportDialog ) ); + this->Connect( mnuExport->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenExportDialog ) ); + this->Connect( mnuPreferences->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenPreferences ) ); + this->Connect( mnuExit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::QuitApp ) ); + this->Connect( mnuNewContact->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowContactEditorNew ) ); + this->Connect( mnuEditContact->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowContactEditorEdit ) ); + this->Connect( deleteContact->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::DeleteContact ) ); + this->Connect( setContactAsMyself->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SetContactAsSelf ) ); + this->Connect( mnuFindContact->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenFindContactsWindow ) ); + this->Connect( mnuViewFNLN->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortFNLN ) ); + this->Connect( mnuViewLNFN->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortLNFN ) ); + this->Connect( mnuViewNick->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortNickname ) ); + this->Connect( mnuViewDisplayAs->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortDisplayAs ) ); + this->Connect( mnuViewAsc->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortAscending ) ); + this->Connect( mnuViewDesc->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortDescending ) ); + this->Connect( mnuViewStatusBar->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ToggleStatusBar ) ); + this->Connect( mnuViewActivity->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowActivityWindow ) ); + this->Connect( mnuCut->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CutAction ) ); + this->Connect( mnuCopy->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CopyAction ) ); + this->Connect( mnuPaste->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::PasteAction ) ); + this->Connect( showHelp->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowHelp ) ); + this->Connect( mnuHelpUpdates->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CheckUpdates ) ); + this->Connect( mnuAbout->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowAboutWindow ) ); + lstContacts->Connect( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler( frmMainADT::OpenContactInfo ), NULL, this ); + lstContacts->Connect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmMainADT::ShowContactInfo ), NULL, this ); + lstContacts->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmMainADT::ShowContactInfo ), NULL, this ); + htmContactData->Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( frmMainADT::ShowContactSubmenu ), NULL, this ); + stbBottom->Connect( wxEVT_SIZE, wxSizeEventHandler( frmMainADT::UpdateSBIconPlacement ), NULL, this ); +} + +frmMainADT::~frmMainADT() +{ + // Disconnect Events + this->Disconnect( ID_MANAGE_NEWAB, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenNewABDialog ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::RefreshAddressBook ) ); + this->Disconnect( ID_MANAGE_IMPORT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenImportDialog ) ); + this->Disconnect( ID_MANAGE_EXPORT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenExportDialog ) ); + this->Disconnect( ID_MANAGE_PREFERENCES, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenPreferences ) ); + this->Disconnect( ID_MANAGE_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::QuitApp ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowContactEditorNew ) ); + this->Disconnect( ID_CONTACT_EDIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowContactEditorEdit ) ); + this->Disconnect( ID_CONTACT_DELETE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::DeleteContact ) ); + this->Disconnect( ID_SET_CONTACT_AS_MYSELF, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SetContactAsSelf ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenFindContactsWindow ) ); + this->Disconnect( ID_VIEW_FNLN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortFNLN ) ); + this->Disconnect( ID_VIEW_LNFN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortLNFN ) ); + this->Disconnect( ID_VIEW_NICK, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortNickname ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortDisplayAs ) ); + this->Disconnect( ID_VIEW_ASC, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortAscending ) ); + this->Disconnect( ID_VIEW_DESC, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortDescending ) ); + this->Disconnect( ID_VIEW_STATUSBAR, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ToggleStatusBar ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowActivityWindow ) ); + this->Disconnect( ID_MANAGE_CUT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CutAction ) ); + this->Disconnect( ID_MANAGE_COPY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CopyAction ) ); + this->Disconnect( ID_MANAGE_PASTE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::PasteAction ) ); + this->Disconnect( ID_HELP_SHOW, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowHelp ) ); + this->Disconnect( ID_MANAGE_UPDATE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CheckUpdates ) ); + this->Disconnect( ID_HELP_ABOUT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowAboutWindow ) ); + lstContacts->Disconnect( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler( frmMainADT::OpenContactInfo ), NULL, this ); + lstContacts->Disconnect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmMainADT::ShowContactInfo ), NULL, this ); + lstContacts->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmMainADT::ShowContactInfo ), NULL, this ); + htmContactData->Disconnect( wxEVT_RIGHT_UP, wxMouseEventHandler( frmMainADT::ShowContactSubmenu ), NULL, this ); + stbBottom->Disconnect( wxEVT_SIZE, wxSizeEventHandler( frmMainADT::UpdateSBIconPlacement ), NULL, this ); + +} + +frmUpdateADT::frmUpdateADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer390; + bSizer390 = new wxBoxSizer( wxVERTICAL ); + + pnlUpdateData = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer391; + bSizer391 = new wxBoxSizer( wxVERTICAL ); + + wxFlexGridSizer* fgSizer45; + fgSizer45 = new wxFlexGridSizer( 3, 2, 0, 0 ); + fgSizer45->SetFlexibleDirection( wxBOTH ); + fgSizer45->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblRunningText = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("Running version is:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblRunningText->Wrap( -1 ); + fgSizer45->Add( lblRunningText, 0, wxALL, 5 ); + + lblRunningVer = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("UPDATEVER"), wxDefaultPosition, wxDefaultSize, 0 ); + lblRunningVer->Wrap( -1 ); + fgSizer45->Add( lblRunningVer, 0, wxALL, 5 ); + + lblAvailableText = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("Available version is:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAvailableText->Wrap( -1 ); + fgSizer45->Add( lblAvailableText, 0, wxALL, 5 ); + + lblAvailableVer = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("AVAILVER"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAvailableVer->Wrap( -1 ); + fgSizer45->Add( lblAvailableVer, 0, wxALL, 5 ); + + lblBuildTypeText = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("Build type is:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBuildTypeText->Wrap( -1 ); + fgSizer45->Add( lblBuildTypeText, 0, wxALL, 5 ); + + lblBuildType = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("BUILDTYPE"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBuildType->Wrap( -1 ); + fgSizer45->Add( lblBuildType, 0, wxALL, 5 ); + + + bSizer391->Add( fgSizer45, 0, wxEXPAND, 5 ); + + lblUpdateMessage = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("MESSAGE"), wxDefaultPosition, wxDefaultSize, 0 ); + lblUpdateMessage->Wrap( -1 ); + bSizer391->Add( lblUpdateMessage, 1, wxALL|wxEXPAND, 5 ); + + + pnlUpdateData->SetSizer( bSizer391 ); + pnlUpdateData->Layout(); + bSizer391->Fit( pnlUpdateData ); + bSizer390->Add( pnlUpdateData, 1, wxEXPAND | wxALL, 5 ); + + statLine = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer390->Add( statLine, 0, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer392; + bSizer392 = new wxBoxSizer( wxHORIZONTAL ); + + btnVisitGelforn = new wxButton( this, wxID_ANY, wxT("Visit Gelforn"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer392->Add( btnVisitGelforn, 0, wxALIGN_RIGHT|wxBOTTOM|wxLEFT, 5 ); + + btnVisitPREMIUM = new wxButton( this, wxID_ANY, wxT("Visit PREMIUM"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer392->Add( btnVisitPREMIUM, 0, wxBOTTOM|wxLEFT, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer392->Add( btnClose, 0, wxALIGN_RIGHT|wxBOTTOM|wxLEFT|wxRIGHT, 5 ); + + + bSizer390->Add( bSizer392, 0, wxALIGN_RIGHT, 0 ); + + + this->SetSizer( bSizer390 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnVisitGelforn->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::VisitGelforn ), NULL, this ); + btnVisitPREMIUM->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::VisitPREMIUM ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::CloseWindow ), NULL, this ); +} + +frmUpdateADT::~frmUpdateADT() +{ + // Disconnect Events + btnVisitGelforn->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::VisitGelforn ), NULL, this ); + btnVisitPREMIUM->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::VisitPREMIUM ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::CloseWindow ), NULL, this ); + +} + +frmSearchADT::frmSearchADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( 300,450 ), wxDefaultSize ); + + stbBottom = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY ); + wxBoxSizer* bSizer368; + bSizer368 = new wxBoxSizer( wxVERTICAL ); + + m_splitter4 = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D ); + m_splitter4->Connect( wxEVT_IDLE, wxIdleEventHandler( frmSearchADT::m_splitter4OnIdle ), NULL, this ); + m_splitter4->SetMinimumPaneSize( 1 ); + + m_panel60 = new wxPanel( m_splitter4, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer382; + bSizer382 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer369; + bSizer369 = new wxBoxSizer( wxHORIZONTAL ); + + nbkSearch = new wxNotebook( m_panel60, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabSearch = new wxScrolledWindow( nbkSearch, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE|wxHSCROLL|wxVSCROLL ); + tabSearch->SetScrollRate( 5, 5 ); + szrSearch = new wxFlexGridSizer( 0, 1, 0, 0 ); + szrSearch->AddGrowableCol( 0 ); + szrSearch->SetFlexibleDirection( wxVERTICAL ); + szrSearch->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + + tabSearch->SetSizer( szrSearch ); + tabSearch->Layout(); + szrSearch->Fit( tabSearch ); + nbkSearch->AddPage( tabSearch, wxT("Search"), true ); + tabAdvanced = new wxScrolledWindow( nbkSearch, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabAdvanced->SetScrollRate( 5, 5 ); + wxBoxSizer* bSizer384; + bSizer384 = new wxBoxSizer( wxVERTICAL ); + + btnSelectAccounts = new wxButton( tabAdvanced, wxID_ANY, wxT("Select Accounts..."), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer384->Add( btnSelectAccounts, 0, wxALL, 5 ); + + + tabAdvanced->SetSizer( bSizer384 ); + tabAdvanced->Layout(); + bSizer384->Fit( tabAdvanced ); + nbkSearch->AddPage( tabAdvanced, wxT("Advanced"), false ); + + bSizer369->Add( nbkSearch, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer371; + bSizer371 = new wxBoxSizer( wxVERTICAL ); + + btnSearch = new wxButton( m_panel60, wxID_ANY, wxT("Search"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer371->Add( btnSearch, 0, wxALL, 5 ); + + btnReset = new wxButton( m_panel60, wxID_ANY, wxT("Reset"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer371->Add( btnReset, 0, wxALL, 5 ); + + + bSizer369->Add( bSizer371, 0, wxEXPAND, 5 ); + + + bSizer382->Add( bSizer369, 1, wxEXPAND, 5 ); + + + m_panel60->SetSizer( bSizer382 ); + m_panel60->Layout(); + bSizer382->Fit( m_panel60 ); + m_panel61 = new wxPanel( m_splitter4, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer386; + bSizer386 = new wxBoxSizer( wxVERTICAL ); + + lstResults = new wxListCtrl( m_panel61, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer386->Add( lstResults, 1, wxALL|wxEXPAND, 5 ); + + + m_panel61->SetSizer( bSizer386 ); + m_panel61->Layout(); + bSizer386->Fit( m_panel61 ); + m_splitter4->SplitHorizontally( m_panel60, m_panel61, 178 ); + bSizer368->Add( m_splitter4, 1, wxEXPAND, 5 ); + + + this->SetSizer( bSizer368 ); + this->Layout(); + m_menubar5 = new wxMenuBar( 0 ); + mnuContact = new wxMenu(); + wxMenuItem* mnuContactOpen; + mnuContactOpen = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Open Contact...") ) + wxT('\t') + wxT("CTRL+O"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuContactOpen ); + + wxMenuItem* mnuContactEdit; + mnuContactEdit = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Edit Contact...") ) + wxT('\t') + wxT("CTRL+E"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuContactEdit ); + + wxMenuItem* mnuContactReveal; + mnuContactReveal = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Reveal Contact") ) + wxT('\t') + wxT("CTRL+R"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuContactReveal ); + + mnuContact->AppendSeparator(); + + wxMenuItem* mnuContactClose; + mnuContactClose = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Close Window") ) + wxT('\t') + wxT("ALT+F4"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuContactClose ); + + m_menubar5->Append( mnuContact, wxT("Contact") ); + + this->SetMenuBar( m_menubar5 ); + + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmSearchADT::CloseWindow ) ); + btnSelectAccounts->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::SelectAccounts ), NULL, this ); + btnSearch->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::SearchContacts ), NULL, this ); + btnReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::ResetContacts ), NULL, this ); + this->Connect( mnuContactOpen->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::OpenContact ) ); + this->Connect( mnuContactEdit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::EditContact ) ); + this->Connect( mnuContactReveal->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::RevealContact ) ); + this->Connect( mnuContactClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::CloseWindow ) ); +} + +frmSearchADT::~frmSearchADT() +{ + // Disconnect Events + this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmSearchADT::CloseWindow ) ); + btnSelectAccounts->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::SelectAccounts ), NULL, this ); + btnSearch->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::SearchContacts ), NULL, this ); + btnReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::ResetContacts ), NULL, this ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::OpenContact ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::EditContact ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::RevealContact ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::CloseWindow ) ); + +} + +frmPreferencesADT::frmPreferencesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( 450,400 ), wxSize( 450,400 ) ); + + wxBoxSizer* szrMain; + szrMain = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* szrTabs; + szrTabs = new wxBoxSizer( wxVERTICAL ); + + NbtPreferences = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( NbtPreferences, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* szrChecks; + szrChecks = new wxBoxSizer( wxVERTICAL ); + + chkSaveWindowPosition = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Save window position on exit"), wxDefaultPosition, wxDefaultSize, 0 ); + szrChecks->Add( chkSaveWindowPosition, 0, wxALL, 5 ); + + chkHideLocal = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Hide local address books"), wxDefaultPosition, wxDefaultSize, 0 ); + szrChecks->Add( chkHideLocal, 0, wxALL, 5 ); + + + tabGeneral->SetSizer( szrChecks ); + tabGeneral->Layout(); + szrChecks->Fit( tabGeneral ); + NbtPreferences->AddPage( tabGeneral, wxT("General"), false ); + tabTheme = new wxPanel( NbtPreferences, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + tabTheme->Hide(); + + wxGridSizer* szrTheme; + szrTheme = new wxGridSizer( 1, 1, 0, 0 ); + + wxBoxSizer* bSizer161; + bSizer161 = new wxBoxSizer( wxVERTICAL ); + + lstThemes = new wxListCtrl( tabTheme, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer161->Add( lstThemes, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer151; + bSizer151 = new wxBoxSizer( wxHORIZONTAL ); + + btnThemeAdd = new wxButton( tabTheme, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer151->Add( btnThemeAdd, 0, wxALL, 5 ); + + btnThemeModify = new wxButton( tabTheme, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + btnThemeModify->Enable( false ); + + bSizer151->Add( btnThemeModify, 0, wxALL, 5 ); + + btnThemeDelete = new wxButton( tabTheme, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + btnThemeDelete->Enable( false ); + + bSizer151->Add( btnThemeDelete, 0, wxALL, 5 ); + + + bSizer161->Add( bSizer151, 0, wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL, 0 ); + + + szrTheme->Add( bSizer161, 1, wxEXPAND, 5 ); + + + tabTheme->SetSizer( szrTheme ); + tabTheme->Layout(); + szrTheme->Fit( tabTheme ); + NbtPreferences->AddPage( tabTheme, wxT("Themes"), false ); + tabAccounts = new wxPanel( NbtPreferences, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxGridSizer* szrAccounts; + szrAccounts = new wxGridSizer( 1, 1, 0, 0 ); + + wxBoxSizer* bSizer16; + bSizer16 = new wxBoxSizer( wxVERTICAL ); + + lstAccounts = new wxListCtrl( tabAccounts, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer16->Add( lstAccounts, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer15; + bSizer15 = new wxBoxSizer( wxHORIZONTAL ); + + btnAccountAdd = new wxButton( tabAccounts, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer15->Add( btnAccountAdd, 0, wxALL, 5 ); + + btnAccountModify = new wxButton( tabAccounts, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + btnAccountModify->Enable( false ); + + bSizer15->Add( btnAccountModify, 0, wxALL, 5 ); + + btnAccountDelete = new wxButton( tabAccounts, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + btnAccountDelete->Enable( false ); + + bSizer15->Add( btnAccountDelete, 0, wxALL, 5 ); + + + bSizer16->Add( bSizer15, 0, wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL, 0 ); + + + szrAccounts->Add( bSizer16, 1, wxEXPAND, 5 ); + + + tabAccounts->SetSizer( szrAccounts ); + tabAccounts->Layout(); + szrAccounts->Fit( tabAccounts ); + NbtPreferences->AddPage( tabAccounts, wxT("Accounts"), true ); + + szrTabs->Add( NbtPreferences, 1, wxALL|wxEXPAND, 5 ); + + + szrMain->Add( szrTabs, 1, wxEXPAND, 0 ); + + wxBoxSizer* szrButtons; + szrButtons = new wxBoxSizer( wxHORIZONTAL ); + + + szrButtons->Add( 1, 0, 1, wxEXPAND, 0 ); + + btnSave = new wxButton( this, wxID_ANY, wxT("Save"), wxDefaultPosition, wxDefaultSize, 0 ); + btnSave->SetDefault(); + szrButtons->Add( btnSave, 0, wxALIGN_RIGHT, 0 ); + + + szrButtons->Add( 5, 0, 0, 0, 0 ); + + btnCancel = new wxButton( this, wxID_ANY, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + szrButtons->Add( btnCancel, 0, wxALIGN_RIGHT, 0 ); + + + szrButtons->Add( 5, 0, 0, wxEXPAND, 0 ); + + + szrMain->Add( szrButtons, 0, wxBOTTOM|wxEXPAND, 5 ); + + + this->SetSizer( szrMain ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmPreferencesADT::LoadPreferences ) ); + lstThemes->Connect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmPreferencesADT::DisableABButtons ), NULL, this ); + lstThemes->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmPreferencesADT::EnableABButtons ), NULL, this ); + btnThemeAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::AddABAccount ), NULL, this ); + btnThemeModify->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::ModifyABAccount ), NULL, this ); + btnThemeDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::DeleteABAccount ), NULL, this ); + lstAccounts->Connect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmPreferencesADT::DisableABButtons ), NULL, this ); + lstAccounts->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmPreferencesADT::EnableABButtons ), NULL, this ); + btnAccountAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::AddABAccount ), NULL, this ); + btnAccountModify->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::ModifyABAccount ), NULL, this ); + btnAccountDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::DeleteABAccount ), NULL, this ); + btnSave->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::SavePreferences ), NULL, this ); + btnCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::CloseWindow ), NULL, this ); +} + +frmPreferencesADT::~frmPreferencesADT() +{ + // Disconnect Events + this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmPreferencesADT::LoadPreferences ) ); + lstThemes->Disconnect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmPreferencesADT::DisableABButtons ), NULL, this ); + lstThemes->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmPreferencesADT::EnableABButtons ), NULL, this ); + btnThemeAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::AddABAccount ), NULL, this ); + btnThemeModify->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::ModifyABAccount ), NULL, this ); + btnThemeDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::DeleteABAccount ), NULL, this ); + lstAccounts->Disconnect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmPreferencesADT::DisableABButtons ), NULL, this ); + lstAccounts->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmPreferencesADT::EnableABButtons ), NULL, this ); + btnAccountAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::AddABAccount ), NULL, this ); + btnAccountModify->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::ModifyABAccount ), NULL, this ); + btnAccountDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::DeleteABAccount ), NULL, this ); + btnSave->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::SavePreferences ), NULL, this ); + btnCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::CloseWindow ), NULL, this ); + +} + +frmAboutADT::frmAboutADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( 350,400 ), wxDefaultSize ); + + wxBoxSizer* szrMain; + szrMain = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* szrLogo; + szrLogo = new wxBoxSizer( wxVERTICAL ); + + szrLogo->SetMinSize( wxSize( 350,100 ) ); + bmpLogo = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxPoint( 0,0 ), wxSize( 350,100 ), 0 ); + szrLogo->Add( bmpLogo, 0, wxALL, 0 ); + + + szrMain->Add( szrLogo, 0, wxFIXED_MINSIZE, 0 ); + + wxBoxSizer* szrDetails; + szrDetails = new wxBoxSizer( wxVERTICAL ); + + lblVersion = new wxStaticText( this, wxID_ANY, wxT("Version 0.00"), wxDefaultPosition, wxDefaultSize, 0 ); + lblVersion->Wrap( -1 ); + lblVersion->SetFont( wxFont( 14, 70, 90, 92, false, wxEmptyString ) ); + + szrDetails->Add( lblVersion, 0, wxALL, 5 ); + + lblCompileTime = new wxStaticText( this, wxID_ANY, wxT("Built on (date) at (time)"), wxDefaultPosition, wxDefaultSize, 0 ); + lblCompileTime->Wrap( -1 ); + szrDetails->Add( lblCompileTime, 0, wxALL, 5 ); + + lblCopyright = new wxStaticText( this, wxID_ANY, wxT("(c) 2012-2015 Xestia Software Development"), wxDefaultPosition, wxDefaultSize, 0 ); + lblCopyright->Wrap( -1 ); + szrDetails->Add( lblCopyright, 0, wxALL, 5 ); + + + szrMain->Add( szrDetails, 5, wxEXPAND, 1 ); + + wxBoxSizer* szrButtons; + szrButtons = new wxBoxSizer( wxVERTICAL ); + + szrButtons->SetMinSize( wxSize( -1,35 ) ); + btnClose = new wxButton( this, wxID_ANY, wxT("&Close"), wxDefaultPosition, wxDefaultSize, 0 ); + szrButtons->Add( btnClose, 0, wxALIGN_RIGHT|wxRIGHT, 5 ); + + + szrMain->Add( szrButtons, 0, wxEXPAND, 0 ); + + + this->SetSizer( szrMain ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmAboutADT::CloseAboutWindow ), NULL, this ); +} + +frmAboutADT::~frmAboutADT() +{ + // Disconnect Events + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmAboutADT::CloseAboutWindow ), NULL, this ); + +} + +frmContactADT::frmContactADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( 320,240 ), wxDefaultSize ); + + wxBoxSizer* bSizer13; + bSizer13 = new wxBoxSizer( wxVERTICAL ); + + htmContactData = new wxHtmlWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO|wxSUNKEN_BORDER ); + bSizer13->Add( htmContactData, 1, wxALL|wxEXPAND, 5 ); + + + this->SetSizer( bSizer13 ); + this->Layout(); + m_menubar2 = new wxMenuBar( 0 ); + contact = new wxMenu(); + wxMenuItem* mnuContactClose; + mnuContactClose = new wxMenuItem( contact, ID_CONTACT_CLOSE, wxString( wxT("Close") ) + wxT('\t') + wxT("CTRL+F4"), wxEmptyString, wxITEM_NORMAL ); + contact->Append( mnuContactClose ); + + m_menubar2->Append( contact, wxT("Contact") ); + + this->SetMenuBar( m_menubar2 ); + + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmContactADT::CloseWindow ) ); + this->Connect( mnuContactClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactADT::CloseWindow ) ); +} + +frmContactADT::~frmContactADT() +{ + // Disconnect Events + this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmContactADT::CloseWindow ) ); + this->Disconnect( ID_CONTACT_CLOSE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactADT::CloseWindow ) ); + +} + +frmNewAccountADT::frmNewAccountADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( 425,330 ), wxSize( 425,330 ) ); + + wxFlexGridSizer* fgSizer30; + fgSizer30 = new wxFlexGridSizer( 0, 1, 0, 0 ); + fgSizer30->AddGrowableCol( 0 ); + fgSizer30->AddGrowableRow( 0 ); + fgSizer30->SetFlexibleDirection( wxBOTH ); + fgSizer30->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + szrNewAccount = new wxBoxSizer( wxVERTICAL ); + + tabType = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer32; + fgSizer32 = new wxFlexGridSizer( 0, 1, 0, 0 ); + fgSizer32->AddGrowableCol( 0 ); + fgSizer32->SetFlexibleDirection( wxBOTH ); + fgSizer32->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_ALL ); + + lblEnterText = new wxStaticText( tabType, wxID_ANY, wxT("Enter the details below and click on Next."), wxDefaultPosition, wxDefaultSize, 0 ); + lblEnterText->Wrap( -1 ); + fgSizer32->Add( lblEnterText, 0, wxALL, 5 ); + + wxFlexGridSizer* fgSizer33; + fgSizer33 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer33->AddGrowableCol( 1 ); + fgSizer33->AddGrowableRow( 0 ); + fgSizer33->SetFlexibleDirection( wxBOTH ); + fgSizer33->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_ALL ); + + lblType = new wxStaticText( tabType, wxID_ANY, wxT("Server Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblType->Wrap( -1 ); + fgSizer33->Add( lblType, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxString cmbServerTypeChoices[] = { wxT("Local"), wxT("CardDAV") }; + int cmbServerTypeNChoices = sizeof( cmbServerTypeChoices ) / sizeof( wxString ); + cmbServerType = new wxChoice( tabType, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbServerTypeNChoices, cmbServerTypeChoices, 0 ); + cmbServerType->SetSelection( 1 ); + fgSizer33->Add( cmbServerType, 0, wxALL, 5 ); + + lblServerAddress = new wxStaticText( tabType, wxID_ANY, wxT("Server Address:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblServerAddress->Wrap( -1 ); + fgSizer33->Add( lblServerAddress, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtServerAddress = new wxTextCtrl( tabType, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtServerAddress->SetMaxLength( 0 ); + fgSizer33->Add( txtServerAddress, 1, wxALL|wxEXPAND, 5 ); + + lblServerPort = new wxStaticText( tabType, wxID_ANY, wxT("Server Port:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblServerPort->Wrap( -1 ); + fgSizer33->Add( lblServerPort, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtServerPort = new wxTextCtrl( tabType, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtServerPort->SetMaxLength( 0 ); + fgSizer33->Add( txtServerPort, 0, wxALL, 5 ); + + lblUsername = new wxStaticText( tabType, wxID_ANY, wxT("Username:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblUsername->Wrap( -1 ); + fgSizer33->Add( lblUsername, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtUsername = new wxTextCtrl( tabType, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtUsername->SetMaxLength( 0 ); + fgSizer33->Add( txtUsername, 1, wxALL|wxEXPAND, 5 ); + + lblPassword = new wxStaticText( tabType, wxID_ANY, wxT("Password:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPassword->Wrap( -1 ); + fgSizer33->Add( lblPassword, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtPassword = new wxTextCtrl( tabType, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD ); + txtPassword->SetMaxLength( 0 ); + fgSizer33->Add( txtPassword, 0, wxALL|wxEXPAND, 5 ); + + lblSSL = new wxStaticText( tabType, wxID_ANY, wxT("SSL:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblSSL->Wrap( -1 ); + fgSizer33->Add( lblSSL, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxBoxSizer* bSizer3221; + bSizer3221 = new wxBoxSizer( wxHORIZONTAL ); + + chkUseSSL = new wxCheckBox( tabType, wxID_ANY, wxT("Use SSL"), wxDefaultPosition, wxDefaultSize, 0 ); + chkUseSSL->SetValue(true); + bSizer3221->Add( chkUseSSL, 0, wxALL, 5 ); + + + fgSizer33->Add( bSizer3221, 1, wxEXPAND, 5 ); + + + fgSizer32->Add( fgSizer33, 1, wxEXPAND, 5 ); + + + tabType->SetSizer( fgSizer32 ); + tabType->Layout(); + fgSizer32->Fit( tabType ); + szrNewAccount->Add( tabType, 1, wxEXPAND | wxALL, 5 ); + + tabConn = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + tabConn->Hide(); + + wxBoxSizer* bSizer323; + bSizer323 = new wxBoxSizer( wxVERTICAL ); + + lblConnectionResult = new wxStaticText( tabConn, wxID_ANY, wxT("Connection Results:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblConnectionResult->Wrap( -1 ); + lblConnectionResult->SetFont( wxFont( 9, 74, 90, 92, false, wxT("Sans") ) ); + + bSizer323->Add( lblConnectionResult, 0, wxALL, 5 ); + + wxFlexGridSizer* fgSizer34; + fgSizer34 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer34->SetFlexibleDirection( wxBOTH ); + fgSizer34->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblServerConnected = new wxStaticText( tabConn, wxID_ANY, wxT("Server connected:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblServerConnected->Wrap( -1 ); + fgSizer34->Add( lblServerConnected, 0, wxALL, 5 ); + + lblServerConnResult = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 ); + lblServerConnResult->Wrap( -1 ); + fgSizer34->Add( lblServerConnResult, 0, wxALL, 5 ); + + lblValidResponse = new wxStaticText( tabConn, wxID_ANY, wxT("Server gave valid response:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblValidResponse->Wrap( -1 ); + fgSizer34->Add( lblValidResponse, 0, wxALL, 5 ); + + lblServerResponse = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 ); + lblServerResponse->Wrap( -1 ); + fgSizer34->Add( lblServerResponse, 0, wxALL, 5 ); + + lblUseSSL = new wxStaticText( tabConn, wxID_ANY, wxT("Server uses SSL:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblUseSSL->Wrap( -1 ); + fgSizer34->Add( lblUseSSL, 0, wxALL, 5 ); + + lblServerSSLResult = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 ); + lblServerSSLResult->Wrap( -1 ); + fgSizer34->Add( lblServerSSLResult, 0, wxALL, 5 ); + + lblServerSSLCert = new wxStaticText( tabConn, wxID_ANY, wxT("Server has valid SSL certificate:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblServerSSLCert->Wrap( -1 ); + fgSizer34->Add( lblServerSSLCert, 0, wxALL, 5 ); + + lblServerSSLValid = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 ); + lblServerSSLValid->Wrap( -1 ); + fgSizer34->Add( lblServerSSLValid, 0, wxALL, 5 ); + + lblServerUsernamePassword = new wxStaticText( tabConn, wxID_ANY, wxT("Able to Login:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblServerUsernamePassword->Wrap( -1 ); + fgSizer34->Add( lblServerUsernamePassword, 0, wxALL, 5 ); + + lblAbleToLoginResult = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 ); + lblAbleToLoginResult->Wrap( -1 ); + fgSizer34->Add( lblAbleToLoginResult, 0, wxALL, 5 ); + + lblIsCalDAV = new wxStaticText( tabConn, wxID_ANY, wxT("Server has CardDAV Support:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblIsCalDAV->Wrap( -1 ); + fgSizer34->Add( lblIsCalDAV, 0, wxALL, 5 ); + + lblCardDAVSupportResult = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 ); + lblCardDAVSupportResult->Wrap( -1 ); + fgSizer34->Add( lblCardDAVSupportResult, 0, wxALL, 5 ); + + + bSizer323->Add( fgSizer34, 1, wxEXPAND, 5 ); + + m_staticline3 = new wxStaticLine( tabConn, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer323->Add( m_staticline3, 0, wxEXPAND | wxALL, 5 ); + + lblConnectionResultText = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 ); + lblConnectionResultText->Wrap( 360 ); + lblConnectionResultText->SetMinSize( wxSize( -1,40 ) ); + + bSizer323->Add( lblConnectionResultText, 0, wxALL|wxEXPAND, 5 ); + + + tabConn->SetSizer( bSizer323 ); + tabConn->Layout(); + bSizer323->Fit( tabConn ); + szrNewAccount->Add( tabConn, 1, wxEXPAND | wxALL, 5 ); + + tabFinish = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + tabFinish->Hide(); + + wxBoxSizer* bSizer3231; + bSizer3231 = new wxBoxSizer( wxVERTICAL ); + + lblFinishText = new wxStaticText( tabFinish, wxID_ANY, wxT("Enter the account name and click on Finish."), wxDefaultPosition, wxDefaultSize, 0 ); + lblFinishText->Wrap( -1 ); + bSizer3231->Add( lblFinishText, 0, wxALL, 5 ); + + wxFlexGridSizer* fgSizer341; + fgSizer341 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer341->AddGrowableCol( 1 ); + fgSizer341->SetFlexibleDirection( wxBOTH ); + fgSizer341->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblAccountName = new wxStaticText( tabFinish, wxID_ANY, wxT("Account Name:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAccountName->Wrap( -1 ); + fgSizer341->Add( lblAccountName, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtAccountName = new wxTextCtrl( tabFinish, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtAccountName->SetMaxLength( 0 ); + fgSizer341->Add( txtAccountName, 1, wxALL|wxEXPAND, 5 ); + + + bSizer3231->Add( fgSizer341, 1, wxEXPAND, 5 ); + + + tabFinish->SetSizer( bSizer3231 ); + tabFinish->Layout(); + bSizer3231->Fit( tabFinish ); + szrNewAccount->Add( tabFinish, 1, wxEXPAND | wxALL, 5 ); + + + fgSizer30->Add( szrNewAccount, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer322; + bSizer322 = new wxBoxSizer( wxHORIZONTAL ); + + btnPrevious = new wxButton( this, wxID_ANY, wxT("< Previous"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer322->Add( btnPrevious, 0, wxALL, 5 ); + + btnNext = new wxButton( this, wxID_ANY, wxT("Next >"), wxDefaultPosition, wxDefaultSize, 0 ); + btnNext->SetDefault(); + bSizer322->Add( btnNext, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer322->Add( btnClose, 0, wxALL, 5 ); + + + fgSizer30->Add( bSizer322, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( fgSizer30 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + cmbServerType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmNewAccountADT::UpdateRequirements ), NULL, this ); + txtAccountName->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmNewAccountADT::CheckAccountName ), NULL, this ); + btnPrevious->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::ProcessPrevious ), NULL, this ); + btnNext->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::ProcessNext ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::CloseWindow ), NULL, this ); +} + +frmNewAccountADT::~frmNewAccountADT() +{ + // Disconnect Events + cmbServerType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmNewAccountADT::UpdateRequirements ), NULL, this ); + txtAccountName->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmNewAccountADT::CheckAccountName ), NULL, this ); + btnPrevious->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::ProcessPrevious ), NULL, this ); + btnNext->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::ProcessNext ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorADT::frmContactEditorADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); + this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + wxBoxSizer* bSizer17; + bSizer17 = new wxBoxSizer( wxVERTICAL ); + + nbkContact = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabGeneral->SetScrollRate( 5, 5 ); + wxBoxSizer* bSizer18; + bSizer18 = new wxBoxSizer( wxVERTICAL ); + + wxGridSizer* gSizer7; + gSizer7 = new wxGridSizer( 0, 6, 0, 0 ); + + lblTitle = new wxStaticText( tabGeneral, wxID_ANY, wxT("Title:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTitle->Wrap( -1 ); + gSizer7->Add( lblTitle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtTitle = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtTitle->SetMaxLength( 0 ); + gSizer7->Add( txtTitle, 0, wxALL|wxEXPAND, 5 ); + + + gSizer7->Add( 0, 0, 1, wxEXPAND, 5 ); + + + gSizer7->Add( 0, 0, 1, wxEXPAND, 5 ); + + + gSizer7->Add( 0, 0, 1, wxEXPAND, 5 ); + + + gSizer7->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblForename = new wxStaticText( tabGeneral, wxID_ANY, wxT("Forename:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblForename->Wrap( -1 ); + gSizer7->Add( lblForename, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtForename = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtForename->SetMaxLength( 0 ); + gSizer7->Add( txtForename, 0, wxALL|wxEXPAND, 5 ); + + lblSurname = new wxStaticText( tabGeneral, wxID_ANY, wxT("Surname:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblSurname->Wrap( -1 ); + gSizer7->Add( lblSurname, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtSurname = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtSurname->SetMaxLength( 0 ); + gSizer7->Add( txtSurname, 0, wxALL|wxEXPAND, 5 ); + + lblOtherNames = new wxStaticText( tabGeneral, wxID_ANY, wxT("Other Names:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblOtherNames->Wrap( -1 ); + gSizer7->Add( lblOtherNames, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtOtherNames = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtOtherNames->SetMaxLength( 0 ); + gSizer7->Add( txtOtherNames, 0, wxALL|wxEXPAND, 5 ); + + lblSuffix = new wxStaticText( tabGeneral, wxID_ANY, wxT("Suffix:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblSuffix->Wrap( -1 ); + gSizer7->Add( lblSuffix, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtSuffix = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtSuffix->SetMaxLength( 0 ); + gSizer7->Add( txtSuffix, 0, wxALL|wxEXPAND, 5 ); + + + gSizer7->Add( 0, 0, 1, wxEXPAND, 5 ); + + + gSizer7->Add( 0, 0, 1, wxEXPAND, 5 ); + + + bSizer18->Add( gSizer7, 0, wxEXPAND, 5 ); + + wxFlexGridSizer* fgSizer5; + fgSizer5 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer5->AddGrowableCol( 1 ); + fgSizer5->SetFlexibleDirection( wxBOTH ); + fgSizer5->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblDisplayAs = new wxStaticText( tabGeneral, wxID_ANY, wxT("Display As:"), wxPoint( -1,-1 ), wxDefaultSize, 0 ); + lblDisplayAs->Wrap( -1 ); + fgSizer5->Add( lblDisplayAs, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + cmbDisplayAs = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + fgSizer5->Add( cmbDisplayAs, 0, wxALL|wxEXPAND, 5 ); + + lblBirthday = new wxStaticText( tabGeneral, wxID_ANY, wxT("Birthday:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBirthday->Wrap( -1 ); + fgSizer5->Add( lblBirthday, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxBoxSizer* bSizer318; + bSizer318 = new wxBoxSizer( wxHORIZONTAL ); + + dapBirthday = new wxDatePickerCtrl( tabGeneral, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_ALLOWNONE|wxDP_DEFAULT|wxDP_DROPDOWN|wxDP_SHOWCENTURY ); + dapBirthday->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) ); + dapBirthday->SetToolTip( wxT("If you don't wish to enter a year, please use '0000' as the year.") ); + dapBirthday->SetMinSize( wxSize( -1,25 ) ); + + bSizer318->Add( dapBirthday, 0, wxALL|wxEXPAND, 5 ); + + txtBirthday = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtBirthday->SetMaxLength( 0 ); + bSizer318->Add( txtBirthday, 1, wxALL, 5 ); + + + fgSizer5->Add( bSizer318, 1, wxEXPAND, 5 ); + + lblAnniversary = new wxStaticText( tabGeneral, wxID_ANY, wxT("Anniversary:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAnniversary->Wrap( -1 ); + fgSizer5->Add( lblAnniversary, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxBoxSizer* bSizer319; + bSizer319 = new wxBoxSizer( wxHORIZONTAL ); + + dapAnniversary = new wxDatePickerCtrl( tabGeneral, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_ALLOWNONE|wxDP_DEFAULT|wxDP_DROPDOWN|wxDP_SHOWCENTURY ); + dapAnniversary->SetToolTip( wxT("If you don't wish to enter a year, please use '0000' as the year.") ); + dapAnniversary->SetMinSize( wxSize( -1,25 ) ); + + bSizer319->Add( dapAnniversary, 0, wxALL|wxEXPAND, 5 ); + + txtAnniversary = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtAnniversary->SetMaxLength( 0 ); + bSizer319->Add( txtAnniversary, 1, wxALL, 5 ); + + + fgSizer5->Add( bSizer319, 1, wxEXPAND, 5 ); + + lblGender = new wxStaticText( tabGeneral, wxID_ANY, wxT("Gender:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblGender->Wrap( -1 ); + fgSizer5->Add( lblGender, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxBoxSizer* bSizer20; + bSizer20 = new wxBoxSizer( wxHORIZONTAL ); + + wxString cmbGenderChoices[] = { wxEmptyString, wxT("Male"), wxT("Female"), wxT("Other"), wxT("None/Not Applicable"), wxT("Unknown") }; + int cmbGenderNChoices = sizeof( cmbGenderChoices ) / sizeof( wxString ); + cmbGender = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbGenderNChoices, cmbGenderChoices, 0 ); + cmbGender->SetSelection( 0 ); + bSizer20->Add( cmbGender, 0, wxALL, 5 ); + + txtGenderDescription = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtGenderDescription->SetMaxLength( 0 ); + bSizer20->Add( txtGenderDescription, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + fgSizer5->Add( bSizer20, 1, wxEXPAND, 5 ); + + lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblType->Wrap( -1 ); + fgSizer5->Add( lblType, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxString cmbTypeChoices[] = { wxT("(Unspecified)"), wxT("Individual"), wxT("Group"), wxT("Organisation"), wxT("Location") }; + int cmbTypeNChoices = sizeof( cmbTypeChoices ) / sizeof( wxString ); + cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeNChoices, cmbTypeChoices, 0 ); + cmbType->SetSelection( 0 ); + fgSizer5->Add( cmbType, 0, wxALL, 5 ); + + lblNicknames = new wxStaticText( tabGeneral, wxID_ANY, wxT("Nicknames:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblNicknames->Wrap( -1 ); + fgSizer5->Add( lblNicknames, 0, wxALL, 5 ); + + wxBoxSizer* szrNicknames; + szrNicknames = new wxBoxSizer( wxHORIZONTAL ); + + lboNicknames = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrNicknames->Add( lboNicknames, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrAddressesOuter3; + szrAddressesOuter3 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer464; + bSizer464 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer474; + bSizer474 = new wxBoxSizer( wxVERTICAL ); + + btnAddGeneralNickname = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer474->Add( btnAddGeneralNickname, 0, wxALL, 5 ); + + btnModifyGeneralNickname = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer474->Add( btnModifyGeneralNickname, 0, wxALL, 5 ); + + btnDeleteGeneralNickname = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer474->Add( btnDeleteGeneralNickname, 0, wxALL, 5 ); + + + bSizer464->Add( bSizer474, 1, wxEXPAND, 5 ); + + + szrAddressesOuter3->Add( bSizer464, 1, wxEXPAND, 5 ); + + + szrNicknames->Add( szrAddressesOuter3, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( szrNicknames, 1, wxEXPAND, 5 ); + + lblAddress = new wxStaticText( tabGeneral, wxID_ANY, wxT("Addresses:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAddress->Wrap( -1 ); + fgSizer5->Add( lblAddress, 0, wxALL, 5 ); + + wxBoxSizer* szrAddresses; + szrAddresses = new wxBoxSizer( wxHORIZONTAL ); + + lboAddresses = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses->Add( lboAddresses, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrAddressesOuter; + szrAddressesOuter = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46; + bSizer46 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47; + bSizer47 = new wxBoxSizer( wxVERTICAL ); + + btnAddGeneralAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47->Add( btnAddGeneralAddress, 0, wxALL, 5 ); + + btnModifyGeneralAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47->Add( btnModifyGeneralAddress, 0, wxALL, 5 ); + + btnDeleteGeneralAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47->Add( btnDeleteGeneralAddress, 0, wxALL, 5 ); + + + bSizer46->Add( bSizer47, 1, wxEXPAND, 5 ); + + + szrAddressesOuter->Add( bSizer46, 1, wxEXPAND, 5 ); + + + szrAddresses->Add( szrAddressesOuter, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( szrAddresses, 1, wxEXPAND, 5 ); + + lblEmail = new wxStaticText( tabGeneral, wxID_ANY, wxT("E-mail:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblEmail->Wrap( -1 ); + fgSizer5->Add( lblEmail, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301; + bSizer301 = new wxBoxSizer( wxHORIZONTAL ); + + lboEmails = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301->Add( lboEmails, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351; + bSizer351 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461; + bSizer461 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471; + bSizer471 = new wxBoxSizer( wxVERTICAL ); + + btnAddEmailAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471->Add( btnAddEmailAddress, 0, wxALL, 5 ); + + btnModifyEmailAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471->Add( btnModifyEmailAddress, 0, wxALL, 5 ); + + btnDeleteEmailAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471->Add( btnDeleteEmailAddress, 0, wxALL, 5 ); + + + bSizer461->Add( bSizer471, 1, wxEXPAND, 5 ); + + + bSizer351->Add( bSizer461, 1, wxEXPAND, 5 ); + + + bSizer301->Add( bSizer351, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer301, 1, wxEXPAND, 5 ); + + lblIM = new wxStaticText( tabGeneral, wxID_ANY, wxT("Instant Messaging:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblIM->Wrap( 0 ); + fgSizer5->Add( lblIM, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011; + bSizer3011 = new wxBoxSizer( wxHORIZONTAL ); + + lboIM = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011->Add( lboIM, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511; + bSizer3511 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611; + bSizer4611 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711; + bSizer4711 = new wxBoxSizer( wxVERTICAL ); + + btnAddIMAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711->Add( btnAddIMAddress, 0, wxALL, 5 ); + + btnModifyIMAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711->Add( btnModifyIMAddress, 0, wxALL, 5 ); + + btnDeleteIMAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711->Add( btnDeleteIMAddress, 0, wxALL, 5 ); + + + bSizer4611->Add( bSizer4711, 1, wxEXPAND, 5 ); + + + bSizer3511->Add( bSizer4611, 1, wxEXPAND, 5 ); + + + bSizer3011->Add( bSizer3511, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer3011, 1, wxEXPAND, 5 ); + + lblTelephone = new wxStaticText( tabGeneral, wxID_ANY, wxT("Telephone:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTelephone->Wrap( 0 ); + fgSizer5->Add( lblTelephone, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111; + bSizer30111 = new wxBoxSizer( wxHORIZONTAL ); + + lboTelephone = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30111->Add( lboTelephone, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111; + bSizer35111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111; + bSizer46111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111; + bSizer47111 = new wxBoxSizer( wxVERTICAL ); + + btnAddTelephone = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111->Add( btnAddTelephone, 0, wxALL, 5 ); + + btnModifyTelephone = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111->Add( btnModifyTelephone, 0, wxALL, 5 ); + + btnDeleteTelephone = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111->Add( btnDeleteTelephone, 0, wxALL, 5 ); + + + bSizer46111->Add( bSizer47111, 1, wxEXPAND, 5 ); + + + bSizer35111->Add( bSizer46111, 1, wxEXPAND, 5 ); + + + bSizer30111->Add( bSizer35111, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer30111, 1, wxEXPAND, 5 ); + + lblLanguages = new wxStaticText( tabGeneral, wxID_ANY, wxT("Languages:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLanguages->Wrap( 0 ); + fgSizer5->Add( lblLanguages, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301111; + bSizer301111 = new wxBoxSizer( wxHORIZONTAL ); + + lboLanguages = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301111->Add( lboLanguages, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351111; + bSizer351111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461111; + bSizer461111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471111; + bSizer471111 = new wxBoxSizer( wxVERTICAL ); + + btnAddLanguage = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111->Add( btnAddLanguage, 0, wxALL, 5 ); + + btnModifyLanguage = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111->Add( btnModifyLanguage, 0, wxALL, 5 ); + + btnDeleteLanguage = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111->Add( btnDeleteLanguage, 0, wxALL, 5 ); + + + bSizer461111->Add( bSizer471111, 1, wxEXPAND, 5 ); + + + bSizer351111->Add( bSizer461111, 1, wxEXPAND, 5 ); + + + bSizer301111->Add( bSizer351111, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer301111, 1, wxEXPAND, 5 ); + + lblTimezone = new wxStaticText( tabGeneral, wxID_ANY, wxT("Timezones:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTimezone->Wrap( 0 ); + fgSizer5->Add( lblTimezone, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011111; + bSizer3011111 = new wxBoxSizer( wxHORIZONTAL ); + + lboTimezones = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011111->Add( lboTimezones, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511111; + bSizer3511111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611111; + bSizer4611111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711111; + bSizer4711111 = new wxBoxSizer( wxVERTICAL ); + + btnAddTimezone = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111->Add( btnAddTimezone, 0, wxALL, 5 ); + + btnModifyTimezone = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111->Add( btnModifyTimezone, 0, wxALL, 5 ); + + btnDeleteTimezone = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111->Add( btnDeleteTimezone, 0, wxALL, 5 ); + + + bSizer4611111->Add( bSizer4711111, 1, wxEXPAND, 5 ); + + + bSizer3511111->Add( bSizer4611111, 1, wxEXPAND, 5 ); + + + bSizer3011111->Add( bSizer3511111, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer3011111, 1, wxEXPAND, 5 ); + + lblGeopositioning = new wxStaticText( tabGeneral, wxID_ANY, wxT("Geopositioning:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblGeopositioning->Wrap( -1 ); + fgSizer5->Add( lblGeopositioning, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111114; + bSizer30111114 = new wxBoxSizer( wxHORIZONTAL ); + + lboGeoposition = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30111114->Add( lboGeoposition, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111114; + bSizer35111114 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111114; + bSizer46111114 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111114; + bSizer47111114 = new wxBoxSizer( wxVERTICAL ); + + btnAddGeneralGeoposition = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111114->Add( btnAddGeneralGeoposition, 0, wxALL, 5 ); + + btnModifyGeneralGeoposition = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111114->Add( btnModifyGeneralGeoposition, 0, wxALL, 5 ); + + btnDeleteGeneralGeoposition = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111114->Add( btnDeleteGeneralGeoposition, 0, wxALL, 5 ); + + + bSizer46111114->Add( bSizer47111114, 1, wxEXPAND, 5 ); + + + bSizer35111114->Add( bSizer46111114, 1, wxEXPAND, 5 ); + + + bSizer30111114->Add( bSizer35111114, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer30111114, 1, wxEXPAND, 5 ); + + lblRelated = new wxStaticText( tabGeneral, wxID_ANY, wxT("Related people:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblRelated->Wrap( 1 ); + fgSizer5->Add( lblRelated, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111111; + bSizer30111111 = new wxBoxSizer( wxHORIZONTAL ); + + lboRelated = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30111111->Add( lboRelated, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111111; + bSizer35111111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111111; + bSizer46111111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111111; + bSizer47111111 = new wxBoxSizer( wxVERTICAL ); + + btnAddRelated = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111->Add( btnAddRelated, 0, wxALL, 5 ); + + btnModifyRelated = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111->Add( btnModifyRelated, 0, wxALL, 5 ); + + btnDeleteRelated = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111->Add( btnDeleteRelated, 0, wxALL, 5 ); + + + bSizer46111111->Add( bSizer47111111, 1, wxEXPAND, 5 ); + + + bSizer35111111->Add( bSizer46111111, 1, wxEXPAND, 5 ); + + + bSizer30111111->Add( bSizer35111111, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer30111111, 1, wxEXPAND, 5 ); + + lblWebsites = new wxStaticText( tabGeneral, wxID_ANY, wxT("Websites:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblWebsites->Wrap( 1 ); + fgSizer5->Add( lblWebsites, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301111111; + bSizer301111111 = new wxBoxSizer( wxHORIZONTAL ); + + lboWebsites = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301111111->Add( lboWebsites, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351111111; + bSizer351111111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461111111; + bSizer461111111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471111111; + bSizer471111111 = new wxBoxSizer( wxVERTICAL ); + + btnAddWebsite = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111->Add( btnAddWebsite, 0, wxALL, 5 ); + + btnModifyWebsite = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111->Add( btnModifyWebsite, 0, wxALL, 5 ); + + btnDeleteWebsite = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111->Add( btnDeleteWebsite, 0, wxALL, 5 ); + + + bSizer461111111->Add( bSizer471111111, 1, wxEXPAND, 5 ); + + + bSizer351111111->Add( bSizer461111111, 1, wxEXPAND, 5 ); + + + bSizer301111111->Add( bSizer351111111, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer301111111, 1, wxEXPAND, 5 ); + + lblTitles = new wxStaticText( tabGeneral, wxID_ANY, wxT("Titles:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTitles->Wrap( 1 ); + fgSizer5->Add( lblTitles, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011111111; + bSizer3011111111 = new wxBoxSizer( wxHORIZONTAL ); + + lboTitles = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011111111->Add( lboTitles, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511111111; + bSizer3511111111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611111111; + bSizer4611111111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711111111; + bSizer4711111111 = new wxBoxSizer( wxVERTICAL ); + + btnAddTitle = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111->Add( btnAddTitle, 0, wxALL, 5 ); + + btnModifyTitle = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111->Add( btnModifyTitle, 0, wxALL, 5 ); + + btnDeleteTitle = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111->Add( btnDeleteTitle, 0, wxALL, 5 ); + + + bSizer4611111111->Add( bSizer4711111111, 1, wxEXPAND, 5 ); + + + bSizer3511111111->Add( bSizer4611111111, 1, wxEXPAND, 5 ); + + + bSizer3011111111->Add( bSizer3511111111, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer3011111111, 1, wxEXPAND, 5 ); + + lblRoles = new wxStaticText( tabGeneral, wxID_ANY, wxT("Roles:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblRoles->Wrap( 1 ); + fgSizer5->Add( lblRoles, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111111111; + bSizer30111111111 = new wxBoxSizer( wxHORIZONTAL ); + + lboRoles = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30111111111->Add( lboRoles, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111111111; + bSizer35111111111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111111111; + bSizer46111111111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111111111; + bSizer47111111111 = new wxBoxSizer( wxVERTICAL ); + + btnAddRole = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111111->Add( btnAddRole, 0, wxALL, 5 ); + + btnModifyRole = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111111->Add( btnModifyRole, 0, wxALL, 5 ); + + btnDeleteRole = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111111->Add( btnDeleteRole, 0, wxALL, 5 ); + + + bSizer46111111111->Add( bSizer47111111111, 1, wxEXPAND, 5 ); + + + bSizer35111111111->Add( bSizer46111111111, 1, wxEXPAND, 5 ); + + + bSizer30111111111->Add( bSizer35111111111, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer30111111111, 1, wxEXPAND, 5 ); + + lblOrganisations = new wxStaticText( tabGeneral, wxID_ANY, wxT("Organisations:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblOrganisations->Wrap( 1 ); + fgSizer5->Add( lblOrganisations, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301111111111; + bSizer301111111111 = new wxBoxSizer( wxHORIZONTAL ); + + lboOrganisations = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301111111111->Add( lboOrganisations, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351111111111; + bSizer351111111111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461111111111; + bSizer461111111111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471111111111; + bSizer471111111111 = new wxBoxSizer( wxVERTICAL ); + + btnAddOrganisations = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111111->Add( btnAddOrganisations, 0, wxALL, 5 ); + + btnModifyOrganisations = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111111->Add( btnModifyOrganisations, 0, wxALL, 5 ); + + btnDeleteOrganisations = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111111->Add( btnDeleteOrganisations, 0, wxALL, 5 ); + + + bSizer461111111111->Add( bSizer471111111111, 1, wxEXPAND, 5 ); + + + bSizer351111111111->Add( bSizer461111111111, 1, wxEXPAND, 5 ); + + + bSizer301111111111->Add( bSizer351111111111, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer301111111111, 1, wxEXPAND, 5 ); + + lblNotes = new wxStaticText( tabGeneral, wxID_ANY, wxT("Notes:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblNotes->Wrap( 1 ); + fgSizer5->Add( lblNotes, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011111111111; + bSizer3011111111111 = new wxBoxSizer( wxHORIZONTAL ); + + lboNotes = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011111111111->Add( lboNotes, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511111111111; + bSizer3511111111111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611111111111; + bSizer4611111111111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711111111111; + bSizer4711111111111 = new wxBoxSizer( wxVERTICAL ); + + btnAddNote = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111111->Add( btnAddNote, 0, wxALL, 5 ); + + btnModifyNote = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111111->Add( btnModifyNote, 0, wxALL, 5 ); + + btnDeleteNote = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111111->Add( btnDeleteNote, 0, wxALL, 5 ); + + + bSizer4611111111111->Add( bSizer4711111111111, 1, wxEXPAND, 5 ); + + + bSizer3511111111111->Add( bSizer4611111111111, 1, wxEXPAND, 5 ); + + + bSizer3011111111111->Add( bSizer3511111111111, 0, wxEXPAND, 5 ); + + + fgSizer5->Add( bSizer3011111111111, 1, wxEXPAND, 5 ); + + + bSizer18->Add( fgSizer5, 0, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( bSizer18 ); + tabGeneral->Layout(); + bSizer18->Fit( tabGeneral ); + nbkContact->AddPage( tabGeneral, wxT("General"), false ); + tabHome = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabHome->SetScrollRate( 5, 5 ); + wxBoxSizer* bSizer181; + bSizer181 = new wxBoxSizer( wxVERTICAL ); + + wxGridSizer* gSizer71; + gSizer71 = new wxGridSizer( 2, 6, 0, 0 ); + + + bSizer181->Add( gSizer71, 0, wxEXPAND, 5 ); + + wxFlexGridSizer* fgSizer51; + fgSizer51 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer51->AddGrowableCol( 1 ); + fgSizer51->SetFlexibleDirection( wxBOTH ); + fgSizer51->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblHomeNickname = new wxStaticText( tabHome, wxID_ANY, wxT("Home Nicknames:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeNickname->Wrap( 0 ); + fgSizer51->Add( lblHomeNickname, 0, wxALL, 5 ); + + wxBoxSizer* szrAddresses12; + szrAddresses12 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeNicknames = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses12->Add( lboHomeNicknames, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrAddressesOuter11; + szrAddressesOuter11 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4622; + bSizer4622 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4722; + bSizer4722 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeNickname = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4722->Add( btnAddHomeNickname, 0, wxALL, 5 ); + + btnModifyHomeNickname = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4722->Add( btnModifyHomeNickname, 0, wxALL, 5 ); + + btnDeleteHomeNickname = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4722->Add( btnDeleteHomeNickname, 0, wxALL, 5 ); + + + bSizer4622->Add( bSizer4722, 1, wxEXPAND, 5 ); + + + szrAddressesOuter11->Add( bSizer4622, 1, wxEXPAND, 5 ); + + + szrAddresses12->Add( szrAddressesOuter11, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( szrAddresses12, 1, wxEXPAND, 5 ); + + lblHomeAddresses = new wxStaticText( tabHome, wxID_ANY, wxT("Home Addresses:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeAddresses->Wrap( 1 ); + fgSizer51->Add( lblHomeAddresses, 0, wxALL, 5 ); + + wxBoxSizer* szrAddresses1; + szrAddresses1 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeAddresses = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses1->Add( lboHomeAddresses, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrAddressesOuter1; + szrAddressesOuter1 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer462; + bSizer462 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer472; + bSizer472 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeAddress = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer472->Add( btnAddHomeAddress, 0, wxALL, 5 ); + + btnModifyHomeAddress = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer472->Add( btnModifyHomeAddress, 0, wxALL, 5 ); + + btnDeleteHomeAddress = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer472->Add( btnDeleteHomeAddress, 0, wxALL, 5 ); + + + bSizer462->Add( bSizer472, 1, wxEXPAND, 5 ); + + + szrAddressesOuter1->Add( bSizer462, 1, wxEXPAND, 5 ); + + + szrAddresses1->Add( szrAddressesOuter1, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( szrAddresses1, 1, wxEXPAND, 5 ); + + lblHomeEmail = new wxStaticText( tabHome, wxID_ANY, wxT("Home Emails:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeEmail->Wrap( 1 ); + fgSizer51->Add( lblHomeEmail, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3012; + bSizer3012 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeEmails = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3012->Add( lboHomeEmails, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3512; + bSizer3512 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4612; + bSizer4612 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4712; + bSizer4712 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeEmailAddress = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4712->Add( btnAddHomeEmailAddress, 0, wxALL, 5 ); + + btnModifyHomeEmailAddress = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4712->Add( btnModifyHomeEmailAddress, 0, wxALL, 5 ); + + btnDeleteHomeEmailAddress = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4712->Add( btnDeleteHomeEmailAddress, 0, wxALL, 5 ); + + + bSizer4612->Add( bSizer4712, 1, wxEXPAND, 5 ); + + + bSizer3512->Add( bSizer4612, 1, wxEXPAND, 5 ); + + + bSizer3012->Add( bSizer3512, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer3012, 1, wxEXPAND, 5 ); + + lblHomeIM = new wxStaticText( tabHome, wxID_ANY, wxT("Home Instant Messaging:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeIM->Wrap( 0 ); + fgSizer51->Add( lblHomeIM, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30112; + bSizer30112 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeIM = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30112->Add( lboHomeIM, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35112; + bSizer35112 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46112; + bSizer46112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47112; + bSizer47112 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeIMAddress = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47112->Add( btnAddHomeIMAddress, 0, wxALL, 5 ); + + btnModifyHomeIMAddress = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47112->Add( btnModifyHomeIMAddress, 0, wxALL, 5 ); + + btnDeleteHomeIMAddress = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47112->Add( btnDeleteHomeIMAddress, 0, wxALL, 5 ); + + + bSizer46112->Add( bSizer47112, 1, wxEXPAND, 5 ); + + + bSizer35112->Add( bSizer46112, 1, wxEXPAND, 5 ); + + + bSizer30112->Add( bSizer35112, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer30112, 1, wxEXPAND, 5 ); + + lblHomeTelephone = new wxStaticText( tabHome, wxID_ANY, wxT("Home Telephone:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeTelephone->Wrap( 0 ); + fgSizer51->Add( lblHomeTelephone, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301112; + bSizer301112 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeTelephone = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301112->Add( lboHomeTelephone, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351112; + bSizer351112 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461112; + bSizer461112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471112; + bSizer471112 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeTelephone = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471112->Add( btnAddHomeTelephone, 0, wxALL, 5 ); + + btnModifyHomeTelephone = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471112->Add( btnModifyHomeTelephone, 0, wxALL, 5 ); + + btnDeleteHomeTelephone = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471112->Add( btnDeleteHomeTelephone, 0, wxALL, 5 ); + + + bSizer461112->Add( bSizer471112, 1, wxEXPAND, 5 ); + + + bSizer351112->Add( bSizer461112, 1, wxEXPAND, 5 ); + + + bSizer301112->Add( bSizer351112, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer301112, 1, wxEXPAND, 5 ); + + lblHomeLanguages = new wxStaticText( tabHome, wxID_ANY, wxT("Home Languages:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeLanguages->Wrap( 0 ); + fgSizer51->Add( lblHomeLanguages, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011112; + bSizer3011112 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeLanguages = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011112->Add( lboHomeLanguages, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511112; + bSizer3511112 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611112; + bSizer4611112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711112; + bSizer4711112 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeLanguage = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711112->Add( btnAddHomeLanguage, 0, wxALL, 5 ); + + btnModifyHomeLanguage = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711112->Add( btnModifyHomeLanguage, 0, wxALL, 5 ); + + btnDeleteHomeLanguage = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711112->Add( btnDeleteHomeLanguage, 0, wxALL, 5 ); + + + bSizer4611112->Add( bSizer4711112, 1, wxEXPAND, 5 ); + + + bSizer3511112->Add( bSizer4611112, 1, wxEXPAND, 5 ); + + + bSizer3011112->Add( bSizer3511112, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer3011112, 1, wxEXPAND, 5 ); + + lblHomeTimezone = new wxStaticText( tabHome, wxID_ANY, wxT("Home Timezones:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeTimezone->Wrap( 0 ); + fgSizer51->Add( lblHomeTimezone, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111112; + bSizer30111112 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeTimezones = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30111112->Add( lboHomeTimezones, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111112; + bSizer35111112 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111112; + bSizer46111112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111112; + bSizer47111112 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeTimezone = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111112->Add( btnAddHomeTimezone, 0, wxALL, 5 ); + + btnModifyHomeTimezone = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111112->Add( btnModifyHomeTimezone, 0, wxALL, 5 ); + + btnDeleteHomeTimezone = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111112->Add( btnDeleteHomeTimezone, 0, wxALL, 5 ); + + + bSizer46111112->Add( bSizer47111112, 1, wxEXPAND, 5 ); + + + bSizer35111112->Add( bSizer46111112, 1, wxEXPAND, 5 ); + + + bSizer30111112->Add( bSizer35111112, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer30111112, 1, wxEXPAND, 5 ); + + lblHomeGeopositioning = new wxStaticText( tabHome, wxID_ANY, wxT("Home Geopositioning:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeGeopositioning->Wrap( 0 ); + fgSizer51->Add( lblHomeGeopositioning, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301111141; + bSizer301111141 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeGeoposition = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301111141->Add( lboHomeGeoposition, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351111141; + bSizer351111141 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461111141; + bSizer461111141 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471111141; + bSizer471111141 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeGeoposition = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111141->Add( btnAddHomeGeoposition, 0, wxALL, 5 ); + + btnModifyHomeGeoposition = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111141->Add( btnModifyHomeGeoposition, 0, wxALL, 5 ); + + btnDeleteHomePosition = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111141->Add( btnDeleteHomePosition, 0, wxALL, 5 ); + + + bSizer461111141->Add( bSizer471111141, 1, wxEXPAND, 5 ); + + + bSizer351111141->Add( bSizer461111141, 1, wxEXPAND, 5 ); + + + bSizer301111141->Add( bSizer351111141, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer301111141, 1, wxEXPAND, 5 ); + + lblHomeWebsites = new wxStaticText( tabHome, wxID_ANY, wxT("Home Websites:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeWebsites->Wrap( 1 ); + fgSizer51->Add( lblHomeWebsites, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011111112; + bSizer3011111112 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeWebsites = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011111112->Add( lboHomeWebsites, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511111112; + bSizer3511111112 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611111112; + bSizer4611111112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711111112; + bSizer4711111112 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeWebsite = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111112->Add( btnAddHomeWebsite, 0, wxALL, 5 ); + + btnHomeModifyWebsite = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111112->Add( btnHomeModifyWebsite, 0, wxALL, 5 ); + + btnDeleteHomeWebsite = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111112->Add( btnDeleteHomeWebsite, 0, wxALL, 5 ); + + + bSizer4611111112->Add( bSizer4711111112, 1, wxEXPAND, 5 ); + + + bSizer3511111112->Add( bSizer4611111112, 1, wxEXPAND, 5 ); + + + bSizer3011111112->Add( bSizer3511111112, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer3011111112, 1, wxEXPAND, 5 ); + + lblHomeTitles = new wxStaticText( tabHome, wxID_ANY, wxT("Home Titles:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeTitles->Wrap( 1 ); + fgSizer51->Add( lblHomeTitles, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111111112; + bSizer30111111112 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeTitles = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30111111112->Add( lboHomeTitles, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111111112; + bSizer35111111112 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111111112; + bSizer46111111112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111111112; + bSizer47111111112 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeTitle = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111112->Add( btnAddHomeTitle, 0, wxALL, 5 ); + + btnModifyHomeTitle = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111112->Add( btnModifyHomeTitle, 0, wxALL, 5 ); + + btnDeleteHomeTitle = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111112->Add( btnDeleteHomeTitle, 0, wxALL, 5 ); + + + bSizer46111111112->Add( bSizer47111111112, 1, wxEXPAND, 5 ); + + + bSizer35111111112->Add( bSizer46111111112, 1, wxEXPAND, 5 ); + + + bSizer30111111112->Add( bSizer35111111112, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer30111111112, 1, wxEXPAND, 5 ); + + lblHomeRoles = new wxStaticText( tabHome, wxID_ANY, wxT("Home Roles:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeRoles->Wrap( 1 ); + fgSizer51->Add( lblHomeRoles, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301111111112; + bSizer301111111112 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeRoles = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301111111112->Add( lboHomeRoles, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351111111112; + bSizer351111111112 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461111111112; + bSizer461111111112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471111111112; + bSizer471111111112 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeRole = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111112->Add( btnAddHomeRole, 0, wxALL, 5 ); + + btnModifyHomeRole = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111112->Add( btnModifyHomeRole, 0, wxALL, 5 ); + + btnDeleteHomeRole = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111112->Add( btnDeleteHomeRole, 0, wxALL, 5 ); + + + bSizer461111111112->Add( bSizer471111111112, 1, wxEXPAND, 5 ); + + + bSizer351111111112->Add( bSizer461111111112, 1, wxEXPAND, 5 ); + + + bSizer301111111112->Add( bSizer351111111112, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer301111111112, 1, wxEXPAND, 5 ); + + lblHomeOrganisations = new wxStaticText( tabHome, wxID_ANY, wxT("Home Organisations:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeOrganisations->Wrap( 1 ); + fgSizer51->Add( lblHomeOrganisations, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011111111112; + bSizer3011111111112 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeOrganisations = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011111111112->Add( lboHomeOrganisations, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511111111112; + bSizer3511111111112 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611111111112; + bSizer4611111111112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711111111112; + bSizer4711111111112 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeOrganisations = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111112->Add( btnAddHomeOrganisations, 0, wxALL, 5 ); + + btnModifyHomeOrganisations = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111112->Add( btnModifyHomeOrganisations, 0, wxALL, 5 ); + + btnDeleteHomeOrganisations = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111112->Add( btnDeleteHomeOrganisations, 0, wxALL, 5 ); + + + bSizer4611111111112->Add( bSizer4711111111112, 1, wxEXPAND, 5 ); + + + bSizer3511111111112->Add( bSizer4611111111112, 1, wxEXPAND, 5 ); + + + bSizer3011111111112->Add( bSizer3511111111112, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer3011111111112, 1, wxEXPAND, 5 ); + + lblHomeNotes = new wxStaticText( tabHome, wxID_ANY, wxT("Home Notes:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHomeNotes->Wrap( 1 ); + fgSizer51->Add( lblHomeNotes, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111111111111; + bSizer30111111111111 = new wxBoxSizer( wxHORIZONTAL ); + + lboHomeNotes = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30111111111111->Add( lboHomeNotes, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111111111111; + bSizer35111111111111 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111111111111; + bSizer46111111111111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111111111111; + bSizer47111111111111 = new wxBoxSizer( wxVERTICAL ); + + btnAddHomeNote = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111111111->Add( btnAddHomeNote, 0, wxALL, 5 ); + + btnModifyHomeNote = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111111111->Add( btnModifyHomeNote, 0, wxALL, 5 ); + + btnDeleteHomeNote = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111111111->Add( btnDeleteHomeNote, 0, wxALL, 5 ); + + + bSizer46111111111111->Add( bSizer47111111111111, 1, wxEXPAND, 5 ); + + + bSizer35111111111111->Add( bSizer46111111111111, 1, wxEXPAND, 5 ); + + + bSizer30111111111111->Add( bSizer35111111111111, 0, wxEXPAND, 5 ); + + + fgSizer51->Add( bSizer30111111111111, 1, wxEXPAND, 5 ); + + + bSizer181->Add( fgSizer51, 0, wxEXPAND, 5 ); + + + tabHome->SetSizer( bSizer181 ); + tabHome->Layout(); + bSizer181->Fit( tabHome ); + nbkContact->AddPage( tabHome, wxT("Home"), false ); + tabBusiness = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabBusiness->SetScrollRate( 5, 5 ); + wxBoxSizer* bSizer182; + bSizer182 = new wxBoxSizer( wxVERTICAL ); + + wxGridSizer* gSizer72; + gSizer72 = new wxGridSizer( 2, 6, 0, 0 ); + + + bSizer182->Add( gSizer72, 0, wxEXPAND, 5 ); + + wxFlexGridSizer* fgSizer52; + fgSizer52 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer52->AddGrowableCol( 1 ); + fgSizer52->SetFlexibleDirection( wxBOTH ); + fgSizer52->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblBusinessNickname = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Nicknames:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessNickname->Wrap( 0 ); + fgSizer52->Add( lblBusinessNickname, 0, wxALL, 5 ); + + wxBoxSizer* szrAddresses22; + szrAddresses22 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessNicknames = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses22->Add( lboBusinessNicknames, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrAddressesOuter22; + szrAddressesOuter22 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4632; + bSizer4632 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4732; + bSizer4732 = new wxBoxSizer( wxVERTICAL ); + + btnAddBusinessNickname = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4732->Add( btnAddBusinessNickname, 0, wxALL, 5 ); + + btnModifyBusinessNickname = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4732->Add( btnModifyBusinessNickname, 0, wxALL, 5 ); + + btnDeleteBusinessNickname = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4732->Add( btnDeleteBusinessNickname, 0, wxALL, 5 ); + + + bSizer4632->Add( bSizer4732, 1, wxEXPAND, 5 ); + + + szrAddressesOuter22->Add( bSizer4632, 1, wxEXPAND, 5 ); + + + szrAddresses22->Add( szrAddressesOuter22, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( szrAddresses22, 1, wxEXPAND, 5 ); + + lblBusinessAddress = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Addresses:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessAddress->Wrap( 0 ); + fgSizer52->Add( lblBusinessAddress, 0, wxALL, 5 ); + + wxBoxSizer* szrAddresses2; + szrAddresses2 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessAddresses = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses2->Add( lboBusinessAddresses, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrAddressesOuter2; + szrAddressesOuter2 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer463; + bSizer463 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer473; + bSizer473 = new wxBoxSizer( wxVERTICAL ); + + btnAddBusinessAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer473->Add( btnAddBusinessAddress, 0, wxALL, 5 ); + + btnModifyBusinessAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer473->Add( btnModifyBusinessAddress, 0, wxALL, 5 ); + + btnDeleteBusinessAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer473->Add( btnDeleteBusinessAddress, 0, wxALL, 5 ); + + + bSizer463->Add( bSizer473, 1, wxEXPAND, 5 ); + + + szrAddressesOuter2->Add( bSizer463, 1, wxEXPAND, 5 ); + + + szrAddresses2->Add( szrAddressesOuter2, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( szrAddresses2, 1, wxEXPAND, 5 ); + + lblBusinessEmail = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business E-mail:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessEmail->Wrap( 0 ); + fgSizer52->Add( lblBusinessEmail, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3013; + bSizer3013 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessEmail = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3013->Add( lboBusinessEmail, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3513; + bSizer3513 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4613; + bSizer4613 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4713; + bSizer4713 = new wxBoxSizer( wxVERTICAL ); + + btnAddBusinessEmailAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4713->Add( btnAddBusinessEmailAddress, 0, wxALL, 5 ); + + btnModifyBusinessEmailAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4713->Add( btnModifyBusinessEmailAddress, 0, wxALL, 5 ); + + btnDeleteBusinessEmailAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4713->Add( btnDeleteBusinessEmailAddress, 0, wxALL, 5 ); + + + bSizer4613->Add( bSizer4713, 1, wxEXPAND, 5 ); + + + bSizer3513->Add( bSizer4613, 1, wxEXPAND, 5 ); + + + bSizer3013->Add( bSizer3513, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer3013, 1, wxEXPAND, 5 ); + + lblBusinessIM = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Instant Messaging:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessIM->Wrap( 0 ); + fgSizer52->Add( lblBusinessIM, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30113; + bSizer30113 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessIM = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30113->Add( lboBusinessIM, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35113; + bSizer35113 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46113; + bSizer46113 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47113; + bSizer47113 = new wxBoxSizer( wxVERTICAL ); + + btnAddBusinessIMAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47113->Add( btnAddBusinessIMAddress, 0, wxALL, 5 ); + + btnModifyBusinessIMAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47113->Add( btnModifyBusinessIMAddress, 0, wxALL, 5 ); + + btnDeleteBusinessIMAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47113->Add( btnDeleteBusinessIMAddress, 0, wxALL, 5 ); + + + bSizer46113->Add( bSizer47113, 1, wxEXPAND, 5 ); + + + bSizer35113->Add( bSizer46113, 1, wxEXPAND, 5 ); + + + bSizer30113->Add( bSizer35113, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer30113, 1, wxEXPAND, 5 ); + + lblBusinessTelephone = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Telephone:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessTelephone->Wrap( 0 ); + fgSizer52->Add( lblBusinessTelephone, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301113; + bSizer301113 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessTelephone = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301113->Add( lboBusinessTelephone, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351113; + bSizer351113 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461113; + bSizer461113 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471113; + bSizer471113 = new wxBoxSizer( wxVERTICAL ); + + btnBusinessAddTelephone = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471113->Add( btnBusinessAddTelephone, 0, wxALL, 5 ); + + btnBusinessModifyTelephone = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471113->Add( btnBusinessModifyTelephone, 0, wxALL, 5 ); + + btnBusinessDeleteTelephone = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471113->Add( btnBusinessDeleteTelephone, 0, wxALL, 5 ); + + + bSizer461113->Add( bSizer471113, 1, wxEXPAND, 5 ); + + + bSizer351113->Add( bSizer461113, 1, wxEXPAND, 5 ); + + + bSizer301113->Add( bSizer351113, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer301113, 1, wxEXPAND, 5 ); + + lblBusinessLanguage = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Languages:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessLanguage->Wrap( 0 ); + fgSizer52->Add( lblBusinessLanguage, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011113; + bSizer3011113 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessLanguages = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011113->Add( lboBusinessLanguages, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511113; + bSizer3511113 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611113; + bSizer4611113 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711113; + bSizer4711113 = new wxBoxSizer( wxVERTICAL ); + + btnBusinessAddLanguage = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711113->Add( btnBusinessAddLanguage, 0, wxALL, 5 ); + + btnBusinessModifyLanguage = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711113->Add( btnBusinessModifyLanguage, 0, wxALL, 5 ); + + btnBusinessDeleteLanguage = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711113->Add( btnBusinessDeleteLanguage, 0, wxALL, 5 ); + + + bSizer4611113->Add( bSizer4711113, 1, wxEXPAND, 5 ); + + + bSizer3511113->Add( bSizer4611113, 1, wxEXPAND, 5 ); + + + bSizer3011113->Add( bSizer3511113, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer3011113, 1, wxEXPAND, 5 ); + + lblBusinessTimezones = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Timezones:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessTimezones->Wrap( 0 ); + fgSizer52->Add( lblBusinessTimezones, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111113; + bSizer30111113 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessTimezones = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30111113->Add( lboBusinessTimezones, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111113; + bSizer35111113 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111113; + bSizer46111113 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111113; + bSizer47111113 = new wxBoxSizer( wxVERTICAL ); + + btnBusinessAddTimezone = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111113->Add( btnBusinessAddTimezone, 0, wxALL, 5 ); + + btnBusinessModifyTimezone = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111113->Add( btnBusinessModifyTimezone, 0, wxALL, 5 ); + + btnDeleteBusinessTimezone = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111113->Add( btnDeleteBusinessTimezone, 0, wxALL, 5 ); + + + bSizer46111113->Add( bSizer47111113, 1, wxEXPAND, 5 ); + + + bSizer35111113->Add( bSizer46111113, 1, wxEXPAND, 5 ); + + + bSizer30111113->Add( bSizer35111113, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer30111113, 1, wxEXPAND, 5 ); + + lblBusinessGeopositioning = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Geopositioning:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessGeopositioning->Wrap( 0 ); + fgSizer52->Add( lblBusinessGeopositioning, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011111411; + bSizer3011111411 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessGeoposition = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011111411->Add( lboBusinessGeoposition, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511111411; + bSizer3511111411 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611111411; + bSizer4611111411 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711111411; + bSizer4711111411 = new wxBoxSizer( wxVERTICAL ); + + btnAddBusinessGeoposition = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111411->Add( btnAddBusinessGeoposition, 0, wxALL, 5 ); + + btnModifyBusinessGeoposition = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111411->Add( btnModifyBusinessGeoposition, 0, wxALL, 5 ); + + btnDeleteBusinessGeoposition = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111411->Add( btnDeleteBusinessGeoposition, 0, wxALL, 5 ); + + + bSizer4611111411->Add( bSizer4711111411, 1, wxEXPAND, 5 ); + + + bSizer3511111411->Add( bSizer4611111411, 1, wxEXPAND, 5 ); + + + bSizer3011111411->Add( bSizer3511111411, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer3011111411, 1, wxEXPAND, 5 ); + + lblBusinessWebsites = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Websites:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessWebsites->Wrap( 1 ); + fgSizer52->Add( lblBusinessWebsites, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011111113; + bSizer3011111113 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessWebsites = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011111113->Add( lboBusinessWebsites, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511111113; + bSizer3511111113 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611111113; + bSizer4611111113 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711111113; + bSizer4711111113 = new wxBoxSizer( wxVERTICAL ); + + btnAddBusinessWebsite = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111113->Add( btnAddBusinessWebsite, 0, wxALL, 5 ); + + btnModifyBusinessWebsite = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111113->Add( btnModifyBusinessWebsite, 0, wxALL, 5 ); + + btnDeleteBusinessWebsite = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111113->Add( btnDeleteBusinessWebsite, 0, wxALL, 5 ); + + + bSizer4611111113->Add( bSizer4711111113, 1, wxEXPAND, 5 ); + + + bSizer3511111113->Add( bSizer4611111113, 1, wxEXPAND, 5 ); + + + bSizer3011111113->Add( bSizer3511111113, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer3011111113, 1, wxEXPAND, 5 ); + + lblBusinessTitles = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Titles:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessTitles->Wrap( 1 ); + fgSizer52->Add( lblBusinessTitles, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111111113; + bSizer30111111113 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessTitles = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER ); + bSizer30111111113->Add( lboBusinessTitles, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111111113; + bSizer35111111113 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111111113; + bSizer46111111113 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111111113; + bSizer47111111113 = new wxBoxSizer( wxVERTICAL ); + + btnAddBusinessTitle = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111113->Add( btnAddBusinessTitle, 0, wxALL, 5 ); + + btnModifyBusinessTitle = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111113->Add( btnModifyBusinessTitle, 0, wxALL, 5 ); + + btnDeleteBusinessTitle = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111113->Add( btnDeleteBusinessTitle, 0, wxALL, 5 ); + + + bSizer46111111113->Add( bSizer47111111113, 1, wxEXPAND, 5 ); + + + bSizer35111111113->Add( bSizer46111111113, 1, wxEXPAND, 5 ); + + + bSizer30111111113->Add( bSizer35111111113, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer30111111113, 1, wxEXPAND, 5 ); + + lblBusinessRoles = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Roles:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessRoles->Wrap( 1 ); + fgSizer52->Add( lblBusinessRoles, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301111111113; + bSizer301111111113 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessRoles = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301111111113->Add( lboBusinessRoles, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351111111113; + bSizer351111111113 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461111111113; + bSizer461111111113 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471111111113; + bSizer471111111113 = new wxBoxSizer( wxVERTICAL ); + + btnAddBusinessRole = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111113->Add( btnAddBusinessRole, 0, wxALL, 5 ); + + btnModifyBusinessRole = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111113->Add( btnModifyBusinessRole, 0, wxALL, 5 ); + + btnDeleteBusinessRole = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471111111113->Add( btnDeleteBusinessRole, 0, wxALL, 5 ); + + + bSizer461111111113->Add( bSizer471111111113, 1, wxEXPAND, 5 ); + + + bSizer351111111113->Add( bSizer461111111113, 1, wxEXPAND, 5 ); + + + bSizer301111111113->Add( bSizer351111111113, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer301111111113, 1, wxEXPAND, 5 ); + + lblBusinessOrganisations = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Organisations:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessOrganisations->Wrap( 1 ); + fgSizer52->Add( lblBusinessOrganisations, 0, wxALL, 5 ); + + wxBoxSizer* bSizer3011111111113; + bSizer3011111111113 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessOrganisations = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer3011111111113->Add( lboBusinessOrganisations, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer3511111111113; + bSizer3511111111113 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4611111111113; + bSizer4611111111113 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4711111111113; + bSizer4711111111113 = new wxBoxSizer( wxVERTICAL ); + + btnAddBusinessOrganisations = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111113->Add( btnAddBusinessOrganisations, 0, wxALL, 5 ); + + btnModifyBusinessOrganisations = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111113->Add( btnModifyBusinessOrganisations, 0, wxALL, 5 ); + + btnDeleteBusinessOrganisations = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4711111111113->Add( btnDeleteBusinessOrganisations, 0, wxALL, 5 ); + + + bSizer4611111111113->Add( bSizer4711111111113, 1, wxEXPAND, 5 ); + + + bSizer3511111111113->Add( bSizer4611111111113, 1, wxEXPAND, 5 ); + + + bSizer3011111111113->Add( bSizer3511111111113, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer3011111111113, 1, wxEXPAND, 5 ); + + lblBusinessNotes = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Notes:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblBusinessNotes->Wrap( 1 ); + fgSizer52->Add( lblBusinessNotes, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30111111111112; + bSizer30111111111112 = new wxBoxSizer( wxHORIZONTAL ); + + lboBusinessNotes = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30111111111112->Add( lboBusinessNotes, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35111111111112; + bSizer35111111111112 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46111111111112; + bSizer46111111111112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47111111111112; + bSizer47111111111112 = new wxBoxSizer( wxVERTICAL ); + + btnBusinessAddNote = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111111112->Add( btnBusinessAddNote, 0, wxALL, 5 ); + + btnBusinessModifyNote = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111111112->Add( btnBusinessModifyNote, 0, wxALL, 5 ); + + btnBusinessDeleteNote = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47111111111112->Add( btnBusinessDeleteNote, 0, wxALL, 5 ); + + + bSizer46111111111112->Add( bSizer47111111111112, 1, wxEXPAND, 5 ); + + + bSizer35111111111112->Add( bSizer46111111111112, 1, wxEXPAND, 5 ); + + + bSizer30111111111112->Add( bSizer35111111111112, 0, wxEXPAND, 5 ); + + + fgSizer52->Add( bSizer30111111111112, 1, wxEXPAND, 5 ); + + + bSizer182->Add( fgSizer52, 0, wxEXPAND, 5 ); + + + tabBusiness->SetSizer( bSizer182 ); + tabBusiness->Layout(); + bSizer182->Fit( tabBusiness ); + nbkContact->AddPage( tabBusiness, wxT("Business"), false ); + tabCategories = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabCategories->SetScrollRate( 5, 5 ); + wxBoxSizer* szrAddresses11; + szrAddresses11 = new wxBoxSizer( wxHORIZONTAL ); + + lboCategories = new wxListCtrl( tabCategories, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses11->Add( lboCategories, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrCategoriesOuter; + szrCategoriesOuter = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4621; + bSizer4621 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4721; + bSizer4721 = new wxBoxSizer( wxVERTICAL ); + + btnAddCategory = new wxButton( tabCategories, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4721->Add( btnAddCategory, 0, wxALL, 5 ); + + btnModifyCategory = new wxButton( tabCategories, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4721->Add( btnModifyCategory, 0, wxALL, 5 ); + + btnDeleteCategory = new wxButton( tabCategories, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4721->Add( btnDeleteCategory, 0, wxALL, 5 ); + + + bSizer4621->Add( bSizer4721, 1, wxEXPAND, 5 ); + + + szrCategoriesOuter->Add( bSizer4621, 1, wxEXPAND, 5 ); + + + szrAddresses11->Add( szrCategoriesOuter, 0, wxEXPAND, 5 ); + + + tabCategories->SetSizer( szrAddresses11 ); + tabCategories->Layout(); + szrAddresses11->Fit( tabCategories ); + nbkContact->AddPage( tabCategories, wxT("Categories"), false ); + tabMembers = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabMembers->SetScrollRate( 5, 5 ); + wxBoxSizer* szrAddresses111; + szrAddresses111 = new wxBoxSizer( wxHORIZONTAL ); + + lboGroups = new wxListCtrl( tabMembers, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses111->Add( lboGroups, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrCategoriesOuter1; + szrCategoriesOuter1 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46211; + bSizer46211 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47211; + bSizer47211 = new wxBoxSizer( wxVERTICAL ); + + btnAddGroups = new wxButton( tabMembers, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47211->Add( btnAddGroups, 0, wxALL, 5 ); + + btnModifyGroups = new wxButton( tabMembers, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47211->Add( btnModifyGroups, 0, wxALL, 5 ); + + btnDeleteGroups = new wxButton( tabMembers, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47211->Add( btnDeleteGroups, 0, wxALL, 5 ); + + + bSizer46211->Add( bSizer47211, 1, wxEXPAND, 5 ); + + + szrCategoriesOuter1->Add( bSizer46211, 1, wxEXPAND, 5 ); + + + szrAddresses111->Add( szrCategoriesOuter1, 0, wxEXPAND, 5 ); + + + tabMembers->SetSizer( szrAddresses111 ); + tabMembers->Layout(); + szrAddresses111->Fit( tabMembers ); + nbkContact->AddPage( tabMembers, wxT("Members"), false ); + tabPictures = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabPictures->SetScrollRate( 5, 5 ); + wxBoxSizer* bSizer210; + bSizer210 = new wxBoxSizer( wxHORIZONTAL ); + + imgPicture = new wxStaticBitmap( tabPictures, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER ); + bSizer210->Add( imgPicture, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer211; + bSizer211 = new wxBoxSizer( wxVERTICAL ); + + lboPictures = new wxListCtrl( tabPictures, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer211->Add( lboPictures, 0, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer212; + bSizer212 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer213; + bSizer213 = new wxBoxSizer( wxHORIZONTAL ); + + btnAddPicture = new wxButton( tabPictures, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer213->Add( btnAddPicture, 0, wxALL, 5 ); + + btnModifyPicture = new wxButton( tabPictures, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer213->Add( btnModifyPicture, 0, wxALL, 5 ); + + btnDeletePicture = new wxButton( tabPictures, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer213->Add( btnDeletePicture, 0, wxALL, 5 ); + + + bSizer212->Add( bSizer213, 1, wxEXPAND, 5 ); + + + bSizer211->Add( bSizer212, 0, wxEXPAND, 5 ); + + + bSizer210->Add( bSizer211, 1, wxEXPAND, 5 ); + + + tabPictures->SetSizer( bSizer210 ); + tabPictures->Layout(); + bSizer210->Fit( tabPictures ); + nbkContact->AddPage( tabPictures, wxT("Pictures"), false ); + tabLogo = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabLogo->SetScrollRate( 5, 5 ); + wxBoxSizer* bSizer2101; + bSizer2101 = new wxBoxSizer( wxHORIZONTAL ); + + imgLogo = new wxStaticBitmap( tabLogo, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER ); + bSizer2101->Add( imgLogo, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer2111; + bSizer2111 = new wxBoxSizer( wxVERTICAL ); + + lboLogos = new wxListCtrl( tabLogo, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer2111->Add( lboLogos, 0, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer2121; + bSizer2121 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer2131; + bSizer2131 = new wxBoxSizer( wxHORIZONTAL ); + + btnAddLogo = new wxButton( tabLogo, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer2131->Add( btnAddLogo, 0, wxALL, 5 ); + + btnModifyLogo = new wxButton( tabLogo, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer2131->Add( btnModifyLogo, 0, wxALL, 5 ); + + btnDeleteLogo = new wxButton( tabLogo, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer2131->Add( btnDeleteLogo, 0, wxALL, 5 ); + + + bSizer2121->Add( bSizer2131, 1, wxEXPAND, 5 ); + + + bSizer2111->Add( bSizer2121, 0, wxEXPAND, 5 ); + + + bSizer2101->Add( bSizer2111, 1, wxEXPAND, 5 ); + + + tabLogo->SetSizer( bSizer2101 ); + tabLogo->Layout(); + bSizer2101->Fit( tabLogo ); + nbkContact->AddPage( tabLogo, wxT("Logos"), false ); + tabSounds = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabSounds->SetScrollRate( 5, 5 ); + wxBoxSizer* szrAddresses1111; + szrAddresses1111 = new wxBoxSizer( wxHORIZONTAL ); + + lboSounds = new wxListCtrl( tabSounds, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses1111->Add( lboSounds, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrCategoriesOuter11; + szrCategoriesOuter11 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer462111; + bSizer462111 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer472111; + bSizer472111 = new wxBoxSizer( wxVERTICAL ); + + btnAddSound = new wxButton( tabSounds, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer472111->Add( btnAddSound, 0, wxALL, 5 ); + + btnModifySound = new wxButton( tabSounds, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer472111->Add( btnModifySound, 0, wxALL, 5 ); + + btnDeleteSound = new wxButton( tabSounds, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer472111->Add( btnDeleteSound, 0, wxALL, 5 ); + + m_staticline1 = new wxStaticLine( tabSounds, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bSizer472111->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer348; + bSizer348 = new wxBoxSizer( wxHORIZONTAL ); + + btnPlay = new wxBitmapButton( tabSounds, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); + btnPlay->SetMinSize( wxSize( -1,32 ) ); + + bSizer348->Add( btnPlay, 0, wxALL|wxEXPAND, 5 ); + + btnStop = new wxBitmapButton( tabSounds, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW ); + btnStop->SetMinSize( wxSize( -1,32 ) ); + + bSizer348->Add( btnStop, 0, wxALL, 5 ); + + + bSizer472111->Add( bSizer348, 0, wxALIGN_CENTER, 5 ); + + + bSizer462111->Add( bSizer472111, 1, wxEXPAND, 5 ); + + + szrCategoriesOuter11->Add( bSizer462111, 1, wxEXPAND, 5 ); + + + szrAddresses1111->Add( szrCategoriesOuter11, 0, wxEXPAND, 5 ); + + + tabSounds->SetSizer( szrAddresses1111 ); + tabSounds->Layout(); + szrAddresses1111->Fit( tabSounds ); + nbkContact->AddPage( tabSounds, wxT("Sounds"), true ); + tabCalendaring = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabCalendaring->SetScrollRate( 5, 5 ); + wxBoxSizer* bSizer1821; + bSizer1821 = new wxBoxSizer( wxVERTICAL ); + + wxFlexGridSizer* fgSizer521; + fgSizer521 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer521->AddGrowableCol( 1 ); + fgSizer521->SetFlexibleDirection( wxBOTH ); + fgSizer521->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblCalendarAddresses = new wxStaticText( tabCalendaring, wxID_ANY, wxT("Calendar Addresses:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblCalendarAddresses->Wrap( 0 ); + fgSizer521->Add( lblCalendarAddresses, 0, wxALL, 5 ); + + wxBoxSizer* szrAddresses21; + szrAddresses21 = new wxBoxSizer( wxHORIZONTAL ); + + lboCalendarAddresses = new wxListCtrl( tabCalendaring, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses21->Add( lboCalendarAddresses, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrAddressesOuter21; + szrAddressesOuter21 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer4631; + bSizer4631 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer4731; + bSizer4731 = new wxBoxSizer( wxVERTICAL ); + + btnAddCalendarAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4731->Add( btnAddCalendarAddress, 0, wxALL, 5 ); + + btnModifyCalendarAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4731->Add( btnModifyCalendarAddress, 0, wxALL, 5 ); + + btnDeleteCalendarAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer4731->Add( btnDeleteCalendarAddress, 0, wxALL, 5 ); + + + bSizer4631->Add( bSizer4731, 1, wxEXPAND, 5 ); + + + szrAddressesOuter21->Add( bSizer4631, 1, wxEXPAND, 5 ); + + + szrAddresses21->Add( szrAddressesOuter21, 0, wxEXPAND, 5 ); + + + fgSizer521->Add( szrAddresses21, 1, wxEXPAND, 5 ); + + lblCalendarRequestAddresses = new wxStaticText( tabCalendaring, wxID_ANY, wxT("Calendar Request Address:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblCalendarRequestAddresses->Wrap( 0 ); + fgSizer521->Add( lblCalendarRequestAddresses, 0, wxALL, 5 ); + + wxBoxSizer* bSizer30131; + bSizer30131 = new wxBoxSizer( wxHORIZONTAL ); + + lboCalendarRequestAddress = new wxListCtrl( tabCalendaring, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer30131->Add( lboCalendarRequestAddress, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer35131; + bSizer35131 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46131; + bSizer46131 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47131; + bSizer47131 = new wxBoxSizer( wxVERTICAL ); + + btnAddCalendarRequestAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47131->Add( btnAddCalendarRequestAddress, 0, wxALL, 5 ); + + btnModifyCalendarRequestAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47131->Add( btnModifyCalendarRequestAddress, 0, wxALL, 5 ); + + btnDeleteCalendarRequestAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47131->Add( btnDeleteCalendarRequestAddress, 0, wxALL, 5 ); + + + bSizer46131->Add( bSizer47131, 1, wxEXPAND, 5 ); + + + bSizer35131->Add( bSizer46131, 1, wxEXPAND, 5 ); + + + bSizer30131->Add( bSizer35131, 0, wxEXPAND, 5 ); + + + fgSizer521->Add( bSizer30131, 1, wxEXPAND, 5 ); + + lblFreeBusyAddresses = new wxStaticText( tabCalendaring, wxID_ANY, wxT("Free/Busy Addresses:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblFreeBusyAddresses->Wrap( 0 ); + fgSizer521->Add( lblFreeBusyAddresses, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301131; + bSizer301131 = new wxBoxSizer( wxHORIZONTAL ); + + lboFreeBusyAddresses = new wxListCtrl( tabCalendaring, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301131->Add( lboFreeBusyAddresses, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351131; + bSizer351131 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461131; + bSizer461131 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471131; + bSizer471131 = new wxBoxSizer( wxVERTICAL ); + + btnAddFreeBusyAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471131->Add( btnAddFreeBusyAddress, 0, wxALL, 5 ); + + btnModifyFreeBusyAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471131->Add( btnModifyFreeBusyAddress, 0, wxALL, 5 ); + + btnDeleteFreeBusyAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471131->Add( btnDeleteFreeBusyAddress, 0, wxALL, 5 ); + + + bSizer461131->Add( bSizer471131, 1, wxEXPAND, 5 ); + + + bSizer351131->Add( bSizer461131, 1, wxEXPAND, 5 ); + + + bSizer301131->Add( bSizer351131, 0, wxEXPAND, 5 ); + + + fgSizer521->Add( bSizer301131, 1, wxEXPAND, 5 ); + + + bSizer1821->Add( fgSizer521, 0, wxEXPAND, 5 ); + + + tabCalendaring->SetSizer( bSizer1821 ); + tabCalendaring->Layout(); + bSizer1821->Fit( tabCalendaring ); + nbkContact->AddPage( tabCalendaring, wxT("Calendaring"), false ); + tabSecurity = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabSecurity->SetScrollRate( 5, 5 ); + wxBoxSizer* szrAddresses1112; + szrAddresses1112 = new wxBoxSizer( wxHORIZONTAL ); + + lboKeys = new wxListCtrl( tabSecurity, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + szrAddresses1112->Add( lboKeys, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrCategoriesOuter12; + szrCategoriesOuter12 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer462112; + bSizer462112 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer472112; + bSizer472112 = new wxBoxSizer( wxVERTICAL ); + + btnAddKey = new wxButton( tabSecurity, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer472112->Add( btnAddKey, 0, wxALL, 5 ); + + btnModifyKey = new wxButton( tabSecurity, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer472112->Add( btnModifyKey, 0, wxALL, 5 ); + + btnDeleteKey = new wxButton( tabSecurity, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer472112->Add( btnDeleteKey, 0, wxALL, 5 ); + + + bSizer462112->Add( bSizer472112, 1, wxEXPAND, 5 ); + + + szrCategoriesOuter12->Add( bSizer462112, 1, wxEXPAND, 5 ); + + + szrAddresses1112->Add( szrCategoriesOuter12, 0, wxEXPAND, 5 ); + + + tabSecurity->SetSizer( szrAddresses1112 ); + tabSecurity->Layout(); + szrAddresses1112->Fit( tabSecurity ); + nbkContact->AddPage( tabSecurity, wxT("Security"), false ); + tabOther = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); + tabOther->SetScrollRate( 5, 5 ); + wxFlexGridSizer* fgSizer5211; + fgSizer5211 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer5211->AddGrowableCol( 1 ); + fgSizer5211->SetFlexibleDirection( wxBOTH ); + fgSizer5211->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblVendorNamespace = new wxStaticText( tabOther, wxID_ANY, wxT("Vendor Namespace:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblVendorNamespace->Wrap( 0 ); + fgSizer5211->Add( lblVendorNamespace, 0, wxALL, 5 ); + + wxBoxSizer* szrAddresses211; + szrAddresses211 = new wxBoxSizer( wxHORIZONTAL ); + + lboVendorNamespace = new wxListCtrl( tabOther, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER ); + szrAddresses211->Add( lboVendorNamespace, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* szrAddressesOuter211; + szrAddressesOuter211 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer46311; + bSizer46311 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer47311; + bSizer47311 = new wxBoxSizer( wxVERTICAL ); + + btnAddVendorNamespace = new wxButton( tabOther, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47311->Add( btnAddVendorNamespace, 0, wxALL, 5 ); + + btnModifyVendorNamespace = new wxButton( tabOther, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47311->Add( btnModifyVendorNamespace, 0, wxALL, 5 ); + + btnDeleteVendorNamespace = new wxButton( tabOther, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer47311->Add( btnDeleteVendorNamespace, 0, wxALL, 5 ); + + + bSizer46311->Add( bSizer47311, 1, wxEXPAND, 5 ); + + + szrAddressesOuter211->Add( bSizer46311, 1, wxEXPAND, 5 ); + + + szrAddresses211->Add( szrAddressesOuter211, 0, wxEXPAND, 5 ); + + + fgSizer5211->Add( szrAddresses211, 1, wxEXPAND, 5 ); + + lblXTokens = new wxStaticText( tabOther, wxID_ANY, wxT("X-Tokens:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblXTokens->Wrap( 0 ); + fgSizer5211->Add( lblXTokens, 0, wxALL, 5 ); + + wxBoxSizer* bSizer301311; + bSizer301311 = new wxBoxSizer( wxHORIZONTAL ); + + lboXToken = new wxListCtrl( tabOther, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer301311->Add( lboXToken, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer351311; + bSizer351311 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer461311; + bSizer461311 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer471311; + bSizer471311 = new wxBoxSizer( wxVERTICAL ); + + btnAddXToken = new wxButton( tabOther, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471311->Add( btnAddXToken, 0, wxALL, 5 ); + + btnModifyXToken = new wxButton( tabOther, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471311->Add( btnModifyXToken, 0, wxALL, 5 ); + + btnDeleteXToken = new wxButton( tabOther, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer471311->Add( btnDeleteXToken, 0, wxALL, 5 ); + + + bSizer461311->Add( bSizer471311, 1, wxEXPAND, 5 ); + + + bSizer351311->Add( bSizer461311, 1, wxEXPAND, 5 ); + + + bSizer301311->Add( bSizer351311, 0, wxEXPAND, 5 ); + + + fgSizer5211->Add( bSizer301311, 1, wxEXPAND, 5 ); + + + tabOther->SetSizer( fgSizer5211 ); + tabOther->Layout(); + fgSizer5211->Fit( tabOther ); + nbkContact->AddPage( tabOther, wxT("Other"), false ); + + bSizer17->Add( nbkContact, 1, wxEXPAND | wxALL, 5 ); + + + this->SetSizer( bSizer17 ); + this->Layout(); + m_menubar3 = new wxMenuBar( 0 ); + mnuContact = new wxMenu(); + wxMenuItem* mnuContactSave; + mnuContactSave = new wxMenuItem( mnuContact, CONTACT_SAVE, wxString( wxT("Save") ) + wxT('\t') + wxT("Ctrl+S"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuContactSave ); + + wxMenuItem* mnuContactSaveClose; + mnuContactSaveClose = new wxMenuItem( mnuContact, CONTACT_SAVECLOSE, wxString( wxT("&Save and Close Contact") ) + wxT('\t') + wxT("Ctrl+Shift+S"), wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuContactSaveClose ); + + mnuContact->AppendSeparator(); + + wxMenuItem* mnuContactClose; + mnuContactClose = new wxMenuItem( mnuContact, CONTACT_CLOSE, wxString( wxT("Close") ) , wxEmptyString, wxITEM_NORMAL ); + mnuContact->Append( mnuContactClose ); + + m_menubar3->Append( mnuContact, wxT("&Contact") ); + + mnuEdit = new wxMenu(); + wxMenuItem* mnuEditCut; + mnuEditCut = new wxMenuItem( mnuEdit, wxID_CUT, wxString( wxT("Cu&t") ) + wxT('\t') + wxT("Ctrl+X"), wxEmptyString, wxITEM_NORMAL ); + mnuEdit->Append( mnuEditCut ); + + wxMenuItem* mnuEditCopy; + mnuEditCopy = new wxMenuItem( mnuEdit, wxID_COPY, wxString( wxT("&Copy") ) + wxT('\t') + wxT("Ctrl+C"), wxEmptyString, wxITEM_NORMAL ); + mnuEdit->Append( mnuEditCopy ); + + wxMenuItem* mnuEditPaste; + mnuEditPaste = new wxMenuItem( mnuEdit, wxID_PASTE, wxString( wxT("&Paste") ) + wxT('\t') + wxT("Ctrl+V"), wxEmptyString, wxITEM_NORMAL ); + mnuEdit->Append( mnuEditPaste ); + + m_menubar3->Append( mnuEdit, wxT("&Edit") ); + + this->SetMenuBar( m_menubar3 ); + + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmContactEditorADT::CloseWindow ) ); + txtTitle->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + txtForename->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + txtSurname->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + txtOtherNames->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + txtSuffix->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + cmbDisplayAs->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorADT::UpdateName ), NULL, this ); + cmbDisplayAs->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateName ), NULL, this ); + cmbType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmContactEditorADT::UpdateMembersTab ), NULL, this ); + btnAddGeneralNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralNickname ), NULL, this ); + btnModifyGeneralNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralNickname ), NULL, this ); + btnDeleteGeneralNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralNickname ), NULL, this ); + btnAddGeneralAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralAddress ), NULL, this ); + btnModifyGeneralAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralAddress ), NULL, this ); + btnDeleteGeneralAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralAddress ), NULL, this ); + btnAddEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralEmail ), NULL, this ); + btnModifyEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralEmail ), NULL, this ); + btnDeleteEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralEmail ), NULL, this ); + btnAddIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralIM ), NULL, this ); + btnModifyIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralIM ), NULL, this ); + btnDeleteIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralIM ), NULL, this ); + btnAddTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTelephone ), NULL, this ); + btnModifyTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTelephone ), NULL, this ); + btnDeleteTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTelephone ), NULL, this ); + btnAddLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralLanguages ), NULL, this ); + btnModifyLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralLanguages ), NULL, this ); + btnDeleteLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralLanguage ), NULL, this ); + btnAddTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTimezone ), NULL, this ); + btnModifyTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTimezone ), NULL, this ); + btnDeleteTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTimezone ), NULL, this ); + btnAddGeneralGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralGeoposition ), NULL, this ); + btnModifyGeneralGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralGeoposition ), NULL, this ); + btnDeleteGeneralGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralGeoposition ), NULL, this ); + btnAddRelated->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralRelated ), NULL, this ); + btnModifyRelated->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralRelated ), NULL, this ); + btnDeleteRelated->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralRelated ), NULL, this ); + btnAddWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralWebsite ), NULL, this ); + btnModifyWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralWebsite ), NULL, this ); + btnDeleteWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralWebsite ), NULL, this ); + btnAddTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTitle ), NULL, this ); + btnModifyTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTitle ), NULL, this ); + btnDeleteTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTitle ), NULL, this ); + btnAddRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralRole ), NULL, this ); + btnModifyRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralRole ), NULL, this ); + btnDeleteRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralRole ), NULL, this ); + btnAddOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralOrganisation ), NULL, this ); + btnModifyOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralOrganisation ), NULL, this ); + btnDeleteOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralOrganisation ), NULL, this ); + btnAddNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralNote ), NULL, this ); + btnModifyNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralNote ), NULL, this ); + btnDeleteNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralNote ), NULL, this ); + btnAddHomeNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeNickname ), NULL, this ); + btnModifyHomeNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeNickname ), NULL, this ); + btnDeleteHomeNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeNickname ), NULL, this ); + btnAddHomeAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeAddress ), NULL, this ); + btnModifyHomeAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeAddress ), NULL, this ); + btnDeleteHomeAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeAddress ), NULL, this ); + btnAddHomeEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeEmail ), NULL, this ); + btnModifyHomeEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeEmail ), NULL, this ); + btnDeleteHomeEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeEmail ), NULL, this ); + btnAddHomeIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeIM ), NULL, this ); + btnModifyHomeIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeIM ), NULL, this ); + btnDeleteHomeIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeIM ), NULL, this ); + btnAddHomeTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTelephone ), NULL, this ); + btnModifyHomeTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTelephone ), NULL, this ); + btnDeleteHomeTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTelephone ), NULL, this ); + btnAddHomeLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeLanguage ), NULL, this ); + btnModifyHomeLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeLanguage ), NULL, this ); + btnDeleteHomeLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeLanguage ), NULL, this ); + btnAddHomeTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTimezone ), NULL, this ); + btnModifyHomeTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTimezone ), NULL, this ); + btnDeleteHomeTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTimezone ), NULL, this ); + btnAddHomeGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeGeoposition ), NULL, this ); + btnModifyHomeGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeGeoposition ), NULL, this ); + btnDeleteHomePosition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeGeoposition ), NULL, this ); + btnAddHomeWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeWebsite ), NULL, this ); + btnHomeModifyWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeWebsite ), NULL, this ); + btnDeleteHomeWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeWebsite ), NULL, this ); + btnAddHomeTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTitle ), NULL, this ); + btnModifyHomeTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTitle ), NULL, this ); + btnDeleteHomeTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTitle ), NULL, this ); + btnAddHomeRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeRole ), NULL, this ); + btnModifyHomeRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeRole ), NULL, this ); + btnDeleteHomeRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeRole ), NULL, this ); + btnAddHomeOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeOrganisation ), NULL, this ); + btnModifyHomeOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeOrganisation ), NULL, this ); + btnDeleteHomeOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeOrganisation ), NULL, this ); + btnAddHomeNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeNote ), NULL, this ); + btnModifyHomeNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeNote ), NULL, this ); + btnDeleteHomeNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeNote ), NULL, this ); + btnAddBusinessNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessNickname ), NULL, this ); + btnModifyBusinessNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessNickname ), NULL, this ); + btnDeleteBusinessNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessNickname ), NULL, this ); + btnAddBusinessAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessAddress ), NULL, this ); + btnModifyBusinessAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessAddress ), NULL, this ); + btnDeleteBusinessAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessAddress ), NULL, this ); + btnAddBusinessEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessEmail ), NULL, this ); + btnModifyBusinessEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessEmail ), NULL, this ); + btnDeleteBusinessEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessEmail ), NULL, this ); + btnAddBusinessIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessIM ), NULL, this ); + btnModifyBusinessIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessIM ), NULL, this ); + btnDeleteBusinessIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessIM ), NULL, this ); + btnBusinessAddTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTelephone ), NULL, this ); + btnBusinessModifyTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTelephone ), NULL, this ); + btnBusinessDeleteTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTelephone ), NULL, this ); + btnBusinessAddLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessLanguage ), NULL, this ); + btnBusinessModifyLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessLanguage ), NULL, this ); + btnBusinessDeleteLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessLanguage ), NULL, this ); + btnBusinessAddTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTimezone ), NULL, this ); + btnBusinessModifyTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTimezone ), NULL, this ); + btnDeleteBusinessTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTimezone ), NULL, this ); + btnAddBusinessGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessGeoposition ), NULL, this ); + btnModifyBusinessGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessGeoposition ), NULL, this ); + btnDeleteBusinessGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessGeoposition ), NULL, this ); + btnAddBusinessWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessWebsite ), NULL, this ); + btnModifyBusinessWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessWebsite ), NULL, this ); + btnDeleteBusinessWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessWebsite ), NULL, this ); + btnAddBusinessTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTitle ), NULL, this ); + btnModifyBusinessTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTitle ), NULL, this ); + btnDeleteBusinessTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTitle ), NULL, this ); + btnAddBusinessRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessRole ), NULL, this ); + btnModifyBusinessRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessRole ), NULL, this ); + btnDeleteBusinessRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessRole ), NULL, this ); + btnAddBusinessOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessOrganisation ), NULL, this ); + btnModifyBusinessOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessOrganisation ), NULL, this ); + btnDeleteBusinessOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessOrganisation ), NULL, this ); + btnBusinessAddNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessNote ), NULL, this ); + btnBusinessModifyNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessNote ), NULL, this ); + btnBusinessDeleteNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessNote ), NULL, this ); + btnAddCategory->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCategory ), NULL, this ); + btnModifyCategory->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCategory ), NULL, this ); + btnDeleteCategory->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCategory ), NULL, this ); + btnAddGroups->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGroup ), NULL, this ); + btnModifyGroups->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGroup ), NULL, this ); + btnDeleteGroups->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGroup ), NULL, this ); + lboPictures->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmContactEditorADT::LoadPicture ), NULL, this ); + btnAddPicture->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddPicture ), NULL, this ); + btnModifyPicture->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyPicture ), NULL, this ); + btnDeletePicture->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeletePicture ), NULL, this ); + lboLogos->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmContactEditorADT::LoadLogo ), NULL, this ); + btnAddLogo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddLogo ), NULL, this ); + btnModifyLogo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyLogo ), NULL, this ); + btnDeleteLogo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteLogo ), NULL, this ); + btnAddSound->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddSound ), NULL, this ); + btnModifySound->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifySound ), NULL, this ); + btnDeleteSound->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteSound ), NULL, this ); + btnPlay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::PlaySound ), NULL, this ); + btnStop->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::StopSound ), NULL, this ); + btnAddCalendarAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCalendarAddress ), NULL, this ); + btnModifyCalendarAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCalendarAddress ), NULL, this ); + btnDeleteCalendarAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCalendarAddress ), NULL, this ); + btnAddCalendarRequestAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCalendarRequest ), NULL, this ); + btnModifyCalendarRequestAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCalendarRequest ), NULL, this ); + btnDeleteCalendarRequestAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCalendarAddress ), NULL, this ); + btnAddFreeBusyAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddFreeBusy ), NULL, this ); + btnModifyFreeBusyAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyFreeBusy ), NULL, this ); + btnDeleteFreeBusyAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteFreeBusy ), NULL, this ); + btnAddKey->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddKey ), NULL, this ); + btnModifyKey->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyKey ), NULL, this ); + btnDeleteKey->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteKey ), NULL, this ); + btnAddVendorNamespace->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddVendorNamespace ), NULL, this ); + btnModifyVendorNamespace->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyVendorNamespace ), NULL, this ); + btnDeleteVendorNamespace->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteVendorNamespace ), NULL, this ); + btnAddXToken->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddXToken ), NULL, this ); + btnModifyXToken->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyXToken ), NULL, this ); + btnDeleteXToken->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteXToken ), NULL, this ); + this->Connect( mnuContactSave->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::SaveContact ) ); + this->Connect( mnuContactSaveClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::SaveCloseContact ) ); + this->Connect( mnuContactClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CloseContact ) ); + this->Connect( mnuEditCut->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CutText ) ); + this->Connect( mnuEditCopy->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CopyText ) ); + this->Connect( mnuEditPaste->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::PasteText ) ); +} + +frmContactEditorADT::~frmContactEditorADT() +{ + // Disconnect Events + this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmContactEditorADT::CloseWindow ) ); + txtTitle->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + txtForename->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + txtSurname->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + txtOtherNames->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + txtSuffix->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this ); + cmbDisplayAs->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorADT::UpdateName ), NULL, this ); + cmbDisplayAs->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateName ), NULL, this ); + cmbType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmContactEditorADT::UpdateMembersTab ), NULL, this ); + btnAddGeneralNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralNickname ), NULL, this ); + btnModifyGeneralNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralNickname ), NULL, this ); + btnDeleteGeneralNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralNickname ), NULL, this ); + btnAddGeneralAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralAddress ), NULL, this ); + btnModifyGeneralAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralAddress ), NULL, this ); + btnDeleteGeneralAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralAddress ), NULL, this ); + btnAddEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralEmail ), NULL, this ); + btnModifyEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralEmail ), NULL, this ); + btnDeleteEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralEmail ), NULL, this ); + btnAddIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralIM ), NULL, this ); + btnModifyIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralIM ), NULL, this ); + btnDeleteIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralIM ), NULL, this ); + btnAddTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTelephone ), NULL, this ); + btnModifyTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTelephone ), NULL, this ); + btnDeleteTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTelephone ), NULL, this ); + btnAddLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralLanguages ), NULL, this ); + btnModifyLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralLanguages ), NULL, this ); + btnDeleteLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralLanguage ), NULL, this ); + btnAddTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTimezone ), NULL, this ); + btnModifyTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTimezone ), NULL, this ); + btnDeleteTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTimezone ), NULL, this ); + btnAddGeneralGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralGeoposition ), NULL, this ); + btnModifyGeneralGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralGeoposition ), NULL, this ); + btnDeleteGeneralGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralGeoposition ), NULL, this ); + btnAddRelated->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralRelated ), NULL, this ); + btnModifyRelated->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralRelated ), NULL, this ); + btnDeleteRelated->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralRelated ), NULL, this ); + btnAddWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralWebsite ), NULL, this ); + btnModifyWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralWebsite ), NULL, this ); + btnDeleteWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralWebsite ), NULL, this ); + btnAddTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTitle ), NULL, this ); + btnModifyTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTitle ), NULL, this ); + btnDeleteTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTitle ), NULL, this ); + btnAddRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralRole ), NULL, this ); + btnModifyRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralRole ), NULL, this ); + btnDeleteRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralRole ), NULL, this ); + btnAddOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralOrganisation ), NULL, this ); + btnModifyOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralOrganisation ), NULL, this ); + btnDeleteOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralOrganisation ), NULL, this ); + btnAddNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralNote ), NULL, this ); + btnModifyNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralNote ), NULL, this ); + btnDeleteNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralNote ), NULL, this ); + btnAddHomeNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeNickname ), NULL, this ); + btnModifyHomeNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeNickname ), NULL, this ); + btnDeleteHomeNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeNickname ), NULL, this ); + btnAddHomeAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeAddress ), NULL, this ); + btnModifyHomeAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeAddress ), NULL, this ); + btnDeleteHomeAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeAddress ), NULL, this ); + btnAddHomeEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeEmail ), NULL, this ); + btnModifyHomeEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeEmail ), NULL, this ); + btnDeleteHomeEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeEmail ), NULL, this ); + btnAddHomeIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeIM ), NULL, this ); + btnModifyHomeIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeIM ), NULL, this ); + btnDeleteHomeIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeIM ), NULL, this ); + btnAddHomeTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTelephone ), NULL, this ); + btnModifyHomeTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTelephone ), NULL, this ); + btnDeleteHomeTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTelephone ), NULL, this ); + btnAddHomeLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeLanguage ), NULL, this ); + btnModifyHomeLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeLanguage ), NULL, this ); + btnDeleteHomeLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeLanguage ), NULL, this ); + btnAddHomeTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTimezone ), NULL, this ); + btnModifyHomeTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTimezone ), NULL, this ); + btnDeleteHomeTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTimezone ), NULL, this ); + btnAddHomeGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeGeoposition ), NULL, this ); + btnModifyHomeGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeGeoposition ), NULL, this ); + btnDeleteHomePosition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeGeoposition ), NULL, this ); + btnAddHomeWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeWebsite ), NULL, this ); + btnHomeModifyWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeWebsite ), NULL, this ); + btnDeleteHomeWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeWebsite ), NULL, this ); + btnAddHomeTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTitle ), NULL, this ); + btnModifyHomeTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTitle ), NULL, this ); + btnDeleteHomeTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTitle ), NULL, this ); + btnAddHomeRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeRole ), NULL, this ); + btnModifyHomeRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeRole ), NULL, this ); + btnDeleteHomeRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeRole ), NULL, this ); + btnAddHomeOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeOrganisation ), NULL, this ); + btnModifyHomeOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeOrganisation ), NULL, this ); + btnDeleteHomeOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeOrganisation ), NULL, this ); + btnAddHomeNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeNote ), NULL, this ); + btnModifyHomeNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeNote ), NULL, this ); + btnDeleteHomeNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeNote ), NULL, this ); + btnAddBusinessNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessNickname ), NULL, this ); + btnModifyBusinessNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessNickname ), NULL, this ); + btnDeleteBusinessNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessNickname ), NULL, this ); + btnAddBusinessAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessAddress ), NULL, this ); + btnModifyBusinessAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessAddress ), NULL, this ); + btnDeleteBusinessAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessAddress ), NULL, this ); + btnAddBusinessEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessEmail ), NULL, this ); + btnModifyBusinessEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessEmail ), NULL, this ); + btnDeleteBusinessEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessEmail ), NULL, this ); + btnAddBusinessIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessIM ), NULL, this ); + btnModifyBusinessIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessIM ), NULL, this ); + btnDeleteBusinessIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessIM ), NULL, this ); + btnBusinessAddTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTelephone ), NULL, this ); + btnBusinessModifyTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTelephone ), NULL, this ); + btnBusinessDeleteTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTelephone ), NULL, this ); + btnBusinessAddLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessLanguage ), NULL, this ); + btnBusinessModifyLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessLanguage ), NULL, this ); + btnBusinessDeleteLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessLanguage ), NULL, this ); + btnBusinessAddTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTimezone ), NULL, this ); + btnBusinessModifyTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTimezone ), NULL, this ); + btnDeleteBusinessTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTimezone ), NULL, this ); + btnAddBusinessGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessGeoposition ), NULL, this ); + btnModifyBusinessGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessGeoposition ), NULL, this ); + btnDeleteBusinessGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessGeoposition ), NULL, this ); + btnAddBusinessWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessWebsite ), NULL, this ); + btnModifyBusinessWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessWebsite ), NULL, this ); + btnDeleteBusinessWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessWebsite ), NULL, this ); + btnAddBusinessTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTitle ), NULL, this ); + btnModifyBusinessTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTitle ), NULL, this ); + btnDeleteBusinessTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTitle ), NULL, this ); + btnAddBusinessRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessRole ), NULL, this ); + btnModifyBusinessRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessRole ), NULL, this ); + btnDeleteBusinessRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessRole ), NULL, this ); + btnAddBusinessOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessOrganisation ), NULL, this ); + btnModifyBusinessOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessOrganisation ), NULL, this ); + btnDeleteBusinessOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessOrganisation ), NULL, this ); + btnBusinessAddNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessNote ), NULL, this ); + btnBusinessModifyNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessNote ), NULL, this ); + btnBusinessDeleteNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessNote ), NULL, this ); + btnAddCategory->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCategory ), NULL, this ); + btnModifyCategory->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCategory ), NULL, this ); + btnDeleteCategory->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCategory ), NULL, this ); + btnAddGroups->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGroup ), NULL, this ); + btnModifyGroups->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGroup ), NULL, this ); + btnDeleteGroups->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGroup ), NULL, this ); + lboPictures->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmContactEditorADT::LoadPicture ), NULL, this ); + btnAddPicture->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddPicture ), NULL, this ); + btnModifyPicture->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyPicture ), NULL, this ); + btnDeletePicture->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeletePicture ), NULL, this ); + lboLogos->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmContactEditorADT::LoadLogo ), NULL, this ); + btnAddLogo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddLogo ), NULL, this ); + btnModifyLogo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyLogo ), NULL, this ); + btnDeleteLogo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteLogo ), NULL, this ); + btnAddSound->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddSound ), NULL, this ); + btnModifySound->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifySound ), NULL, this ); + btnDeleteSound->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteSound ), NULL, this ); + btnPlay->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::PlaySound ), NULL, this ); + btnStop->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::StopSound ), NULL, this ); + btnAddCalendarAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCalendarAddress ), NULL, this ); + btnModifyCalendarAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCalendarAddress ), NULL, this ); + btnDeleteCalendarAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCalendarAddress ), NULL, this ); + btnAddCalendarRequestAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCalendarRequest ), NULL, this ); + btnModifyCalendarRequestAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCalendarRequest ), NULL, this ); + btnDeleteCalendarRequestAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCalendarAddress ), NULL, this ); + btnAddFreeBusyAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddFreeBusy ), NULL, this ); + btnModifyFreeBusyAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyFreeBusy ), NULL, this ); + btnDeleteFreeBusyAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteFreeBusy ), NULL, this ); + btnAddKey->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddKey ), NULL, this ); + btnModifyKey->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyKey ), NULL, this ); + btnDeleteKey->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteKey ), NULL, this ); + btnAddVendorNamespace->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddVendorNamespace ), NULL, this ); + btnModifyVendorNamespace->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyVendorNamespace ), NULL, this ); + btnDeleteVendorNamespace->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteVendorNamespace ), NULL, this ); + btnAddXToken->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddXToken ), NULL, this ); + btnModifyXToken->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyXToken ), NULL, this ); + btnDeleteXToken->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteXToken ), NULL, this ); + this->Disconnect( CONTACT_SAVE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::SaveContact ) ); + this->Disconnect( CONTACT_SAVECLOSE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::SaveCloseContact ) ); + this->Disconnect( CONTACT_CLOSE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CloseContact ) ); + this->Disconnect( wxID_CUT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CutText ) ); + this->Disconnect( wxID_COPY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CopyText ) ); + this->Disconnect( wxID_PASTE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::PasteText ) ); + +} + +frmContactEditorAddressADT::frmContactEditorAddressADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkAddress = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 2, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblAddress = new wxStaticText( tabGeneral, wxID_ANY, wxT("Address:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAddress->Wrap( -1 ); + fgSizer6->Add( lblAddress, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtAddress = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtAddress->SetMaxLength( 0 ); + fgSizer6->Add( txtAddress, 0, wxALL|wxEXPAND, 5 ); + + m_staticText61 = new wxStaticText( tabGeneral, wxID_ANY, wxT("Town/City:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText61->Wrap( -1 ); + fgSizer6->Add( m_staticText61, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtTownCity = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtTownCity->SetMaxLength( 0 ); + fgSizer6->Add( txtTownCity, 0, wxALL|wxEXPAND, 5 ); + + lblCountyState = new wxStaticText( tabGeneral, wxID_ANY, wxT("County:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblCountyState->Wrap( -1 ); + fgSizer6->Add( lblCountyState, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtCounty = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtCounty->SetMaxLength( 0 ); + fgSizer6->Add( txtCounty, 0, wxALL|wxEXPAND, 5 ); + + lblPostCode = new wxStaticText( tabGeneral, wxID_ANY, wxT("Post Code:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPostCode->Wrap( -1 ); + fgSizer6->Add( lblPostCode, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtPostCode = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtPostCode->SetMaxLength( 0 ); + fgSizer6->Add( txtPostCode, 0, wxALL, 5 ); + + lblCountry = new wxStaticText( tabGeneral, wxID_ANY, wxT("Country:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblCountry->Wrap( -1 ); + fgSizer6->Add( lblCountry, 0, wxALL, 5 ); + + txtCountry = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtCountry->SetMaxLength( 0 ); + fgSizer6->Add( txtCountry, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkAddress->AddPage( tabGeneral, wxT("General"), true ); + tabLabel = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer253; + bSizer253 = new wxBoxSizer( wxVERTICAL ); + + btnCopyMailing = new wxButton( tabLabel, wxID_ANY, wxT("Copy Address to Label"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer253->Add( btnCopyMailing, 0, wxALL, 5 ); + + txtLabel = new wxTextCtrl( tabLabel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); + txtLabel->SetMaxLength( 0 ); + bSizer253->Add( txtLabel, 1, wxALL|wxEXPAND, 5 ); + + + tabLabel->SetSizer( bSizer253 ); + tabLabel->Layout(); + bSizer253->Fit( tabLabel ); + nbkAddress->AddPage( tabLabel, wxT("Label"), false ); + tabOther = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer61; + fgSizer61 = new wxFlexGridSizer( 2, 2, 0, 0 ); + fgSizer61->AddGrowableCol( 1 ); + fgSizer61->SetFlexibleDirection( wxVERTICAL ); + fgSizer61->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblLanguage = new wxStaticText( tabOther, wxID_ANY, wxT("Language:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLanguage->Wrap( -1 ); + fgSizer61->Add( lblLanguage, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + cmbLanguage = new wxComboBox( tabOther, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + fgSizer61->Add( cmbLanguage, 0, wxALL, 5 ); + + lblGeography = new wxStaticText( tabOther, wxID_ANY, wxT("Geopositioning:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblGeography->Wrap( -1 ); + fgSizer61->Add( lblGeography, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtGeo = new wxTextCtrl( tabOther, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtGeo->SetMaxLength( 0 ); + fgSizer61->Add( txtGeo, 0, wxALL|wxEXPAND, 5 ); + + lblTimezone = new wxStaticText( tabOther, wxID_ANY, wxT("Timezone:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTimezone->Wrap( -1 ); + fgSizer61->Add( lblTimezone, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtTimezone = new wxTextCtrl( tabOther, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtTimezone->SetMaxLength( 0 ); + fgSizer61->Add( txtTimezone, 0, wxALL|wxEXPAND, 5 ); + + + tabOther->SetSizer( fgSizer61 ); + tabOther->Layout(); + fgSizer61->Fit( tabOther ); + nbkAddress->AddPage( tabOther, wxT("Other"), false ); + + bSizer251->Add( nbkAddress, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorAddressADT::InitAddressEditor ) ); + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::EnablePriority ), NULL, this ); + btnCopyMailing->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::CopyAddress ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::ProcessData ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::CloseWindow ), NULL, this ); +} + +frmContactEditorAddressADT::~frmContactEditorAddressADT() +{ + // Disconnect Events + this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorAddressADT::InitAddressEditor ) ); + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::EnablePriority ), NULL, this ); + btnCopyMailing->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::CopyAddress ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::ProcessData ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::CloseWindow ), NULL, this ); + +} + +frmConflictResolutionADT::frmConflictResolutionADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxFlexGridSizer* fgSizer39; + fgSizer39 = new wxFlexGridSizer( 0, 1, 0, 0 ); + fgSizer39->AddGrowableCol( 0 ); + fgSizer39->AddGrowableRow( 0 ); + fgSizer39->SetFlexibleDirection( wxBOTH ); + fgSizer39->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + wxBoxSizer* bSizer363; + bSizer363 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer364; + bSizer364 = new wxBoxSizer( wxVERTICAL ); + + lblText = new wxStaticText( this, wxID_ANY, wxT("An update for this contact has also taken place on the server.\nChoose which version to keep and either press Keep Local or Keep Server.\nTo decide later, click on Decide Later."), wxDefaultPosition, wxDefaultSize, 0 ); + lblText->Wrap( -1 ); + bSizer364->Add( lblText, 0, wxALL|wxEXPAND, 5 ); + + m_splitter3 = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D ); + m_splitter3->Connect( wxEVT_IDLE, wxIdleEventHandler( frmConflictResolutionADT::m_splitter3OnIdle ), NULL, this ); + + m_panel44 = new wxPanel( m_splitter3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer365; + bSizer365 = new wxBoxSizer( wxVERTICAL ); + + htmClient = new wxHtmlWindow( m_panel44, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO ); + bSizer365->Add( htmClient, 1, wxALL|wxEXPAND, 5 ); + + + m_panel44->SetSizer( bSizer365 ); + m_panel44->Layout(); + bSizer365->Fit( m_panel44 ); + m_panel45 = new wxPanel( m_splitter3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer366; + bSizer366 = new wxBoxSizer( wxVERTICAL ); + + htmServer = new wxHtmlWindow( m_panel45, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO ); + bSizer366->Add( htmServer, 1, wxALL|wxEXPAND, 5 ); + + + m_panel45->SetSizer( bSizer366 ); + m_panel45->Layout(); + bSizer366->Fit( m_panel45 ); + m_splitter3->SplitVertically( m_panel44, m_panel45, 257 ); + bSizer364->Add( m_splitter3, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer367; + bSizer367 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer367->Add( 0, 0, 1, wxEXPAND, 5 ); + + btnKeepLocal = new wxButton( this, wxID_ANY, wxT("Keep Local"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer367->Add( btnKeepLocal, 0, wxALL, 5 ); + + btnKeepServer = new wxButton( this, wxID_ANY, wxT("Keep Server"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer367->Add( btnKeepServer, 0, wxALL, 5 ); + + btnDecideLater = new wxButton( this, wxID_ANY, wxT("Decide Later"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer367->Add( btnDecideLater, 0, wxALL, 5 ); + + + bSizer367->Add( 0, 0, 1, wxEXPAND, 5 ); + + + bSizer364->Add( bSizer367, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); + + + bSizer363->Add( bSizer364, 1, wxEXPAND, 5 ); + + + fgSizer39->Add( bSizer363, 1, wxEXPAND, 5 ); + + + this->SetSizer( fgSizer39 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnKeepLocal->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::KeepLocalData ), NULL, this ); + btnKeepServer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::KeepServerData ), NULL, this ); + btnDecideLater->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::DecideLater ), NULL, this ); +} + +frmConflictResolutionADT::~frmConflictResolutionADT() +{ + // Disconnect Events + btnKeepLocal->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::KeepLocalData ), NULL, this ); + btnKeepServer->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::KeepServerData ), NULL, this ); + btnDecideLater->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::DecideLater ), NULL, this ); + +} + +frmActivityMgrADT::frmActivityMgrADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( 400,300 ), wxDefaultSize ); + + mnuMenuBar = new wxMenuBar( 0 ); + mnuWindow = new wxMenu(); + wxMenuItem* mnuStopActivity; + mnuStopActivity = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("&Stop Activity") ) + wxT('\t') + wxT("CTRL+ALT+S"), wxEmptyString, wxITEM_NORMAL ); + mnuWindow->Append( mnuStopActivity ); + + wxMenuItem* mnuActivityStopAll; + mnuActivityStopAll = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("Stop All Activities") ) + wxT('\t') + wxT("CTRL+SHIFT+ALT+S"), wxEmptyString, wxITEM_NORMAL ); + mnuWindow->Append( mnuActivityStopAll ); + + wxMenuItem* mnuRetryActivity; + mnuRetryActivity = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("&Retry Activity") ) + wxT('\t') + wxT("CTRL+R"), wxEmptyString, wxITEM_NORMAL ); + mnuWindow->Append( mnuRetryActivity ); + + mnuWindow->AppendSeparator(); + + wxMenuItem* mnuSleepMode; + mnuSleepMode = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("Sleep Mode") ) , wxEmptyString, wxITEM_CHECK ); + #ifdef __WXMSW__ + mnuSleepMode->SetBitmaps( wxNullBitmap ); + #elif defined( __WXGTK__ ) + mnuSleepMode->SetBitmap( wxNullBitmap ); + #endif + mnuWindow->Append( mnuSleepMode ); + + mnuWindow->AppendSeparator(); + + wxMenuItem* mnuWindowClose; + mnuWindowClose = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("&Close Window") ) + wxT('\t') + wxT("ALT+F4"), wxEmptyString, wxITEM_NORMAL ); + mnuWindow->Append( mnuWindowClose ); + + mnuMenuBar->Append( mnuWindow, wxT("&Activity") ); + + this->SetMenuBar( mnuMenuBar ); + + wxFlexGridSizer* fgSizer38; + fgSizer38 = new wxFlexGridSizer( 0, 1, 0, 0 ); + fgSizer38->AddGrowableCol( 0 ); + fgSizer38->AddGrowableRow( 1 ); + fgSizer38->SetFlexibleDirection( wxBOTH ); + fgSizer38->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_panel43 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer363; + bSizer363 = new wxBoxSizer( wxHORIZONTAL ); + + bmpActivity = new wxStaticBitmap( m_panel43, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 ); + bmpActivity->SetMinSize( wxSize( 64,64 ) ); + + bSizer363->Add( bmpActivity, 0, wxALL, 5 ); + + m_panel46 = new wxPanel( m_panel43, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer364; + bSizer364 = new wxBoxSizer( wxVERTICAL ); + + + bSizer364->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblDetails = new wxStaticText( m_panel46, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE ); + lblDetails->Wrap( -1 ); + bSizer364->Add( lblDetails, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 0 ); + + + bSizer364->Add( 0, 0, 1, wxEXPAND, 5 ); + + GauProgress = new wxGauge( m_panel46, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL ); + GauProgress->SetValue( 0 ); + GauProgress->SetMinSize( wxSize( -1,20 ) ); + + bSizer364->Add( GauProgress, 0, wxALL|wxEXPAND, 0 ); + + + bSizer364->Add( 0, 0, 1, wxEXPAND, 5 ); + + + m_panel46->SetSizer( bSizer364 ); + m_panel46->Layout(); + bSizer364->Fit( m_panel46 ); + bSizer363->Add( m_panel46, 1, wxEXPAND | wxALL, 5 ); + + + m_panel43->SetSizer( bSizer363 ); + m_panel43->Layout(); + bSizer363->Fit( m_panel43 ); + fgSizer38->Add( m_panel43, 1, wxALL|wxEXPAND, 0 ); + + m_panel44 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer365; + bSizer365 = new wxBoxSizer( wxVERTICAL ); + + lstActivity = new wxListCtrl( m_panel44, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER ); + bSizer365->Add( lstActivity, 1, wxALL|wxEXPAND, 5 ); + + + m_panel44->SetSizer( bSizer365 ); + m_panel44->Layout(); + bSizer365->Fit( m_panel44 ); + fgSizer38->Add( m_panel44, 5, wxALL|wxEXPAND, 0 ); + + + this->SetSizer( fgSizer38 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmActivityMgrADT::CloseWindow ) ); + this->Connect( mnuStopActivity->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::StopTask ) ); + this->Connect( mnuActivityStopAll->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::StopAllTasks ) ); + this->Connect( mnuRetryActivity->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::RetryTask ) ); + this->Connect( mnuSleepMode->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::SleepMode ) ); + this->Connect( mnuWindowClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::CloseWindow ) ); +} + +frmActivityMgrADT::~frmActivityMgrADT() +{ + // Disconnect Events + this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmActivityMgrADT::CloseWindow ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::StopTask ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::StopAllTasks ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::RetryTask ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::SleepMode ) ); + this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::CloseWindow ) ); + +} + +frmContactEditorNicknameADT::frmContactEditorNicknameADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkAddress = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblNickname = new wxStaticText( tabGeneral, wxID_ANY, wxT("Nickname:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblNickname->Wrap( -1 ); + fgSizer6->Add( lblNickname, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtNickname = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtNickname->SetMaxLength( 0 ); + fgSizer6->Add( txtNickname, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkAddress->AddPage( tabGeneral, wxT("General"), true ); + tabOther = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer61; + fgSizer61 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer61->AddGrowableCol( 1 ); + fgSizer61->SetFlexibleDirection( wxBOTH ); + fgSizer61->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblLanguage = new wxStaticText( tabOther, wxID_ANY, wxT("Language:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLanguage->Wrap( -1 ); + fgSizer61->Add( lblLanguage, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + cmbLanguage = new wxComboBox( tabOther, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + fgSizer61->Add( cmbLanguage, 1, wxALL|wxEXPAND, 5 ); + + + tabOther->SetSizer( fgSizer61 ); + tabOther->Layout(); + fgSizer61->Fit( tabOther ); + nbkAddress->AddPage( tabOther, wxT("Other"), false ); + + bSizer251->Add( nbkAddress, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorNicknameADT::InitAddressEditor ) ); + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::ProcessData ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::CloseWindow ), NULL, this ); +} + +frmContactEditorNicknameADT::~frmContactEditorNicknameADT() +{ + // Disconnect Events + this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorNicknameADT::InitAddressEditor ) ); + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::ProcessData ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorGroupsADT::frmContactEditorGroupsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkGroup = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkGroup, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->AddGrowableRow( 0 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblContacts = new wxStaticText( tabGeneral, wxID_ANY, wxT("Contacts:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblContacts->Wrap( -1 ); + fgSizer6->Add( lblContacts, 0, wxALIGN_TOP|wxALL, 5 ); + + wxArrayString chkContactsChoices; + chkContacts = new wxCheckListBox( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, chkContactsChoices, wxLB_ALWAYS_SB|wxLB_MULTIPLE ); + fgSizer6->Add( chkContacts, 1, wxALL|wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkGroup->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkGroup, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorGroupsADT::FetchContacts ) ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGroupsADT::ProcessData ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGroupsADT::CloseWindow ), NULL, this ); +} + +frmContactEditorGroupsADT::~frmContactEditorGroupsADT() +{ + // Disconnect Events + this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorGroupsADT::FetchContacts ) ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGroupsADT::ProcessData ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGroupsADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorRolesADT::frmContactEditorRolesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkRole = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkRole, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblRole = new wxStaticText( tabGeneral, wxID_ANY, wxT("Role Name:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblRole->Wrap( -1 ); + fgSizer6->Add( lblRole, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtRole = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtRole->SetMaxLength( 0 ); + fgSizer6->Add( txtRole, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkRole->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkRole, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::CloseWindow ), NULL, this ); +} + +frmContactEditorRolesADT::~frmContactEditorRolesADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorOrganisationsADT::frmContactEditorOrganisationsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkOrganisation = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkOrganisation, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxBOTH ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblOrganisation = new wxStaticText( tabGeneral, wxID_ANY, wxT("Organisation:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblOrganisation->Wrap( -1 ); + fgSizer6->Add( lblOrganisation, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtOrganisation = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtOrganisation->SetMaxLength( 0 ); + fgSizer6->Add( txtOrganisation, 0, wxALL|wxEXPAND, 5 ); + + lblSortAs = new wxStaticText( tabGeneral, wxID_ANY, wxT("Sort As:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblSortAs->Wrap( -1 ); + fgSizer6->Add( lblSortAs, 0, wxALL, 5 ); + + cmbSortAs = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + fgSizer6->Add( cmbSortAs, 1, wxALL, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkOrganisation->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkOrganisation, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + txtOrganisation->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorOrganisationsADT::UpdateSortAs ), NULL, this ); + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::CloseWindow ), NULL, this ); +} + +frmContactEditorOrganisationsADT::~frmContactEditorOrganisationsADT() +{ + // Disconnect Events + txtOrganisation->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorOrganisationsADT::UpdateSortAs ), NULL, this ); + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorNotesADT::frmContactEditorNotesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkNotes = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkNotes, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer353; + bSizer353 = new wxBoxSizer( wxVERTICAL ); + + txtNote = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); + txtNote->SetMaxLength( 0 ); + bSizer353->Add( txtNote, 1, wxALL|wxEXPAND, 5 ); + + + tabGeneral->SetSizer( bSizer353 ); + tabGeneral->Layout(); + bSizer353->Fit( tabGeneral ); + nbkNotes->AddPage( tabGeneral, wxT("General"), true ); + tabPriority = new wxPanel( nbkNotes, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer61; + fgSizer61 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer61->AddGrowableCol( 1 ); + fgSizer61->SetFlexibleDirection( wxVERTICAL ); + fgSizer61->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblPriority = new wxStaticText( tabPriority, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer61->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer2601; + bSizer2601 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabPriority, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer2601->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer2541; + bSizer2541 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer2561; + bSizer2561 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabPriority, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer2561->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer2541->Add( bSizer2561, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer2551; + bSizer2551 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabPriority, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer2551->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer2551->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabPriority, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer2551->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer2541->Add( bSizer2551, 1, wxEXPAND, 0 ); + + + bSizer2601->Add( bSizer2541, 1, wxEXPAND, 5 ); + + + fgSizer61->Add( bSizer2601, 1, wxEXPAND, 5 ); + + + fgSizer61->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabPriority->SetSizer( fgSizer61 ); + tabPriority->Layout(); + fgSizer61->Fit( tabPriority ); + nbkNotes->AddPage( tabPriority, wxT("Priority"), false ); + tabLanguage = new wxPanel( nbkNotes, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer611; + fgSizer611 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer611->AddGrowableCol( 0 ); + fgSizer611->SetFlexibleDirection( wxBOTH ); + fgSizer611->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblLanguage = new wxStaticText( tabLanguage, wxID_ANY, wxT("Language:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLanguage->Wrap( -1 ); + fgSizer611->Add( lblLanguage, 1, wxALL, 5 ); + + cmbLanguage = new wxComboBox( tabLanguage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + fgSizer611->Add( cmbLanguage, 1, wxALL, 5 ); + + + tabLanguage->SetSizer( fgSizer611 ); + tabLanguage->Layout(); + fgSizer611->Fit( tabLanguage ); + nbkNotes->AddPage( tabLanguage, wxT("Language"), false ); + + bSizer251->Add( nbkNotes, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::CloseWindow ), NULL, this ); +} + +frmContactEditorNotesADT::~frmContactEditorNotesADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorTitlesADT::frmContactEditorTitlesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkTitles = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkTitles, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblTitle = new wxStaticText( tabGeneral, wxID_ANY, wxT("Title:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTitle->Wrap( -1 ); + fgSizer6->Add( lblTitle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtTitle = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtTitle->SetMaxLength( 0 ); + fgSizer6->Add( txtTitle, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkTitles->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkTitles, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::CloseWindow ), NULL, this ); +} + +frmContactEditorTitlesADT::~frmContactEditorTitlesADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorRelatedADT::frmContactEditorRelatedADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkRelated = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkRelated, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 0 ); + fgSizer6->SetFlexibleDirection( wxBOTH ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblRelation = new wxStaticText( tabGeneral, wxID_ANY, wxT("Relation Name:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblRelation->Wrap( -1 ); + fgSizer6->Add( lblRelation, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtRelated = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtRelated->SetMaxLength( 0 ); + fgSizer6->Add( txtRelated, 0, wxALL|wxEXPAND, 5 ); + + lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblType->Wrap( -1 ); + fgSizer6->Add( lblType, 0, wxALL, 5 ); + + cmbType = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + fgSizer6->Add( cmbType, 0, wxALL, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkRelated->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkRelated, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::ProcessData ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::CloseWindow ), NULL, this ); +} + +frmContactEditorRelatedADT::~frmContactEditorRelatedADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::ProcessData ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorSoundADT::frmContactEditorSoundADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkRelated = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkRelated, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxBOTH ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblSoundFile = new wxStaticText( tabGeneral, wxID_ANY, wxT("Sound File:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblSoundFile->Wrap( -1 ); + fgSizer6->Add( lblSoundFile, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + fipSound = new wxFilePickerCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxT("Select a sound file"), wxT("*.*"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE ); + fgSizer6->Add( fipSound, 1, wxALL|wxEXPAND, 5 ); + + lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblType->Wrap( -1 ); + fgSizer6->Add( lblType, 0, wxALL, 5 ); + + wxArrayString cmbTypeChoices; + cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 ); + cmbType->SetSelection( 0 ); + fgSizer6->Add( cmbType, 0, wxALL, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkRelated->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkRelated, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::ProcessData ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::CloseWindow ), NULL, this ); +} + +frmContactEditorSoundADT::~frmContactEditorSoundADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::ProcessData ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorPictureADT::frmContactEditorPictureADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkRelated = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkRelated, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxBOTH ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblPictureFile = new wxStaticText( tabGeneral, wxID_ANY, wxT("Picture File:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPictureFile->Wrap( -1 ); + fgSizer6->Add( lblPictureFile, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + fipPicture = new wxFilePickerCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxT("Select a sound file"), wxT("*.*"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE ); + fgSizer6->Add( fipPicture, 1, wxALL|wxEXPAND, 5 ); + + lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblType->Wrap( -1 ); + fgSizer6->Add( lblType, 0, wxALL, 5 ); + + wxArrayString cmbTypeChoices; + cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 ); + cmbType->SetSelection( 0 ); + fgSizer6->Add( cmbType, 0, wxALL, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkRelated->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkRelated, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::ProcessData ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::CloseWindow ), NULL, this ); +} + +frmContactEditorPictureADT::~frmContactEditorPictureADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::ProcessData ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorWebsitesADT::frmContactEditorWebsitesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblWebsite = new wxStaticText( tabGeneral, wxID_ANY, wxT("Website:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblWebsite->Wrap( -1 ); + fgSizer6->Add( lblWebsite, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtWebsite = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtWebsite->SetMaxLength( 0 ); + fgSizer6->Add( txtWebsite, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkWebsite->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::CloseWindow ), NULL, this ); +} + +frmContactEditorWebsitesADT::~frmContactEditorWebsitesADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorGeopositionADT::frmContactEditorGeopositionADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblGeoposition = new wxStaticText( tabGeneral, wxID_ANY, wxT("Geoposition:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblGeoposition->Wrap( -1 ); + fgSizer6->Add( lblGeoposition, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtGeoposition = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtGeoposition->SetMaxLength( 0 ); + fgSizer6->Add( txtGeoposition, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkWebsite->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::CloseWindow ), NULL, this ); +} + +frmContactEditorGeopositionADT::~frmContactEditorGeopositionADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorCalAdrADT::frmContactEditorCalAdrADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblAddress = new wxStaticText( tabGeneral, wxID_ANY, wxT("Address:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAddress->Wrap( -1 ); + fgSizer6->Add( lblAddress, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtAddress = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtAddress->SetMaxLength( 0 ); + fgSizer6->Add( txtAddress, 0, wxALL|wxEXPAND, 5 ); + + lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblType->Wrap( -1 ); + fgSizer6->Add( lblType, 0, wxALL, 5 ); + + wxArrayString cmbTypeChoices; + cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 ); + cmbType->SetSelection( 0 ); + fgSizer6->Add( cmbType, 0, wxALL, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkWebsite->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::CloseWindow ), NULL, this ); +} + +frmContactEditorCalAdrADT::~frmContactEditorCalAdrADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorVendorADT::frmContactEditorVendorADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblVendorPEN = new wxStaticText( tabGeneral, wxID_ANY, wxT("Vendor PEN:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblVendorPEN->Wrap( -1 ); + fgSizer6->Add( lblVendorPEN, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtPEN = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtPEN->SetMaxLength( 0 ); + fgSizer6->Add( txtPEN, 0, wxALL, 5 ); + + lblElement = new wxStaticText( tabGeneral, wxID_ANY, wxT("Element:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblElement->Wrap( -1 ); + fgSizer6->Add( lblElement, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtElement = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtElement->SetMaxLength( 0 ); + fgSizer6->Add( txtElement, 0, wxALL|wxEXPAND, 5 ); + + lblValue = new wxStaticText( tabGeneral, wxID_ANY, wxT("Value:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblValue->Wrap( -1 ); + fgSizer6->Add( lblValue, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtValue = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtValue->SetMaxLength( 0 ); + fgSizer6->Add( txtValue, 0, wxALL|wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkWebsite->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorVendorADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorVendorADT::CloseWindow ), NULL, this ); +} + +frmContactEditorVendorADT::~frmContactEditorVendorADT() +{ + // Disconnect Events + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorVendorADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorVendorADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorXTokenADT::frmContactEditorXTokenADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblTokenName = new wxStaticText( tabGeneral, wxID_ANY, wxT("Token Name:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTokenName->Wrap( -1 ); + fgSizer6->Add( lblTokenName, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtTokenName = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtTokenName->SetMaxLength( 0 ); + fgSizer6->Add( txtTokenName, 0, wxALL, 5 ); + + lblXT = new wxStaticText( tabGeneral, wxID_ANY, wxT("Value:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblXT->Wrap( -1 ); + fgSizer6->Add( lblXT, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtValue = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtValue->SetMaxLength( 0 ); + fgSizer6->Add( txtValue, 0, wxALL|wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkWebsite->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorXTokenADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorXTokenADT::CloseWindow ), NULL, this ); +} + +frmContactEditorXTokenADT::~frmContactEditorXTokenADT() +{ + // Disconnect Events + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorXTokenADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorXTokenADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorKeyADT::frmContactEditorKeyADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblKeyType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Key Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblKeyType->Wrap( -1 ); + fgSizer6->Add( lblKeyType, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxArrayString cmbKeyMainTypeChoices; + cmbKeyMainType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbKeyMainTypeChoices, 0 ); + cmbKeyMainType->SetSelection( 0 ); + fgSizer6->Add( cmbKeyMainType, 0, wxALL, 5 ); + + lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblType->Wrap( -1 ); + fgSizer6->Add( lblType, 0, wxALL, 5 ); + + wxArrayString cmbTypeChoices; + cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 ); + cmbType->SetSelection( 0 ); + fgSizer6->Add( cmbType, 0, wxALL, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkWebsite->AddPage( tabGeneral, wxT("General"), true ); + tabURL = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer61; + fgSizer61 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer61->AddGrowableCol( 1 ); + fgSizer61->SetFlexibleDirection( wxHORIZONTAL ); + fgSizer61->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblKeyFormat = new wxStaticText( tabURL, wxID_ANY, wxT("Key Format:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblKeyFormat->Wrap( -1 ); + fgSizer61->Add( lblKeyFormat, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + cmbURL = new wxComboBox( tabURL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + fgSizer61->Add( cmbURL, 0, wxALL, 5 ); + + lblAddress = new wxStaticText( tabURL, wxID_ANY, wxT("Address:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAddress->Wrap( -1 ); + fgSizer61->Add( lblAddress, 0, wxALL, 5 ); + + txtAddress = new wxTextCtrl( tabURL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtAddress->SetMaxLength( 0 ); + fgSizer61->Add( txtAddress, 1, wxALL|wxEXPAND, 5 ); + + + fgSizer61->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabURL->SetSizer( fgSizer61 ); + tabURL->Layout(); + fgSizer61->Fit( tabURL ); + nbkWebsite->AddPage( tabURL, wxT("URL"), false ); + tabKey = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer62; + fgSizer62 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer62->AddGrowableCol( 1 ); + fgSizer62->AddGrowableRow( 1 ); + fgSizer62->SetFlexibleDirection( wxBOTH ); + fgSizer62->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblKeyFormatData = new wxStaticText( tabKey, wxID_ANY, wxT("Key Format:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblKeyFormatData->Wrap( -1 ); + fgSizer62->Add( lblKeyFormatData, 0, wxALIGN_CENTER|wxALL, 5 ); + + cmbKeyType = new wxComboBox( tabKey, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + fgSizer62->Add( cmbKeyType, 0, wxALL, 5 ); + + lblKeyData = new wxStaticText( tabKey, wxID_ANY, wxT("Key Data:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblKeyData->Wrap( -1 ); + fgSizer62->Add( lblKeyData, 0, wxALL, 5 ); + + txtKeyData = new wxTextCtrl( tabKey, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); + txtKeyData->SetMaxLength( 0 ); + fgSizer62->Add( txtKeyData, 1, wxALL|wxEXPAND, 5 ); + + + tabKey->SetSizer( fgSizer62 ); + tabKey->Layout(); + fgSizer62->Fit( tabKey ); + nbkWebsite->AddPage( tabKey, wxT("Key"), false ); + + bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + cmbKeyMainType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ProcessKeyType ), NULL, this ); + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::EnablePriority ), NULL, this ); + cmbURL->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ConvertURLType ), NULL, this ); + cmbKeyType->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ConvertKeyType ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::CloseWindow ), NULL, this ); +} + +frmContactEditorKeyADT::~frmContactEditorKeyADT() +{ + // Disconnect Events + cmbKeyMainType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ProcessKeyType ), NULL, this ); + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::EnablePriority ), NULL, this ); + cmbURL->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ConvertURLType ), NULL, this ); + cmbKeyType->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ConvertKeyType ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorEmailADT::frmContactEditorEmailADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkEmail = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkEmail, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblEmailAddress = new wxStaticText( tabGeneral, wxID_ANY, wxT("E-mail Address:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblEmailAddress->Wrap( -1 ); + fgSizer6->Add( lblEmailAddress, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtEmail = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtEmail->SetMaxLength( 0 ); + fgSizer6->Add( txtEmail, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkEmail->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkEmail, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::ProcessData ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::CloseWindow ), NULL, this ); +} + +frmContactEditorEmailADT::~frmContactEditorEmailADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::ProcessData ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorIMADT::frmContactEditorIMADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkIM = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkIM, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblIMType = new wxStaticText( tabGeneral, wxID_ANY, wxT("IM Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblIMType->Wrap( -1 ); + fgSizer6->Add( lblIMType, 0, wxALL, 5 ); + + cmbIMType = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_DROPDOWN ); + fgSizer6->Add( cmbIMType, 0, wxALL, 5 ); + + lblUsername = new wxStaticText( tabGeneral, wxID_ANY, wxT("Username/E-mail address:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblUsername->Wrap( 0 ); + fgSizer6->Add( lblUsername, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtUsername = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtUsername->SetMaxLength( 0 ); + fgSizer6->Add( txtUsername, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkIM->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkIM, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::CloseWindow ), NULL, this ); +} + +frmContactEditorIMADT::~frmContactEditorIMADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorCategoryADT::frmContactEditorCategoryADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkIM = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkIM, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblCategory = new wxStaticText( tabGeneral, wxID_ANY, wxT("Category Name:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblCategory->Wrap( 0 ); + fgSizer6->Add( lblCategory, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtCategory = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtCategory->SetMaxLength( 0 ); + fgSizer6->Add( txtCategory, 0, wxALL|wxEXPAND, 5 ); + + lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblType->Wrap( -1 ); + fgSizer6->Add( lblType, 0, wxALL, 5 ); + + wxArrayString cmbTypeChoices; + cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 ); + cmbType->SetSelection( 0 ); + fgSizer6->Add( cmbType, 0, wxALL, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkIM->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkIM, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::CloseWindow ), NULL, this ); +} + +frmContactEditorCategoryADT::~frmContactEditorCategoryADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorTelephoneADT::frmContactEditorTelephoneADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkAddress = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblTelephone = new wxStaticText( tabGeneral, wxID_ANY, wxT("Telephone:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTelephone->Wrap( -1 ); + fgSizer6->Add( lblTelephone, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtTelephone = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtTelephone->SetMaxLength( 0 ); + fgSizer6->Add( txtTelephone, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 0, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + lblTelephoneType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTelephoneType->Wrap( 0 ); + fgSizer6->Add( lblTelephoneType, 0, wxALIGN_TOP|wxALL, 5 ); + + wxGridSizer* gSizer5; + gSizer5 = new wxGridSizer( 2, 2, 0, 0 ); + + chkVoice = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Voice"), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer5->Add( chkVoice, 0, wxALL, 2 ); + + chkText = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Text"), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer5->Add( chkText, 0, wxALL, 2 ); + + chkFax = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Fax"), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer5->Add( chkFax, 0, wxALL, 2 ); + + chkMobile = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Mobile"), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer5->Add( chkMobile, 0, wxALL, 2 ); + + chkVideo = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Video"), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer5->Add( chkVideo, 0, wxALL, 2 ); + + chkTextphone = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Textphone"), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer5->Add( chkTextphone, 0, wxALL, 2 ); + + chkPager = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Pager"), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer5->Add( chkPager, 0, wxALL, 2 ); + + + fgSizer6->Add( gSizer5, 1, 0, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkAddress->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkAddress, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::CloseWindow ), NULL, this ); +} + +frmContactEditorTelephoneADT::~frmContactEditorTelephoneADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorLanguagesADT::frmContactEditorLanguagesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkLanguages = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkLanguages, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblLanguage = new wxStaticText( tabGeneral, wxID_ANY, wxT("Language:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLanguage->Wrap( -1 ); + fgSizer6->Add( lblLanguage, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtLanguage = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtLanguage->SetMaxLength( 0 ); + fgSizer6->Add( txtLanguage, 0, wxALL|wxEXPAND, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkLanguages->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkLanguages, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::CloseWindow ), NULL, this ); +} + +frmContactEditorLanguagesADT::~frmContactEditorLanguagesADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::CloseWindow ), NULL, this ); + +} + +frmContactEditorTimezonesADT::frmContactEditorTimezonesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer251; + bSizer251 = new wxBoxSizer( wxVERTICAL ); + + nbkTimezone = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabGeneral = new wxPanel( nbkTimezone, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer6; + fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer6->AddGrowableCol( 1 ); + fgSizer6->SetFlexibleDirection( wxVERTICAL ); + fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblTimezone = new wxStaticText( tabGeneral, wxID_ANY, wxT("Timezone:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblTimezone->Wrap( -1 ); + fgSizer6->Add( lblTimezone, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + cmbTimezone = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + fgSizer6->Add( cmbTimezone, 0, wxALL, 5 ); + + lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPriority->Wrap( -1 ); + fgSizer6->Add( lblPriority, 0, wxALL, 5 ); + + wxBoxSizer* bSizer260; + bSizer260 = new wxBoxSizer( wxHORIZONTAL ); + + chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer260->Add( chkUsePref, 0, wxALL, 5 ); + + wxBoxSizer* bSizer254; + bSizer254 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bSizer256; + bSizer256 = new wxBoxSizer( wxHORIZONTAL ); + + sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS ); + bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 ); + + + bSizer254->Add( bSizer256, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer255; + bSizer255 = new wxBoxSizer( wxHORIZONTAL ); + + lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 ); + lblHigh->Wrap( -1 ); + bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 ); + + + bSizer255->Add( 0, 0, 1, wxEXPAND, 5 ); + + lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 ); + lblLow->Wrap( -1 ); + bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizer254->Add( bSizer255, 1, wxEXPAND, 0 ); + + + bSizer260->Add( bSizer254, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 ); + + + fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 ); + + + tabGeneral->SetSizer( fgSizer6 ); + tabGeneral->Layout(); + fgSizer6->Fit( tabGeneral ); + nbkTimezone->AddPage( tabGeneral, wxT("General"), false ); + + bSizer251->Add( nbkTimezone, 1, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer252; + bSizer252 = new wxBoxSizer( wxHORIZONTAL ); + + btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnAction, 0, wxALL, 5 ); + + btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer252->Add( btnClose, 0, wxALL, 5 ); + + + bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer251 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::EnablePriority ), NULL, this ); + btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::ProcessAction ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::CloseWindow ), NULL, this ); +} + +frmContactEditorTimezonesADT::~frmContactEditorTimezonesADT() +{ + // Disconnect Events + chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::EnablePriority ), NULL, this ); + btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::ProcessAction ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::CloseWindow ), NULL, this ); + +} + +XABSearchPanelADT::XABSearchPanelADT( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style ) +{ + this->SetMinSize( wxSize( -1,40 ) ); + this->SetMaxSize( wxSize( -1,40 ) ); + + wxFlexGridSizer* fgSizer40; + fgSizer40 = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizer40->AddGrowableCol( 1 ); + fgSizer40->SetFlexibleDirection( wxBOTH ); + fgSizer40->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + wxArrayString choOptionChoices; + choOption = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, choOptionChoices, 0 ); + choOption->SetSelection( 0 ); + fgSizer40->Add( choOption, 0, wxALIGN_TOP|wxALL, 5 ); + + szrSSet = new wxBoxSizer( wxHORIZONTAL ); + + chkActive = new wxCheckBox( this, wxID_ANY, wxT("Enable"), wxDefaultPosition, wxDefaultSize, 0 ); + szrSSet->Add( chkActive, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtSearch = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtSearch->SetMaxLength( 0 ); + szrSSet->Add( txtSearch, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + fgSizer40->Add( szrSSet, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer376; + bSizer376 = new wxBoxSizer( wxHORIZONTAL ); + + btnAdd = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 28,28 ), wxBU_AUTODRAW ); + btnAdd->SetMinSize( wxSize( 28,28 ) ); + btnAdd->SetMaxSize( wxSize( 28,28 ) ); + + bSizer376->Add( btnAdd, 0, wxALL, 5 ); + + btnDelete = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 28,28 ), wxBU_AUTODRAW ); + btnDelete->SetMinSize( wxSize( 28,28 ) ); + btnDelete->SetMaxSize( wxSize( 28,28 ) ); + + bSizer376->Add( btnDelete, 0, wxALL, 5 ); + + + fgSizer40->Add( bSizer376, 0, 0, 5 ); + + + this->SetSizer( fgSizer40 ); + this->Layout(); + + // Connect Events + choOption->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( XABSearchPanelADT::UpdateOptions ), NULL, this ); + btnAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( XABSearchPanelADT::AddSearchWidget ), NULL, this ); + btnDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( XABSearchPanelADT::RemoveSearchWidget ), NULL, this ); +} + +XABSearchPanelADT::~XABSearchPanelADT() +{ + // Disconnect Events + choOption->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( XABSearchPanelADT::UpdateOptions ), NULL, this ); + btnAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( XABSearchPanelADT::AddSearchWidget ), NULL, this ); + btnDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( XABSearchPanelADT::RemoveSearchWidget ), NULL, this ); + +} + +frmSearchAccountsADT::frmSearchAccountsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer376; + bSizer376 = new wxBoxSizer( wxVERTICAL ); + + wxArrayString chlAccountsChoices; + chlAccounts = new wxCheckListBox( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, chlAccountsChoices, wxLB_ALWAYS_SB|wxLB_SORT ); + bSizer376->Add( chlAccounts, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer377; + bSizer377 = new wxBoxSizer( wxHORIZONTAL ); + + + bSizer377->Add( 0, 0, 1, wxEXPAND, 5 ); + + btnSelect = new wxButton( this, wxID_ANY, wxT("Select"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer377->Add( btnSelect, 0, wxALL, 5 ); + + btnCancel = new wxButton( this, wxID_ANY, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer377->Add( btnCancel, 0, wxALL, 5 ); + + + bSizer377->Add( 0, 0, 1, wxEXPAND, 5 ); + + + bSizer376->Add( bSizer377, 0, wxEXPAND, 5 ); + + + this->SetSizer( bSizer376 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnSelect->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchAccountsADT::UpdateSelectedAccounts ), NULL, this ); + btnCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchAccountsADT::CloseWindow ), NULL, this ); +} + +frmSearchAccountsADT::~frmSearchAccountsADT() +{ + // Disconnect Events + btnSelect->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchAccountsADT::UpdateSelectedAccounts ), NULL, this ); + btnCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchAccountsADT::CloseWindow ), NULL, this ); + +} + +frmEditAccountADT::frmEditAccountADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer384; + bSizer384 = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* szrTabs; + szrTabs = new wxBoxSizer( wxVERTICAL ); + + tabAccount = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabProperties = new wxPanel( tabAccount, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer43; + fgSizer43 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer43->AddGrowableCol( 1 ); + fgSizer43->SetFlexibleDirection( wxBOTH ); + fgSizer43->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_NONE ); + + lblAccName = new wxStaticText( tabProperties, wxID_ANY, wxT("Account Name:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAccName->Wrap( -1 ); + fgSizer43->Add( lblAccName, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtAccountName = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtAccountName->SetMaxLength( 0 ); + fgSizer43->Add( txtAccountName, 1, wxALL|wxEXPAND, 5 ); + + lblAccAdr = new wxStaticText( tabProperties, wxID_ANY, wxT("Address:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAccAdr->Wrap( -1 ); + fgSizer43->Add( lblAccAdr, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtAddress = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtAddress->SetMaxLength( 0 ); + fgSizer43->Add( txtAddress, 0, wxALL|wxEXPAND, 5 ); + + m_staticText193 = new wxStaticText( tabProperties, wxID_ANY, wxT("Port:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText193->Wrap( -1 ); + fgSizer43->Add( m_staticText193, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtPort = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtPort->SetMaxLength( 5 ); + fgSizer43->Add( txtPort, 0, wxALL, 5 ); + + lblPort = new wxStaticText( tabProperties, wxID_ANY, wxT("Username:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPort->Wrap( -1 ); + fgSizer43->Add( lblPort, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtUsername = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtUsername->SetMaxLength( 0 ); + fgSizer43->Add( txtUsername, 0, wxALL|wxEXPAND, 5 ); + + lblPassword = new wxStaticText( tabProperties, wxID_ANY, wxT("Password:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPassword->Wrap( -1 ); + fgSizer43->Add( lblPassword, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtPassword = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtPassword->SetMaxLength( 0 ); + fgSizer43->Add( txtPassword, 0, wxALL|wxEXPAND, 5 ); + + lblPrefix = new wxStaticText( tabProperties, wxID_ANY, wxT("Prefix:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblPrefix->Wrap( -1 ); + fgSizer43->Add( lblPrefix, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + wxBoxSizer* bSizer391; + bSizer391 = new wxBoxSizer( wxHORIZONTAL ); + + txtPrefix = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtPrefix->SetMaxLength( 0 ); + bSizer391->Add( txtPrefix, 1, wxALL|wxEXPAND, 5 ); + + btnDetect = new wxButton( tabProperties, wxID_ANY, wxT("Detect"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT ); + bSizer391->Add( btnDetect, 0, wxALIGN_CENTER_VERTICAL, 0 ); + + + fgSizer43->Add( bSizer391, 1, wxEXPAND|wxRIGHT, 5 ); + + txtSSL = new wxStaticText( tabProperties, wxID_ANY, wxT("SSL:"), wxDefaultPosition, wxDefaultSize, 0 ); + txtSSL->Wrap( -1 ); + fgSizer43->Add( txtSSL, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + chkSSL = new wxCheckBox( tabProperties, wxID_ANY, wxT("Use SSL"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer43->Add( chkSSL, 0, wxALL, 5 ); + + + tabProperties->SetSizer( fgSizer43 ); + tabProperties->Layout(); + fgSizer43->Fit( tabProperties ); + tabAccount->AddPage( tabProperties, wxT("General"), true ); + tabRefresh = new wxPanel( tabAccount, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer431; + fgSizer431 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer431->AddGrowableCol( 1 ); + fgSizer431->SetFlexibleDirection( wxBOTH ); + fgSizer431->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_NONE ); + + lblRefresh = new wxStaticText( tabRefresh, wxID_ANY, wxT("Refresh Time:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblRefresh->Wrap( -1 ); + fgSizer431->Add( lblRefresh, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + txtRefresh = new wxTextCtrl( tabRefresh, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + txtRefresh->SetMaxLength( 5 ); + fgSizer431->Add( txtRefresh, 1, wxALL, 5 ); + + + tabRefresh->SetSizer( fgSizer431 ); + tabRefresh->Layout(); + fgSizer431->Fit( tabRefresh ); + tabAccount->AddPage( tabRefresh, wxT("Refresh"), false ); + + szrTabs->Add( tabAccount, 1, wxEXPAND | wxALL, 5 ); + + + bSizer384->Add( szrTabs, 1, wxEXPAND, 0 ); + + wxBoxSizer* szrButtons; + szrButtons = new wxBoxSizer( wxHORIZONTAL ); + + + szrButtons->Add( 1, 0, 1, wxEXPAND, 0 ); + + btnSave = new wxButton( this, wxID_ANY, wxT("Save"), wxDefaultPosition, wxDefaultSize, 0 ); + btnSave->SetDefault(); + szrButtons->Add( btnSave, 0, wxALIGN_RIGHT, 0 ); + + + szrButtons->Add( 5, 0, 0, 0, 0 ); + + btnCancel = new wxButton( this, wxID_ANY, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + szrButtons->Add( btnCancel, 0, wxALIGN_RIGHT, 0 ); + + + szrButtons->Add( 5, 0, 0, wxEXPAND, 0 ); + + + bSizer384->Add( szrButtons, 0, wxBOTTOM|wxEXPAND, 5 ); + + + this->SetSizer( bSizer384 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnDetect->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::DetectAddressBook ), NULL, this ); + btnSave->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::UpdateSettings ), NULL, this ); + btnCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::CloseWindow ), NULL, this ); +} + +frmEditAccountADT::~frmEditAccountADT() +{ + // Disconnect Events + btnDetect->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::DetectAddressBook ), NULL, this ); + btnSave->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::UpdateSettings ), NULL, this ); + btnCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::CloseWindow ), NULL, this ); + +} + +frmSSLCertificateADT::frmSSLCertificateADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer384; + bSizer384 = new wxBoxSizer( wxVERTICAL ); + + m_notebook28 = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + tabSummary = new wxPanel( m_notebook28, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer386; + bSizer386 = new wxBoxSizer( wxVERTICAL ); + + pnlTop = new wxPanel( tabSummary, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + pnlTop->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNHIGHLIGHT ) ); + + wxBoxSizer* bSizer389; + bSizer389 = new wxBoxSizer( wxVERTICAL ); + + lblCertName = new wxStaticText( pnlTop, wxID_ANY, wxT("Certificate Name"), wxDefaultPosition, wxDefaultSize, 0 ); + lblCertName->Wrap( -1 ); + lblCertName->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) ); + + bSizer389->Add( lblCertName, 0, wxALL, 5 ); + + lblValidityStatus = new wxStaticText( pnlTop, wxID_ANY, wxT("Validity Status"), wxDefaultPosition, wxDefaultSize, 0 ); + lblValidityStatus->Wrap( -1 ); + bSizer389->Add( lblValidityStatus, 0, wxALL, 5 ); + + + pnlTop->SetSizer( bSizer389 ); + pnlTop->Layout(); + bSizer389->Fit( pnlTop ); + bSizer386->Add( pnlTop, 0, wxEXPAND | wxALL, 5 ); + + wxBoxSizer* bSizer392; + bSizer392 = new wxBoxSizer( wxVERTICAL ); + + m_panel54 = new wxPanel( tabSummary, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxFlexGridSizer* fgSizer44; + fgSizer44 = new wxFlexGridSizer( 0, 2, 0, 0 ); + fgSizer44->AddGrowableCol( 1 ); + fgSizer44->SetFlexibleDirection( wxHORIZONTAL ); + fgSizer44->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + lblIssuedTo = new wxStaticText( m_panel54, wxID_ANY, wxT("Issued To:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblIssuedTo->Wrap( -1 ); + fgSizer44->Add( lblIssuedTo, 0, wxALL, 5 ); + + lblIssuedToData = new wxStaticText( m_panel54, wxID_ANY, wxT("IssuedTo"), wxDefaultPosition, wxDefaultSize, 0 ); + lblIssuedToData->Wrap( -1 ); + fgSizer44->Add( lblIssuedToData, 1, wxALL|wxEXPAND, 5 ); + + lblValidFrom = new wxStaticText( m_panel54, wxID_ANY, wxT("Valid From:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblValidFrom->Wrap( -1 ); + fgSizer44->Add( lblValidFrom, 0, wxALL, 5 ); + + lblValidFromData = new wxStaticText( m_panel54, wxID_ANY, wxT("ValidDate"), wxDefaultPosition, wxDefaultSize, 0 ); + lblValidFromData->Wrap( -1 ); + fgSizer44->Add( lblValidFromData, 1, wxALL|wxEXPAND, 5 ); + + lblValidUntil = new wxStaticText( m_panel54, wxID_ANY, wxT("Valid Until:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblValidUntil->Wrap( -1 ); + fgSizer44->Add( lblValidUntil, 0, wxALL, 5 ); + + lblValidUntilData = new wxStaticText( m_panel54, wxID_ANY, wxT("ValidUntil"), wxDefaultPosition, wxDefaultSize, 0 ); + lblValidUntilData->Wrap( -1 ); + fgSizer44->Add( lblValidUntilData, 1, wxALL|wxEXPAND, 5 ); + + + m_panel54->SetSizer( fgSizer44 ); + m_panel54->Layout(); + fgSizer44->Fit( m_panel54 ); + bSizer392->Add( m_panel54, 1, wxEXPAND | wxALL, 5 ); + + + bSizer386->Add( bSizer392, 1, wxEXPAND, 5 ); + + + tabSummary->SetSizer( bSizer386 ); + tabSummary->Layout(); + bSizer386->Fit( tabSummary ); + m_notebook28->AddPage( tabSummary, wxT("Summary"), false ); + tabDetail = new wxPanel( m_notebook28, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer3891; + bSizer3891 = new wxBoxSizer( wxVERTICAL ); + + lstValues = new wxListCtrl( tabDetail, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER ); + bSizer3891->Add( lstValues, 1, wxALL|wxEXPAND, 5 ); + + txtValueData = new wxTextCtrl( tabDetail, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CHARWRAP|wxTE_MULTILINE|wxTE_READONLY ); + txtValueData->SetMaxLength( 0 ); + txtValueData->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) ); + + bSizer3891->Add( txtValueData, 1, wxALL|wxEXPAND, 5 ); + + + tabDetail->SetSizer( bSizer3891 ); + tabDetail->Layout(); + bSizer3891->Fit( tabDetail ); + m_notebook28->AddPage( tabDetail, wxT("Detail"), false ); + tabHierarchy = new wxPanel( m_notebook28, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer390; + bSizer390 = new wxBoxSizer( wxVERTICAL ); + + treHierarchy = new wxTreeCtrl( tabHierarchy, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_DEFAULT_STYLE|wxSUNKEN_BORDER ); + bSizer390->Add( treHierarchy, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + + m_panel57 = new wxPanel( tabHierarchy, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer393; + bSizer393 = new wxBoxSizer( wxVERTICAL ); + + btnViewCert = new wxButton( m_panel57, wxID_ANY, wxT("View Certificate"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer393->Add( btnViewCert, 0, wxALIGN_RIGHT|wxALL, 0 ); + + + m_panel57->SetSizer( bSizer393 ); + m_panel57->Layout(); + bSizer393->Fit( m_panel57 ); + bSizer390->Add( m_panel57, 0, wxEXPAND | wxALL, 5 ); + + + tabHierarchy->SetSizer( bSizer390 ); + tabHierarchy->Layout(); + bSizer390->Fit( tabHierarchy ); + m_notebook28->AddPage( tabHierarchy, wxT("Hierarchy"), true ); + + bSizer384->Add( m_notebook28, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + + pnlButtons = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizer385; + bSizer385 = new wxBoxSizer( wxVERTICAL ); + + btnClose = new wxButton( pnlButtons, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 ); + btnClose->SetDefault(); + bSizer385->Add( btnClose, 0, wxALIGN_RIGHT, 5 ); + + + pnlButtons->SetSizer( bSizer385 ); + pnlButtons->Layout(); + bSizer385->Fit( pnlButtons ); + bSizer384->Add( pnlButtons, 0, wxEXPAND | wxALL, 5 ); + + + this->SetSizer( bSizer384 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + lstValues->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmSSLCertificateADT::LoadValueData ), NULL, this ); + treHierarchy->Connect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( frmSSLCertificateADT::CheckCertificate ), NULL, this ); + btnViewCert->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSSLCertificateADT::ViewCertificate ), NULL, this ); + btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSSLCertificateADT::CloseWindow ), NULL, this ); +} + +frmSSLCertificateADT::~frmSSLCertificateADT() +{ + // Disconnect Events + lstValues->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmSSLCertificateADT::LoadValueData ), NULL, this ); + treHierarchy->Disconnect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( frmSSLCertificateADT::CheckCertificate ), NULL, this ); + btnViewCert->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSSLCertificateADT::ViewCertificate ), NULL, this ); + btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSSLCertificateADT::CloseWindow ), NULL, this ); + +} + +frmInvalidSSLCertificateADT::frmInvalidSSLCertificateADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer387; + bSizer387 = new wxBoxSizer( wxVERTICAL ); + + lblSSLText = new wxStaticText( this, wxID_ANY, wxT("Text"), wxDefaultPosition, wxDefaultSize, 0 ); + lblSSLText->Wrap( -1 ); + bSizer387->Add( lblSSLText, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer388; + bSizer388 = new wxBoxSizer( wxHORIZONTAL ); + + btnAccept = new wxButton( this, wxID_ANY, wxT("Accept"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer388->Add( btnAccept, 0, wxALL, 5 ); + + btnReject = new wxButton( this, wxID_ANY, wxT("Reject"), wxDefaultPosition, wxDefaultSize, 0 ); + btnReject->SetDefault(); + bSizer388->Add( btnReject, 0, wxALL, 5 ); + + btnViewCert = new wxButton( this, wxID_ANY, wxT("View Certificates..."), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer388->Add( btnViewCert, 0, wxALL, 5 ); + + + bSizer387->Add( bSizer388, 0, wxALIGN_CENTER_HORIZONTAL, 0 ); + + + this->SetSizer( bSizer387 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnAccept->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::Accept ), NULL, this ); + btnReject->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::Reject ), NULL, this ); + btnViewCert->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::ViewCertificates ), NULL, this ); +} + +frmInvalidSSLCertificateADT::~frmInvalidSSLCertificateADT() +{ + // Disconnect Events + btnAccept->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::Accept ), NULL, this ); + btnReject->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::Reject ), NULL, this ); + btnViewCert->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::ViewCertificates ), NULL, this ); + +} + +frmImportContactsADT::frmImportContactsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer393; + bSizer393 = new wxBoxSizer( wxVERTICAL ); + + lblImportText = new wxStaticText( this, wxID_ANY, wxT("Select the contacts you want to import and the account to import into. Click on Import to finish."), wxDefaultPosition, wxDefaultSize, 0 ); + lblImportText->Wrap( -1 ); + bSizer393->Add( lblImportText, 0, wxALL|wxEXPAND, 5 ); + + wxArrayString lstContactsChoices; + lstContacts = new wxCheckListBox( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, lstContactsChoices, wxLB_ALWAYS_SB|wxLB_SORT ); + bSizer393->Add( lstContacts, 1, wxALL|wxEXPAND, 5 ); + + szrAccount = new wxBoxSizer( wxHORIZONTAL ); + + lblAccountText = new wxStaticText( this, wxID_ANY, wxT("Account:"), wxDefaultPosition, wxDefaultSize, 0 ); + lblAccountText->Wrap( -1 ); + szrAccount->Add( lblAccountText, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + bSizer393->Add( szrAccount, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizer394; + bSizer394 = new wxBoxSizer( wxHORIZONTAL ); + + btnImport = new wxButton( this, wxID_ANY, wxT("Import"), wxDefaultPosition, wxDefaultSize, 0 ); + btnImport->SetDefault(); + bSizer394->Add( btnImport, 0, wxALL, 5 ); + + btnCancel = new wxButton( this, wxID_ANY, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer394->Add( btnCancel, 0, wxALL, 5 ); + + + bSizer393->Add( bSizer394, 0, wxALIGN_RIGHT, 5 ); + + + this->SetSizer( bSizer393 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnImport->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportContactsADT::ImportContacts ), NULL, this ); + btnCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportContactsADT::CloseWindow ), NULL, this ); +} + +frmImportContactsADT::~frmImportContactsADT() +{ + // Disconnect Events + btnImport->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportContactsADT::ImportContacts ), NULL, this ); + btnCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportContactsADT::CloseWindow ), NULL, this ); + +} + +frmImportResultsADT::frmImportResultsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizer396; + bSizer396 = new wxBoxSizer( wxVERTICAL ); + + lblText = new wxStaticText( this, wxID_ANY, wxT("x contacts imported. x contacts had errors and could not be imported."), wxDefaultPosition, wxDefaultSize, 0 ); + lblText->Wrap( -1 ); + bSizer396->Add( lblText, 0, wxALL, 5 ); + + txtResults = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY ); + txtResults->SetMaxLength( 0 ); + bSizer396->Add( txtResults, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bSizer397; + bSizer397 = new wxBoxSizer( wxHORIZONTAL ); + + btnCopyClipboard = new wxButton( this, wxID_ANY, wxT("Copy to Clipboard"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer397->Add( btnCopyClipboard, 0, 0, 5 ); + + btnFinish = new wxButton( this, wxID_ANY, wxT("Finish"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer397->Add( btnFinish, 0, wxALIGN_RIGHT|wxBOTTOM|wxLEFT, 5 ); + + + bSizer396->Add( bSizer397, 0, wxALIGN_RIGHT|wxRIGHT, 5 ); + + + this->SetSizer( bSizer396 ); + this->Layout(); + + this->Centre( wxBOTH ); + + // Connect Events + btnCopyClipboard->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportResultsADT::CopyClipboard ), NULL, this ); + btnFinish->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportResultsADT::CloseWindow ), NULL, this ); +} + +frmImportResultsADT::~frmImportResultsADT() +{ + // Disconnect Events + btnCopyClipboard->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportResultsADT::CopyClipboard ), NULL, this ); + btnFinish->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportResultsADT::CloseWindow ), NULL, this ); + +} diff --git a/source/AppXestiaAddrBk.h b/source/AppXestiaAddrBk.h new file mode 100644 index 0000000..5de2092 --- /dev/null +++ b/source/AppXestiaAddrBk.h @@ -0,0 +1,1940 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Feb 26 2014) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#ifndef __APPXESTIAADDRBK_H__ +#define __APPXESTIAADDRBK_H__ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_MANAGE_NEWAB 1000 +#define ID_MANAGE_IMPORT 1001 +#define ID_MANAGE_EXPORT 1002 +#define ID_MANAGE_PREFERENCES 1003 +#define ID_MANAGE_EXIT 1004 +#define ID_CONTACT_EDIT 1005 +#define ID_CONTACT_DELETE 1006 +#define ID_SET_CONTACT_AS_MYSELF 1007 +#define ID_VIEW_FNLN 1008 +#define ID_VIEW_LNFN 1009 +#define ID_VIEW_NICK 1010 +#define ID_VIEW_ASC 1011 +#define ID_VIEW_DESC 1012 +#define ID_VIEW_STATUSBAR 1013 +#define ID_MANAGE_CUT 1014 +#define ID_MANAGE_COPY 1015 +#define ID_MANAGE_PASTE 1016 +#define ID_HELP_SHOW 1017 +#define ID_MANAGE_UPDATE 1018 +#define ID_HELP_ABOUT 1019 +#define ID_CONTACT_CLOSE 1020 +#define CONTACT_SAVE 1021 +#define CONTACT_SAVECLOSE 1022 +#define CONTACT_CLOSE 1023 + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmMainADT +/////////////////////////////////////////////////////////////////////////////// +class frmMainADT : public wxFrame +{ + private: + + protected: + wxMenuBar* mnuMain; + wxMenu* mnuManage; + wxMenu* mnuContact; + wxMenuItem* setContactAsMyself; + wxMenuItem* m_separator5; + wxMenu* mnuView; + wxMenu* mnuShowContactsAs; + wxMenu* mnuViewSortBy; + wxMenu* mnuViewShow; + wxMenu* mnuEdit; + wxMenu* mnuWindow; + wxMenu* mnuHelp; + wxBoxSizer* szrMain; + wxStaticBitmap* bmpIcon; + wxComboCtrl* AccCtrl; + wxSplitterWindow* m_splitter13; + wxPanel* m_panel19; + wxFlexGridSizer* szrContactList; + wxFlexGridSizer* szrAccList; + wxListCtrl* lstContacts; + wxPanel* m_panel20; + wxHtmlWindow* htmContactData; + wxStatusBar* stbBottom; + + // Virtual event handlers, overide them in your derived class + virtual void OpenNewABDialog( wxCommandEvent& event ) { event.Skip(); } + virtual void RefreshAddressBook( wxCommandEvent& event ) { event.Skip(); } + virtual void OpenImportDialog( wxCommandEvent& event ) { event.Skip(); } + virtual void OpenExportDialog( wxCommandEvent& event ) { event.Skip(); } + virtual void OpenPreferences( wxCommandEvent& event ) { event.Skip(); } + virtual void QuitApp( wxCommandEvent& event ) { event.Skip(); } + virtual void ShowContactEditorNew( wxCommandEvent& event ) { event.Skip(); } + virtual void ShowContactEditorEdit( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteContact( wxCommandEvent& event ) { event.Skip(); } + virtual void SetContactAsSelf( wxCommandEvent& event ) { event.Skip(); } + virtual void OpenFindContactsWindow( wxCommandEvent& event ) { event.Skip(); } + virtual void SortFNLN( wxCommandEvent& event ) { event.Skip(); } + virtual void SortLNFN( wxCommandEvent& event ) { event.Skip(); } + virtual void SortNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void SortDisplayAs( wxCommandEvent& event ) { event.Skip(); } + virtual void SortAscending( wxCommandEvent& event ) { event.Skip(); } + virtual void SortDescending( wxCommandEvent& event ) { event.Skip(); } + virtual void ToggleStatusBar( wxCommandEvent& event ) { event.Skip(); } + virtual void ShowActivityWindow( wxCommandEvent& event ) { event.Skip(); } + virtual void CutAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CopyAction( wxCommandEvent& event ) { event.Skip(); } + virtual void PasteAction( wxCommandEvent& event ) { event.Skip(); } + virtual void ShowHelp( wxCommandEvent& event ) { event.Skip(); } + virtual void CheckUpdates( wxCommandEvent& event ) { event.Skip(); } + virtual void ShowAboutWindow( wxCommandEvent& event ) { event.Skip(); } + virtual void OpenContactInfo( wxListEvent& event ) { event.Skip(); } + virtual void ShowContactInfo( wxListEvent& event ) { event.Skip(); } + virtual void ShowContactSubmenu( wxMouseEvent& event ) { event.Skip(); } + virtual void UpdateSBIconPlacement( wxSizeEvent& event ) { event.Skip(); } + + + public: + + frmMainADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Xestia Address Book"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxDEFAULT_FRAME_STYLE ); + + ~frmMainADT(); + + void m_splitter13OnIdle( wxIdleEvent& ) + { + m_splitter13->SetSashPosition( 184 ); + m_splitter13->Disconnect( wxEVT_IDLE, wxIdleEventHandler( frmMainADT::m_splitter13OnIdle ), NULL, this ); + } + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmUpdateADT +/////////////////////////////////////////////////////////////////////////////// +class frmUpdateADT : public wxDialog +{ + private: + + protected: + wxPanel* pnlUpdateData; + wxStaticText* lblRunningText; + wxStaticText* lblRunningVer; + wxStaticText* lblAvailableText; + wxStaticText* lblAvailableVer; + wxStaticText* lblBuildTypeText; + wxStaticText* lblBuildType; + wxStaticText* lblUpdateMessage; + wxStaticLine* statLine; + wxButton* btnVisitGelforn; + wxButton* btnVisitPREMIUM; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void VisitGelforn( wxCommandEvent& event ) { event.Skip(); } + virtual void VisitPREMIUM( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmUpdateADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Check For Updates"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 433,273 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmUpdateADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmSearchADT +/////////////////////////////////////////////////////////////////////////////// +class frmSearchADT : public wxFrame +{ + private: + + protected: + wxStatusBar* stbBottom; + wxSplitterWindow* m_splitter4; + wxPanel* m_panel60; + wxNotebook* nbkSearch; + wxScrolledWindow* tabSearch; + wxFlexGridSizer* szrSearch; + wxScrolledWindow* tabAdvanced; + wxButton* btnSelectAccounts; + wxButton* btnSearch; + wxButton* btnReset; + wxPanel* m_panel61; + wxListCtrl* lstResults; + wxMenuBar* m_menubar5; + wxMenu* mnuContact; + + // Virtual event handlers, overide them in your derived class + virtual void CloseWindow( wxCloseEvent& event ) { event.Skip(); } + virtual void SelectAccounts( wxCommandEvent& event ) { event.Skip(); } + virtual void SearchContacts( wxCommandEvent& event ) { event.Skip(); } + virtual void ResetContacts( wxCommandEvent& event ) { event.Skip(); } + virtual void OpenContact( wxCommandEvent& event ) { event.Skip(); } + virtual void EditContact( wxCommandEvent& event ) { event.Skip(); } + virtual void RevealContact( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmSearchADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Search Contacts"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 517,450 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL ); + + ~frmSearchADT(); + + void m_splitter4OnIdle( wxIdleEvent& ) + { + m_splitter4->SetSashPosition( 178 ); + m_splitter4->Disconnect( wxEVT_IDLE, wxIdleEventHandler( frmSearchADT::m_splitter4OnIdle ), NULL, this ); + } + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmPreferencesADT +/////////////////////////////////////////////////////////////////////////////// +class frmPreferencesADT : public wxDialog +{ + private: + + protected: + wxNotebook* NbtPreferences; + wxPanel* tabGeneral; + wxCheckBox* chkSaveWindowPosition; + wxCheckBox* chkHideLocal; + wxPanel* tabTheme; + wxListCtrl* lstThemes; + wxButton* btnThemeAdd; + wxButton* btnThemeModify; + wxButton* btnThemeDelete; + wxPanel* tabAccounts; + wxListCtrl* lstAccounts; + wxButton* btnAccountAdd; + wxButton* btnAccountModify; + wxButton* btnAccountDelete; + wxButton* btnSave; + wxButton* btnCancel; + + // Virtual event handlers, overide them in your derived class + virtual void LoadPreferences( wxInitDialogEvent& event ) { event.Skip(); } + virtual void DisableABButtons( wxListEvent& event ) { event.Skip(); } + virtual void EnableABButtons( wxListEvent& event ) { event.Skip(); } + virtual void AddABAccount( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyABAccount( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteABAccount( wxCommandEvent& event ) { event.Skip(); } + virtual void SavePreferences( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmPreferencesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Preferences"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 450,400 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmPreferencesADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmAboutADT +/////////////////////////////////////////////////////////////////////////////// +class frmAboutADT : public wxDialog +{ + private: + + protected: + wxStaticBitmap* bmpLogo; + wxStaticText* lblVersion; + wxStaticText* lblCompileTime; + wxStaticText* lblCopyright; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void CloseAboutWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmAboutADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("About Xestia Address Book"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,400 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmAboutADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactADT : public wxFrame +{ + private: + + protected: + wxHtmlWindow* htmContactData; + wxMenuBar* m_menubar2; + wxMenu* contact; + + // Virtual event handlers, overide them in your derived class + virtual void CloseWindow( wxCloseEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 320,240 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL ); + + ~frmContactADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmNewAccountADT +/////////////////////////////////////////////////////////////////////////////// +class frmNewAccountADT : public wxDialog +{ + private: + + protected: + wxBoxSizer* szrNewAccount; + wxPanel* tabType; + wxStaticText* lblEnterText; + wxStaticText* lblType; + wxChoice* cmbServerType; + wxStaticText* lblServerAddress; + wxTextCtrl* txtServerAddress; + wxStaticText* lblServerPort; + wxTextCtrl* txtServerPort; + wxStaticText* lblUsername; + wxTextCtrl* txtUsername; + wxStaticText* lblPassword; + wxTextCtrl* txtPassword; + wxStaticText* lblSSL; + wxCheckBox* chkUseSSL; + wxPanel* tabConn; + wxStaticText* lblConnectionResult; + wxStaticText* lblServerConnected; + wxStaticText* lblServerConnResult; + wxStaticText* lblValidResponse; + wxStaticText* lblServerResponse; + wxStaticText* lblUseSSL; + wxStaticText* lblServerSSLResult; + wxStaticText* lblServerSSLCert; + wxStaticText* lblServerSSLValid; + wxStaticText* lblServerUsernamePassword; + wxStaticText* lblAbleToLoginResult; + wxStaticText* lblIsCalDAV; + wxStaticText* lblCardDAVSupportResult; + wxStaticLine* m_staticline3; + wxStaticText* lblConnectionResultText; + wxPanel* tabFinish; + wxStaticText* lblFinishText; + wxStaticText* lblAccountName; + wxTextCtrl* txtAccountName; + wxButton* btnPrevious; + wxButton* btnNext; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void UpdateRequirements( wxCommandEvent& event ) { event.Skip(); } + virtual void CheckAccountName( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessPrevious( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessNext( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmNewAccountADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("New Account"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 425,330 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmNewAccountADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorADT : public wxFrame +{ + private: + + protected: + wxNotebook* nbkContact; + wxScrolledWindow* tabGeneral; + wxStaticText* lblTitle; + wxTextCtrl* txtTitle; + wxStaticText* lblForename; + wxTextCtrl* txtForename; + wxStaticText* lblSurname; + wxTextCtrl* txtSurname; + wxStaticText* lblOtherNames; + wxTextCtrl* txtOtherNames; + wxStaticText* lblSuffix; + wxTextCtrl* txtSuffix; + wxStaticText* lblDisplayAs; + wxComboBox* cmbDisplayAs; + wxStaticText* lblBirthday; + wxDatePickerCtrl* dapBirthday; + wxTextCtrl* txtBirthday; + wxStaticText* lblAnniversary; + wxDatePickerCtrl* dapAnniversary; + wxTextCtrl* txtAnniversary; + wxStaticText* lblGender; + wxChoice* cmbGender; + wxTextCtrl* txtGenderDescription; + wxStaticText* lblType; + wxChoice* cmbType; + wxStaticText* lblNicknames; + wxListCtrl* lboNicknames; + wxButton* btnAddGeneralNickname; + wxButton* btnModifyGeneralNickname; + wxButton* btnDeleteGeneralNickname; + wxStaticText* lblAddress; + wxListCtrl* lboAddresses; + wxButton* btnAddGeneralAddress; + wxButton* btnModifyGeneralAddress; + wxButton* btnDeleteGeneralAddress; + wxStaticText* lblEmail; + wxListCtrl* lboEmails; + wxButton* btnAddEmailAddress; + wxButton* btnModifyEmailAddress; + wxButton* btnDeleteEmailAddress; + wxStaticText* lblIM; + wxListCtrl* lboIM; + wxButton* btnAddIMAddress; + wxButton* btnModifyIMAddress; + wxButton* btnDeleteIMAddress; + wxStaticText* lblTelephone; + wxListCtrl* lboTelephone; + wxButton* btnAddTelephone; + wxButton* btnModifyTelephone; + wxButton* btnDeleteTelephone; + wxStaticText* lblLanguages; + wxListCtrl* lboLanguages; + wxButton* btnAddLanguage; + wxButton* btnModifyLanguage; + wxButton* btnDeleteLanguage; + wxStaticText* lblTimezone; + wxListCtrl* lboTimezones; + wxButton* btnAddTimezone; + wxButton* btnModifyTimezone; + wxButton* btnDeleteTimezone; + wxStaticText* lblGeopositioning; + wxListCtrl* lboGeoposition; + wxButton* btnAddGeneralGeoposition; + wxButton* btnModifyGeneralGeoposition; + wxButton* btnDeleteGeneralGeoposition; + wxStaticText* lblRelated; + wxListCtrl* lboRelated; + wxButton* btnAddRelated; + wxButton* btnModifyRelated; + wxButton* btnDeleteRelated; + wxStaticText* lblWebsites; + wxListCtrl* lboWebsites; + wxButton* btnAddWebsite; + wxButton* btnModifyWebsite; + wxButton* btnDeleteWebsite; + wxStaticText* lblTitles; + wxListCtrl* lboTitles; + wxButton* btnAddTitle; + wxButton* btnModifyTitle; + wxButton* btnDeleteTitle; + wxStaticText* lblRoles; + wxListCtrl* lboRoles; + wxButton* btnAddRole; + wxButton* btnModifyRole; + wxButton* btnDeleteRole; + wxStaticText* lblOrganisations; + wxListCtrl* lboOrganisations; + wxButton* btnAddOrganisations; + wxButton* btnModifyOrganisations; + wxButton* btnDeleteOrganisations; + wxStaticText* lblNotes; + wxListCtrl* lboNotes; + wxButton* btnAddNote; + wxButton* btnModifyNote; + wxButton* btnDeleteNote; + wxScrolledWindow* tabHome; + wxStaticText* lblHomeNickname; + wxListCtrl* lboHomeNicknames; + wxButton* btnAddHomeNickname; + wxButton* btnModifyHomeNickname; + wxButton* btnDeleteHomeNickname; + wxStaticText* lblHomeAddresses; + wxListCtrl* lboHomeAddresses; + wxButton* btnAddHomeAddress; + wxButton* btnModifyHomeAddress; + wxButton* btnDeleteHomeAddress; + wxStaticText* lblHomeEmail; + wxListCtrl* lboHomeEmails; + wxButton* btnAddHomeEmailAddress; + wxButton* btnModifyHomeEmailAddress; + wxButton* btnDeleteHomeEmailAddress; + wxStaticText* lblHomeIM; + wxListCtrl* lboHomeIM; + wxButton* btnAddHomeIMAddress; + wxButton* btnModifyHomeIMAddress; + wxButton* btnDeleteHomeIMAddress; + wxStaticText* lblHomeTelephone; + wxListCtrl* lboHomeTelephone; + wxButton* btnAddHomeTelephone; + wxButton* btnModifyHomeTelephone; + wxButton* btnDeleteHomeTelephone; + wxStaticText* lblHomeLanguages; + wxListCtrl* lboHomeLanguages; + wxButton* btnAddHomeLanguage; + wxButton* btnModifyHomeLanguage; + wxButton* btnDeleteHomeLanguage; + wxStaticText* lblHomeTimezone; + wxListCtrl* lboHomeTimezones; + wxButton* btnAddHomeTimezone; + wxButton* btnModifyHomeTimezone; + wxButton* btnDeleteHomeTimezone; + wxStaticText* lblHomeGeopositioning; + wxListCtrl* lboHomeGeoposition; + wxButton* btnAddHomeGeoposition; + wxButton* btnModifyHomeGeoposition; + wxButton* btnDeleteHomePosition; + wxStaticText* lblHomeWebsites; + wxListCtrl* lboHomeWebsites; + wxButton* btnAddHomeWebsite; + wxButton* btnHomeModifyWebsite; + wxButton* btnDeleteHomeWebsite; + wxStaticText* lblHomeTitles; + wxListCtrl* lboHomeTitles; + wxButton* btnAddHomeTitle; + wxButton* btnModifyHomeTitle; + wxButton* btnDeleteHomeTitle; + wxStaticText* lblHomeRoles; + wxListCtrl* lboHomeRoles; + wxButton* btnAddHomeRole; + wxButton* btnModifyHomeRole; + wxButton* btnDeleteHomeRole; + wxStaticText* lblHomeOrganisations; + wxListCtrl* lboHomeOrganisations; + wxButton* btnAddHomeOrganisations; + wxButton* btnModifyHomeOrganisations; + wxButton* btnDeleteHomeOrganisations; + wxStaticText* lblHomeNotes; + wxListCtrl* lboHomeNotes; + wxButton* btnAddHomeNote; + wxButton* btnModifyHomeNote; + wxButton* btnDeleteHomeNote; + wxScrolledWindow* tabBusiness; + wxStaticText* lblBusinessNickname; + wxListCtrl* lboBusinessNicknames; + wxButton* btnAddBusinessNickname; + wxButton* btnModifyBusinessNickname; + wxButton* btnDeleteBusinessNickname; + wxStaticText* lblBusinessAddress; + wxListCtrl* lboBusinessAddresses; + wxButton* btnAddBusinessAddress; + wxButton* btnModifyBusinessAddress; + wxButton* btnDeleteBusinessAddress; + wxStaticText* lblBusinessEmail; + wxListCtrl* lboBusinessEmail; + wxButton* btnAddBusinessEmailAddress; + wxButton* btnModifyBusinessEmailAddress; + wxButton* btnDeleteBusinessEmailAddress; + wxStaticText* lblBusinessIM; + wxListCtrl* lboBusinessIM; + wxButton* btnAddBusinessIMAddress; + wxButton* btnModifyBusinessIMAddress; + wxButton* btnDeleteBusinessIMAddress; + wxStaticText* lblBusinessTelephone; + wxListCtrl* lboBusinessTelephone; + wxButton* btnBusinessAddTelephone; + wxButton* btnBusinessModifyTelephone; + wxButton* btnBusinessDeleteTelephone; + wxStaticText* lblBusinessLanguage; + wxListCtrl* lboBusinessLanguages; + wxButton* btnBusinessAddLanguage; + wxButton* btnBusinessModifyLanguage; + wxButton* btnBusinessDeleteLanguage; + wxStaticText* lblBusinessTimezones; + wxListCtrl* lboBusinessTimezones; + wxButton* btnBusinessAddTimezone; + wxButton* btnBusinessModifyTimezone; + wxButton* btnDeleteBusinessTimezone; + wxStaticText* lblBusinessGeopositioning; + wxListCtrl* lboBusinessGeoposition; + wxButton* btnAddBusinessGeoposition; + wxButton* btnModifyBusinessGeoposition; + wxButton* btnDeleteBusinessGeoposition; + wxStaticText* lblBusinessWebsites; + wxListCtrl* lboBusinessWebsites; + wxButton* btnAddBusinessWebsite; + wxButton* btnModifyBusinessWebsite; + wxButton* btnDeleteBusinessWebsite; + wxStaticText* lblBusinessTitles; + wxListCtrl* lboBusinessTitles; + wxButton* btnAddBusinessTitle; + wxButton* btnModifyBusinessTitle; + wxButton* btnDeleteBusinessTitle; + wxStaticText* lblBusinessRoles; + wxListCtrl* lboBusinessRoles; + wxButton* btnAddBusinessRole; + wxButton* btnModifyBusinessRole; + wxButton* btnDeleteBusinessRole; + wxStaticText* lblBusinessOrganisations; + wxListCtrl* lboBusinessOrganisations; + wxButton* btnAddBusinessOrganisations; + wxButton* btnModifyBusinessOrganisations; + wxButton* btnDeleteBusinessOrganisations; + wxStaticText* lblBusinessNotes; + wxListCtrl* lboBusinessNotes; + wxButton* btnBusinessAddNote; + wxButton* btnBusinessModifyNote; + wxButton* btnBusinessDeleteNote; + wxScrolledWindow* tabCategories; + wxListCtrl* lboCategories; + wxButton* btnAddCategory; + wxButton* btnModifyCategory; + wxButton* btnDeleteCategory; + wxScrolledWindow* tabMembers; + wxListCtrl* lboGroups; + wxButton* btnAddGroups; + wxButton* btnModifyGroups; + wxButton* btnDeleteGroups; + wxScrolledWindow* tabPictures; + wxStaticBitmap* imgPicture; + wxListCtrl* lboPictures; + wxButton* btnAddPicture; + wxButton* btnModifyPicture; + wxButton* btnDeletePicture; + wxScrolledWindow* tabLogo; + wxStaticBitmap* imgLogo; + wxListCtrl* lboLogos; + wxButton* btnAddLogo; + wxButton* btnModifyLogo; + wxButton* btnDeleteLogo; + wxScrolledWindow* tabSounds; + wxListCtrl* lboSounds; + wxButton* btnAddSound; + wxButton* btnModifySound; + wxButton* btnDeleteSound; + wxStaticLine* m_staticline1; + wxBitmapButton* btnPlay; + wxBitmapButton* btnStop; + wxScrolledWindow* tabCalendaring; + wxStaticText* lblCalendarAddresses; + wxListCtrl* lboCalendarAddresses; + wxButton* btnAddCalendarAddress; + wxButton* btnModifyCalendarAddress; + wxButton* btnDeleteCalendarAddress; + wxStaticText* lblCalendarRequestAddresses; + wxListCtrl* lboCalendarRequestAddress; + wxButton* btnAddCalendarRequestAddress; + wxButton* btnModifyCalendarRequestAddress; + wxButton* btnDeleteCalendarRequestAddress; + wxStaticText* lblFreeBusyAddresses; + wxListCtrl* lboFreeBusyAddresses; + wxButton* btnAddFreeBusyAddress; + wxButton* btnModifyFreeBusyAddress; + wxButton* btnDeleteFreeBusyAddress; + wxScrolledWindow* tabSecurity; + wxListCtrl* lboKeys; + wxButton* btnAddKey; + wxButton* btnModifyKey; + wxButton* btnDeleteKey; + wxScrolledWindow* tabOther; + wxStaticText* lblVendorNamespace; + wxListCtrl* lboVendorNamespace; + wxButton* btnAddVendorNamespace; + wxButton* btnModifyVendorNamespace; + wxButton* btnDeleteVendorNamespace; + wxStaticText* lblXTokens; + wxListCtrl* lboXToken; + wxButton* btnAddXToken; + wxButton* btnModifyXToken; + wxButton* btnDeleteXToken; + wxMenuBar* m_menubar3; + wxMenu* mnuContact; + wxMenu* mnuEdit; + + // Virtual event handlers, overide them in your derived class + virtual void CloseWindow( wxCloseEvent& event ) { event.Skip(); } + virtual void UpdateDisplayAs( wxCommandEvent& event ) { event.Skip(); } + virtual void UpdateName( wxCommandEvent& event ) { event.Skip(); } + virtual void UpdateMembersTab( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralEmail( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralEmail( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralEmail( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralIM( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralIM( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralIM( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralTelephone( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralTelephone( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralTelephone( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralLanguages( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralLanguages( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralLanguage( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralTimezone( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralTimezone( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralTimezone( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralGeoposition( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralGeoposition( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralGeoposition( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralRelated( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralRelated( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralRelated( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralWebsite( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralWebsite( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralWebsite( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralTitle( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralTitle( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralTitle( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralRole( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralRole( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralRole( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralOrganisation( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralOrganisation( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralOrganisation( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGeneralNote( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGeneralNote( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGeneralNote( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeEmail( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeEmail( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeEmail( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeIM( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeIM( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeIM( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeTelephone( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeTelephone( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeTelephone( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeLanguage( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeLanguage( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeLanguage( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeTimezone( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeTimezone( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeTimezone( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeGeoposition( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeGeoposition( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeGeoposition( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeWebsite( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeWebsite( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeWebsite( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeTitle( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeTitle( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeTitle( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeRole( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeRole( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeRole( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeOrganisation( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeOrganisation( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeOrganisation( wxCommandEvent& event ) { event.Skip(); } + virtual void AddHomeNote( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyHomeNote( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteHomeNote( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessNickname( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessEmail( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessEmail( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessEmail( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessIM( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessIM( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessIM( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessTelephone( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessTelephone( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessTelephone( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessLanguage( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessLanguage( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessLanguage( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessTimezone( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessTimezone( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessTimezone( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessGeoposition( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessGeoposition( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessGeoposition( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessWebsite( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessWebsite( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessWebsite( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessTitle( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessTitle( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessTitle( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessRole( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessRole( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessRole( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessOrganisation( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessOrganisation( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessOrganisation( wxCommandEvent& event ) { event.Skip(); } + virtual void AddBusinessNote( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyBusinessNote( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteBusinessNote( wxCommandEvent& event ) { event.Skip(); } + virtual void AddCategory( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyCategory( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteCategory( wxCommandEvent& event ) { event.Skip(); } + virtual void AddGroup( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyGroup( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteGroup( wxCommandEvent& event ) { event.Skip(); } + virtual void LoadPicture( wxListEvent& event ) { event.Skip(); } + virtual void AddPicture( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyPicture( wxCommandEvent& event ) { event.Skip(); } + virtual void DeletePicture( wxCommandEvent& event ) { event.Skip(); } + virtual void LoadLogo( wxListEvent& event ) { event.Skip(); } + virtual void AddLogo( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyLogo( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteLogo( wxCommandEvent& event ) { event.Skip(); } + virtual void AddSound( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifySound( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteSound( wxCommandEvent& event ) { event.Skip(); } + virtual void PlaySound( wxCommandEvent& event ) { event.Skip(); } + virtual void StopSound( wxCommandEvent& event ) { event.Skip(); } + virtual void AddCalendarAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyCalendarAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteCalendarAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void AddCalendarRequest( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyCalendarRequest( wxCommandEvent& event ) { event.Skip(); } + virtual void AddFreeBusy( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyFreeBusy( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteFreeBusy( wxCommandEvent& event ) { event.Skip(); } + virtual void AddKey( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyKey( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteKey( wxCommandEvent& event ) { event.Skip(); } + virtual void AddVendorNamespace( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyVendorNamespace( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteVendorNamespace( wxCommandEvent& event ) { event.Skip(); } + virtual void AddXToken( wxCommandEvent& event ) { event.Skip(); } + virtual void ModifyXToken( wxCommandEvent& event ) { event.Skip(); } + virtual void DeleteXToken( wxCommandEvent& event ) { event.Skip(); } + virtual void SaveContact( wxCommandEvent& event ) { event.Skip(); } + virtual void SaveCloseContact( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseContact( wxCommandEvent& event ) { event.Skip(); } + virtual void CutText( wxCommandEvent& event ) { event.Skip(); } + virtual void CopyText( wxCommandEvent& event ) { event.Skip(); } + virtual void PasteText( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Contact Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 769,517 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL ); + + ~frmContactEditorADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorAddressADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorAddressADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkAddress; + wxPanel* tabGeneral; + wxStaticText* lblAddress; + wxTextCtrl* txtAddress; + wxStaticText* m_staticText61; + wxTextCtrl* txtTownCity; + wxStaticText* lblCountyState; + wxTextCtrl* txtCounty; + wxStaticText* lblPostCode; + wxTextCtrl* txtPostCode; + wxStaticText* lblCountry; + wxTextCtrl* txtCountry; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxPanel* tabLabel; + wxButton* btnCopyMailing; + wxTextCtrl* txtLabel; + wxPanel* tabOther; + wxStaticText* lblLanguage; + wxComboBox* cmbLanguage; + wxStaticText* lblGeography; + wxTextCtrl* txtGeo; + wxStaticText* lblTimezone; + wxTextCtrl* txtTimezone; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void InitAddressEditor( wxInitDialogEvent& event ) { event.Skip(); } + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void CopyAddress( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorAddressADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Address Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 426,317 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorAddressADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmConflictResolutionADT +/////////////////////////////////////////////////////////////////////////////// +class frmConflictResolutionADT : public wxDialog +{ + private: + + protected: + wxStaticText* lblText; + wxSplitterWindow* m_splitter3; + wxPanel* m_panel44; + wxHtmlWindow* htmClient; + wxPanel* m_panel45; + wxHtmlWindow* htmServer; + wxButton* btnKeepLocal; + wxButton* btnKeepServer; + wxButton* btnDecideLater; + + // Virtual event handlers, overide them in your derived class + virtual void KeepLocalData( wxCommandEvent& event ) { event.Skip(); } + virtual void KeepServerData( wxCommandEvent& event ) { event.Skip(); } + virtual void DecideLater( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmConflictResolutionADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Conflict Resolution"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 536,417 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmConflictResolutionADT(); + + void m_splitter3OnIdle( wxIdleEvent& ) + { + m_splitter3->SetSashPosition( 257 ); + m_splitter3->Disconnect( wxEVT_IDLE, wxIdleEventHandler( frmConflictResolutionADT::m_splitter3OnIdle ), NULL, this ); + } + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmActivityMgrADT +/////////////////////////////////////////////////////////////////////////////// +class frmActivityMgrADT : public wxFrame +{ + private: + + protected: + wxMenuBar* mnuMenuBar; + wxMenu* mnuWindow; + wxPanel* m_panel43; + wxStaticBitmap* bmpActivity; + wxPanel* m_panel46; + wxStaticText* lblDetails; + wxGauge* GauProgress; + wxPanel* m_panel44; + wxListCtrl* lstActivity; + + // Virtual event handlers, overide them in your derived class + virtual void CloseWindow( wxCloseEvent& event ) { event.Skip(); } + virtual void StopTask( wxCommandEvent& event ) { event.Skip(); } + virtual void StopAllTasks( wxCommandEvent& event ) { event.Skip(); } + virtual void RetryTask( wxCommandEvent& event ) { event.Skip(); } + virtual void SleepMode( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmActivityMgrADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Activity Manager"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 400,300 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL ); + + ~frmActivityMgrADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorNicknameADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorNicknameADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkAddress; + wxPanel* tabGeneral; + wxStaticText* lblNickname; + wxTextCtrl* txtNickname; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxPanel* tabOther; + wxStaticText* lblLanguage; + wxComboBox* cmbLanguage; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void InitAddressEditor( wxInitDialogEvent& event ) { event.Skip(); } + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorNicknameADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Nickname Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 386,231 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorNicknameADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorGroupsADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorGroupsADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkGroup; + wxPanel* tabGeneral; + wxStaticText* lblContacts; + wxCheckListBox* chkContacts; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void FetchContacts( wxInitDialogEvent& event ) { event.Skip(); } + virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorGroupsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Group Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 398,392 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorGroupsADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorRolesADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorRolesADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkRole; + wxPanel* tabGeneral; + wxStaticText* lblRole; + wxTextCtrl* txtRole; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorRolesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Role Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorRolesADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorOrganisationsADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorOrganisationsADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkOrganisation; + wxPanel* tabGeneral; + wxStaticText* lblOrganisation; + wxTextCtrl* txtOrganisation; + wxStaticText* lblSortAs; + wxComboBox* cmbSortAs; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void UpdateSortAs( wxCommandEvent& event ) { event.Skip(); } + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorOrganisationsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Organisation Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 349,224 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorOrganisationsADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorNotesADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorNotesADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkNotes; + wxPanel* tabGeneral; + wxTextCtrl* txtNote; + wxPanel* tabPriority; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxPanel* tabLanguage; + wxStaticText* lblLanguage; + wxComboBox* cmbLanguage; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorNotesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Note Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorNotesADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorTitlesADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorTitlesADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkTitles; + wxPanel* tabGeneral; + wxStaticText* lblTitle; + wxTextCtrl* txtTitle; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorTitlesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Title Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorTitlesADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorRelatedADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorRelatedADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkRelated; + wxPanel* tabGeneral; + wxStaticText* lblRelation; + wxTextCtrl* txtRelated; + wxStaticText* lblType; + wxComboBox* cmbType; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorRelatedADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Related Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,226 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorRelatedADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorSoundADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorSoundADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkRelated; + wxPanel* tabGeneral; + wxStaticText* lblSoundFile; + wxFilePickerCtrl* fipSound; + wxStaticText* lblType; + wxChoice* cmbType; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorSoundADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Sound Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,226 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorSoundADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorPictureADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorPictureADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkRelated; + wxPanel* tabGeneral; + wxStaticText* lblPictureFile; + wxFilePickerCtrl* fipPicture; + wxStaticText* lblType; + wxChoice* cmbType; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorPictureADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Picture Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,226 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorPictureADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorWebsitesADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorWebsitesADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkWebsite; + wxPanel* tabGeneral; + wxStaticText* lblWebsite; + wxTextCtrl* txtWebsite; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorWebsitesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Website Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorWebsitesADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorGeopositionADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorGeopositionADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkWebsite; + wxPanel* tabGeneral; + wxStaticText* lblGeoposition; + wxTextCtrl* txtGeoposition; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorGeopositionADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Geoposition Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorGeopositionADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorCalAdrADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorCalAdrADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkWebsite; + wxPanel* tabGeneral; + wxStaticText* lblAddress; + wxTextCtrl* txtAddress; + wxStaticText* lblType; + wxChoice* cmbType; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorCalAdrADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Calendar Address Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 448,270 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorCalAdrADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorVendorADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorVendorADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkWebsite; + wxPanel* tabGeneral; + wxStaticText* lblVendorPEN; + wxTextCtrl* txtPEN; + wxStaticText* lblElement; + wxTextCtrl* txtElement; + wxStaticText* lblValue; + wxTextCtrl* txtValue; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorVendorADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Vendor Namespace Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 448,270 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorVendorADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorXTokenADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorXTokenADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkWebsite; + wxPanel* tabGeneral; + wxStaticText* lblTokenName; + wxTextCtrl* txtTokenName; + wxStaticText* lblXT; + wxTextCtrl* txtValue; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorXTokenADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("X-Token Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 448,270 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorXTokenADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorKeyADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorKeyADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkWebsite; + wxPanel* tabGeneral; + wxStaticText* lblKeyType; + wxChoice* cmbKeyMainType; + wxStaticText* lblType; + wxChoice* cmbType; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxPanel* tabURL; + wxStaticText* lblKeyFormat; + wxComboBox* cmbURL; + wxStaticText* lblAddress; + wxTextCtrl* txtAddress; + wxPanel* tabKey; + wxStaticText* lblKeyFormatData; + wxComboBox* cmbKeyType; + wxStaticText* lblKeyData; + wxTextCtrl* txtKeyData; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void ProcessKeyType( wxCommandEvent& event ) { event.Skip(); } + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ConvertURLType( wxCommandEvent& event ) { event.Skip(); } + virtual void ConvertKeyType( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorKeyADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Key Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 448,270 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorKeyADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorEmailADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorEmailADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkEmail; + wxPanel* tabGeneral; + wxStaticText* lblEmailAddress; + wxTextCtrl* txtEmail; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorEmailADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Email Address Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 411,251 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorEmailADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorIMADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorIMADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkIM; + wxPanel* tabGeneral; + wxStaticText* lblIMType; + wxComboBox* cmbIMType; + wxStaticText* lblUsername; + wxTextCtrl* txtUsername; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorIMADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Instant Messaging Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 424,224 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorIMADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorCategoryADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorCategoryADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkIM; + wxPanel* tabGeneral; + wxStaticText* lblCategory; + wxTextCtrl* txtCategory; + wxStaticText* lblType; + wxChoice* cmbType; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorCategoryADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Category Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 424,224 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorCategoryADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorTelephoneADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorTelephoneADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkAddress; + wxPanel* tabGeneral; + wxStaticText* lblTelephone; + wxTextCtrl* txtTelephone; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxStaticText* lblTelephoneType; + wxCheckBox* chkVoice; + wxCheckBox* chkText; + wxCheckBox* chkFax; + wxCheckBox* chkMobile; + wxCheckBox* chkVideo; + wxCheckBox* chkTextphone; + wxCheckBox* chkPager; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorTelephoneADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Telephone Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 401,262 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorTelephoneADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorLanguagesADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorLanguagesADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkLanguages; + wxPanel* tabGeneral; + wxStaticText* lblLanguage; + wxTextCtrl* txtLanguage; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorLanguagesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Language Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorLanguagesADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmContactEditorTimezonesADT +/////////////////////////////////////////////////////////////////////////////// +class frmContactEditorTimezonesADT : public wxDialog +{ + private: + + protected: + wxNotebook* nbkTimezone; + wxPanel* tabGeneral; + wxStaticText* lblTimezone; + wxComboBox* cmbTimezone; + wxStaticText* lblPriority; + wxCheckBox* chkUsePref; + wxSlider* sliPriority; + wxStaticText* lblHigh; + wxStaticText* lblLow; + wxButton* btnAction; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); } + virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmContactEditorTimezonesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Timezone Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmContactEditorTimezonesADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class XABSearchPanelADT +/////////////////////////////////////////////////////////////////////////////// +class XABSearchPanelADT : public wxPanel +{ + private: + + protected: + wxChoice* choOption; + wxBoxSizer* szrSSet; + wxCheckBox* chkActive; + wxTextCtrl* txtSearch; + wxBitmapButton* btnAdd; + wxBitmapButton* btnDelete; + + // Virtual event handlers, overide them in your derived class + virtual void UpdateOptions( wxCommandEvent& event ) { event.Skip(); } + virtual void AddSearchWidget( wxCommandEvent& event ) { event.Skip(); } + virtual void RemoveSearchWidget( wxCommandEvent& event ) { event.Skip(); } + + + public: + + XABSearchPanelADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 390,40 ), long style = wxTAB_TRAVERSAL ); + ~XABSearchPanelADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmSearchAccountsADT +/////////////////////////////////////////////////////////////////////////////// +class frmSearchAccountsADT : public wxDialog +{ + private: + + protected: + wxCheckListBox* chlAccounts; + wxButton* btnSelect; + wxButton* btnCancel; + + // Virtual event handlers, overide them in your derived class + virtual void UpdateSelectedAccounts( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmSearchAccountsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Select Accounts"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 353,376 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmSearchAccountsADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmEditAccountADT +/////////////////////////////////////////////////////////////////////////////// +class frmEditAccountADT : public wxDialog +{ + private: + + protected: + wxNotebook* tabAccount; + wxPanel* tabProperties; + wxStaticText* lblAccName; + wxTextCtrl* txtAccountName; + wxStaticText* lblAccAdr; + wxTextCtrl* txtAddress; + wxStaticText* m_staticText193; + wxTextCtrl* txtPort; + wxStaticText* lblPort; + wxTextCtrl* txtUsername; + wxStaticText* lblPassword; + wxTextCtrl* txtPassword; + wxStaticText* lblPrefix; + wxTextCtrl* txtPrefix; + wxButton* btnDetect; + wxStaticText* txtSSL; + wxCheckBox* chkSSL; + wxPanel* tabRefresh; + wxStaticText* lblRefresh; + wxTextCtrl* txtRefresh; + wxButton* btnSave; + wxButton* btnCancel; + + // Virtual event handlers, overide them in your derived class + virtual void DetectAddressBook( wxCommandEvent& event ) { event.Skip(); } + virtual void UpdateSettings( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmEditAccountADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Edit Account"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 306,319 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmEditAccountADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmSSLCertificateADT +/////////////////////////////////////////////////////////////////////////////// +class frmSSLCertificateADT : public wxDialog +{ + private: + + protected: + wxNotebook* m_notebook28; + wxPanel* tabSummary; + wxPanel* pnlTop; + wxStaticText* lblCertName; + wxStaticText* lblValidityStatus; + wxPanel* m_panel54; + wxStaticText* lblIssuedTo; + wxStaticText* lblIssuedToData; + wxStaticText* lblValidFrom; + wxStaticText* lblValidFromData; + wxStaticText* lblValidUntil; + wxStaticText* lblValidUntilData; + wxPanel* tabDetail; + wxListCtrl* lstValues; + wxTextCtrl* txtValueData; + wxPanel* tabHierarchy; + wxTreeCtrl* treHierarchy; + wxPanel* m_panel57; + wxButton* btnViewCert; + wxPanel* pnlButtons; + wxButton* btnClose; + + // Virtual event handlers, overide them in your derived class + virtual void LoadValueData( wxListEvent& event ) { event.Skip(); } + virtual void CheckCertificate( wxTreeEvent& event ) { event.Skip(); } + virtual void ViewCertificate( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmSSLCertificateADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("SSL Certificate Window"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 347,402 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmSSLCertificateADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmInvalidSSLCertificateADT +/////////////////////////////////////////////////////////////////////////////// +class frmInvalidSSLCertificateADT : public wxDialog +{ + private: + + protected: + wxStaticText* lblSSLText; + wxButton* btnAccept; + wxButton* btnReject; + wxButton* btnViewCert; + + // Virtual event handlers, overide them in your derived class + virtual void Accept( wxCommandEvent& event ) { event.Skip(); } + virtual void Reject( wxCommandEvent& event ) { event.Skip(); } + virtual void ViewCertificates( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmInvalidSSLCertificateADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Invalid SSL Certificate"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 445,239 ), long style = wxCAPTION ); + ~frmInvalidSSLCertificateADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmImportContactsADT +/////////////////////////////////////////////////////////////////////////////// +class frmImportContactsADT : public wxDialog +{ + private: + + protected: + wxStaticText* lblImportText; + wxCheckListBox* lstContacts; + wxBoxSizer* szrAccount; + wxStaticText* lblAccountText; + wxButton* btnImport; + wxButton* btnCancel; + + // Virtual event handlers, overide them in your derived class + virtual void ImportContacts( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmImportContactsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 362,403 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmImportContactsADT(); + +}; + +/////////////////////////////////////////////////////////////////////////////// +/// Class frmImportResultsADT +/////////////////////////////////////////////////////////////////////////////// +class frmImportResultsADT : public wxDialog +{ + private: + + protected: + wxStaticText* lblText; + wxTextCtrl* txtResults; + wxButton* btnCopyClipboard; + wxButton* btnFinish; + + // Virtual event handlers, overide them in your derived class + virtual void CopyClipboard( wxCommandEvent& event ) { event.Skip(); } + virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); } + + + public: + + frmImportResultsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Import Results"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 489,299 ), long style = wxDEFAULT_DIALOG_STYLE ); + ~frmImportResultsADT(); + +}; + +#endif //__APPXESTIAADDRBK_H__ diff --git a/source/Makefile b/source/Makefile new file mode 100644 index 0000000..01109fd --- /dev/null +++ b/source/Makefile @@ -0,0 +1,92 @@ +CPP=g++ +STRIP=strip +CPPFLAGS=`xml2-config --cflags` `wx-config --cxxflags --libs` `curl-config --libs` -lossp-uuid++ -lmagic -lsfml-audio -lxml2 -std=c++11 -Os -ggdb + +XAB_OUT=xestiaab + +BMCO_HELP=tools/bitmapcode.helper +BMCO_DIR=../bitmaps + +MAINOBJS=main.o +CEOBJS=contacteditor/frmContactEditor.o \ + contacteditor/frmContactEditor-Load.o \ + contacteditor/frmContactEditorNickname.o \ + contacteditor/frmContactEditorAddress.o \ + contacteditor/frmContactEditorEmail.o \ + contacteditor/frmContactEditorIM.o \ + contacteditor/frmContactEditorTelephone.o \ + contacteditor/frmContactEditorLanguages.o \ + contacteditor/frmContactEditorTimezones.o \ + contacteditor/frmContactEditorRelated.o \ + contacteditor/frmContactEditorWebsites.o \ + contacteditor/frmContactEditorGeoposition.o \ + contacteditor/frmContactEditorTitles.o \ + contacteditor/frmContactEditorRoles.o \ + contacteditor/frmContactEditorOrganisations.o \ + contacteditor/frmContactEditorNotes.o \ + contacteditor/frmContactEditorGroups.o \ + contacteditor/frmContactEditorPicture.o \ + contacteditor/frmContactEditorSound.o \ + contacteditor/frmContactEditorCategory.o \ + contacteditor/frmContactEditorCalAdr.o \ + contacteditor/frmContactEditorKey.o \ + contacteditor/frmContactEditorVendor.o \ + contacteditor/frmContactEditorXToken.o +CARDDAVOBJS=carddav/carddav.o +COMMONOBJS=common/base64.o common/preferences.o common/getcontactinfo.o \ + common/etag.o common/textprocessing.o common/timers.o common/events.o \ + common/filename.o common/defaults.o common/uuid.o common/svrblist.o +IMEXOBJS=import/import.o import/import-vcard3.o import/import-vcard4.o \ + import/frmImportContacts.o import/frmImportResults.o \ + export/export.o export/export-vcard3.o export/export-vcard4.o +SEARCHOBJS=search/XABSearchPanel.o search/frmSearchAccounts.o frmSearch.o +VCARDOBJS=vcard/vcard.o vcard/vcard34conv.o +FORMOBJS=AppXestiaAddrBk.o frmActivityMgr.o frmAbout.o frmMain.o \ + frmNewAccount.o frmPreferences.o frmContact.o frmConflictResolution.o \ + frmEditAccount.o frmInvalidSSLCertificate.o frmSSLCertificate.o \ + frmUpdate.o +WIDGETOBJS=widgets/XABAccountView.o +BMCOOBJS=tools/bitmapcode.o + +debug: bitmaphelper formobjs widgetobjs commonobjs vcardobjs carddavobjs \ + ceobjs mainobjs searchobjs imexobjs + $(CPP) $(CPPFLAGS) $(FORMOBJS) $(WIDGETOBJS) $(COMMONOBJS) \ + $(VCARDOBJS) $(CEOBJS) $(CARDDAVOBJS) $(SEARCHOBJS) $(MAINOBJS) $(IMEXOBJS) -o $(XAB_OUT) + +xestiaab: bitmaphelper formobjs widgetobjs commonobjs vcardobjs carddavobjs \ + ceobjs mainobjs searchobjs imexobjs + $(CPP) $(CPPFLAGS) $(FORMOBJS) $(WIDGETOBJS) $(COMMONOBJS) \ + $(VCARDOBJS) $(CEOBJS) $(CARDDAVOBJS) $(SEARCHOBJS) $(MAINOBJS) $(IMEXOBJS) -o $(XAB_OUT) + $(STRIP) -s $(XAB_OUT) + +carddavobjs: $(CARDDAVOBJS) + +mainobjs: $(MAINOBJS) + +commonobjs: $(COMMONOBJS) + +vcardobjs: $(VCARDOBJS) + +ceobjs: $(CEOBJS) + +formobjs: $(FORMOBJS) + +searchobjs: $(SEARCHOBJS) + +widgetobjs: $(WIDGETOBJS) + +imexobjs: $(IMEXOBJS) + +clean: + rm -f $(XAB_OUT) $(BMCO_HELP) tools/bitmapcode.o *.o \ + vcard/*.o common/*.o carddav/*.o contacteditor/*.o search/*.o \ + widgets/*.o export/*.o import/*.o + +distclean: clean + rm -f Makefile config.status config.log + +bitmaphelperobjs: $(BMCOOBJS) + +bitmaphelper: bitmaphelperobjs + $(CPP) $(CPPFLAGS) -lboost_filesystem -lboost_system $(BMCOOBJS) -o $(BMCO_HELP) + $(BMCO_HELP) bitmaps/ diff --git a/source/Makefile.in b/source/Makefile.in new file mode 100644 index 0000000..a966a15 --- /dev/null +++ b/source/Makefile.in @@ -0,0 +1,44 @@ +CPP=g++ +CPPFLAGS=`wx-config --cxxflags --libs` -lboost_filesystem -lboost_system -Os + +XAB_OUT=xestiaab + +MAINOBJS=main.o +CEOBJS=contacteditor/frmContactEditor.o \ + contacteditor/frmContactEditorAddress.o \ + contacteditor/frmContactEditorEmail.o \ + contacteditor/frmContactEditorIM.o \ + contacteditor/frmContactEditorTelephone.o \ + contacteditor/frmContactEditorLanguages.o \ + contacteditor/frmContactEditorTimezones.o \ + contacteditor/frmContactEditorRelated.o \ + contacteditor/frmContactEditorWebsites.o \ + contacteditor/frmContactEditorTitles.o \ + contacteditor/frmContactEditorRoles.o \ + contacteditor/frmContactEditorOrganisations.o \ + contacteditor/frmContactEditorNotes.o +COMMONOBJS=common/base64.o common/preferences.o common/getcontactinfo.o \ + common/textprocessing.o +VCARDOBJS=vcard/vcard.o +FORMOBJS=AppXestiaAddrBk.o frmAbout.o frmMain.o frmNewAccount.o \ +frmPreferences.o frmContact.o + +xestiaab: mainobjs commonobjs vcardobjs ceobjs formobjs + $(CPP) $(CPPFLAGS) $(MAINOBJS) $(COMMONOBJS) $(VCARDOBJS) \ + $(FORMOBJS) $(CEOBJS) -o $(XAB_OUT) + +mainobjs: $(MAINOBJS) + +commonobjs: $(COMMONOBJS) + +vcardobjs: $(VCARDOBJS) + +ceobjs: $(CEOBJS) + +formobjs: $(FORMOBJS) + +clean: + rm -f xestiaab *.o vcard/*.o common/*.o contacteditor/*.o + +distclean: clean + rm -f Makefile config.status config.log diff --git a/source/aclocal.m4 b/source/aclocal.m4 new file mode 100644 index 0000000..52c55e2 --- /dev/null +++ b/source/aclocal.m4 @@ -0,0 +1,366 @@ +dnl --------------------------------------------------------------------------- +dnl Macros for wxWidgets detection. Typically used in configure.in as: +dnl +dnl AC_ARG_ENABLE(...) +dnl AC_ARG_WITH(...) +dnl ... +dnl AM_OPTIONS_WXCONFIG +dnl ... +dnl ... +dnl AM_PATH_WXCONFIG(2.6.0, wxWin=1) +dnl if test "$wxWin" != 1; then +dnl AC_MSG_ERROR([ +dnl wxWidgets must be installed on your system +dnl but wx-config script couldn't be found. +dnl +dnl Please check that wx-config is in path, the directory +dnl where wxWidgets libraries are installed (returned by +dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or +dnl equivalent variable and wxWidgets version is 2.3.4 or above. +dnl ]) +dnl fi +dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" +dnl CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" +dnl CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" +dnl +dnl LIBS="$LIBS $WX_LIBS" +dnl --------------------------------------------------------------------------- + +dnl --------------------------------------------------------------------------- +dnl AM_OPTIONS_WXCONFIG +dnl +dnl adds support for --wx-prefix, --wx-exec-prefix, --with-wxdir and +dnl --wx-config command line options +dnl --------------------------------------------------------------------------- + +AC_DEFUN([AM_OPTIONS_WXCONFIG], +[ + AC_ARG_WITH(wxdir, + [ --with-wxdir=PATH Use uninstalled version of wxWidgets in PATH], + [ wx_config_name="$withval/wx-config" + wx_config_args="--inplace"]) + AC_ARG_WITH(wx-config, + [ --with-wx-config=CONFIG wx-config script to use (optional)], + wx_config_name="$withval" ) + AC_ARG_WITH(wx-prefix, + [ --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional)], + wx_config_prefix="$withval", wx_config_prefix="") + AC_ARG_WITH(wx-exec-prefix, + [ --with-wx-exec-prefix=PREFIX + Exec prefix where wxWidgets is installed (optional)], + wx_config_exec_prefix="$withval", wx_config_exec_prefix="") +]) + +dnl Helper macro for checking if wx version is at least $1.$2.$3, set's +dnl wx_ver_ok=yes if it is: +AC_DEFUN([_WX_PRIVATE_CHECK_VERSION], +[ + wx_ver_ok="" + if test "x$WX_VERSION" != x ; then + if test $wx_config_major_version -gt $1; then + wx_ver_ok=yes + else + if test $wx_config_major_version -eq $1; then + if test $wx_config_minor_version -gt $2; then + wx_ver_ok=yes + else + if test $wx_config_minor_version -eq $2; then + if test $wx_config_micro_version -ge $3; then + wx_ver_ok=yes + fi + fi + fi + fi + fi + fi +]) + +dnl --------------------------------------------------------------------------- +dnl AM_PATH_WXCONFIG(VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND +dnl [, WX-LIBS [, ADDITIONAL-WX-CONFIG-FLAGS]]]]) +dnl +dnl Test for wxWidgets, and define WX_C*FLAGS, WX_LIBS and WX_LIBS_STATIC +dnl (the latter is for static linking against wxWidgets). Set WX_CONFIG_NAME +dnl environment variable to override the default name of the wx-config script +dnl to use. Set WX_CONFIG_PATH to specify the full path to wx-config - in this +dnl case the macro won't even waste time on tests for its existence. +dnl +dnl Optional WX-LIBS argument contains comma- or space-separated list of +dnl wxWidgets libraries to link against (it may include contrib libraries). If +dnl it is not specified then WX_LIBS and WX_LIBS_STATIC will contain flags to +dnl link with all of the core wxWidgets libraries. +dnl +dnl Optional ADDITIONAL-WX-CONFIG-FLAGS argument is appended to wx-config +dnl invocation command in present. It can be used to fine-tune lookup of +dnl best wxWidgets build available. +dnl +dnl Example use: +dnl AM_PATH_WXCONFIG([2.6.0], [wxWin=1], [wxWin=0], [html,core,net] +dnl [--unicode --debug]) +dnl --------------------------------------------------------------------------- + +dnl +dnl Get the cflags and libraries from the wx-config script +dnl +AC_DEFUN([AM_PATH_WXCONFIG], +[ + dnl do we have wx-config name: it can be wx-config or wxd-config or ... + if test x${WX_CONFIG_NAME+set} != xset ; then + WX_CONFIG_NAME=wx-config + fi + + if test "x$wx_config_name" != x ; then + WX_CONFIG_NAME="$wx_config_name" + fi + + dnl deal with optional prefixes + if test x$wx_config_exec_prefix != x ; then + wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix" + WX_LOOKUP_PATH="$wx_config_exec_prefix/bin" + fi + if test x$wx_config_prefix != x ; then + wx_config_args="$wx_config_args --prefix=$wx_config_prefix" + WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin" + fi + if test "$cross_compiling" = "yes"; then + wx_config_args="$wx_config_args --host=$host_alias" + fi + + dnl don't search the PATH if WX_CONFIG_NAME is absolute filename + if test -x "$WX_CONFIG_NAME" ; then + AC_MSG_CHECKING(for wx-config) + WX_CONFIG_PATH="$WX_CONFIG_NAME" + AC_MSG_RESULT($WX_CONFIG_PATH) + else + AC_PATH_PROG(WX_CONFIG_PATH, $WX_CONFIG_NAME, no, "$WX_LOOKUP_PATH:$PATH") + fi + + if test "$WX_CONFIG_PATH" != "no" ; then + WX_VERSION="" + + min_wx_version=ifelse([$1], ,2.2.1,$1) + if test -z "$5" ; then + AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version]) + else + AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version ($5)]) + fi + + WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args $5 $4" + + WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null` + wx_config_major_version=`echo $WX_VERSION | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + wx_config_minor_version=`echo $WX_VERSION | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + wx_config_micro_version=`echo $WX_VERSION | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + + wx_requested_major_version=`echo $min_wx_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + wx_requested_minor_version=`echo $min_wx_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + wx_requested_micro_version=`echo $min_wx_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + + _WX_PRIVATE_CHECK_VERSION([$wx_requested_major_version], + [$wx_requested_minor_version], + [$wx_requested_micro_version]) + + if test -n "$wx_ver_ok"; then + + AC_MSG_RESULT(yes (version $WX_VERSION)) + WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs` + + dnl is this even still appropriate? --static is a real option now + dnl and WX_CONFIG_WITH_ARGS is likely to contain it if that is + dnl what the user actually wants, making this redundant at best. + dnl For now keep it in case anyone actually used it in the past. + AC_MSG_CHECKING([for wxWidgets static library]) + WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null` + if test "x$WX_LIBS_STATIC" = "x"; then + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(yes) + fi + + dnl starting with version 2.2.6 wx-config has --cppflags argument + wx_has_cppflags="" + if test $wx_config_major_version -gt 2; then + wx_has_cppflags=yes + else + if test $wx_config_major_version -eq 2; then + if test $wx_config_minor_version -gt 2; then + wx_has_cppflags=yes + else + if test $wx_config_minor_version -eq 2; then + if test $wx_config_micro_version -ge 6; then + wx_has_cppflags=yes + fi + fi + fi + fi + fi + + dnl starting with version 2.7.0 wx-config has --rescomp option + wx_has_rescomp="" + if test $wx_config_major_version -gt 2; then + wx_has_rescomp=yes + else + if test $wx_config_major_version -eq 2; then + if test $wx_config_minor_version -ge 7; then + wx_has_rescomp=yes + fi + fi + fi + if test "x$wx_has_rescomp" = x ; then + dnl cannot give any useful info for resource compiler + WX_RESCOMP= + else + WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp` + fi + + if test "x$wx_has_cppflags" = x ; then + dnl no choice but to define all flags like CFLAGS + WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags` + WX_CPPFLAGS=$WX_CFLAGS + WX_CXXFLAGS=$WX_CFLAGS + + WX_CFLAGS_ONLY=$WX_CFLAGS + WX_CXXFLAGS_ONLY=$WX_CFLAGS + else + dnl we have CPPFLAGS included in CFLAGS included in CXXFLAGS + WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags` + WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags` + WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags` + + WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"` + WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"` + fi + + ifelse([$2], , :, [$2]) + + else + + if test "x$WX_VERSION" = x; then + dnl no wx-config at all + AC_MSG_RESULT(no) + else + AC_MSG_RESULT(no (version $WX_VERSION is not new enough)) + fi + + WX_CFLAGS="" + WX_CPPFLAGS="" + WX_CXXFLAGS="" + WX_LIBS="" + WX_LIBS_STATIC="" + WX_RESCOMP="" + ifelse([$3], , :, [$3]) + + fi + else + + WX_CFLAGS="" + WX_CPPFLAGS="" + WX_CXXFLAGS="" + WX_LIBS="" + WX_LIBS_STATIC="" + WX_RESCOMP="" + + ifelse([$3], , :, [$3]) + + fi + + AC_SUBST(WX_CPPFLAGS) + AC_SUBST(WX_CFLAGS) + AC_SUBST(WX_CXXFLAGS) + AC_SUBST(WX_CFLAGS_ONLY) + AC_SUBST(WX_CXXFLAGS_ONLY) + AC_SUBST(WX_LIBS) + AC_SUBST(WX_LIBS_STATIC) + AC_SUBST(WX_VERSION) + AC_SUBST(WX_RESCOMP) +]) + +dnl --------------------------------------------------------------------------- +dnl Get information on the wxrc program for making C++, Python and xrs +dnl resource files. +dnl +dnl AC_ARG_ENABLE(...) +dnl AC_ARG_WITH(...) +dnl ... +dnl AM_OPTIONS_WXCONFIG +dnl ... +dnl AM_PATH_WXCONFIG(2.6.0, wxWin=1) +dnl if test "$wxWin" != 1; then +dnl AC_MSG_ERROR([ +dnl wxWidgets must be installed on your system +dnl but wx-config script couldn't be found. +dnl +dnl Please check that wx-config is in path, the directory +dnl where wxWidgets libraries are installed (returned by +dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or +dnl equivalent variable and wxWidgets version is 2.6.0 or above. +dnl ]) +dnl fi +dnl +dnl AM_PATH_WXRC([HAVE_WXRC=1], [HAVE_WXRC=0]) +dnl if test "x$HAVE_WXRC" != x1; then +dnl AC_MSG_ERROR([ +dnl The wxrc program was not installed or not found. +dnl +dnl Please check the wxWidgets installation. +dnl ]) +dnl fi +dnl +dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" +dnl CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" +dnl CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" +dnl +dnl LDFLAGS="$LDFLAGS $WX_LIBS" +dnl --------------------------------------------------------------------------- + + + +dnl --------------------------------------------------------------------------- +dnl AM_PATH_WXRC([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +dnl +dnl Test for wxWidgets' wxrc program for creating either C++, Python or XRS +dnl resources. The variable WXRC will be set and substituted in the configure +dnl script and Makefiles. +dnl +dnl Example use: +dnl AM_PATH_WXRC([wxrc=1], [wxrc=0]) +dnl --------------------------------------------------------------------------- + +dnl +dnl wxrc program from the wx-config script +dnl +AC_DEFUN([AM_PATH_WXRC], +[ + AC_ARG_VAR([WXRC], [Path to wxWidget's wxrc resource compiler]) + + if test "x$WX_CONFIG_NAME" = x; then + AC_MSG_ERROR([The wxrc tests must run after wxWidgets test.]) + else + + AC_MSG_CHECKING([for wxrc]) + + if test "x$WXRC" = x ; then + dnl wx-config --utility is a new addition to wxWidgets: + _WX_PRIVATE_CHECK_VERSION(2,5,3) + if test -n "$wx_ver_ok"; then + WXRC=`$WX_CONFIG_WITH_ARGS --utility=wxrc` + fi + fi + + if test "x$WXRC" = x ; then + AC_MSG_RESULT([not found]) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT([$WXRC]) + ifelse([$1], , :, [$1]) + fi + + AC_SUBST(WXRC) + fi +]) diff --git a/source/autom4te.cache/output.0 b/source/autom4te.cache/output.0 new file mode 100644 index 0000000..f2fc16e --- /dev/null +++ b/source/autom4te.cache/output.0 @@ -0,0 +1,4990 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.68 for Xestia Address Book 1.0. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +@%:@ Foundation, Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@xestia.co.uk +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in @%:@( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Xestia Address Book' +PACKAGE_TARNAME='xestia-address-book' +PACKAGE_VERSION='1.0' +PACKAGE_STRING='Xestia Address Book 1.0' +PACKAGE_BUGREPORT='bugs@xestia.co.uk' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +EGREP +GREP +CPP +ac_ct_CC +CFLAGS +CC +OBJEXT +EXEEXT +ac_ct_CXX +CPPFLAGS +LDFLAGS +CXXFLAGS +CXX +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +' + ac_precious_vars='build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +LIBS +CPPFLAGS +CCC +CC +CFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Xestia Address Book 1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root + @<:@DATAROOTDIR/doc/xestia-address-book@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Xestia Address Book 1.0:";; + esac + cat <<\_ACEOF + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CC C compiler command + CFLAGS C compiler flags + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Xestia Address Book configure 1.0 +generated by GNU Autoconf 2.68 + +Copyright (C) 2010 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_cxx_try_compile LINENO +@%:@ ---------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_cxx_try_compile + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using +@%:@ the include files in INCLUDES and setting the cache variable VAR +@%:@ accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## -------------------------------- ## +## Report this to bugs@xestia.co.uk ## +## -------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_mongrel + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes +@%:@ that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Xestia Address Book $as_me 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in @%:@(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +#AC_CONFIG_SRCDIR([version.h]) +#AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 +$as_echo_n "checking whether the C++ compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C++ compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 +$as_echo_n "checking for C++ compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Checks for libraries. + +AM_OPTIONS_WXCONFIG +reqwx=2.4.0 +AM_PATH_WXCONFIG($reqwx, wxWin=1) +if test "$wxWin" != 1; then + as_fn_error $? " + wxWidgets must be installed on your system. + + Please check that wx-config is in path, the directory + where wxWidgets libraries are installed (returned by + 'wx-config --libs' or 'wx-config --static --libs' command) + is in LD_LIBRARY_PATH or equivalent variable and + wxWidgets version is $reqwx or above. + " "$LINENO" 5 +fi + +CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" +CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" +CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" +LIBS="$LIBS $WX_LIBS" + +# FIXME: Replace `main' with a function in `-lboost_filesystem': + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_filesystem" >&5 +$as_echo_n "checking for main in -lboost_filesystem... " >&6; } +if ${ac_cv_lib_boost_filesystem_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lboost_filesystem $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_boost_filesystem_main=yes +else + ac_cv_lib_boost_filesystem_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_filesystem_main" >&5 +$as_echo "$ac_cv_lib_boost_filesystem_main" >&6; } +if test "x$ac_cv_lib_boost_filesystem_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_LIBBOOST_FILESYSTEM 1 +_ACEOF + + LIBS="-lboost_filesystem $LIBS" + +else + + echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + +fi + +# FIXME: Replace `main' with a function in `-lboost_system': +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_system" >&5 +$as_echo_n "checking for main in -lboost_system... " >&6; } +if ${ac_cv_lib_boost_system_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lboost_system $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_boost_system_main=yes +else + ac_cv_lib_boost_system_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_system_main" >&5 +$as_echo "$ac_cv_lib_boost_system_main" >&6; } +if test "x$ac_cv_lib_boost_system_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_LIBBOOST_SYSTEM 1 +_ACEOF + + LIBS="-lboost_system $LIBS" + +else + + echo "Error! Boost System Library (libboost_system) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + +fi + +#AC_CHECK_PROG([WXCONFIG], [wx-config]) + +# Checks for header files. + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in stdlib.h string.h wx/wx.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Checks for typedefs, structures, and compiler characteristics. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 +$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } +if ${ac_cv_header_stdbool_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef bool + "error: bool is not defined" +#endif +#ifndef false + "error: false is not defined" +#endif +#if false + "error: false is not 0" +#endif +#ifndef true + "error: true is not defined" +#endif +#if true != 1 + "error: true is not 1" +#endif +#ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" +#endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + /* See body of main program for 'e'. */ + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; + +int +main () +{ + + bool e = &s; + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdbool_h=yes +else + ac_cv_header_stdbool_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +$as_echo "$ac_cv_header_stdbool_h" >&6; } +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes; then : + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE__BOOL 1 +_ACEOF + + +fi + +if test $ac_cv_header_stdbool_h = yes; then + +$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +# Checks for library functions. + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in @%:@( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Xestia Address Book $as_me 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Xestia Address Book config.status 1.0 +configured by $0, generated by GNU Autoconf 2.68, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/source/autom4te.cache/output.0t b/source/autom4te.cache/output.0t new file mode 100644 index 0000000..129c241 --- /dev/null +++ b/source/autom4te.cache/output.0t @@ -0,0 +1,4992 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.68 for Xestia Address Book 1.0. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +@%:@ Foundation, Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@xestia.co.uk +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in @%:@( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Xestia Address Book' +PACKAGE_TARNAME='xestia-address-book' +PACKAGE_VERSION='1.0' +PACKAGE_STRING='Xestia Address Book 1.0' +PACKAGE_BUGREPORT='bugs@xestia.co.uk' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +EGREP +GREP +CPP +ac_ct_CC +CFLAGS +CC +OBJEXT +EXEEXT +ac_ct_CXX +CPPFLAGS +LDFLAGS +CXXFLAGS +CXX +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +' + ac_precious_vars='build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +LIBS +CPPFLAGS +CCC +CC +CFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Xestia Address Book 1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root + @<:@DATAROOTDIR/doc/xestia-address-book@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Xestia Address Book 1.0:";; + esac + cat <<\_ACEOF + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CC C compiler command + CFLAGS C compiler flags + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Xestia Address Book configure 1.0 +generated by GNU Autoconf 2.68 + +Copyright (C) 2010 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_cxx_try_compile LINENO +@%:@ ---------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_cxx_try_compile + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using +@%:@ the include files in INCLUDES and setting the cache variable VAR +@%:@ accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## -------------------------------- ## +## Report this to bugs@xestia.co.uk ## +## -------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_mongrel + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes +@%:@ that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Xestia Address Book $as_me 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in @%:@(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +#AC_CONFIG_SRCDIR([version.h]) +#AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 +$as_echo_n "checking whether the C++ compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C++ compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 +$as_echo_n "checking for C++ compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Checks for libraries. + + + +AM_OPTIONS_WXCONFIG +reqwx=2.4.0 +AM_PATH_WXCONFIG($reqwx, wxWin=1) +if test "$wxWin" != 1; then + as_fn_error $? " + wxWidgets must be installed on your system. + + Please check that wx-config is in path, the directory + where wxWidgets libraries are installed (returned by + 'wx-config --libs' or 'wx-config --static --libs' command) + is in LD_LIBRARY_PATH or equivalent variable and + wxWidgets version is $reqwx or above. + " "$LINENO" 5 +fi + +CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" +CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" +CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" +LIBS="$LIBS $WX_LIBS" + +# FIXME: Replace `main' with a function in `-lboost_filesystem': + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_filesystem" >&5 +$as_echo_n "checking for main in -lboost_filesystem... " >&6; } +if ${ac_cv_lib_boost_filesystem_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lboost_filesystem $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_boost_filesystem_main=yes +else + ac_cv_lib_boost_filesystem_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_filesystem_main" >&5 +$as_echo "$ac_cv_lib_boost_filesystem_main" >&6; } +if test "x$ac_cv_lib_boost_filesystem_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_LIBBOOST_FILESYSTEM 1 +_ACEOF + + LIBS="-lboost_filesystem $LIBS" + +else + + echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + +fi + +# FIXME: Replace `main' with a function in `-lboost_system': +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_system" >&5 +$as_echo_n "checking for main in -lboost_system... " >&6; } +if ${ac_cv_lib_boost_system_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lboost_system $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_boost_system_main=yes +else + ac_cv_lib_boost_system_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_system_main" >&5 +$as_echo "$ac_cv_lib_boost_system_main" >&6; } +if test "x$ac_cv_lib_boost_system_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_LIBBOOST_SYSTEM 1 +_ACEOF + + LIBS="-lboost_system $LIBS" + +else + + echo "Error! Boost System Library (libboost_system) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + +fi + +#AC_CHECK_PROG([WXCONFIG], [wx-config]) + +# Checks for header files. + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in stdlib.h string.h wx/wx.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Checks for typedefs, structures, and compiler characteristics. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 +$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } +if ${ac_cv_header_stdbool_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef bool + "error: bool is not defined" +#endif +#ifndef false + "error: false is not defined" +#endif +#if false + "error: false is not 0" +#endif +#ifndef true + "error: true is not defined" +#endif +#if true != 1 + "error: true is not 1" +#endif +#ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" +#endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + /* See body of main program for 'e'. */ + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; + +int +main () +{ + + bool e = &s; + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdbool_h=yes +else + ac_cv_header_stdbool_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +$as_echo "$ac_cv_header_stdbool_h" >&6; } +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes; then : + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE__BOOL 1 +_ACEOF + + +fi + +if test $ac_cv_header_stdbool_h = yes; then + +$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +# Checks for library functions. + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in @%:@( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Xestia Address Book $as_me 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Xestia Address Book config.status 1.0 +configured by $0, generated by GNU Autoconf 2.68, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/source/autom4te.cache/output.1 b/source/autom4te.cache/output.1 new file mode 100644 index 0000000..9e77a89 --- /dev/null +++ b/source/autom4te.cache/output.1 @@ -0,0 +1,5273 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.68 for Xestia Address Book 1.0. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +@%:@ Foundation, Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@xestia.co.uk +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in @%:@( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Xestia Address Book' +PACKAGE_TARNAME='xestia-address-book' +PACKAGE_VERSION='1.0' +PACKAGE_STRING='Xestia Address Book 1.0' +PACKAGE_BUGREPORT='bugs@xestia.co.uk' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +EGREP +GREP +WX_RESCOMP +WX_VERSION +WX_LIBS_STATIC +WX_LIBS +WX_CXXFLAGS_ONLY +WX_CFLAGS_ONLY +WX_CXXFLAGS +WX_CFLAGS +WX_CPPFLAGS +WX_CONFIG_PATH +CPP +ac_ct_CC +CFLAGS +CC +OBJEXT +EXEEXT +ac_ct_CXX +CPPFLAGS +LDFLAGS +CXXFLAGS +CXX +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_wxdir +with_wx_config +with_wx_prefix +with_wx_exec_prefix +' + ac_precious_vars='build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +LIBS +CPPFLAGS +CCC +CC +CFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Xestia Address Book 1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root + @<:@DATAROOTDIR/doc/xestia-address-book@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Xestia Address Book 1.0:";; + esac + cat <<\_ACEOF + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-wxdir=PATH Use uninstalled version of wxWidgets in PATH + --with-wx-config=CONFIG wx-config script to use (optional) + --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional) + --with-wx-exec-prefix=PREFIX + Exec prefix where wxWidgets is installed (optional) + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CC C compiler command + CFLAGS C compiler flags + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Xestia Address Book configure 1.0 +generated by GNU Autoconf 2.68 + +Copyright (C) 2010 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_cxx_try_compile LINENO +@%:@ ---------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_cxx_try_compile + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using +@%:@ the include files in INCLUDES and setting the cache variable VAR +@%:@ accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## -------------------------------- ## +## Report this to bugs@xestia.co.uk ## +## -------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_mongrel + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes +@%:@ that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES +@%:@ ------------------------------------------- +@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache +@%:@ variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Xestia Address Book $as_me 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in @%:@(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +#AC_CONFIG_SRCDIR([version.h]) +#AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 +$as_echo_n "checking whether the C++ compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C++ compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 +$as_echo_n "checking for C++ compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Checks for libraries. + + + +@%:@ Check whether --with-wxdir was given. +if test "${with_wxdir+set}" = set; then : + withval=$with_wxdir; wx_config_name="$withval/wx-config" + wx_config_args="--inplace" +fi + + +@%:@ Check whether --with-wx-config was given. +if test "${with_wx_config+set}" = set; then : + withval=$with_wx_config; wx_config_name="$withval" +fi + + +@%:@ Check whether --with-wx-prefix was given. +if test "${with_wx_prefix+set}" = set; then : + withval=$with_wx_prefix; wx_config_prefix="$withval" +else + wx_config_prefix="" +fi + + +@%:@ Check whether --with-wx-exec-prefix was given. +if test "${with_wx_exec_prefix+set}" = set; then : + withval=$with_wx_exec_prefix; wx_config_exec_prefix="$withval" +else + wx_config_exec_prefix="" +fi + + +reqwx=2.8.0 + + if test x${WX_CONFIG_NAME+set} != xset ; then + WX_CONFIG_NAME=wx-config + fi + + if test "x$wx_config_name" != x ; then + WX_CONFIG_NAME="$wx_config_name" + fi + + if test x$wx_config_exec_prefix != x ; then + wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix" + WX_LOOKUP_PATH="$wx_config_exec_prefix/bin" + fi + if test x$wx_config_prefix != x ; then + wx_config_args="$wx_config_args --prefix=$wx_config_prefix" + WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin" + fi + if test "$cross_compiling" = "yes"; then + wx_config_args="$wx_config_args --host=$host_alias" + fi + + if test -x "$WX_CONFIG_NAME" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wx-config" >&5 +$as_echo_n "checking for wx-config... " >&6; } + WX_CONFIG_PATH="$WX_CONFIG_NAME" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5 +$as_echo "$WX_CONFIG_PATH" >&6; } + else + # Extract the first word of "$WX_CONFIG_NAME", so it can be a program name with args. +set dummy $WX_CONFIG_NAME; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_WX_CONFIG_PATH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $WX_CONFIG_PATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_WX_CONFIG_PATH="$WX_CONFIG_PATH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy=""$WX_LOOKUP_PATH:$PATH"" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_WX_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_WX_CONFIG_PATH" && ac_cv_path_WX_CONFIG_PATH="no" + ;; +esac +fi +WX_CONFIG_PATH=$ac_cv_path_WX_CONFIG_PATH +if test -n "$WX_CONFIG_PATH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5 +$as_echo "$WX_CONFIG_PATH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi + + if test "$WX_CONFIG_PATH" != "no" ; then + WX_VERSION="" + + min_wx_version=$reqwx + if test -z "" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version" >&5 +$as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version ()" >&5 +$as_echo_n "checking for wxWidgets version >= $min_wx_version ()... " >&6; } + fi + + WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args " + + WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null` + wx_config_major_version=`echo $WX_VERSION | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + wx_config_minor_version=`echo $WX_VERSION | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + wx_config_micro_version=`echo $WX_VERSION | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + + wx_requested_major_version=`echo $min_wx_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + wx_requested_minor_version=`echo $min_wx_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + wx_requested_micro_version=`echo $min_wx_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + + + wx_ver_ok="" + if test "x$WX_VERSION" != x ; then + if test $wx_config_major_version -gt $wx_requested_major_version; then + wx_ver_ok=yes + else + if test $wx_config_major_version -eq $wx_requested_major_version; then + if test $wx_config_minor_version -gt $wx_requested_minor_version; then + wx_ver_ok=yes + else + if test $wx_config_minor_version -eq $wx_requested_minor_version; then + if test $wx_config_micro_version -ge $wx_requested_micro_version; then + wx_ver_ok=yes + fi + fi + fi + fi + fi + fi + + + if test -n "$wx_ver_ok"; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5 +$as_echo "yes (version $WX_VERSION)" >&6; } + WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs` + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5 +$as_echo_n "checking for wxWidgets static library... " >&6; } + WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null` + if test "x$WX_LIBS_STATIC" = "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + + wx_has_cppflags="" + if test $wx_config_major_version -gt 2; then + wx_has_cppflags=yes + else + if test $wx_config_major_version -eq 2; then + if test $wx_config_minor_version -gt 2; then + wx_has_cppflags=yes + else + if test $wx_config_minor_version -eq 2; then + if test $wx_config_micro_version -ge 6; then + wx_has_cppflags=yes + fi + fi + fi + fi + fi + + wx_has_rescomp="" + if test $wx_config_major_version -gt 2; then + wx_has_rescomp=yes + else + if test $wx_config_major_version -eq 2; then + if test $wx_config_minor_version -ge 7; then + wx_has_rescomp=yes + fi + fi + fi + if test "x$wx_has_rescomp" = x ; then + WX_RESCOMP= + else + WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp` + fi + + if test "x$wx_has_cppflags" = x ; then + WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags` + WX_CPPFLAGS=$WX_CFLAGS + WX_CXXFLAGS=$WX_CFLAGS + + WX_CFLAGS_ONLY=$WX_CFLAGS + WX_CXXFLAGS_ONLY=$WX_CFLAGS + else + WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags` + WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags` + WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags` + + WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"` + WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"` + fi + + wxWin=1 + + else + + if test "x$WX_VERSION" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (version $WX_VERSION is not new enough)" >&5 +$as_echo "no (version $WX_VERSION is not new enough)" >&6; } + fi + + WX_CFLAGS="" + WX_CPPFLAGS="" + WX_CXXFLAGS="" + WX_LIBS="" + WX_LIBS_STATIC="" + WX_RESCOMP="" + : + + fi + else + + WX_CFLAGS="" + WX_CPPFLAGS="" + WX_CXXFLAGS="" + WX_LIBS="" + WX_LIBS_STATIC="" + WX_RESCOMP="" + + : + + fi + + + + + + + + + + + +if test "$wxWin" != 1; then + as_fn_error $? " +wxWidgets must be installed on your system. + +Please check that wx-config is in path, the directory where wxWidgets libraries +are installed (returned by 'wx-config --libs' or 'wx-config --static --libs' +command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version +is $reqwx or above. + " "$LINENO" 5 +fi + +CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" +CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" +CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" +LIBS="$LIBS $WX_LIBS" + +# FIXME: Replace `main' with a function in `-lboost_filesystem': + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_filesystem" >&5 +$as_echo_n "checking for main in -lboost_filesystem... " >&6; } +if ${ac_cv_lib_boost_filesystem_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lboost_filesystem $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_boost_filesystem_main=yes +else + ac_cv_lib_boost_filesystem_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_filesystem_main" >&5 +$as_echo "$ac_cv_lib_boost_filesystem_main" >&6; } +if test "x$ac_cv_lib_boost_filesystem_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_LIBBOOST_FILESYSTEM 1 +_ACEOF + + LIBS="-lboost_filesystem $LIBS" + +else + + echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + +fi + +# FIXME: Replace `main' with a function in `-lboost_system': +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_system" >&5 +$as_echo_n "checking for main in -lboost_system... " >&6; } +if ${ac_cv_lib_boost_system_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lboost_system $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_boost_system_main=yes +else + ac_cv_lib_boost_system_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_system_main" >&5 +$as_echo "$ac_cv_lib_boost_system_main" >&6; } +if test "x$ac_cv_lib_boost_system_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_LIBBOOST_SYSTEM 1 +_ACEOF + + LIBS="-lboost_system $LIBS" + +else + + echo "Error! Boost System Library (libboost_system) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + +fi + +#AC_CHECK_PROG([WXCONFIG], [wx-config]) + +# Checks for header files. + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in stdlib.h string.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Checks for typedefs, structures, and compiler characteristics. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 +$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } +if ${ac_cv_header_stdbool_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef bool + "error: bool is not defined" +#endif +#ifndef false + "error: false is not defined" +#endif +#if false + "error: false is not 0" +#endif +#ifndef true + "error: true is not defined" +#endif +#if true != 1 + "error: true is not 1" +#endif +#ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" +#endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + /* See body of main program for 'e'. */ + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; + +int +main () +{ + + bool e = &s; + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdbool_h=yes +else + ac_cv_header_stdbool_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +$as_echo "$ac_cv_header_stdbool_h" >&6; } +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes; then : + +cat >>confdefs.h <<_ACEOF +@%:@define HAVE__BOOL 1 +_ACEOF + + +fi + +if test $ac_cv_header_stdbool_h = yes; then + +$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +# Checks for library functions. + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in @%:@( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Xestia Address Book $as_me 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Xestia Address Book config.status 1.0 +configured by $0, generated by GNU Autoconf 2.68, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/source/autom4te.cache/requests b/source/autom4te.cache/requests new file mode 100644 index 0000000..252e65d --- /dev/null +++ b/source/autom4te.cache/requests @@ -0,0 +1,150 @@ +# This file was generated. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'configure.ac' + ], + { + 'AM_PROG_F77_C_O' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'm4_pattern_forbid' => 1, + 'AC_INIT' => 1, + 'AC_CANONICAL_TARGET' => 1, + '_AM_COND_IF' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_SUBST' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AC_CHECK_HEADERS' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'm4_sinclude' => 1, + 'AC_PROG_CXX' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_NLS' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + '_m4_warn' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AC_PREREQ' => 1, + 'AC_HEADER_STDBOOL' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AC_C_INLINE' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_COND_ENDIF' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_PROG_MOC' => 1, + 'AM_SILENT_RULES' => 1, + 'AC_CONFIG_FILES' => 1, + 'LT_INIT' => 1, + 'include' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_PROG_AR' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AC_FC_FREEFORM' => 1, + 'AH_OUTPUT' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'm4_pattern_allow' => 1, + 'AM_PROG_CC_C_O' => 1, + 'sinclude' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_POT_TOOLS' => 1, + 'm4_include' => 1, + 'AC_PROG_CC' => 1, + '_AM_COND_ELSE' => 1, + 'AC_SUBST_TRACE' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '1', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.ac' + ], + { + 'AM_PROG_F77_C_O' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'm4_pattern_forbid' => 1, + 'AC_INIT' => 1, + 'AC_CANONICAL_TARGET' => 1, + '_AM_COND_IF' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_SUBST' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'm4_sinclude' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_NLS' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + '_m4_warn' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_PROG_CXX_C_O' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_COND_ENDIF' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_PROG_MOC' => 1, + 'AC_CONFIG_FILES' => 1, + 'LT_INIT' => 1, + 'include' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_PROG_AR' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AC_FC_FREEFORM' => 1, + 'AH_OUTPUT' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'm4_pattern_allow' => 1, + 'AM_PROG_CC_C_O' => 1, + 'sinclude' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_POT_TOOLS' => 1, + 'm4_include' => 1, + '_AM_COND_ELSE' => 1, + 'AC_SUBST_TRACE' => 1 + } + ], 'Autom4te::Request' ) + ); + diff --git a/source/autom4te.cache/traces.0 b/source/autom4te.cache/traces.0 new file mode 100644 index 0000000..f34757b --- /dev/null +++ b/source/autom4te.cache/traces.0 @@ -0,0 +1,294 @@ +m4trace:configure.ac:4: -1- AC_PREREQ([2.68]) +m4trace:configure.ac:5: -1- AC_INIT([Xestia Address Book], [1.0], [bugs@xestia.co.uk]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:5: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:5: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:5: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:5: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:5: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:5: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:5: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:5: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:5: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:10: -1- AC_PROG_CXX +m4trace:configure.ac:10: -1- AC_SUBST([CXX]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:10: -1- AC_SUBST([CXXFLAGS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXXFLAGS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CXXFLAGS$]) +m4trace:configure.ac:10: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:10: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:10: -1- AC_SUBST([CXX]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_CXX]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_CXX]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CXX$]) +m4trace:configure.ac:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:11: -1- AC_PROG_CC +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:11: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:11: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:11: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:12: -1- AC_SUBST([CPP]) +m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:12: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:12: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:12: -1- AC_SUBST([CPP]) +m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:37: -1- AH_OUTPUT([HAVE_LIBBOOST_FILESYSTEM], [/* Define to 1 if you have the `boost_filesystem\' library + (-lboost_filesystem). */ +@%:@undef HAVE_LIBBOOST_FILESYSTEM]) +m4trace:configure.ac:37: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_FILESYSTEM]) +m4trace:configure.ac:37: -1- m4_pattern_allow([^HAVE_LIBBOOST_FILESYSTEM$]) +m4trace:configure.ac:44: -1- AH_OUTPUT([HAVE_LIBBOOST_SYSTEM], [/* Define to 1 if you have the `boost_system\' library (-lboost_system). */ +@%:@undef HAVE_LIBBOOST_SYSTEM]) +m4trace:configure.ac:44: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_SYSTEM]) +m4trace:configure.ac:44: -1- m4_pattern_allow([^HAVE_LIBBOOST_SYSTEM$]) +m4trace:configure.ac:53: -1- AC_CHECK_HEADERS([stdlib.h string.h wx/wx.h]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_WX_WX_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_WX_WX_H]) +m4trace:configure.ac:53: -1- AC_SUBST([GREP]) +m4trace:configure.ac:53: -1- AC_SUBST_TRACE([GREP]) +m4trace:configure.ac:53: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:53: -1- AC_SUBST([EGREP]) +m4trace:configure.ac:53: -1- AC_SUBST_TRACE([EGREP]) +m4trace:configure.ac:53: -1- m4_pattern_allow([^EGREP$]) +m4trace:configure.ac:53: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:53: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:53: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +@%:@undef STDC_HEADERS]) +m4trace:configure.ac:53: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:56: -1- AC_HEADER_STDBOOL +m4trace:configure.ac:56: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL]) +m4trace:configure.ac:56: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:56: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */ +@%:@undef HAVE__BOOL]) +m4trace:configure.ac:56: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H]) +m4trace:configure.ac:56: -1- m4_pattern_allow([^HAVE_STDBOOL_H$]) +m4trace:configure.ac:56: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */ +@%:@undef HAVE_STDBOOL_H]) +m4trace:configure.ac:57: -1- AC_C_INLINE +m4trace:configure.ac:57: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler + calls it, or to nothing if \'inline\' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif]) +m4trace:configure.ac:61: -1- AC_CONFIG_FILES([Makefile]) +m4trace:configure.ac:62: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:62: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:62: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:62: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:62: -1- AC_SUBST_TRACE([abs_top_builddir]) diff --git a/source/autom4te.cache/traces.0t b/source/autom4te.cache/traces.0t new file mode 100644 index 0000000..e5d59c9 --- /dev/null +++ b/source/autom4te.cache/traces.0t @@ -0,0 +1,295 @@ +m4trace:configure.ac:4: -1- AC_PREREQ([2.68]) +m4trace:configure.ac:5: -1- AC_INIT([Xestia Address Book], [1.0], [bugs@xestia.co.uk]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:5: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:5: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:5: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:5: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:5: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:5: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:5: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:5: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:5: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:10: -1- AC_PROG_CXX +m4trace:configure.ac:10: -1- AC_SUBST([CXX]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:10: -1- AC_SUBST([CXXFLAGS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXXFLAGS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CXXFLAGS$]) +m4trace:configure.ac:10: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:10: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:10: -1- AC_SUBST([CXX]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_CXX]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_CXX]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CXX$]) +m4trace:configure.ac:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:11: -1- AC_PROG_CC +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:11: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:11: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:11: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:12: -1- AC_SUBST([CPP]) +m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:12: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:12: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:12: -1- AC_SUBST([CPP]) +m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:16: -1- m4_include([wxwin.m4]) +m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_LIBBOOST_FILESYSTEM], [/* Define to 1 if you have the `boost_filesystem\' library + (-lboost_filesystem). */ +@%:@undef HAVE_LIBBOOST_FILESYSTEM]) +m4trace:configure.ac:39: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_FILESYSTEM]) +m4trace:configure.ac:39: -1- m4_pattern_allow([^HAVE_LIBBOOST_FILESYSTEM$]) +m4trace:configure.ac:46: -1- AH_OUTPUT([HAVE_LIBBOOST_SYSTEM], [/* Define to 1 if you have the `boost_system\' library (-lboost_system). */ +@%:@undef HAVE_LIBBOOST_SYSTEM]) +m4trace:configure.ac:46: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_SYSTEM]) +m4trace:configure.ac:46: -1- m4_pattern_allow([^HAVE_LIBBOOST_SYSTEM$]) +m4trace:configure.ac:55: -1- AC_CHECK_HEADERS([stdlib.h string.h wx/wx.h]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_WX_WX_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_WX_WX_H]) +m4trace:configure.ac:55: -1- AC_SUBST([GREP]) +m4trace:configure.ac:55: -1- AC_SUBST_TRACE([GREP]) +m4trace:configure.ac:55: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:55: -1- AC_SUBST([EGREP]) +m4trace:configure.ac:55: -1- AC_SUBST_TRACE([EGREP]) +m4trace:configure.ac:55: -1- m4_pattern_allow([^EGREP$]) +m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:55: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:55: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +@%:@undef STDC_HEADERS]) +m4trace:configure.ac:55: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:58: -1- AC_HEADER_STDBOOL +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */ +@%:@undef HAVE__BOOL]) +m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_STDBOOL_H$]) +m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */ +@%:@undef HAVE_STDBOOL_H]) +m4trace:configure.ac:59: -1- AC_C_INLINE +m4trace:configure.ac:59: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler + calls it, or to nothing if \'inline\' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif]) +m4trace:configure.ac:63: -1- AC_CONFIG_FILES([Makefile]) +m4trace:configure.ac:64: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:64: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:64: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:64: -1- AC_SUBST_TRACE([abs_top_builddir]) diff --git a/source/autom4te.cache/traces.1 b/source/autom4te.cache/traces.1 new file mode 100644 index 0000000..db0d25a --- /dev/null +++ b/source/autom4te.cache/traces.1 @@ -0,0 +1,314 @@ +m4trace:configure.ac:5: -1- AC_INIT([Xestia Address Book], [1.0], [bugs@xestia.co.uk]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:5: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:5: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:5: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:5: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:5: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:5: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:5: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:5: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:5: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:5: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:10: -1- AC_SUBST([CXX]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:10: -1- AC_SUBST([CXXFLAGS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXXFLAGS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CXXFLAGS$]) +m4trace:configure.ac:10: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:10: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:10: -1- AC_SUBST([CXX]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_CXX]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_CXX]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CXX$]) +m4trace:configure.ac:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:11: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:11: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:11: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:11: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:12: -1- AC_SUBST([CPP]) +m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:12: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:12: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:12: -1- AC_SUBST([CPP]) +m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_CONFIG_PATH]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CONFIG_PATH]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CONFIG_PATH$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_CPPFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CPPFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CPPFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_CFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_CXXFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CXXFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CXXFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_CFLAGS_ONLY]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CFLAGS_ONLY]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CFLAGS_ONLY$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_CXXFLAGS_ONLY]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CXXFLAGS_ONLY]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CXXFLAGS_ONLY$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_LIBS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_LIBS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_LIBS$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_LIBS_STATIC]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_LIBS_STATIC]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_LIBS_STATIC$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_VERSION]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_VERSION]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_VERSION$]) +m4trace:configure.ac:18: -1- AC_SUBST([WX_RESCOMP]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_RESCOMP]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_RESCOMP$]) +m4trace:configure.ac:36: -1- AH_OUTPUT([HAVE_LIBBOOST_FILESYSTEM], [/* Define to 1 if you have the `boost_filesystem\' library + (-lboost_filesystem). */ +@%:@undef HAVE_LIBBOOST_FILESYSTEM]) +m4trace:configure.ac:36: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_FILESYSTEM]) +m4trace:configure.ac:36: -1- m4_pattern_allow([^HAVE_LIBBOOST_FILESYSTEM$]) +m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBBOOST_SYSTEM], [/* Define to 1 if you have the `boost_system\' library (-lboost_system). */ +@%:@undef HAVE_LIBBOOST_SYSTEM]) +m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_SYSTEM]) +m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBBOOST_SYSTEM$]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:52: -1- AC_SUBST([GREP]) +m4trace:configure.ac:52: -1- AC_SUBST_TRACE([GREP]) +m4trace:configure.ac:52: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:52: -1- AC_SUBST([EGREP]) +m4trace:configure.ac:52: -1- AC_SUBST_TRACE([EGREP]) +m4trace:configure.ac:52: -1- m4_pattern_allow([^EGREP$]) +m4trace:configure.ac:52: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:52: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:52: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +@%:@undef STDC_HEADERS]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL]) +m4trace:configure.ac:55: -1- m4_pattern_allow([^HAVE__BOOL$]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */ +@%:@undef HAVE__BOOL]) +m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H]) +m4trace:configure.ac:55: -1- m4_pattern_allow([^HAVE_STDBOOL_H$]) +m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */ +@%:@undef HAVE_STDBOOL_H]) +m4trace:configure.ac:56: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler + calls it, or to nothing if \'inline\' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif]) +m4trace:configure.ac:60: -1- AC_CONFIG_FILES([Makefile]) +m4trace:configure.ac:61: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:61: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:61: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:61: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:61: -1- AC_SUBST_TRACE([abs_top_builddir]) diff --git a/source/autoscan.log b/source/autoscan.log new file mode 100644 index 0000000..e69de29 diff --git a/source/bitmapcode.helper b/source/bitmapcode.helper new file mode 100644 index 0000000000000000000000000000000000000000..0ac0a4a480b334453f59cf96d3aa2c6632cb3fa2 GIT binary patch literal 58704 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 literal 0 HcmV?d00001 diff --git a/source/bitmaps.h b/source/bitmaps.h new file mode 100644 index 0000000..7ed82d5 --- /dev/null +++ b/source/bitmaps.h @@ -0,0 +1,11 @@ +#include + +#ifndef BITMAPS_H +#define BITMAPS_H + +#include "bitmaps/misc.h" +#include "bitmaps/bigimgs.h" +#include "bitmaps/buttons.h" +#include "bitmaps/icons.h" + +#endif diff --git a/source/bitmaps/bigimgs.h b/source/bitmaps/bigimgs.h new file mode 100644 index 0000000..86b10b4 --- /dev/null +++ b/source/bitmaps/bigimgs.h @@ -0,0 +1,17 @@ +#include + +#ifndef BIGIMGS_H +#define BIGIMGS_H + +// List all CPP files in the directory. + +#include "bigimgs/contactpersonicon48.cpp" +#include "bigimgs/appicon48.cpp" +#include "bigimgs/appicon64.cpp" +#include "bigimgs/contactpersonicon.cpp" +#include "bigimgs/contactpersonicon64.cpp" +#include "bigimgs/appicon.cpp" +#include "bigimgs/aboutimage.cpp" + +#endif + diff --git a/source/bitmaps/bigimgs/.exportest.cpp.kate-swp b/source/bitmaps/bigimgs/.exportest.cpp.kate-swp new file mode 100644 index 0000000000000000000000000000000000000000..ad1b946d2b6d2c6f3971073669af67e4811a44f9 GIT binary patch literal 122 zcmZQzV36@nEJ;-eE>A2_aLdd|RnS!kOD!tS%+FIW)H4VUVgRZDVnHAla)omRKtc#E ZKaeYc;PL^v{0J^DkjsbQ@&LKKt^oN|57z(y literal 0 HcmV?d00001 diff --git a/source/bitmaps/bigimgs/aboutimage.cpp b/source/bitmaps/bigimgs/aboutimage.cpp new file mode 100644 index 0000000..f86c69f --- /dev/null +++ b/source/bitmaps/bigimgs/aboutimage.cpp @@ -0,0 +1,1409 @@ +#include + +#ifndef BIGIMGS_ABOUTIMAGE_CPP +#define BIGIMGS_ABOUTIMAGE_CPP + +static unsigned char bigimgs_aboutimage_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x01, 0x5e, 0x00, 0x00, 0x00, 0x64, +0x08, 0x06, 0x00, 0x00, 0x00, 0xce, 0xbd, 0x58, +0x65, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x20, 0x00, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xed, 0x9d, 0x77, +0x78, 0x15, 0x45, 0xf7, 0xc7, 0xbf, 0xb7, 0xa4, +0xdc, 0xf4, 0xde, 0x7b, 0x4f, 0x08, 0x9d, 0x00, +0x09, 0x04, 0xa4, 0x63, 0x28, 0xd2, 0x55, 0x50, +0x78, 0x29, 0x2a, 0xc5, 0xde, 0xcb, 0x8b, 0x62, +0x79, 0x05, 0x01, 0x29, 0xbe, 0xa2, 0x28, 0x28, +0x0a, 0x48, 0x93, 0xde, 0x9b, 0xa1, 0x05, 0x42, +0x20, 0x24, 0x21, 0x21, 0x05, 0xd2, 0x7b, 0xef, +0xfd, 0xde, 0xdc, 0xdd, 0xdf, 0x1f, 0x97, 0xdc, +0x64, 0x33, 0xbb, 0xc9, 0x4d, 0x80, 0xfb, 0xfa, +0x7b, 0x9c, 0x0f, 0xcf, 0x3e, 0x9a, 0xdd, 0xd9, +0xb3, 0xb3, 0x33, 0xb3, 0x67, 0x66, 0xce, 0x39, +0x33, 0x57, 0xf4, 0xd3, 0x90, 0x38, 0x16, 0x14, +0x0a, 0x85, 0x42, 0xd1, 0x1a, 0xe2, 0xff, 0x75, +0x06, 0x28, 0x14, 0x0a, 0xe5, 0x9f, 0x06, 0x55, +0xbc, 0x14, 0x0a, 0x85, 0xa2, 0x65, 0xa8, 0xe2, +0xa5, 0x50, 0x28, 0x14, 0x2d, 0x43, 0x15, 0x2f, +0x85, 0x42, 0xa1, 0x68, 0x19, 0x29, 0x40, 0x7d, +0x6b, 0x14, 0x0a, 0x85, 0xa2, 0x4d, 0xa4, 0x0c, +0x4b, 0x15, 0x2f, 0x85, 0x42, 0xa1, 0x68, 0x13, +0x29, 0x0b, 0xe6, 0x7f, 0x9d, 0x07, 0x0a, 0x85, +0x42, 0xf9, 0x47, 0x41, 0x47, 0xbc, 0x14, 0x0a, +0x85, 0xa2, 0x65, 0xa4, 0x2c, 0x4b, 0x47, 0xbc, +0x14, 0x0a, 0x85, 0xa2, 0x4d, 0xa4, 0x2c, 0x75, +0xae, 0x51, 0x28, 0x14, 0x8a, 0x56, 0x91, 0x32, +0x74, 0xc4, 0x4b, 0xa1, 0x50, 0x28, 0x5a, 0x45, +0xca, 0x52, 0x1b, 0x2f, 0x85, 0x42, 0xa1, 0x68, +0x15, 0x29, 0x43, 0xa3, 0x1a, 0x28, 0x14, 0x0a, +0x45, 0xab, 0x50, 0xe7, 0x1a, 0x85, 0x42, 0xa1, +0x68, 0x19, 0xea, 0x5c, 0xa3, 0x50, 0x28, 0x14, +0x2d, 0x43, 0x9d, 0x6b, 0x14, 0x0a, 0x85, 0xa2, +0x65, 0xa8, 0x73, 0x8d, 0x42, 0xa1, 0x50, 0xb4, +0x0c, 0x75, 0xae, 0x51, 0x28, 0x14, 0x8a, 0x96, +0xa1, 0x23, 0x5e, 0x0a, 0x85, 0x42, 0xd1, 0x32, +0x34, 0xaa, 0x81, 0x42, 0xa1, 0x50, 0xb4, 0x8c, +0x94, 0xa1, 0x51, 0x0d, 0x14, 0x0a, 0x85, 0xa2, +0x55, 0xe8, 0x88, 0x97, 0x42, 0xa1, 0x50, 0xb4, +0x0c, 0x8d, 0xe3, 0xa5, 0x50, 0x28, 0x14, 0x2d, +0x43, 0xe3, 0x78, 0x29, 0x14, 0x0a, 0x45, 0xcb, +0x50, 0x53, 0x03, 0x85, 0x42, 0xa1, 0x68, 0x19, +0xea, 0x5c, 0xa3, 0x50, 0x28, 0x14, 0x2d, 0x43, +0x47, 0xbc, 0x14, 0x0a, 0x85, 0xa2, 0x65, 0xa8, +0x73, 0x8d, 0x42, 0xa1, 0x50, 0xb4, 0x0c, 0x75, +0xae, 0x51, 0x28, 0x14, 0x8a, 0x96, 0xa1, 0x4b, +0x86, 0x29, 0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x4d, +0x72, 0x28, 0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x11, +0xef, 0x63, 0x46, 0xaa, 0x27, 0x41, 0x4b, 0xb3, +0xf2, 0x7f, 0x9d, 0x8d, 0xbf, 0x3d, 0xb6, 0x5e, +0xa6, 0x08, 0x7e, 0xce, 0x0b, 0x65, 0xd9, 0xb5, +0x88, 0x3e, 0x92, 0x89, 0xa6, 0x3a, 0xc5, 0x23, +0xcb, 0x34, 0xb6, 0xd2, 0xc7, 0xd0, 0x39, 0x5e, +0x90, 0xea, 0x89, 0x11, 0xb9, 0x3f, 0x0d, 0x55, +0x05, 0x0d, 0x8f, 0x21, 0xa7, 0x94, 0x7f, 0x0a, +0x62, 0x89, 0x08, 0xbd, 0xc7, 0x3b, 0xc3, 0x67, +0x98, 0x1d, 0x62, 0x4f, 0x64, 0x23, 0x2d, 0xaa, +0xf8, 0x89, 0x3d, 0x4b, 0xf4, 0xb6, 0xf7, 0x6e, +0xaa, 0x79, 0x1f, 0x03, 0xc3, 0xe6, 0xf9, 0x60, +0xd8, 0x0b, 0x3e, 0x30, 0xb5, 0x35, 0x40, 0xf4, +0x91, 0x0c, 0xfc, 0xb5, 0x35, 0x11, 0x35, 0xa5, +0x8d, 0xff, 0xeb, 0x6c, 0xfd, 0x2d, 0xf1, 0x18, +0x64, 0x83, 0x15, 0x7b, 0xc6, 0xa9, 0xff, 0xae, +0xc8, 0xab, 0xc3, 0xd7, 0x63, 0x8e, 0xe1, 0x51, +0xc6, 0x00, 0x7a, 0x06, 0x52, 0xac, 0x8a, 0x9c, +0x09, 0x5d, 0x99, 0x14, 0x00, 0xc0, 0x28, 0x59, +0x7c, 0x3d, 0xe6, 0x18, 0x2a, 0x0b, 0xea, 0x1f, +0x35, 0xbb, 0x94, 0x7f, 0x08, 0x2f, 0x6c, 0x1c, +0x8e, 0xfe, 0x93, 0x5c, 0xd5, 0x7f, 0x9f, 0x58, +0x13, 0x83, 0xcb, 0xbf, 0x26, 0x3f, 0x91, 0x67, +0xf5, 0xc8, 0xd4, 0x60, 0xe7, 0x65, 0x8a, 0xc1, +0x33, 0xbd, 0x60, 0xe7, 0x6d, 0x8a, 0xb8, 0xd3, +0xd9, 0xb8, 0x75, 0x38, 0x5d, 0xa3, 0xfb, 0x6c, +0x3c, 0x4c, 0xf1, 0xd4, 0x22, 0x7f, 0x18, 0x5b, +0xe8, 0x23, 0xfa, 0x78, 0x26, 0xee, 0x5d, 0xcc, +0x85, 0xb2, 0xe5, 0xff, 0x87, 0xa9, 0x43, 0x24, +0x16, 0x81, 0x65, 0xf8, 0x35, 0x83, 0xe7, 0x60, +0x5b, 0xcc, 0xf8, 0x2c, 0x48, 0xfd, 0xf7, 0xf0, +0x17, 0x7d, 0x21, 0xd5, 0x97, 0x60, 0xff, 0x27, +0x91, 0xda, 0xca, 0x5e, 0x8f, 0xd1, 0x33, 0xd4, +0xc1, 0xa0, 0x67, 0xdc, 0x11, 0x34, 0xdd, 0x13, +0xe6, 0x0e, 0x86, 0x88, 0x3d, 0x99, 0x85, 0xa8, +0x43, 0x69, 0x28, 0x7c, 0x50, 0xf5, 0xc4, 0x9e, +0xd9, 0x7f, 0x8a, 0x2b, 0xe7, 0x6f, 0x0b, 0x27, +0x23, 0xb8, 0xf4, 0xb7, 0x44, 0x66, 0x4c, 0x69, +0x8f, 0x65, 0xf6, 0x1a, 0xe7, 0xa4, 0x56, 0xba, +0x80, 0x6a, 0xf4, 0xd2, 0x77, 0x92, 0x0b, 0xc2, +0xb7, 0x25, 0xf6, 0x58, 0xe6, 0x3f, 0x15, 0x91, +0x58, 0x04, 0x8f, 0x41, 0x36, 0xf0, 0x1f, 0xe1, +0x08, 0x1d, 0x3d, 0x09, 0x6f, 0x1a, 0x65, 0x0b, +0x83, 0xb2, 0xec, 0x5a, 0x14, 0xa7, 0x57, 0x23, +0xf7, 0x5e, 0x39, 0xe4, 0x8d, 0x2d, 0x5a, 0xce, +0xe5, 0xe3, 0x45, 0x57, 0x26, 0x45, 0xaf, 0xd1, +0x8e, 0x9c, 0x73, 0x03, 0xa6, 0xba, 0x21, 0xfc, +0xd7, 0x27, 0xd3, 0x7e, 0xba, 0x6d, 0x6a, 0xd0, +0x37, 0xd2, 0xc1, 0x5b, 0x87, 0xc2, 0xd4, 0x8d, +0xdc, 0x7f, 0x84, 0x23, 0xac, 0x5c, 0x8c, 0x71, +0x6a, 0x63, 0x6c, 0xa7, 0xf7, 0xd9, 0x79, 0x9b, +0xe1, 0xb5, 0x3d, 0x13, 0x60, 0x68, 0xa6, 0x07, +0x00, 0x08, 0x1c, 0xeb, 0x8c, 0xa3, 0x5f, 0x47, +0xe3, 0xf2, 0x8e, 0xa4, 0x9e, 0xe5, 0x5c, 0x4b, +0x98, 0xd9, 0x1b, 0x62, 0xc2, 0x8a, 0x3e, 0xe8, +0x3f, 0xc9, 0x0d, 0xf7, 0x23, 0x0a, 0x70, 0x6e, +0x4b, 0x3c, 0x0a, 0x52, 0x2a, 0x39, 0x69, 0x42, +0x5f, 0xf4, 0x25, 0xee, 0x1b, 0x38, 0xd5, 0x1d, +0xc7, 0xd6, 0x44, 0xa3, 0xb1, 0x46, 0xae, 0xad, +0xac, 0xf6, 0x88, 0xf9, 0x1b, 0x43, 0x11, 0xf0, +0x54, 0x5b, 0x83, 0x1b, 0xb9, 0xd0, 0x1f, 0x43, +0xe7, 0x78, 0xe1, 0x9b, 0x49, 0x27, 0x50, 0x91, +0x5f, 0xf7, 0x44, 0x9e, 0xe9, 0x39, 0xc4, 0x96, +0x3c, 0x37, 0xd8, 0x16, 0x19, 0x77, 0x4a, 0x7a, +0x2e, 0x73, 0x30, 0x29, 0xd3, 0x6b, 0xb0, 0x2d, +0xfe, 0xfa, 0xf9, 0x5e, 0x8f, 0x65, 0xfe, 0x53, +0x79, 0xeb, 0xc0, 0xd3, 0x70, 0xe9, 0x63, 0xa5, +0x71, 0xfa, 0x9a, 0xd2, 0x46, 0x1c, 0xfd, 0xfa, +0x36, 0x62, 0x4e, 0x66, 0x3d, 0xb9, 0x4c, 0x3d, +0x61, 0x1c, 0x03, 0xcc, 0x39, 0x1d, 0xb7, 0xea, +0x9c, 0x05, 0xf4, 0x0c, 0xa5, 0x8f, 0xc5, 0x0c, +0xd6, 0x91, 0x6e, 0x8f, 0x78, 0xfb, 0x4f, 0x76, +0x23, 0x32, 0x38, 0x6e, 0x79, 0x6f, 0xa4, 0xdd, +0x29, 0x42, 0xf2, 0xd5, 0x7c, 0xfe, 0x87, 0xe8, +0x4a, 0xb0, 0x60, 0x53, 0xa8, 0x5a, 0xe9, 0xb6, +0x32, 0x6c, 0xae, 0x0f, 0xc2, 0x77, 0xfc, 0xbd, +0x3f, 0x8c, 0xb1, 0xcb, 0x02, 0x11, 0xfc, 0xac, +0x37, 0x00, 0xa0, 0xef, 0x44, 0x57, 0x18, 0x98, +0xe9, 0xe1, 0xbf, 0x2f, 0x9e, 0xe5, 0xa4, 0x29, +0x4e, 0xaf, 0x26, 0xee, 0xab, 0x2d, 0x6b, 0x44, +0x43, 0x5d, 0x33, 0xfe, 0xce, 0x71, 0xd2, 0xc3, +0xe7, 0xfa, 0x71, 0x94, 0x6e, 0x2b, 0x7a, 0x86, +0x3a, 0x78, 0x7e, 0x4d, 0x08, 0xbe, 0x9f, 0x7f, +0xf6, 0x91, 0xa6, 0xff, 0x42, 0x88, 0xc5, 0x22, +0xe2, 0x9c, 0x48, 0x0c, 0x3c, 0x8a, 0xa3, 0x57, +0xc4, 0x37, 0x30, 0x7b, 0x44, 0x99, 0xff, 0x44, +0x3c, 0x06, 0xda, 0x74, 0x4b, 0xe9, 0x02, 0x80, +0x89, 0xb5, 0x0c, 0xf3, 0x37, 0x8e, 0x80, 0x77, +0xb0, 0x1d, 0xf6, 0x7e, 0x72, 0xe3, 0x09, 0xe5, +0xec, 0xc9, 0xc2, 0x8a, 0x04, 0x1a, 0xba, 0x84, +0x7d, 0x22, 0x6d, 0xa8, 0xdb, 0x23, 0xde, 0xe6, +0x06, 0x7e, 0xed, 0x3f, 0x6f, 0xcd, 0x70, 0xac, +0x9e, 0x74, 0x14, 0x75, 0x15, 0x4d, 0xc4, 0xb5, +0xa9, 0xef, 0x0d, 0x84, 0xbd, 0x8f, 0x39, 0xaf, +0xac, 0xbf, 0xb3, 0x73, 0x4f, 0x2c, 0x11, 0xa3, +0xdf, 0x44, 0xee, 0xb4, 0xd8, 0x6b, 0xb0, 0x2d, +0x8c, 0xad, 0x65, 0xa8, 0x29, 0x69, 0x73, 0xdc, +0x44, 0xec, 0x4d, 0xc1, 0xd8, 0x57, 0x02, 0x21, +0x96, 0x88, 0xd5, 0xe7, 0xae, 0xef, 0xbb, 0x0f, +0x46, 0xf9, 0xf7, 0xfd, 0xe8, 0xa5, 0xba, 0x12, +0x4c, 0x79, 0x67, 0x80, 0xe0, 0x75, 0xef, 0xa1, +0x76, 0xf0, 0x1f, 0xe1, 0x88, 0xc4, 0xcb, 0x79, +0x5a, 0xc9, 0x0f, 0x0b, 0x3c, 0x5a, 0x5b, 0x10, +0xb8, 0xf7, 0xef, 0xdc, 0xbe, 0xfe, 0x8e, 0xf8, +0x0d, 0x77, 0xe8, 0xf1, 0xbd, 0xc1, 0x73, 0x7c, +0x90, 0x76, 0xab, 0x08, 0xb7, 0x8e, 0x6a, 0x66, +0x7a, 0xfc, 0x5b, 0x21, 0xd0, 0x4c, 0x58, 0x96, +0x7d, 0x22, 0x6d, 0xa8, 0xdb, 0x4b, 0x86, 0xe3, +0x2f, 0x64, 0xa1, 0xae, 0x72, 0x30, 0x8c, 0xcc, +0xf5, 0x39, 0xe7, 0x4d, 0xac, 0x65, 0x98, 0xfb, +0xf5, 0x30, 0xfc, 0xf4, 0xca, 0x05, 0xce, 0x79, +0xff, 0x50, 0x47, 0x8c, 0x5c, 0x10, 0xc0, 0x2b, +0xeb, 0xda, 0x1f, 0x29, 0xf8, 0x3b, 0x2f, 0x59, +0x96, 0x19, 0xeb, 0x12, 0xef, 0x29, 0x12, 0x8b, +0x60, 0xe9, 0x64, 0x88, 0xea, 0xe2, 0xb6, 0x69, +0x78, 0x45, 0x41, 0x2d, 0xbe, 0x18, 0x73, 0x10, +0xa3, 0x16, 0x05, 0xc2, 0xc6, 0xcd, 0x04, 0x97, +0x7f, 0x4f, 0x42, 0xd2, 0x95, 0xdc, 0x27, 0x32, +0x5a, 0x7c, 0x5c, 0x04, 0x8e, 0x71, 0x85, 0xcc, +0x44, 0xb7, 0xd3, 0x34, 0x83, 0x9e, 0xf1, 0xc0, +0xbd, 0x4b, 0x39, 0xda, 0xc9, 0x10, 0xcb, 0x3e, +0x52, 0x5b, 0xe0, 0x2d, 0xea, 0x47, 0x94, 0xf9, +0x4f, 0x44, 0x44, 0x4e, 0x46, 0xba, 0xc5, 0xac, +0xcf, 0x86, 0xe2, 0xf6, 0xf1, 0x34, 0x30, 0xca, +0xbf, 0x71, 0xe3, 0xe7, 0x81, 0x15, 0x18, 0xd5, +0xb2, 0x4f, 0xa8, 0x0d, 0x75, 0x7b, 0x93, 0x9c, +0x86, 0x7a, 0x39, 0x76, 0xbe, 0x77, 0x05, 0xcb, +0xb6, 0x4d, 0x20, 0x2a, 0xa9, 0xf7, 0x58, 0x17, +0x84, 0x3c, 0xe7, 0x8b, 0x88, 0x7d, 0x29, 0x00, +0x00, 0x43, 0x33, 0x3d, 0xbc, 0xb0, 0x76, 0x04, +0x6f, 0x65, 0x26, 0x5e, 0xc9, 0x45, 0xc4, 0xfe, +0xe4, 0xbf, 0xf1, 0x44, 0x1c, 0x10, 0x2a, 0x1b, +0x16, 0x2c, 0x71, 0xad, 0x24, 0xb7, 0x06, 0xfb, +0x3f, 0xff, 0xff, 0x33, 0xcd, 0x1a, 0x32, 0xc3, +0x9b, 0x38, 0xa7, 0x68, 0x6a, 0x81, 0x8e, 0x7e, +0x9b, 0x19, 0xa9, 0xcf, 0x58, 0x57, 0xe8, 0x1a, +0x4a, 0xd1, 0x54, 0xff, 0x78, 0x6d, 0x5c, 0x7c, +0xe6, 0x17, 0xbe, 0x32, 0xed, 0xae, 0x54, 0xbe, +0x33, 0x74, 0x13, 0xa8, 0xee, 0x21, 0x54, 0x5a, +0xbf, 0xbc, 0x1e, 0x8e, 0x16, 0xb9, 0x2a, 0x4c, +0xd2, 0xd1, 0xcf, 0x02, 0x7d, 0xc7, 0xbb, 0xc1, +0x39, 0xc0, 0x92, 0x48, 0x27, 0x33, 0xd6, 0x85, +0xb5, 0xbb, 0x09, 0x0a, 0xd3, 0x9e, 0x9c, 0x73, +0xf6, 0x49, 0x20, 0xd4, 0x4e, 0x98, 0x47, 0x6e, +0x97, 0xfc, 0xf4, 0x68, 0x93, 0x9c, 0x84, 0xf0, +0x6c, 0xfc, 0xf5, 0x6b, 0x3c, 0xc6, 0x2e, 0xee, +0x43, 0x5c, 0x9b, 0xf5, 0xef, 0xa1, 0x78, 0x70, +0x33, 0x1f, 0xc5, 0x99, 0xd5, 0x98, 0xf7, 0x75, +0x28, 0x4c, 0x6d, 0x0c, 0x88, 0x34, 0xd5, 0xc5, +0x0d, 0xf8, 0xed, 0xed, 0x4b, 0x60, 0x18, 0xcd, +0x9e, 0x2d, 0x12, 0x01, 0x76, 0x5e, 0xe6, 0xb0, +0x71, 0x37, 0x45, 0x6e, 0x62, 0x59, 0x8f, 0x9d, +0x3e, 0xba, 0x32, 0x29, 0x6c, 0x3d, 0xcc, 0x60, +0xed, 0x6a, 0x82, 0xc6, 0x1a, 0x39, 0x2a, 0xf2, +0x6b, 0x51, 0x92, 0x55, 0x2d, 0x38, 0x32, 0x15, +0x2a, 0x1b, 0xa1, 0x5e, 0x50, 0x24, 0x02, 0x74, +0x65, 0x3a, 0x82, 0xe6, 0x18, 0x3e, 0x64, 0x26, +0xba, 0xf0, 0x18, 0x60, 0x8b, 0xe6, 0x7a, 0x05, +0x72, 0x13, 0xcb, 0xd0, 0xdc, 0x40, 0x7a, 0x87, +0x8d, 0xcc, 0xf5, 0x51, 0x57, 0x49, 0x9a, 0x70, +0x7a, 0x8a, 0xb1, 0xa5, 0x0c, 0x01, 0x23, 0xb8, +0xb6, 0xdd, 0x8a, 0x82, 0x3a, 0xdc, 0x3d, 0x9f, +0x85, 0x51, 0xff, 0x0a, 0x54, 0x9f, 0xd3, 0x95, +0x49, 0xd1, 0x77, 0x82, 0x2b, 0x6e, 0x1e, 0x7a, +0xd0, 0x2d, 0xf9, 0x22, 0xb1, 0x08, 0x0e, 0xde, +0xe6, 0xb0, 0x74, 0x32, 0x06, 0x00, 0x14, 0x3c, +0xa8, 0x40, 0x79, 0x5e, 0x6d, 0xa7, 0x33, 0x00, +0x16, 0x5d, 0x8f, 0x2c, 0xac, 0x5c, 0x4c, 0x60, +0xed, 0x62, 0x02, 0x99, 0xb1, 0x2e, 0x0a, 0xd3, +0x2a, 0x51, 0x92, 0x59, 0xad, 0x8e, 0x8a, 0xe9, +0x4e, 0x1d, 0x1a, 0x9a, 0xeb, 0xa3, 0x9e, 0xa7, +0x3c, 0x0d, 0x4c, 0xf5, 0xd0, 0x58, 0xd3, 0xac, +0xd1, 0x4c, 0xc5, 0xd6, 0xdd, 0x14, 0xf6, 0x3e, +0xe6, 0xc8, 0x4f, 0xa9, 0x40, 0x69, 0x76, 0x4d, +0xd7, 0x37, 0xf0, 0xa0, 0xa3, 0x27, 0x81, 0x8d, +0xbb, 0x29, 0x6c, 0xdd, 0xcd, 0xd0, 0xdc, 0xa0, +0x40, 0x79, 0x7e, 0x2d, 0x8a, 0x33, 0xaa, 0x05, +0xa3, 0x67, 0x3a, 0x22, 0x33, 0xd1, 0x85, 0xbd, +0x97, 0x39, 0x2c, 0x1c, 0x8c, 0x50, 0x53, 0xd6, +0x88, 0xb2, 0x9c, 0x1a, 0x54, 0x14, 0x3c, 0x9a, +0x43, 0x54, 0xc8, 0x27, 0x91, 0x10, 0x9e, 0xa5, +0x6e, 0x9b, 0x71, 0xe7, 0x33, 0x71, 0xea, 0xbb, +0x3b, 0x98, 0xf3, 0x59, 0x08, 0x46, 0x2d, 0x08, +0x24, 0xd2, 0x3a, 0x07, 0x5a, 0xa2, 0x20, 0xb5, +0x42, 0xa3, 0xe7, 0x89, 0xc4, 0x22, 0x38, 0xfa, +0x5a, 0xc0, 0xd2, 0xd9, 0x18, 0x39, 0xf1, 0xa5, +0xa8, 0x2c, 0x7a, 0xf4, 0xf0, 0x3f, 0x99, 0xb1, +0x2e, 0xdc, 0xfb, 0xdb, 0x40, 0xd1, 0xa4, 0x44, +0x56, 0x7c, 0x29, 0x14, 0x4d, 0x1a, 0x44, 0x5c, +0x08, 0x9a, 0xaa, 0x18, 0xc1, 0x76, 0x29, 0x96, +0x88, 0xa0, 0x67, 0xa8, 0xd3, 0x23, 0x07, 0x7a, +0x8f, 0x77, 0x27, 0x3b, 0xb2, 0xe6, 0x26, 0xbc, +0x82, 0xec, 0xe0, 0xd6, 0xc7, 0x86, 0x73, 0x5e, +0x57, 0x26, 0xc5, 0xc2, 0x4d, 0xa3, 0x71, 0x7d, +0x7f, 0x32, 0xfa, 0x4d, 0x70, 0x23, 0xee, 0x63, +0x19, 0x16, 0xbf, 0xbc, 0x79, 0x11, 0xb5, 0x15, +0x5d, 0x07, 0xb7, 0x87, 0x3e, 0x1f, 0x80, 0xbe, +0xe3, 0xdd, 0xe0, 0x31, 0xc0, 0x16, 0x06, 0x26, +0x6d, 0x8e, 0xb9, 0xaa, 0xa2, 0x7a, 0xa4, 0xdf, +0x29, 0x42, 0xf4, 0xc9, 0x34, 0xc4, 0x9e, 0xcd, +0xec, 0x52, 0x8e, 0xf7, 0x60, 0x7b, 0x4c, 0xff, +0x60, 0x28, 0xdc, 0xfb, 0xdb, 0x12, 0xa3, 0xef, +0xca, 0xa2, 0x7a, 0xc4, 0x9d, 0xcb, 0xc4, 0xd9, +0x1f, 0x62, 0x50, 0xfd, 0xd0, 0x6e, 0x3b, 0xf2, +0x85, 0x5e, 0x18, 0x36, 0xc7, 0x0f, 0xe6, 0x0e, +0x46, 0xbc, 0xf2, 0x96, 0x6d, 0x9b, 0x80, 0x16, +0xb9, 0x12, 0x39, 0xf7, 0x4a, 0x71, 0xf5, 0x8f, +0x24, 0x24, 0x84, 0x67, 0x23, 0x64, 0x8e, 0x1f, +0x9e, 0x5e, 0xde, 0x1f, 0xa6, 0x36, 0x86, 0xb8, +0x75, 0x2c, 0x15, 0x87, 0x57, 0xdf, 0x44, 0x43, +0x4d, 0x33, 0xef, 0xfd, 0x3a, 0xfa, 0x52, 0x4c, +0x79, 0x73, 0x10, 0x7a, 0x8d, 0x74, 0x86, 0x83, +0x8f, 0x05, 0x44, 0x0f, 0x9d, 0x4d, 0x8c, 0x92, +0x45, 0x4e, 0x62, 0x29, 0x7e, 0x7f, 0xf7, 0x12, +0x0a, 0x53, 0x2b, 0xe1, 0xde, 0xcf, 0x06, 0xcf, +0x7f, 0x39, 0x02, 0x2e, 0x81, 0x56, 0xa8, 0x2a, +0xaa, 0xc7, 0x4f, 0xcb, 0xcf, 0x23, 0x33, 0xf6, +0xd1, 0x83, 0xba, 0x83, 0xa6, 0x7a, 0x72, 0xec, +0xd1, 0x00, 0x10, 0x7b, 0x26, 0x03, 0x71, 0xe7, +0x33, 0x39, 0x8a, 0x17, 0x00, 0x06, 0x4f, 0xf3, +0x42, 0xe4, 0xc1, 0x14, 0x8d, 0xe4, 0x8a, 0xc4, +0x22, 0x4c, 0x58, 0xda, 0x0f, 0x23, 0x5f, 0xe8, +0x05, 0x73, 0x7b, 0x6e, 0xd9, 0x35, 0xd5, 0xc9, +0x71, 0x71, 0x7b, 0x3c, 0xce, 0xfd, 0x14, 0xc7, +0x7f, 0x73, 0x27, 0x53, 0xba, 0x81, 0x61, 0x9e, +0x98, 0xb0, 0xac, 0x3f, 0x5c, 0x02, 0xb9, 0x4e, +0x1f, 0x65, 0x0b, 0x83, 0xe8, 0x13, 0x69, 0x38, +0xbc, 0xe6, 0x26, 0xf8, 0xc7, 0x6a, 0x5c, 0x99, +0x03, 0xc3, 0x3c, 0x11, 0xf6, 0xda, 0x00, 0x38, +0xfa, 0x59, 0xa2, 0x34, 0xbb, 0x1a, 0xc7, 0xbe, +0xbd, 0x8d, 0xe8, 0x13, 0x69, 0x18, 0x32, 0xcd, +0x07, 0x63, 0x97, 0xf4, 0x81, 0x53, 0x80, 0x15, +0xca, 0x73, 0x6b, 0x70, 0x7a, 0x4b, 0x0c, 0x6e, +0x1c, 0x20, 0xdf, 0x79, 0xf0, 0x34, 0x6f, 0x0c, +0x9a, 0xe4, 0x09, 0x8f, 0x81, 0x76, 0x1c, 0x13, +0x54, 0x6d, 0x79, 0x23, 0xd2, 0xa3, 0x8b, 0x10, +0x7b, 0x2e, 0x13, 0x51, 0x47, 0xba, 0xee, 0xa4, +0x5c, 0x7b, 0x5b, 0x63, 0xc6, 0x87, 0x43, 0xe1, +0x33, 0xd4, 0x41, 0x5d, 0xf7, 0xad, 0xd4, 0x94, +0x35, 0xe2, 0xee, 0x85, 0x4c, 0x9c, 0xdb, 0x1a, +0x87, 0xb2, 0x1c, 0x52, 0xa1, 0x8b, 0x44, 0xc0, +0xc0, 0x49, 0x9e, 0x98, 0xf2, 0x56, 0x10, 0x6c, +0x3d, 0xcc, 0x88, 0xeb, 0x45, 0x69, 0x95, 0xb8, +0x73, 0x3a, 0x03, 0xe7, 0x7f, 0x8a, 0xe5, 0xed, +0xc4, 0xbb, 0xa4, 0x1b, 0x0a, 0x28, 0x62, 0x6f, +0x12, 0xaf, 0xe2, 0x6d, 0xac, 0x6d, 0xee, 0xb4, +0x13, 0x15, 0x4b, 0x44, 0x18, 0xb3, 0xa8, 0x0f, +0x02, 0x46, 0x3a, 0xc3, 0xbd, 0x9f, 0x2d, 0xf4, +0x0d, 0x75, 0xd4, 0xd7, 0x2a, 0x8b, 0xea, 0x91, +0x71, 0xa7, 0x08, 0xd7, 0xf7, 0xa7, 0x20, 0xe9, +0x5a, 0xae, 0xc6, 0xd9, 0xb6, 0x76, 0x35, 0xc5, +0x84, 0xa5, 0xfd, 0xe0, 0x31, 0xc0, 0x16, 0xf6, +0xde, 0x16, 0xea, 0xef, 0x5c, 0xd9, 0xc2, 0x20, +0x37, 0xa9, 0x0c, 0xe9, 0xb7, 0x8b, 0x70, 0x66, +0x4b, 0x8c, 0xe0, 0x00, 0x46, 0x78, 0x90, 0xc5, +0xaf, 0x78, 0x47, 0xbe, 0xd0, 0x0b, 0xd3, 0xde, +0x1f, 0x02, 0x1d, 0x3d, 0x09, 0xae, 0xef, 0x4f, +0xc1, 0xbe, 0x55, 0x11, 0x1a, 0x77, 0x98, 0x00, +0x20, 0x7a, 0xc9, 0xed, 0x87, 0x1e, 0x8f, 0xa3, +0xad, 0x5d, 0x4c, 0xb0, 0xf2, 0xd4, 0x6c, 0xe8, +0x1b, 0x75, 0x6e, 0x2b, 0x6c, 0xcf, 0x89, 0xcd, +0xd1, 0x38, 0xb1, 0xe9, 0x76, 0xa7, 0x69, 0x0c, +0x4c, 0xf5, 0xb0, 0x70, 0xfd, 0x68, 0xf4, 0x1d, +0xeb, 0xd6, 0xa5, 0xbc, 0x6b, 0xfb, 0x92, 0xb0, +0x6f, 0x55, 0x04, 0x14, 0x02, 0xab, 0xc5, 0x16, +0xae, 0x1f, 0x8d, 0xe0, 0x99, 0x64, 0xb8, 0x57, +0x47, 0x6a, 0x2b, 0x1a, 0xb1, 0xed, 0xf5, 0x8b, +0x90, 0x37, 0x28, 0xf0, 0xe1, 0xe1, 0x19, 0x5d, +0xa6, 0x6f, 0xa5, 0xba, 0xa4, 0x01, 0xab, 0x26, +0xec, 0xc3, 0xda, 0x9b, 0x0b, 0x38, 0x31, 0x8f, +0x7f, 0xfc, 0xfb, 0x2a, 0xae, 0xfc, 0x41, 0xc6, +0x00, 0xda, 0xb8, 0x9a, 0x62, 0xe9, 0xd6, 0x09, +0x70, 0xf2, 0x23, 0xa7, 0x69, 0xad, 0x34, 0xd5, +0xc9, 0xb1, 0xed, 0x8d, 0x8b, 0x98, 0xfc, 0xfa, +0x20, 0xb8, 0xf7, 0x6d, 0xeb, 0xd8, 0x1e, 0x44, +0x15, 0x60, 0xfd, 0x73, 0xc7, 0x34, 0xce, 0x9b, +0x10, 0x2b, 0x4f, 0xcd, 0x86, 0x73, 0x00, 0x57, +0x89, 0xad, 0x99, 0x79, 0x18, 0x99, 0x71, 0x25, +0x58, 0x7f, 0x6b, 0x01, 0x8c, 0x2d, 0x65, 0xea, +0xf3, 0x2c, 0xc3, 0xe2, 0x83, 0x90, 0x5d, 0xa8, +0x2a, 0xee, 0x7c, 0x24, 0xa2, 0xa3, 0x27, 0xc1, +0x92, 0xcd, 0xe3, 0xd0, 0x7f, 0x82, 0x7b, 0xa7, +0xe9, 0xca, 0xf3, 0x6a, 0x61, 0x60, 0xaa, 0x07, +0x99, 0x31, 0xb7, 0xcd, 0x1c, 0xdb, 0x70, 0x0b, +0xa7, 0xfe, 0x7b, 0x87, 0x48, 0x1f, 0xf6, 0xea, +0x40, 0x4c, 0x7b, 0x67, 0x70, 0xa7, 0x32, 0x9b, +0xea, 0x15, 0xa8, 0x2d, 0x6f, 0x84, 0xb5, 0x8b, +0x09, 0xe7, 0x7c, 0xe2, 0xd5, 0x5c, 0x6c, 0x5e, +0x70, 0x12, 0x00, 0x60, 0x6a, 0x63, 0x80, 0x35, +0xd7, 0x5f, 0x84, 0x44, 0xda, 0xd6, 0xe1, 0x54, +0x97, 0x34, 0xe0, 0xc8, 0xba, 0x28, 0x2c, 0x58, +0x3b, 0x8a, 0xd3, 0x21, 0xb3, 0x0c, 0x8b, 0x95, +0x63, 0xf6, 0xa2, 0x24, 0x4b, 0x15, 0xad, 0xa2, +0x67, 0xa0, 0x83, 0x79, 0x5f, 0x8d, 0xc0, 0xd0, +0xe9, 0x3e, 0x9d, 0xe6, 0x03, 0x00, 0xa2, 0x4f, +0xa5, 0x63, 0xe7, 0x07, 0x97, 0x04, 0xcd, 0x33, +0xb3, 0x3f, 0x09, 0xc1, 0xd8, 0xc5, 0x7d, 0xbb, +0xb4, 0xa5, 0x36, 0xd5, 0xc9, 0xb1, 0xe3, 0xdd, +0x70, 0xc4, 0x9e, 0x6b, 0x1b, 0x58, 0xe8, 0xca, +0xa4, 0x78, 0x73, 0xe7, 0x64, 0x78, 0x0d, 0xb2, +0xef, 0x32, 0x1f, 0x45, 0xe9, 0x55, 0xf8, 0xe1, +0x95, 0x33, 0x28, 0x4a, 0xef, 0xde, 0x94, 0x7f, +0xda, 0x3b, 0x83, 0x11, 0xf6, 0xea, 0x40, 0xe2, +0xfc, 0x6b, 0xbd, 0xb6, 0x13, 0x33, 0xb9, 0xde, +0xa3, 0x5c, 0xf0, 0xda, 0xaf, 0x93, 0x38, 0xe7, +0x58, 0x16, 0x78, 0x7b, 0xc0, 0xaf, 0xa8, 0xaf, +0xe2, 0x1f, 0x74, 0x98, 0xda, 0x18, 0xe0, 0xa5, +0xef, 0xc6, 0xc1, 0x67, 0x48, 0xe7, 0x4e, 0x3c, +0x96, 0x05, 0xce, 0xfc, 0x10, 0x83, 0xe3, 0x1b, +0x6f, 0x75, 0x69, 0x2f, 0x1e, 0xf0, 0xb4, 0x07, +0xfe, 0xb5, 0x76, 0x54, 0x97, 0x7a, 0xa8, 0xb2, +0xa8, 0x0e, 0x3f, 0xad, 0x38, 0x8f, 0x8c, 0x18, +0x72, 0xf0, 0xe2, 0x3d, 0xd8, 0x01, 0xef, 0xed, +0x7f, 0x86, 0x38, 0xff, 0x66, 0xbf, 0x5f, 0xd1, +0x50, 0xdd, 0xf6, 0x2e, 0x22, 0x11, 0x30, 0xef, +0x3f, 0x23, 0x31, 0xe2, 0x79, 0xae, 0xdf, 0x6a, +0xf3, 0x82, 0x93, 0x48, 0xbc, 0xaa, 0x79, 0x47, +0x21, 0x6e, 0xd5, 0xe8, 0x3d, 0x39, 0x4a, 0xb2, +0xab, 0xf0, 0xfb, 0x87, 0x97, 0x34, 0x7e, 0xd8, +0x83, 0xa8, 0x02, 0x9c, 0xd8, 0x7c, 0xab, 0x53, +0x99, 0xce, 0xbd, 0x2c, 0xb1, 0xf2, 0xd4, 0x6c, +0x8d, 0x94, 0x2e, 0x00, 0x84, 0x3e, 0x17, 0x80, +0x0f, 0x8f, 0xcc, 0x80, 0x95, 0xb3, 0x11, 0x21, +0x6b, 0xfc, 0x4b, 0x7d, 0x35, 0x52, 0xba, 0x00, +0x60, 0x6c, 0x21, 0xc3, 0xfc, 0xd5, 0x23, 0xe1, +0x3f, 0x9c, 0x0c, 0xaf, 0xea, 0x0c, 0x53, 0x1b, +0x03, 0x8c, 0x98, 0x1b, 0x40, 0x04, 0x9a, 0x07, +0x4d, 0xf1, 0x22, 0xf2, 0xe3, 0x3d, 0xd8, 0x0e, +0x9f, 0x9c, 0x98, 0xd5, 0xa9, 0xd2, 0x05, 0x00, +0x7d, 0x23, 0x5d, 0xbc, 0xf6, 0x4b, 0x18, 0x47, +0xe9, 0x02, 0x80, 0x9d, 0xa7, 0x59, 0x8f, 0xeb, +0xaa, 0xf5, 0x70, 0xf0, 0x35, 0x27, 0x94, 0x6e, +0x55, 0x51, 0x3d, 0x32, 0x62, 0x0a, 0xc1, 0x28, +0x95, 0x88, 0x3b, 0xcf, 0x9d, 0x41, 0x88, 0xc4, +0x22, 0x0c, 0x9e, 0x4a, 0xbe, 0x4b, 0xfb, 0x43, +0x66, 0xa2, 0x83, 0xb7, 0x76, 0x4d, 0xe9, 0x52, +0xe9, 0x02, 0x80, 0xa5, 0x93, 0x31, 0xa1, 0x74, +0x55, 0xb0, 0x1c, 0x99, 0x10, 0xb1, 0x98, 0xfb, +0x65, 0x68, 0x97, 0x4a, 0x17, 0x00, 0xf4, 0x0d, +0x75, 0x08, 0xa5, 0xdb, 0x51, 0xa6, 0x4b, 0xa0, +0x15, 0x47, 0xe9, 0x02, 0xaa, 0xba, 0xeb, 0xa8, +0x74, 0x5b, 0xdf, 0xd9, 0xb9, 0x97, 0x25, 0x58, +0x96, 0x81, 0xad, 0xbb, 0x09, 0x3e, 0x3e, 0x36, +0x53, 0x23, 0xa5, 0x0b, 0x00, 0x83, 0x26, 0x79, +0xe2, 0xdf, 0x27, 0x67, 0xc3, 0xc1, 0xd7, 0x9c, +0x28, 0xa7, 0xe0, 0x19, 0x3e, 0x18, 0xb7, 0xa4, +0x6b, 0xa5, 0x0b, 0xa8, 0xda, 0xc0, 0x8b, 0xab, +0x9f, 0x82, 0x54, 0x57, 0xa4, 0xbe, 0x7f, 0xde, +0x97, 0x23, 0x34, 0x52, 0xba, 0x80, 0xaa, 0xad, +0xcc, 0xfa, 0x28, 0xb8, 0xfb, 0x6d, 0x44, 0xc8, +0xaf, 0xc1, 0x93, 0x36, 0x64, 0x96, 0x1f, 0x91, +0x2e, 0xff, 0x7e, 0x39, 0xea, 0x2a, 0x1b, 0x79, +0xd3, 0x7b, 0x05, 0xd9, 0x61, 0xe5, 0xa9, 0xd9, +0x5d, 0x2a, 0x5d, 0x40, 0xa5, 0xe0, 0xc2, 0x56, +0x0c, 0xc0, 0x5b, 0xbb, 0xa7, 0xc0, 0xd0, 0x5c, +0x97, 0x57, 0x1e, 0xc0, 0x60, 0xce, 0xca, 0x10, +0x2c, 0xfd, 0x61, 0x82, 0x46, 0x83, 0x3f, 0x73, +0x3b, 0x23, 0xbc, 0xb7, 0x7f, 0x1a, 0x46, 0xff, +0x2b, 0x90, 0x94, 0xd5, 0xc5, 0x88, 0x97, 0x65, +0x19, 0x88, 0xc4, 0x2c, 0x16, 0xac, 0x1b, 0x45, +0x28, 0x5d, 0x00, 0x70, 0xef, 0x6f, 0xd3, 0xad, +0x72, 0x16, 0xb7, 0x1a, 0x8f, 0x7b, 0x7a, 0xdc, +0x3a, 0x99, 0x8a, 0x2b, 0x7b, 0xba, 0x5e, 0xdd, +0x51, 0x57, 0xd1, 0x84, 0x9f, 0x5e, 0x3f, 0x07, +0x25, 0xc3, 0x08, 0xca, 0x92, 0xe8, 0x89, 0xb1, +0xf4, 0x87, 0x89, 0xb0, 0x74, 0x34, 0xee, 0x52, +0x5e, 0x7b, 0x9c, 0xfd, 0xad, 0xf0, 0xf2, 0xf7, +0x13, 0xc0, 0x8a, 0xdb, 0x8c, 0xe1, 0x26, 0xb6, +0x06, 0x98, 0xf1, 0xfe, 0xd0, 0x6e, 0xc9, 0xb1, +0x72, 0x36, 0x41, 0x61, 0x46, 0x65, 0xd7, 0x09, +0xdb, 0x51, 0x90, 0x5a, 0xc1, 0xdb, 0x54, 0xcd, +0xed, 0x8d, 0x38, 0xef, 0x26, 0xd6, 0x11, 0x63, +0xc1, 0xda, 0xd1, 0x02, 0x4a, 0x47, 0x33, 0x4c, +0xac, 0x0c, 0x20, 0xd6, 0x15, 0x3f, 0x52, 0x7d, +0x05, 0xcf, 0x20, 0x3b, 0xa2, 0xe8, 0x33, 0x69, +0x50, 0xb2, 0xaa, 0xeb, 0xd1, 0x67, 0xd3, 0x88, +0xeb, 0x43, 0xa6, 0xfb, 0x74, 0x2a, 0x73, 0xe6, +0x87, 0xc1, 0xf0, 0x0a, 0xd2, 0x4c, 0x21, 0x08, +0xd1, 0xea, 0x08, 0x6b, 0x3d, 0x86, 0x4c, 0xf7, +0xc1, 0x53, 0x2f, 0x90, 0xd3, 0xd8, 0x9e, 0xca, +0x94, 0xe8, 0x8a, 0x79, 0xd3, 0xf0, 0x29, 0x41, +0x46, 0xc9, 0x22, 0xef, 0x7e, 0x39, 0x58, 0x31, +0xb0, 0xe4, 0xbb, 0xf1, 0xb0, 0xf7, 0x22, 0x43, +0x21, 0x3b, 0xc3, 0xc6, 0xcd, 0x14, 0xcb, 0x7e, +0x9c, 0xc8, 0xa9, 0x2b, 0x1d, 0x03, 0x29, 0xe6, +0x7d, 0x35, 0xb2, 0x5b, 0x72, 0x8c, 0xcc, 0xf5, +0xe1, 0xd6, 0xdf, 0x16, 0x0c, 0x58, 0xf8, 0x86, +0x38, 0x6a, 0x3c, 0x88, 0x68, 0x25, 0x60, 0x84, +0x33, 0x44, 0x52, 0x51, 0xb7, 0xda, 0x87, 0xd0, +0xd8, 0xd2, 0xda, 0xdd, 0x14, 0xb6, 0x9e, 0x66, +0xb0, 0xf5, 0x34, 0x43, 0xd0, 0x33, 0xde, 0x78, +0x75, 0x7b, 0x18, 0xfa, 0x4f, 0xf0, 0xe0, 0xa4, +0x91, 0x37, 0xb6, 0xe0, 0xe8, 0x86, 0x28, 0x5e, +0xb9, 0x7a, 0xc6, 0x3a, 0x58, 0xfa, 0xc3, 0x04, +0x98, 0x58, 0x91, 0x3e, 0x9f, 0xce, 0xf0, 0x1d, +0xea, 0x88, 0xe7, 0x3e, 0x0b, 0xe5, 0x6f, 0xcb, +0xb3, 0xfd, 0x31, 0x76, 0x51, 0xdf, 0x6e, 0xc9, +0x93, 0x48, 0xc5, 0x78, 0xf6, 0xd3, 0x50, 0x78, +0x0c, 0xb2, 0x23, 0xe4, 0xf1, 0xa1, 0xbe, 0x26, +0x15, 0x61, 0xf1, 0xa6, 0x71, 0x08, 0x99, 0x49, +0x76, 0x36, 0x4c, 0x0b, 0x83, 0xf8, 0x4b, 0x59, +0xdd, 0x2a, 0xe7, 0xc7, 0xf2, 0x0b, 0x14, 0x7b, +0x3f, 0xbf, 0x02, 0xaf, 0x81, 0x76, 0x70, 0xf4, +0xe5, 0x1f, 0xc9, 0xb1, 0x2c, 0xb0, 0xfd, 0xed, +0xf3, 0xa8, 0x2c, 0xaa, 0xed, 0x54, 0xce, 0xc4, +0x57, 0x06, 0x11, 0x23, 0x17, 0x96, 0x05, 0x2e, +0xed, 0x8a, 0x47, 0xd4, 0xf1, 0x07, 0x28, 0xcb, +0xab, 0x81, 0xbd, 0xa7, 0x39, 0x46, 0x3e, 0x1f, +0x88, 0xa0, 0xc9, 0x5c, 0xaf, 0xbc, 0x5b, 0x1f, +0x1b, 0x8c, 0x7a, 0x21, 0x10, 0x7f, 0xfd, 0x7e, +0x17, 0x00, 0xe0, 0xd1, 0xcf, 0x06, 0xe2, 0x0e, +0x23, 0x1c, 0x46, 0xc9, 0xe2, 0xcc, 0xd6, 0x3b, +0x28, 0x4c, 0xab, 0x40, 0xc0, 0x70, 0x67, 0x04, +0x3e, 0xe5, 0x06, 0x93, 0x76, 0xd3, 0xea, 0xf2, +0xfc, 0x5a, 0xdc, 0x3e, 0xf9, 0x00, 0xf2, 0x46, +0x05, 0x86, 0x4c, 0xf5, 0x85, 0xa5, 0x93, 0x31, +0xbc, 0x06, 0x92, 0x0a, 0x25, 0x27, 0xb1, 0x14, +0xf5, 0xd5, 0xcd, 0x48, 0xbf, 0x53, 0x88, 0xc8, +0x23, 0x29, 0x18, 0xf8, 0xb4, 0x17, 0xdf, 0x5b, +0x73, 0x6c, 0x43, 0x63, 0x16, 0xf6, 0x83, 0x8d, +0xab, 0x29, 0x99, 0x8a, 0x61, 0x91, 0x93, 0x54, +0x8a, 0xcc, 0xbb, 0x25, 0x70, 0xf4, 0xb1, 0x80, +0x47, 0x7f, 0x3b, 0x62, 0x64, 0xd6, 0x1e, 0x91, +0xa8, 0xe7, 0xe1, 0x2d, 0x62, 0x89, 0x08, 0x43, +0xa7, 0x91, 0x23, 0xb7, 0xdb, 0xa7, 0x52, 0xd5, +0x32, 0x93, 0x22, 0x72, 0xd0, 0x58, 0x2b, 0xe7, +0x74, 0x10, 0xce, 0xfe, 0x56, 0x70, 0xf4, 0x35, +0x47, 0x5e, 0x4a, 0x39, 0x71, 0xaf, 0x99, 0xad, +0x21, 0xef, 0xc8, 0x07, 0x00, 0x6a, 0xca, 0x1a, +0x90, 0x7c, 0x23, 0x0f, 0x60, 0x01, 0x9f, 0x21, +0x0e, 0x30, 0xb7, 0xe3, 0xb7, 0x99, 0x03, 0x5c, +0x87, 0xa5, 0x48, 0x04, 0x84, 0x2d, 0xe3, 0x8f, +0x31, 0x6e, 0xae, 0x57, 0xe0, 0xc1, 0xed, 0x02, +0x54, 0x16, 0xd5, 0xc1, 0x6b, 0xa0, 0x3d, 0x1c, +0xbc, 0x2d, 0x84, 0x5f, 0xb8, 0x9d, 0x4c, 0x4d, +0x63, 0x31, 0x53, 0x22, 0xf3, 0x70, 0xe2, 0xbb, +0x5b, 0xc8, 0x7f, 0x50, 0x86, 0xd1, 0xf3, 0xfb, +0xc0, 0x35, 0xd0, 0x9a, 0x48, 0x73, 0xe3, 0x50, +0x32, 0x22, 0x0e, 0x24, 0xa3, 0x38, 0xbb, 0x0a, +0xb6, 0xae, 0x66, 0x08, 0x9e, 0xe1, 0x8b, 0xd0, +0x67, 0x7b, 0x71, 0xd2, 0xd8, 0xba, 0x9b, 0x61, +0xd2, 0x8a, 0x81, 0x38, 0xba, 0xe1, 0x26, 0x00, +0xc0, 0xa5, 0x97, 0x25, 0xb1, 0xf0, 0x08, 0x00, +0x2e, 0xfc, 0x12, 0x87, 0xcc, 0xf8, 0x62, 0xf8, +0x05, 0x3b, 0xa1, 0xf7, 0x53, 0xae, 0x9c, 0x32, +0xaa, 0xaf, 0x6e, 0x46, 0xda, 0x9d, 0x02, 0xd5, +0x6c, 0x89, 0xa7, 0x63, 0xab, 0xab, 0x6c, 0xc2, +0xd9, 0x9f, 0x63, 0x50, 0x5f, 0xd9, 0x84, 0xde, +0xa3, 0x5c, 0x11, 0x30, 0xdc, 0x19, 0xfa, 0x86, +0x6d, 0xf5, 0x96, 0x74, 0x2d, 0x17, 0x2d, 0x8a, +0x6e, 0xda, 0x79, 0x05, 0xca, 0xe9, 0xb3, 0x53, +0xcf, 0x76, 0x7a, 0x5b, 0x45, 0x41, 0x2d, 0xbe, +0x5b, 0x72, 0x12, 0x39, 0x89, 0xfc, 0xcb, 0xbe, +0xa7, 0xbd, 0x3d, 0x84, 0x57, 0xe9, 0xca, 0x1b, +0x5b, 0x90, 0x16, 0x53, 0x88, 0xd2, 0xec, 0x6a, +0x78, 0x0e, 0xb0, 0x87, 0xa3, 0xaf, 0x25, 0xd1, +0x19, 0x0e, 0x79, 0xc6, 0x07, 0x97, 0xf7, 0x24, +0xe0, 0xfe, 0xcd, 0xb6, 0x05, 0x5a, 0x86, 0xa6, +0x7a, 0x98, 0xf5, 0x41, 0x30, 0xef, 0xb3, 0xca, +0x0b, 0x6a, 0x71, 0xff, 0x66, 0x3e, 0xf4, 0x64, +0x52, 0xf8, 0x0e, 0x71, 0x84, 0x91, 0x85, 0x8c, +0x73, 0x5d, 0x24, 0x02, 0x5e, 0xf8, 0x72, 0x24, +0x3e, 0x9f, 0xb4, 0x57, 0x6d, 0xc6, 0x10, 0xec, +0x72, 0x58, 0x06, 0x12, 0xa9, 0x08, 0x4b, 0xb7, +0x4c, 0xc0, 0x80, 0x09, 0x9e, 0xc4, 0x65, 0x46, +0xc9, 0xe2, 0xf7, 0x8f, 0xc2, 0x91, 0x11, 0x57, +0xc4, 0x7f, 0xbf, 0x00, 0x8f, 0x65, 0x77, 0xb2, +0xe6, 0x46, 0x05, 0x7e, 0x79, 0xf7, 0x02, 0x3e, +0x3d, 0xf1, 0x1c, 0xef, 0xf5, 0xc8, 0x23, 0x29, +0xb8, 0x1b, 0xde, 0xb9, 0x13, 0xcc, 0xda, 0xd9, +0x04, 0x93, 0x56, 0x04, 0x11, 0xe7, 0xb7, 0xbd, +0x75, 0x0e, 0x91, 0x87, 0xdb, 0x1c, 0x1d, 0x15, +0x05, 0xb5, 0x48, 0xbc, 0x96, 0x83, 0x29, 0x29, +0x83, 0x31, 0xe3, 0x5d, 0x6e, 0xc1, 0xcf, 0x78, +0x3f, 0x18, 0xd1, 0xa7, 0x53, 0x51, 0x55, 0x52, +0x4f, 0x38, 0xfd, 0x00, 0x95, 0x82, 0x39, 0xf8, +0xcd, 0x75, 0x00, 0xc0, 0xf5, 0x43, 0xc9, 0x10, +0x89, 0x00, 0xdf, 0xa1, 0x4e, 0x18, 0x3e, 0x3b, +0x00, 0x52, 0x1d, 0x31, 0x4e, 0x6e, 0x89, 0x06, +0xc3, 0xb0, 0x88, 0xbd, 0x90, 0x81, 0xd8, 0x0b, +0x19, 0x30, 0xb2, 0x90, 0xe1, 0xbf, 0x71, 0x2f, +0x13, 0x72, 0x76, 0xaf, 0xbc, 0x8c, 0xd4, 0xe8, +0x02, 0xf5, 0xdf, 0x03, 0xba, 0x08, 0xde, 0x37, +0xb6, 0x94, 0x61, 0xca, 0xeb, 0xe4, 0x94, 0xb9, +0xa9, 0x4e, 0x8e, 0x0d, 0x0b, 0x8e, 0x21, 0xf5, +0x76, 0x9b, 0x2c, 0x47, 0x5f, 0x4b, 0x7c, 0xb0, +0x6f, 0x26, 0xc7, 0xce, 0xda, 0x51, 0x66, 0x4f, +0xeb, 0x2c, 0x60, 0xb8, 0x0b, 0x4c, 0x6d, 0x0c, +0x39, 0xe7, 0xaa, 0x4a, 0xea, 0x91, 0x1a, 0x5d, +0xa0, 0x96, 0xd9, 0xa2, 0x50, 0x22, 0xee, 0x62, +0x06, 0x82, 0xa7, 0x73, 0x95, 0xe9, 0xd0, 0x69, +0x7e, 0xf8, 0x73, 0x75, 0x04, 0x21, 0x73, 0xfc, +0x92, 0xfe, 0x90, 0xea, 0x90, 0xcb, 0xc6, 0x6e, +0x1c, 0x4e, 0xc1, 0xf6, 0xb7, 0xcf, 0xab, 0x1d, +0x0e, 0x22, 0xb1, 0x08, 0x73, 0x3f, 0x1b, 0x89, +0xb1, 0x0b, 0x85, 0x46, 0x28, 0x6d, 0xef, 0x35, +0x60, 0x82, 0x27, 0xec, 0xbd, 0x48, 0x85, 0x9a, +0x9d, 0x58, 0x8a, 0x75, 0xcf, 0x1f, 0x46, 0x7d, +0x55, 0x9b, 0x83, 0x24, 0x64, 0x86, 0x1f, 0x16, +0xaf, 0x1f, 0x47, 0x74, 0xb2, 0x6a, 0xa9, 0xea, +0xb2, 0xea, 0xbc, 0xcc, 0x62, 0x2f, 0x64, 0xe0, +0xe0, 0x9a, 0xeb, 0x6a, 0x6f, 0xbc, 0xb1, 0xa5, +0x0c, 0xd3, 0xdf, 0x25, 0x3f, 0xec, 0xbd, 0x5f, +0x5c, 0xc5, 0xf9, 0xed, 0x6d, 0xcb, 0xe3, 0x2b, +0x0a, 0x6a, 0x91, 0x1c, 0x99, 0x8b, 0x8c, 0xb8, +0x62, 0x2c, 0x58, 0x3d, 0x9a, 0x93, 0x36, 0x6c, +0xf9, 0x40, 0x44, 0x1e, 0x4d, 0x41, 0x51, 0x7a, +0x25, 0xdc, 0xfa, 0x90, 0x4b, 0x9a, 0x93, 0xae, +0xe7, 0x62, 0xcf, 0xe7, 0x57, 0x00, 0xa8, 0xbe, +0x11, 0x00, 0xf0, 0x1a, 0x68, 0x8f, 0x61, 0xb3, +0xfc, 0x61, 0x6c, 0x21, 0xc3, 0xe9, 0xad, 0x77, +0xa0, 0x68, 0x56, 0x29, 0x4e, 0xbe, 0xf6, 0x7c, +0x6e, 0x5b, 0x0c, 0x4e, 0x6d, 0x51, 0xf9, 0x4b, +0x2e, 0xef, 0x49, 0x80, 0x54, 0x47, 0x82, 0xbe, +0x63, 0xdc, 0x30, 0x6c, 0x56, 0x00, 0xca, 0xf3, +0x6b, 0x71, 0x7a, 0x6b, 0x74, 0xb7, 0xdb, 0x4a, +0x4f, 0x57, 0x5a, 0x5e, 0xdd, 0x9f, 0x88, 0xca, +0xa2, 0x3a, 0xde, 0xe7, 0x39, 0xfb, 0x5b, 0x61, +0xf4, 0x7c, 0x32, 0x02, 0x2a, 0xff, 0x41, 0x39, +0xd6, 0x3e, 0x77, 0x18, 0x35, 0x65, 0x6d, 0x8e, +0xf6, 0x7e, 0x63, 0x3d, 0xb0, 0x62, 0x6b, 0x18, +0xa4, 0xba, 0xdc, 0x36, 0xf5, 0xc2, 0x97, 0x4f, +0xe1, 0xd3, 0x89, 0x7b, 0xc0, 0x3c, 0x8c, 0x62, +0x99, 0xfe, 0x6e, 0x30, 0xef, 0x37, 0x72, 0x6c, +0x63, 0x14, 0x8e, 0x6e, 0xbc, 0xa9, 0xfe, 0x5b, +0x22, 0x15, 0x63, 0xe9, 0xf7, 0x13, 0x31, 0x28, +0x8c, 0x3b, 0x50, 0x73, 0xf6, 0xb7, 0xc2, 0xa8, +0x17, 0x7b, 0xe3, 0xe2, 0x0e, 0xd5, 0x40, 0x4d, +0xa8, 0xc3, 0x91, 0xea, 0x4a, 0xf0, 0xd2, 0xa6, +0x09, 0xe8, 0x33, 0xda, 0x8d, 0xb8, 0x26, 0x6f, +0x6a, 0xc1, 0xd6, 0x15, 0x67, 0x10, 0x7b, 0x21, +0x83, 0xf7, 0xde, 0xce, 0x10, 0x33, 0x78, 0x3c, +0xff, 0xc6, 0x08, 0x7e, 0x50, 0x40, 0xbf, 0xb1, +0xee, 0xb0, 0x70, 0x34, 0xea, 0xf4, 0xfe, 0x61, +0x73, 0x48, 0x3b, 0xe9, 0xdd, 0xf0, 0x4c, 0x5c, +0x3f, 0x9c, 0xc4, 0x9b, 0xfe, 0xc4, 0x96, 0x28, +0xe4, 0xdd, 0xe7, 0x8e, 0xc0, 0x64, 0x46, 0xba, +0x18, 0x38, 0xc9, 0x0b, 0x0c, 0x18, 0x34, 0xd4, +0x92, 0xc6, 0x7d, 0x97, 0x5e, 0xd6, 0x30, 0xb6, +0x96, 0xa9, 0x65, 0x28, 0x59, 0x06, 0x49, 0x91, +0x39, 0xf8, 0xf9, 0xed, 0xb3, 0xf8, 0xe1, 0xb5, +0xd3, 0xc8, 0x49, 0x29, 0xe1, 0x3c, 0x43, 0x28, +0xa8, 0xba, 0x63, 0x5e, 0x84, 0x1a, 0x6b, 0xeb, +0x75, 0xff, 0xe1, 0x4e, 0x90, 0xf1, 0xd8, 0xa0, +0x7e, 0x7a, 0xf3, 0x2c, 0xee, 0xdf, 0xce, 0xe3, +0xc8, 0xca, 0xbd, 0x5f, 0x8a, 0xef, 0x5e, 0x3e, +0x21, 0x58, 0x96, 0x8f, 0x52, 0x47, 0x21, 0xb3, +0xfc, 0x09, 0x79, 0xd1, 0x67, 0xd2, 0xa0, 0x64, +0x94, 0x9c, 0x74, 0xb7, 0xcf, 0xa4, 0x12, 0xe9, +0x86, 0x4e, 0xf3, 0x05, 0x2b, 0x66, 0xb9, 0xef, +0x2d, 0x62, 0x30, 0x72, 0x2e, 0x69, 0x0e, 0x48, +0x8f, 0x29, 0xc4, 0xcf, 0x6f, 0x9f, 0xe5, 0xc8, +0x55, 0x32, 0x4a, 0xec, 0xfa, 0x2c, 0x5c, 0xb0, +0x03, 0x56, 0xc5, 0xf1, 0xaa, 0xfe, 0xf1, 0xc9, +0x6c, 0xac, 0x93, 0x63, 0xed, 0xdc, 0x83, 0xa8, +0xad, 0x6a, 0xe0, 0xe4, 0x21, 0xe2, 0x70, 0x12, +0x0e, 0x6f, 0xe0, 0xdf, 0x8c, 0x88, 0xe5, 0x94, +0x17, 0x7f, 0x1d, 0xd5, 0x57, 0x37, 0x61, 0xfd, +0x8b, 0x87, 0xb1, 0x69, 0xf1, 0x31, 0xe4, 0xa5, +0x96, 0xa9, 0x53, 0x0f, 0x9e, 0xea, 0x0d, 0x43, +0x53, 0xee, 0x12, 0xf7, 0xf4, 0xd8, 0x22, 0x9c, +0xfb, 0xe5, 0x0e, 0x6f, 0xd9, 0x86, 0xff, 0x71, +0x17, 0xf7, 0x6f, 0x71, 0x97, 0xcc, 0x4b, 0x75, +0x24, 0x08, 0x9e, 0xee, 0xfb, 0xb0, 0x3d, 0x92, +0xde, 0x74, 0x07, 0x2f, 0x73, 0xe2, 0xbb, 0x78, +0x70, 0x27, 0x1f, 0x3b, 0x3e, 0xba, 0x88, 0xef, +0x5e, 0x39, 0x81, 0xb4, 0xd8, 0x02, 0xf5, 0x79, +0xbe, 0xf6, 0xec, 0x33, 0xc4, 0x11, 0x3a, 0x06, +0x12, 0x75, 0x1a, 0xb9, 0x42, 0x81, 0xdb, 0x67, +0x53, 0xb1, 0x69, 0xc9, 0x31, 0xec, 0xfa, 0x2c, +0x1c, 0xe5, 0x85, 0x35, 0xdd, 0x6e, 0x23, 0x3d, +0x55, 0xbc, 0xd3, 0xde, 0x1a, 0x8a, 0x4d, 0xd1, +0x4b, 0xb0, 0x78, 0xc3, 0x38, 0x48, 0x65, 0x62, +0x8e, 0xcc, 0x11, 0x73, 0x03, 0x21, 0x96, 0x70, +0x87, 0xb1, 0xf2, 0xc6, 0x16, 0x7c, 0xf3, 0xdc, +0x41, 0x54, 0x95, 0xd5, 0x71, 0xd2, 0xc6, 0x5c, +0x4c, 0xc3, 0xae, 0x4f, 0x49, 0xbf, 0x91, 0xa3, +0x8f, 0x25, 0x7c, 0x06, 0xdb, 0x83, 0x01, 0x03, +0x91, 0x14, 0xbc, 0x6d, 0xe4, 0xfa, 0xe1, 0x64, +0x1c, 0xde, 0x78, 0x83, 0x23, 0x4f, 0xd1, 0xd2, +0x82, 0x2d, 0x2b, 0x4e, 0x21, 0x2b, 0x81, 0x74, +0xa8, 0x8d, 0x9e, 0xdf, 0x87, 0x93, 0x96, 0x8f, +0x57, 0x7f, 0x9e, 0xc4, 0xab, 0x74, 0x6b, 0x2b, +0x1a, 0xb1, 0xe6, 0xb9, 0x83, 0xb8, 0x73, 0x21, +0xad, 0xdb, 0x65, 0xcc, 0x80, 0x81, 0xb8, 0x75, +0x04, 0xf5, 0x28, 0xc7, 0xf0, 0x59, 0x01, 0x18, +0x36, 0x83, 0xfc, 0xa8, 0x5b, 0x31, 0x30, 0xd1, +0xc3, 0xb2, 0x2d, 0x61, 0x10, 0x4b, 0x44, 0x82, +0x32, 0x9c, 0xfd, 0xc9, 0xf5, 0xe1, 0x37, 0x8f, +0xdf, 0x17, 0x4c, 0xaf, 0x6c, 0x61, 0x70, 0xe7, +0x2c, 0xa9, 0x20, 0xdc, 0xfb, 0xd8, 0x80, 0x65, +0x59, 0x64, 0xdc, 0x25, 0x87, 0xfe, 0xf6, 0x9e, +0xe6, 0x58, 0x73, 0x79, 0x01, 0xe6, 0x7c, 0x34, +0x1c, 0x36, 0xae, 0xa6, 0x1a, 0xbd, 0x1b, 0x1f, +0x2c, 0x34, 0x49, 0xd3, 0x36, 0x3a, 0x75, 0xf4, +0x21, 0x4d, 0x30, 0x45, 0x99, 0x95, 0x88, 0x39, +0x9f, 0xc6, 0xfb, 0xcc, 0xfb, 0xb7, 0xf2, 0x90, +0x1e, 0x5b, 0xc8, 0x2f, 0xb7, 0x87, 0x75, 0xa4, +0x6f, 0xa8, 0x83, 0x01, 0xe3, 0xc9, 0xa9, 0xd2, +0xad, 0x93, 0x64, 0x19, 0xc7, 0x5f, 0xce, 0x24, +0x76, 0x9b, 0xb2, 0xb0, 0x37, 0x82, 0xdf, 0x50, +0x27, 0x4e, 0x3a, 0x53, 0x1b, 0x43, 0xde, 0x0e, +0xe5, 0xd4, 0xd6, 0x68, 0x30, 0x4a, 0x86, 0x37, +0x1f, 0x67, 0x7e, 0x26, 0x23, 0x17, 0x54, 0xef, +0xd5, 0xf6, 0x6e, 0x7c, 0xa3, 0xdd, 0x2b, 0x7b, +0x13, 0x50, 0x5b, 0xd1, 0xc8, 0x2b, 0xf3, 0xaf, +0x9d, 0x77, 0x05, 0x76, 0xc7, 0x6a, 0x57, 0x47, +0x02, 0xf5, 0xf4, 0xdb, 0x47, 0x7f, 0x21, 0xfe, +0x72, 0x16, 0x21, 0xd3, 0xc9, 0x8f, 0x6c, 0x8f, +0x51, 0x27, 0xee, 0x83, 0x61, 0x84, 0xcb, 0xf8, +0xf6, 0x29, 0x32, 0x94, 0xcc, 0xad, 0x8f, 0x2d, +0x58, 0x96, 0x45, 0x3a, 0xcf, 0x54, 0xd4, 0xcc, +0xd6, 0x08, 0xab, 0xc3, 0x17, 0x60, 0xde, 0xaa, +0xa7, 0xe0, 0xe8, 0x63, 0xd9, 0x69, 0xfd, 0xf1, +0xb5, 0xe7, 0xde, 0x23, 0x5d, 0xb1, 0x26, 0x7c, +0x01, 0x26, 0x2d, 0x1b, 0x04, 0x13, 0x4b, 0xd9, +0x23, 0x7f, 0xc7, 0x8f, 0x3a, 0xfb, 0x15, 0x89, +0x45, 0x18, 0x3e, 0x2b, 0x00, 0x9f, 0x1d, 0x7f, +0x1e, 0x86, 0x66, 0x7a, 0x9d, 0x7e, 0xdb, 0xd7, +0x0f, 0x27, 0xa1, 0xaa, 0xb4, 0x9e, 0x37, 0x0f, +0xd7, 0x0e, 0x24, 0xa2, 0xba, 0x94, 0x8c, 0xa2, +0x71, 0xf2, 0xb7, 0x52, 0xb5, 0x0f, 0x4f, 0x73, +0x5e, 0x73, 0x5c, 0xeb, 0x08, 0x9f, 0x4f, 0x57, +0x9c, 0xde, 0x1a, 0x4d, 0xa4, 0xb7, 0x75, 0x33, +0x87, 0x54, 0x57, 0xf2, 0x30, 0x1d, 0xff, 0x3b, +0x79, 0x0e, 0x20, 0x4d, 0x3c, 0xa5, 0xb9, 0xd5, +0xf8, 0x72, 0xfa, 0xbe, 0x87, 0x66, 0xa0, 0x9e, +0x95, 0xf3, 0x23, 0xff, 0xe6, 0x9a, 0x83, 0xb7, +0x25, 0xe6, 0x7f, 0x35, 0xba, 0xcb, 0x74, 0x5e, +0x03, 0xec, 0x31, 0xeb, 0x83, 0x61, 0xd8, 0xfb, +0xd5, 0x15, 0xde, 0xeb, 0x7c, 0x0d, 0xfd, 0xd9, +0x8f, 0x43, 0x31, 0xf3, 0xdd, 0x10, 0x41, 0x99, +0x7a, 0x06, 0x3a, 0xc4, 0x39, 0xf7, 0x3e, 0xb6, +0x60, 0x58, 0x06, 0xf7, 0x22, 0xb2, 0x90, 0x74, +0x3d, 0x07, 0x01, 0xc3, 0x5c, 0x38, 0xd7, 0x0d, +0x8c, 0xf5, 0x30, 0x69, 0x59, 0x10, 0xc2, 0x96, +0x06, 0x21, 0x39, 0x32, 0x07, 0xc7, 0xbe, 0xbb, +0x89, 0xc4, 0x08, 0xfe, 0x65, 0xb1, 0x42, 0x65, +0xc3, 0xb2, 0x2c, 0xe7, 0x9a, 0x50, 0xba, 0xd6, +0xf3, 0x7c, 0x8a, 0xf7, 0xee, 0xa5, 0x4c, 0x28, +0x3b, 0x59, 0x40, 0x12, 0x17, 0x9e, 0x01, 0xcf, +0xfe, 0x64, 0xa5, 0x33, 0x2c, 0x23, 0xf8, 0xbc, +0xce, 0x08, 0x9a, 0xec, 0x0d, 0x5d, 0x7d, 0xae, +0x8d, 0xb1, 0xba, 0xb4, 0x01, 0xc9, 0x51, 0xb9, +0xc4, 0x07, 0xd7, 0xd4, 0x20, 0xc7, 0xdd, 0xcb, +0x99, 0x08, 0x7a, 0x9a, 0x3b, 0x3d, 0x0b, 0x99, +0xee, 0x87, 0x7b, 0x11, 0x59, 0xea, 0xbf, 0xf9, +0x22, 0x09, 0x58, 0x16, 0x88, 0xbd, 0x98, 0x26, +0x98, 0xc7, 0x94, 0xa8, 0x5c, 0xb0, 0x0c, 0x4b, +0xc4, 0xaf, 0xb2, 0x50, 0x95, 0xa9, 0x54, 0x47, +0x02, 0x4b, 0x07, 0xd2, 0xb9, 0x1a, 0x73, 0x21, +0x5d, 0x50, 0x66, 0x6d, 0x55, 0x03, 0x72, 0xef, +0x97, 0xc2, 0xb3, 0x1f, 0xb7, 0xbc, 0x58, 0xb4, +0xd5, 0x01, 0x23, 0xf0, 0x65, 0x25, 0x5e, 0xcf, +0xe6, 0x95, 0xeb, 0xcc, 0xd3, 0x1e, 0x27, 0x2f, +0x0f, 0xc2, 0xf8, 0x45, 0xfd, 0x79, 0xe5, 0x00, +0x80, 0x8e, 0x1e, 0x69, 0xc3, 0x6d, 0x6d, 0x8f, +0xd9, 0x49, 0xc5, 0x88, 0x3a, 0x79, 0x1f, 0x43, +0x26, 0x73, 0x1d, 0x64, 0xba, 0x32, 0x29, 0xc6, +0x2f, 0xea, 0x8f, 0xf1, 0x8b, 0xfa, 0x23, 0xf5, +0x4e, 0x01, 0x4e, 0x6c, 0x89, 0x42, 0xcc, 0x79, +0x72, 0xaf, 0x83, 0x4b, 0x7b, 0xe3, 0x31, 0x7e, +0x61, 0x7f, 0x58, 0xbb, 0x70, 0xfd, 0x04, 0x16, +0x0e, 0xc6, 0x98, 0xf3, 0x51, 0x28, 0x66, 0xbe, +0x37, 0x0c, 0x31, 0xe7, 0xd3, 0x70, 0xe8, 0xdb, +0x1b, 0xc8, 0xbb, 0x5f, 0x26, 0x98, 0xc7, 0xae, +0x10, 0x52, 0xbe, 0xf7, 0xae, 0x65, 0x83, 0x69, +0x17, 0xa7, 0x6a, 0x68, 0xaa, 0x07, 0x5b, 0x57, +0x33, 0x18, 0x99, 0x93, 0xd3, 0x7d, 0x27, 0x5f, +0x2b, 0x3c, 0xfb, 0x71, 0x28, 0xb6, 0xbd, 0x7b, +0x0e, 0x00, 0x7f, 0x59, 0xc6, 0x85, 0x67, 0x08, +0xd6, 0xa7, 0x5c, 0xce, 0x20, 0xe1, 0x4a, 0x16, +0x86, 0xcf, 0xe2, 0xda, 0xcd, 0x9d, 0x7c, 0x2d, +0xc1, 0xb0, 0x0c, 0xaf, 0x2f, 0xa9, 0xb2, 0xa8, +0x0e, 0xd9, 0x49, 0xc2, 0x31, 0xee, 0x31, 0x17, +0x49, 0xa7, 0xb1, 0x58, 0x22, 0x82, 0xbd, 0xb7, +0x39, 0xb2, 0x12, 0x8a, 0xa1, 0xa9, 0xdf, 0xa4, +0xa9, 0x5e, 0x81, 0x2f, 0xa6, 0xed, 0x45, 0x65, +0xf1, 0xa3, 0x2d, 0x54, 0x91, 0x0a, 0x4d, 0xa7, +0x35, 0x41, 0x57, 0x5f, 0x8a, 0xd7, 0xb7, 0x4e, +0xe1, 0x55, 0x80, 0x7c, 0x84, 0xbd, 0x12, 0x84, +0xa4, 0x1b, 0xd9, 0x88, 0x0b, 0xe7, 0xda, 0x44, +0xf4, 0x0d, 0x75, 0x61, 0xed, 0x4c, 0x3a, 0x9e, +0xcc, 0x3a, 0xd8, 0x23, 0x35, 0xc1, 0xd8, 0xd2, +0x40, 0xe5, 0x37, 0x64, 0x81, 0x1f, 0xde, 0x38, +0x89, 0x15, 0xdf, 0x4f, 0x81, 0xff, 0x50, 0x67, +0x22, 0x9d, 0x48, 0x04, 0x04, 0x84, 0xb8, 0x20, +0x20, 0xc4, 0x05, 0xd7, 0x8f, 0x24, 0xe1, 0x8f, +0x2f, 0x2e, 0x11, 0xbd, 0xac, 0xe0, 0xfa, 0x6d, +0x74, 0x34, 0x43, 0x08, 0x04, 0xef, 0x3f, 0x4c, +0xe3, 0xc4, 0xd3, 0x50, 0x4a, 0x72, 0xaa, 0x04, +0xe5, 0xb7, 0x5e, 0xd7, 0xec, 0xd9, 0x9a, 0x11, +0xda, 0xa1, 0x11, 0x03, 0x40, 0x43, 0x6d, 0x13, +0xe6, 0x7c, 0x38, 0x9c, 0x37, 0xbd, 0x01, 0xcf, +0x3e, 0x0e, 0x41, 0x61, 0x3e, 0xd8, 0xf1, 0xc9, +0x79, 0xc8, 0x1f, 0xae, 0x04, 0xb2, 0x71, 0x27, +0xeb, 0xac, 0xaa, 0xb8, 0x0e, 0x72, 0xb9, 0xf0, +0xca, 0x3d, 0x85, 0x82, 0x41, 0x55, 0x69, 0x3d, +0xcc, 0x6d, 0x3b, 0x3a, 0xda, 0x54, 0xe5, 0x65, +0xe5, 0x6c, 0x46, 0x28, 0x65, 0x00, 0x28, 0xce, +0xa9, 0xe8, 0xf4, 0xbd, 0x4b, 0x73, 0xab, 0x09, +0xc5, 0xdb, 0xbe, 0x0e, 0x20, 0x70, 0x6f, 0x5d, +0x75, 0x03, 0x21, 0x57, 0x24, 0x52, 0x29, 0x8f, +0x8e, 0x74, 0xd7, 0x23, 0x0f, 0xa8, 0xc2, 0xc2, +0xa4, 0xba, 0x22, 0x28, 0xe4, 0x4a, 0xfc, 0xfa, +0xe1, 0x39, 0xe8, 0xca, 0xa4, 0xe8, 0x3f, 0x86, +0x9c, 0x79, 0x00, 0x80, 0xf7, 0x40, 0x07, 0xbc, +0xfd, 0xeb, 0x74, 0xc4, 0x9c, 0x4f, 0xc3, 0x6f, +0x2b, 0x2f, 0xa2, 0x3c, 0xbf, 0x6d, 0x01, 0x45, +0x63, 0x5d, 0x13, 0x36, 0xbd, 0x7c, 0x14, 0x2b, +0xbe, 0x9f, 0x0c, 0x07, 0x2f, 0xb2, 0x3d, 0x49, +0xa4, 0x62, 0x04, 0x85, 0xf9, 0x60, 0xc0, 0x78, +0x2f, 0x9c, 0xf9, 0xf9, 0x36, 0x0e, 0x6d, 0xbc, +0x01, 0x79, 0x63, 0xf7, 0x97, 0x7a, 0xb3, 0x02, +0xa6, 0x86, 0x0d, 0x8b, 0x0f, 0x13, 0x71, 0xbc, +0x22, 0xb1, 0x08, 0x43, 0xa7, 0xf8, 0xe1, 0xa5, +0x75, 0x13, 0x09, 0x1d, 0x30, 0xe2, 0xd9, 0xde, +0x38, 0xb3, 0x3d, 0x1a, 0xf5, 0xd5, 0x4d, 0x9c, +0xc5, 0x4f, 0xad, 0x14, 0x67, 0x57, 0x76, 0x5a, +0x9f, 0xc5, 0x3c, 0xed, 0xdf, 0xd9, 0xdf, 0x0a, +0x2c, 0x18, 0x38, 0xf9, 0xf3, 0x7c, 0x4f, 0xd9, +0x9d, 0x7f, 0x4f, 0x8d, 0xf5, 0xcd, 0xa8, 0x29, +0x6f, 0x80, 0x89, 0x25, 0xb7, 0x0e, 0x9d, 0xfc, +0x2c, 0x91, 0x99, 0x50, 0xa8, 0xb1, 0x89, 0x45, +0xdf, 0x50, 0x07, 0x93, 0x96, 0x0d, 0xc2, 0xae, +0x55, 0xe1, 0x1a, 0xa5, 0x17, 0xe2, 0x91, 0x4c, +0x0d, 0x2f, 0x7e, 0x3e, 0x86, 0xb7, 0x81, 0x36, +0xd6, 0x36, 0xe3, 0xee, 0x25, 0xd2, 0xe0, 0x2c, +0x12, 0x01, 0x4b, 0x37, 0x4d, 0x82, 0xb9, 0xad, +0x11, 0x47, 0x4e, 0x8b, 0x42, 0xd9, 0xad, 0x55, +0x1f, 0x9d, 0x11, 0x17, 0x9e, 0xae, 0x96, 0x5b, +0x51, 0x58, 0x8b, 0x2f, 0x67, 0xee, 0xc1, 0xd6, +0x37, 0x4f, 0xa1, 0xb6, 0x42, 0xf8, 0xd7, 0x20, +0x86, 0x4d, 0x0f, 0xc0, 0xfa, 0x2b, 0x4b, 0xd0, +0x77, 0x94, 0xbb, 0x46, 0x53, 0xaf, 0xf6, 0xd3, +0x62, 0x96, 0x15, 0xa8, 0xb2, 0x76, 0x69, 0xf8, +0x36, 0x7b, 0x97, 0x74, 0x62, 0x76, 0x61, 0x59, +0x96, 0xb0, 0x89, 0xb5, 0x3d, 0xbb, 0xfb, 0xf5, +0x64, 0xe5, 0x6c, 0x02, 0x9f, 0xc1, 0x4e, 0x84, +0x2c, 0x7b, 0x0f, 0x0b, 0x4c, 0x59, 0x3e, 0x84, +0xf7, 0xe8, 0x35, 0xcc, 0x95, 0x48, 0x2f, 0x33, +0xd6, 0xc5, 0x80, 0x71, 0x5e, 0x6a, 0xb9, 0x1d, +0x47, 0xd0, 0x00, 0x3a, 0x35, 0x27, 0xb5, 0x1e, +0x7a, 0x32, 0xb2, 0xa3, 0x6e, 0xbd, 0xa6, 0xa3, +0xcf, 0xbf, 0xf1, 0xb6, 0x58, 0xdc, 0xb9, 0x5c, +0x3e, 0x99, 0xed, 0xeb, 0x40, 0xa8, 0x75, 0xf1, +0xc9, 0x62, 0x18, 0x16, 0xca, 0xc7, 0xb4, 0xb3, +0x5c, 0x62, 0x44, 0x16, 0xe4, 0xcd, 0x2d, 0x60, +0x59, 0x16, 0xb5, 0x95, 0x8d, 0x58, 0x37, 0xff, +0x20, 0x36, 0xbe, 0x74, 0x04, 0x15, 0x85, 0xc2, +0x11, 0x3e, 0x03, 0xc6, 0x7b, 0x61, 0xdd, 0xa5, +0xc5, 0x08, 0x7e, 0xc6, 0x9f, 0x93, 0xaf, 0xcc, +0x84, 0x22, 0x7c, 0x38, 0x76, 0x07, 0x0e, 0x7c, +0x73, 0x55, 0xdd, 0xf9, 0x75, 0x44, 0x22, 0x15, +0x63, 0xf2, 0xf2, 0x21, 0x58, 0x77, 0x69, 0x31, +0x9c, 0x7c, 0xad, 0x1e, 0x9b, 0xa9, 0x81, 0xb7, +0x9c, 0x94, 0x0c, 0x6e, 0x1c, 0x4d, 0xc2, 0xde, +0xff, 0x5c, 0x26, 0xd2, 0x8b, 0x44, 0xaa, 0x8e, +0x44, 0xd9, 0xc2, 0xbf, 0xb0, 0xa9, 0xab, 0x76, +0xc2, 0xd7, 0xfe, 0x95, 0x2d, 0x8c, 0xe0, 0xf7, +0x24, 0x96, 0x76, 0xdd, 0xee, 0xf8, 0xcc, 0x13, +0xca, 0x16, 0xe5, 0xc3, 0xf6, 0xc1, 0xff, 0xee, +0x65, 0xf9, 0xe4, 0xea, 0xc1, 0x89, 0x4b, 0x06, +0x61, 0xec, 0xfc, 0x7e, 0x3d, 0xd6, 0x9b, 0x2c, +0xcb, 0xf6, 0xfc, 0xc7, 0x2e, 0x43, 0x9e, 0x09, +0xc0, 0xe8, 0x79, 0xfc, 0x0e, 0xb5, 0x5f, 0x3e, +0x3e, 0x87, 0x98, 0x0b, 0x69, 0xf8, 0xe6, 0xc2, +0x62, 0x62, 0x24, 0x6b, 0x6c, 0x21, 0xc3, 0xab, +0x3f, 0x4c, 0xc1, 0x17, 0xb3, 0xff, 0x50, 0x87, +0x72, 0x34, 0x37, 0xcb, 0x51, 0x94, 0x55, 0x01, +0x07, 0x4f, 0x6e, 0x4f, 0x96, 0x99, 0x50, 0x84, +0xf2, 0x82, 0xce, 0x43, 0xd0, 0x5a, 0x51, 0xb6, +0x28, 0x71, 0xef, 0x5a, 0x16, 0x6e, 0x9e, 0x4c, +0x21, 0x0c, 0xe5, 0x97, 0xff, 0x8c, 0x47, 0xf4, +0x85, 0x54, 0x4c, 0x5c, 0x3c, 0x08, 0x4f, 0x3d, +0xdb, 0x07, 0x56, 0x8e, 0xe4, 0x14, 0xd9, 0xc0, +0x44, 0x0f, 0xcb, 0xff, 0x3b, 0x19, 0xef, 0x8d, +0xde, 0xae, 0x9e, 0x46, 0x08, 0x95, 0x4d, 0xab, +0x1b, 0xa8, 0xed, 0x6f, 0x61, 0xe7, 0x1a, 0x00, +0xe4, 0xa7, 0x95, 0x13, 0xa3, 0x14, 0x2b, 0x17, +0x53, 0x41, 0xf9, 0x00, 0x88, 0x29, 0x65, 0x7b, +0x99, 0xdd, 0xad, 0xb3, 0xe1, 0x33, 0x7b, 0x3d, +0xf2, 0xae, 0x53, 0xad, 0x0c, 0x9b, 0x19, 0x80, +0xeb, 0xc7, 0x55, 0x71, 0xdb, 0xf9, 0x69, 0xe4, +0x94, 0xd6, 0xd4, 0xda, 0x10, 0x3a, 0x06, 0x12, +0xc1, 0xfd, 0x2a, 0x0c, 0x8c, 0xf5, 0x78, 0x47, +0x40, 0xec, 0xc3, 0x52, 0x2d, 0xc8, 0x28, 0x07, +0xcb, 0x92, 0xf1, 0xb5, 0xd6, 0x6e, 0xa6, 0x28, +0xcc, 0x16, 0x5e, 0xff, 0xcf, 0x37, 0x63, 0x6a, +0x95, 0xa9, 0xfa, 0xff, 0xce, 0x1d, 0xa5, 0x1d, +0xc9, 0x4d, 0x29, 0x85, 0x6f, 0x10, 0xb7, 0xb3, +0xca, 0xbb, 0x5f, 0x86, 0xa2, 0x2c, 0xcd, 0xe2, +0xbc, 0x19, 0x25, 0x83, 0xe4, 0xa8, 0x5c, 0x44, +0x1e, 0x4f, 0x22, 0xe4, 0x47, 0x9d, 0x4e, 0xc1, +0xdd, 0x2b, 0x19, 0x18, 0xff, 0xaf, 0x01, 0x18, +0x3d, 0xb7, 0x1f, 0xec, 0xdc, 0xc8, 0x38, 0x61, +0x3d, 0x03, 0x1d, 0xbc, 0xb4, 0x7e, 0x22, 0x32, +0x12, 0x0a, 0x51, 0x90, 0xde, 0xe6, 0x44, 0x96, +0x2b, 0x18, 0x1c, 0xfe, 0xee, 0x3a, 0x22, 0x8e, +0x26, 0x22, 0x6c, 0x49, 0x10, 0x42, 0x67, 0x05, +0xc2, 0xd0, 0x54, 0x9f, 0xb8, 0xdf, 0xca, 0xc9, +0x04, 0xaf, 0x6e, 0x99, 0x82, 0x8f, 0x9f, 0xde, +0x01, 0x85, 0x5c, 0xf3, 0xdf, 0x00, 0xec, 0xac, +0x2d, 0x0b, 0xb5, 0xbb, 0x7b, 0x91, 0x59, 0xbc, +0xe7, 0x9d, 0xfd, 0xad, 0x70, 0x61, 0x77, 0x0c, +0x6a, 0x2b, 0x1a, 0x61, 0xdc, 0x21, 0xa4, 0xcb, +0xda, 0xd5, 0x04, 0x19, 0xf7, 0xf8, 0xfd, 0x18, +0x00, 0x60, 0xc3, 0xd3, 0xfe, 0x73, 0x92, 0x4b, +0xc1, 0x80, 0x41, 0x4e, 0x32, 0xb9, 0x61, 0xbe, +0x8d, 0x8b, 0x59, 0xa7, 0xdf, 0x85, 0xa1, 0x89, +0x3e, 0x6f, 0x39, 0x65, 0x27, 0x97, 0x3c, 0x74, +0x2a, 0xf2, 0xdf, 0xbb, 0xe9, 0xe5, 0x23, 0xf8, +0x68, 0xef, 0xb3, 0x30, 0x34, 0xe1, 0xde, 0xbb, +0xe0, 0xcb, 0x71, 0x28, 0xca, 0xa9, 0xe4, 0x1d, +0x60, 0x6a, 0x42, 0x8f, 0xc2, 0xc9, 0xec, 0xdc, +0xcc, 0xf1, 0xd2, 0xda, 0xa7, 0x79, 0xaf, 0x45, +0x1c, 0xbe, 0x87, 0x6b, 0x87, 0x54, 0x9b, 0x9b, +0x7f, 0xb7, 0xe2, 0x18, 0x3e, 0x3f, 0xf2, 0x22, +0xd1, 0x7b, 0xf9, 0x0d, 0x71, 0xc6, 0xac, 0xb7, +0x43, 0xb1, 0x7f, 0x6d, 0x9b, 0xbd, 0x37, 0x27, +0xb9, 0x94, 0x50, 0xbc, 0xe9, 0x77, 0x0b, 0xb1, +0xed, 0xfd, 0x33, 0xdd, 0xce, 0x1f, 0x1f, 0xb5, +0x95, 0x0d, 0xf8, 0x73, 0xfd, 0x55, 0x1c, 0xdc, +0x70, 0x0d, 0x7d, 0x47, 0xba, 0xe3, 0x99, 0x15, +0xc1, 0x08, 0x08, 0xe1, 0x8e, 0xea, 0x8c, 0xcc, +0x64, 0x08, 0x9d, 0x19, 0x88, 0x63, 0x5b, 0x54, +0x5e, 0x72, 0xa1, 0xa2, 0x21, 0x46, 0x07, 0x3c, +0x09, 0xdb, 0xef, 0x2f, 0x9b, 0x9f, 0x5a, 0x86, +0xa0, 0x89, 0xdc, 0xf8, 0xd9, 0x41, 0x13, 0xbc, +0xf1, 0xdb, 0xa7, 0xe7, 0xa1, 0x54, 0xf0, 0x57, +0x78, 0xc7, 0xf4, 0x82, 0xcf, 0xd6, 0x80, 0x11, +0xb3, 0x1e, 0x6d, 0x21, 0x42, 0x7b, 0xfa, 0x3e, +0xe5, 0x01, 0x23, 0x73, 0x19, 0x6a, 0x2b, 0x1a, +0x90, 0xf7, 0x80, 0xdf, 0x96, 0x38, 0x74, 0xb2, +0x1f, 0x2e, 0xef, 0x8f, 0xe7, 0xbd, 0x36, 0x6c, +0x06, 0x69, 0xf2, 0x68, 0x85, 0x65, 0x59, 0x34, +0x35, 0xc8, 0x51, 0x96, 0x57, 0x4d, 0x28, 0xd2, +0xe0, 0xa9, 0xfe, 0xb8, 0x7b, 0x99, 0xbf, 0x91, +0xbb, 0x06, 0xd8, 0xf0, 0xce, 0xbc, 0x5a, 0x65, +0xaa, 0xfe, 0x2b, 0xfc, 0x4c, 0xbe, 0xf2, 0xcc, +0x49, 0x2e, 0x21, 0x14, 0x6f, 0x41, 0x7a, 0x39, +0xbe, 0x5d, 0x72, 0x48, 0x30, 0xff, 0xdd, 0xa1, +0xb1, 0xae, 0x19, 0xc7, 0xbe, 0x8f, 0xc4, 0xf1, +0x2d, 0x91, 0xf0, 0x0f, 0x76, 0xc5, 0x94, 0xa5, +0x43, 0x30, 0x60, 0x2c, 0x37, 0x1e, 0x5c, 0x4f, +0xa6, 0x83, 0x51, 0xcf, 0xf7, 0xc5, 0xee, 0x2f, +0xff, 0x22, 0xee, 0x2f, 0xce, 0xae, 0xc4, 0x8e, +0x95, 0xe7, 0xb1, 0xfb, 0xab, 0x70, 0x0c, 0x09, +0xf3, 0xc5, 0xf4, 0x37, 0x86, 0xc1, 0xc9, 0x87, +0x5b, 0x06, 0xce, 0x7e, 0xd6, 0xe8, 0x35, 0xdc, +0x15, 0xb1, 0x7f, 0x69, 0xbe, 0x3f, 0xae, 0xf0, +0x2c, 0x4f, 0xb8, 0xdd, 0x59, 0xda, 0xf3, 0x2f, +0x78, 0xaa, 0x2e, 0x6f, 0x00, 0xcb, 0xb2, 0xc8, +0x4d, 0x29, 0x21, 0xbe, 0xb5, 0x21, 0x93, 0xfc, +0x70, 0xf3, 0x24, 0xff, 0x1e, 0x20, 0x7a, 0x06, +0x3a, 0xe8, 0x37, 0x9a, 0x34, 0xc7, 0xe4, 0xa4, +0x94, 0x80, 0x65, 0x59, 0xe4, 0xa4, 0x90, 0x8a, +0xd7, 0xd4, 0xda, 0x10, 0xbe, 0x41, 0x4e, 0x48, +0xb9, 0xc5, 0xbf, 0x6c, 0x77, 0xf0, 0x24, 0x72, +0xf1, 0x89, 0xb2, 0x85, 0x41, 0x7e, 0x6a, 0xd9, +0xc3, 0x77, 0xe3, 0xbd, 0x0d, 0x05, 0x19, 0xe5, +0xd8, 0xbc, 0xf4, 0x28, 0x3e, 0xda, 0xfd, 0x2c, +0xc7, 0x04, 0x26, 0x96, 0x88, 0xf0, 0xe6, 0xd6, +0xe9, 0xf8, 0xf4, 0x99, 0x9d, 0xbc, 0x1d, 0x41, +0x57, 0x74, 0x7b, 0xc9, 0xb0, 0x54, 0x47, 0x84, +0x37, 0x7f, 0x9e, 0xce, 0xeb, 0xcd, 0x2e, 0xce, +0xae, 0xc4, 0xb6, 0x0f, 0xcf, 0xa8, 0xd3, 0xde, +0xbf, 0x9d, 0x83, 0x43, 0x1b, 0xaf, 0xf1, 0x3e, +0x78, 0xfa, 0xeb, 0x21, 0x08, 0x0c, 0x75, 0x55, +0xa7, 0xcd, 0x49, 0x26, 0x0d, 0xe3, 0xc1, 0x53, +0xfc, 0x61, 0xe9, 0x60, 0xdc, 0x65, 0x9e, 0xfc, +0x86, 0x38, 0x61, 0xd6, 0x3b, 0xc3, 0x61, 0x61, +0xc7, 0x5d, 0x36, 0x6c, 0xe7, 0x6e, 0x06, 0x17, +0x7f, 0x2b, 0x88, 0x25, 0x6d, 0x4b, 0xff, 0x18, +0xa5, 0x12, 0xb1, 0xe1, 0x69, 0x58, 0x35, 0x73, +0x17, 0xae, 0x1d, 0x26, 0x7f, 0xfd, 0xc2, 0xb5, +0x17, 0x77, 0xe9, 0x1f, 0x1f, 0xaa, 0x8a, 0x6a, +0x97, 0x07, 0x21, 0x1b, 0xef, 0xc3, 0xeb, 0xf9, +0xa9, 0xa4, 0x82, 0xb2, 0xb0, 0x33, 0xc6, 0x98, +0x79, 0xfd, 0x78, 0xdf, 0x67, 0xd0, 0x04, 0x6f, +0x38, 0xfb, 0x91, 0x81, 0xfb, 0xaa, 0x67, 0x77, +0xaf, 0xbe, 0x7c, 0x06, 0x39, 0xc2, 0x96, 0x67, +0x44, 0xd5, 0x53, 0x24, 0x52, 0x31, 0x42, 0x9e, +0xf1, 0x07, 0xcb, 0x32, 0x28, 0x2f, 0xac, 0xe6, +0xdd, 0x08, 0x68, 0xea, 0x8a, 0x60, 0xe8, 0x19, +0x48, 0x89, 0xbc, 0xc8, 0x8c, 0x75, 0x30, 0xf9, +0x65, 0xfe, 0x25, 0xc0, 0xed, 0xcb, 0x34, 0xef, +0x01, 0x19, 0x84, 0x3f, 0x7c, 0x46, 0x20, 0xec, +0xdc, 0xc9, 0x25, 0xd3, 0x00, 0x83, 0x59, 0xef, +0x84, 0x0a, 0xe4, 0x96, 0xed, 0x90, 0x96, 0xef, +0xb9, 0xfc, 0xe5, 0xc6, 0xf7, 0x31, 0xf5, 0x1f, +0xe3, 0x09, 0x07, 0x2f, 0x8b, 0x2e, 0xcb, 0xdc, +0xa3, 0xaf, 0x1d, 0xe6, 0xbc, 0x17, 0xfa, 0x30, +0x72, 0xa6, 0xed, 0xbc, 0x95, 0xa3, 0x31, 0xdc, +0x02, 0x6d, 0x20, 0x96, 0xb6, 0x6b, 0x8f, 0x0c, +0x83, 0xc4, 0xeb, 0x99, 0x58, 0xf3, 0xe2, 0x3e, +0x9c, 0xde, 0x76, 0x8b, 0x78, 0xa6, 0x5b, 0xa0, +0x8d, 0xfa, 0x3d, 0x5d, 0x02, 0xac, 0x61, 0xe7, +0x6e, 0x06, 0xa0, 0x4d, 0xa6, 0xbc, 0x49, 0x8e, +0x6b, 0x87, 0x13, 0xf0, 0xfe, 0xd8, 0x6d, 0x48, +0xbf, 0x4b, 0x8e, 0x20, 0x3b, 0xb6, 0xe7, 0xae, +0x0e, 0xa1, 0x78, 0x67, 0xe1, 0xf4, 0x0c, 0xc2, +0x04, 0xea, 0x34, 0x3b, 0xb1, 0x08, 0x2c, 0xcb, +0x20, 0x9b, 0xa7, 0x2c, 0x87, 0x4e, 0xf6, 0x87, +0x93, 0xaf, 0x25, 0xaf, 0xcc, 0xa7, 0x97, 0x0c, +0xe2, 0x1d, 0x9d, 0xe6, 0x24, 0xab, 0x9c, 0x60, +0x05, 0xe9, 0x65, 0xbc, 0xa3, 0xf8, 0x99, 0x6f, +0x0d, 0x83, 0x48, 0xcc, 0x12, 0xf2, 0xf4, 0x0c, +0xa4, 0x98, 0xba, 0x9c, 0x5c, 0xc5, 0x5a, 0x98, +0x51, 0x01, 0x85, 0x5c, 0xd1, 0x65, 0xfb, 0x88, +0xbb, 0x94, 0x86, 0xdd, 0x5f, 0x91, 0x9d, 0x9f, +0xcc, 0x48, 0x17, 0x1f, 0xec, 0x9c, 0x0d, 0x53, +0x6b, 0x83, 0x6e, 0x7f, 0x97, 0xdd, 0x5e, 0x32, +0xfc, 0xc2, 0x67, 0x63, 0xe1, 0x1e, 0x68, 0x47, +0x64, 0x42, 0xd9, 0xc2, 0x60, 0xf3, 0x8a, 0x23, +0xa8, 0xaf, 0x6d, 0xe2, 0xa4, 0xff, 0x73, 0xd3, +0x55, 0xde, 0x5e, 0x48, 0x24, 0x16, 0xe1, 0xb5, +0xef, 0xa7, 0xc1, 0xc4, 0xda, 0x00, 0x0c, 0x58, +0x5c, 0x3d, 0x72, 0x4f, 0x1d, 0x2c, 0xde, 0x8a, +0xa1, 0xa9, 0x3e, 0x56, 0x1e, 0x98, 0x07, 0x97, +0x5e, 0xb6, 0x44, 0x3e, 0x24, 0xba, 0x62, 0x8c, +0x7c, 0xb6, 0x0f, 0xd6, 0x5e, 0x5c, 0x82, 0xcf, +0x8f, 0xcc, 0xc7, 0xec, 0x77, 0x46, 0x60, 0xf3, +0x8d, 0xe5, 0x30, 0x34, 0xd7, 0x07, 0x03, 0x16, +0xb3, 0xde, 0x09, 0xc5, 0xe6, 0xeb, 0xcb, 0xb1, +0xee, 0xaf, 0x97, 0xf1, 0x63, 0xcc, 0x1b, 0x78, +0xfa, 0xa5, 0x20, 0x48, 0xf5, 0x25, 0x1c, 0x19, +0xe5, 0x85, 0xa4, 0xfd, 0x46, 0xde, 0xa4, 0xe0, +0xa4, 0xe1, 0xad, 0x8c, 0x0e, 0x79, 0x11, 0x1a, +0x7f, 0xb6, 0x5e, 0x8f, 0xbd, 0x9c, 0x86, 0x46, +0x9e, 0x38, 0xcc, 0x85, 0x5f, 0x4e, 0xc0, 0xe8, +0x79, 0xfd, 0x01, 0x89, 0x2a, 0x2d, 0x2b, 0x62, +0x31, 0x60, 0xbc, 0x37, 0xde, 0xf8, 0x71, 0xba, +0x80, 0x44, 0x74, 0xab, 0xae, 0x18, 0xb0, 0x18, +0x31, 0xa7, 0x37, 0x21, 0x43, 0xd9, 0xc2, 0xe0, +0xd4, 0xb6, 0x5b, 0x1a, 0x1d, 0xb9, 0xf7, 0x49, +0x25, 0x18, 0x3a, 0x33, 0x50, 0x2d, 0xff, 0xfc, +0x2e, 0x32, 0x3c, 0xcc, 0xd1, 0xcb, 0x12, 0x9f, +0xec, 0x9d, 0x0b, 0x33, 0xbb, 0xb6, 0x65, 0xd3, +0xa6, 0xb6, 0x86, 0xf8, 0x78, 0xcf, 0x5c, 0xc1, +0x4e, 0xa0, 0x7d, 0x99, 0x9e, 0xdb, 0x49, 0xca, +0xd4, 0xd1, 0x95, 0x60, 0xd5, 0xe1, 0xf9, 0x70, +0xef, 0xdb, 0xb6, 0xd4, 0x53, 0xd7, 0x50, 0x07, +0x4b, 0xd6, 0x86, 0x61, 0xf0, 0xd3, 0xfc, 0x4b, +0x69, 0xdb, 0x2f, 0x19, 0xee, 0xaa, 0x8e, 0x3a, +0x1e, 0x91, 0xa7, 0x92, 0x50, 0x5f, 0xc3, 0x8d, +0xbd, 0xd5, 0xd1, 0x93, 0x62, 0xe5, 0x81, 0x79, +0xf0, 0x0e, 0x72, 0x24, 0xd2, 0x8b, 0xa4, 0x22, +0x04, 0x3f, 0x13, 0x80, 0xaf, 0x4e, 0x2e, 0xc4, +0xea, 0x33, 0x8b, 0x30, 0xf3, 0xad, 0x50, 0x6c, +0x8e, 0x58, 0x0e, 0x6b, 0x57, 0x33, 0x30, 0x60, +0x31, 0x7e, 0xe1, 0x40, 0x7c, 0x7f, 0xeb, 0x35, +0x7c, 0x73, 0x7e, 0x09, 0xb6, 0xc5, 0xbf, 0x85, +0x69, 0xaf, 0x87, 0x40, 0xcf, 0x48, 0x87, 0x23, +0xa3, 0x8c, 0xa7, 0x3d, 0x36, 0x37, 0xaa, 0xda, +0xe3, 0x5b, 0xdb, 0x66, 0x62, 0xdd, 0xc5, 0x97, +0xb0, 0xf9, 0xfa, 0x72, 0x6c, 0xbc, 0xb6, 0x0c, +0xc1, 0xd3, 0x02, 0x38, 0x4b, 0xe4, 0xe5, 0x8a, +0x16, 0xd4, 0x94, 0x93, 0x21, 0x58, 0xad, 0xf7, +0x6b, 0x7a, 0x08, 0x95, 0x93, 0xa5, 0x93, 0x29, +0xac, 0x9c, 0xdb, 0x0e, 0x97, 0x5e, 0xb6, 0x98, +0xf5, 0xee, 0x08, 0x7c, 0x7b, 0x65, 0x29, 0xfa, +0x8e, 0xf4, 0xe0, 0xbd, 0x27, 0x2b, 0xb9, 0x58, +0xdd, 0x46, 0x3a, 0xda, 0x65, 0xc5, 0x12, 0x11, +0x3e, 0x3b, 0xf8, 0x22, 0xbc, 0x06, 0xb5, 0x95, +0xa5, 0x48, 0x47, 0x84, 0xb0, 0x97, 0x07, 0xe3, +0xb9, 0x0f, 0x46, 0x91, 0xb2, 0x12, 0x8b, 0x91, +0x18, 0x95, 0x0d, 0x06, 0x2c, 0x14, 0x2d, 0x4a, +0x5c, 0xe0, 0x69, 0x23, 0x7d, 0x46, 0x7a, 0xe0, +0x8d, 0x1f, 0xa7, 0x43, 0xcf, 0x58, 0x97, 0xd3, +0xee, 0xfe, 0xbd, 0x7f, 0x1e, 0xec, 0x3d, 0xc8, +0x10, 0xc5, 0x33, 0xbf, 0xde, 0x6a, 0xf7, 0xde, +0x9d, 0x2f, 0x19, 0x3e, 0xf6, 0x63, 0x24, 0xae, +0x1d, 0x4e, 0x20, 0xae, 0x5b, 0x39, 0x9a, 0xe2, +0x83, 0x9d, 0xcf, 0x42, 0x47, 0x26, 0xed, 0x56, +0x39, 0x77, 0x6b, 0xc9, 0x70, 0x9f, 0x11, 0x1e, +0x78, 0x7a, 0x11, 0xb9, 0xba, 0x0c, 0x00, 0x0e, +0x7c, 0x7b, 0x05, 0xf7, 0xa3, 0x49, 0x05, 0xab, +0x6c, 0x01, 0x36, 0x2d, 0x3f, 0x84, 0x0d, 0xe1, +0xcb, 0x08, 0xdb, 0x05, 0x49, 0x16, 0x1f, 0x00, +0x00, 0x0b, 0x29, 0x49, 0x44, 0x41, 0x54, 0x9e, +0x99, 0xb5, 0x21, 0x5e, 0x59, 0x37, 0x09, 0x6b, +0x16, 0xec, 0x43, 0x61, 0x46, 0x19, 0xfe, 0xdc, +0x78, 0x15, 0x73, 0x3f, 0xe4, 0x86, 0xa6, 0xd9, +0x7b, 0x58, 0x60, 0xfd, 0xc5, 0x97, 0x90, 0x18, +0x99, 0x8d, 0xec, 0xa4, 0x62, 0x34, 0xd4, 0x34, +0xc1, 0xd9, 0xd7, 0x06, 0x7e, 0x83, 0x9d, 0x61, +0x6a, 0xc5, 0x8d, 0x7a, 0xd0, 0xd5, 0x97, 0x22, +0x64, 0x6a, 0x00, 0xae, 0x1d, 0x49, 0xc0, 0xb4, +0x57, 0x87, 0x71, 0x9e, 0xb3, 0xf0, 0x8b, 0x09, +0x98, 0xfe, 0xda, 0x70, 0x24, 0x5c, 0xcb, 0x40, +0x49, 0x4e, 0x15, 0x9c, 0x7d, 0xad, 0xd1, 0xf7, +0x29, 0x72, 0x3a, 0xf3, 0x20, 0x26, 0xaf, 0xad, +0xf7, 0x13, 0xea, 0x05, 0xd1, 0xa1, 0x87, 0x14, +0x9c, 0x9e, 0xa9, 0xd2, 0x54, 0x96, 0xd4, 0xe2, +0xcf, 0x8d, 0x57, 0x31, 0xff, 0xd3, 0x71, 0x9c, +0xeb, 0x62, 0x89, 0x08, 0x4b, 0xd7, 0x4f, 0xc2, +0x82, 0x55, 0xe3, 0x90, 0x91, 0x50, 0x08, 0x67, +0x1f, 0x6b, 0xc2, 0xeb, 0xca, 0x27, 0x53, 0xd3, +0x3a, 0xd3, 0xd1, 0x93, 0x62, 0xd8, 0x54, 0x72, +0x6a, 0x9f, 0x78, 0x23, 0x0b, 0xbf, 0xae, 0xd4, +0xcc, 0x84, 0x33, 0x66, 0x6e, 0x7f, 0x2c, 0xdf, +0x30, 0x95, 0x73, 0xce, 0x7b, 0x80, 0x23, 0xec, +0xdc, 0xcd, 0x50, 0x98, 0x51, 0x81, 0x43, 0x9b, +0xaf, 0x62, 0xf4, 0xf3, 0xfd, 0x60, 0x62, 0xc1, +0xcd, 0xb7, 0x6f, 0x90, 0x13, 0x7e, 0x8e, 0x7d, +0x53, 0x3d, 0xda, 0x71, 0xf5, 0x27, 0x57, 0x5e, +0x71, 0x61, 0xd5, 0xef, 0x75, 0xfb, 0x5c, 0x0a, +0xee, 0x5d, 0xcf, 0x42, 0xe0, 0x30, 0x37, 0x4e, +0x0a, 0x73, 0x5b, 0x23, 0x7c, 0x73, 0x76, 0x09, +0xca, 0xf2, 0xab, 0x51, 0x5e, 0x58, 0x0b, 0xaf, +0xbe, 0x0e, 0x90, 0xe8, 0x08, 0x2f, 0xaf, 0x06, +0xdb, 0x56, 0x07, 0x82, 0x11, 0x2a, 0x02, 0xe5, +0x59, 0x59, 0x52, 0x8b, 0xdd, 0x5f, 0x5d, 0xc4, +0x2b, 0x6b, 0x27, 0x73, 0xce, 0x5b, 0xd8, 0x19, +0xe3, 0x3f, 0xc7, 0x17, 0xe2, 0xc1, 0x9d, 0x3c, +0x64, 0x24, 0x14, 0xa2, 0xb6, 0xa2, 0x11, 0x8e, +0xde, 0x56, 0xf0, 0x0b, 0x72, 0x86, 0x85, 0x1d, +0x77, 0xca, 0x2d, 0x96, 0x88, 0x10, 0x3a, 0x33, +0x10, 0x47, 0xbe, 0x8b, 0xc0, 0x9c, 0x77, 0x47, +0xaa, 0xed, 0xd6, 0x46, 0x66, 0x32, 0xcc, 0xfd, +0x68, 0x34, 0xa6, 0x2e, 0x0f, 0xc1, 0xdd, 0xcb, +0xe9, 0x28, 0xca, 0xac, 0x80, 0x83, 0x97, 0x25, +0xfa, 0x8e, 0xe0, 0x6f, 0x8f, 0x1e, 0xbd, 0x6d, +0x31, 0x74, 0x52, 0x5b, 0x9c, 0xbc, 0x83, 0xa7, +0x25, 0xde, 0xfa, 0x71, 0x06, 0x9e, 0x7f, 0xff, +0x29, 0x24, 0xdd, 0xcc, 0x46, 0x55, 0x69, 0x3d, +0x3c, 0xfb, 0xd8, 0xa3, 0xcf, 0x08, 0x52, 0x01, +0x72, 0xda, 0xb3, 0x26, 0x08, 0xb4, 0xe5, 0x4d, +0x57, 0x96, 0x6a, 0x2e, 0x03, 0xc0, 0x83, 0x3b, +0x79, 0x28, 0xca, 0x52, 0xd9, 0xeb, 0x73, 0x52, +0x8a, 0x71, 0x7a, 0x7b, 0x14, 0xa6, 0x2c, 0xe5, +0xae, 0x04, 0x34, 0xb1, 0x34, 0xc0, 0xd7, 0x27, +0x16, 0xa2, 0xa2, 0xa8, 0x16, 0x45, 0x59, 0x15, +0xf0, 0xec, 0xe3, 0x20, 0x18, 0x21, 0xb5, 0xfd, +0xe3, 0xd3, 0x1c, 0x47, 0xdd, 0xde, 0xb5, 0xe1, +0x18, 0x36, 0xad, 0x17, 0xa1, 0x03, 0x82, 0xa7, +0x04, 0x60, 0x48, 0x98, 0x3f, 0x32, 0xef, 0x15, +0x42, 0x57, 0x5f, 0x07, 0xce, 0xbe, 0xfc, 0x33, +0xc7, 0xcc, 0x84, 0x22, 0x9c, 0xdb, 0xd9, 0xb6, +0xb2, 0x4f, 0xd0, 0x7c, 0xd7, 0xae, 0x7d, 0x6c, +0x79, 0xeb, 0x38, 0x1c, 0x3c, 0x2d, 0xe1, 0xd9, +0x97, 0xbb, 0xc9, 0x8f, 0x67, 0x5f, 0x7b, 0xbc, +0xfe, 0xfd, 0x34, 0xac, 0x5b, 0xbc, 0x5f, 0xa8, +0xf8, 0x08, 0xba, 0xf5, 0x0b, 0x14, 0xa3, 0x9f, +0xef, 0xc7, 0x7b, 0x3e, 0xf1, 0x66, 0x36, 0xfe, +0xdc, 0x7c, 0x55, 0xb0, 0xd7, 0x28, 0xce, 0xab, +0xc2, 0x8f, 0xef, 0x9d, 0xc0, 0x3b, 0x3f, 0xcd, +0x22, 0xae, 0x0d, 0x1c, 0xeb, 0x0d, 0x63, 0x2b, +0x03, 0x54, 0x97, 0xd5, 0xe3, 0xc8, 0x96, 0xeb, +0x08, 0x9d, 0xd1, 0x1b, 0xce, 0x3e, 0x64, 0x61, +0xf5, 0x0a, 0x76, 0x45, 0xaf, 0x60, 0xd2, 0xd3, +0xde, 0x1e, 0x96, 0x65, 0x71, 0x37, 0x22, 0x03, +0x12, 0x3d, 0x09, 0xaf, 0x57, 0xd4, 0xcc, 0xda, +0x10, 0xa1, 0x33, 0xc8, 0x11, 0x60, 0x2b, 0xcd, +0x8d, 0x0a, 0xc4, 0x5e, 0x4e, 0x57, 0x8f, 0x74, +0x85, 0xca, 0x86, 0xe9, 0x70, 0xad, 0xb3, 0xde, +0xb2, 0x95, 0xe3, 0xdb, 0x6e, 0x62, 0xec, 0xbc, +0x01, 0x84, 0x1d, 0x1b, 0x50, 0x4d, 0x59, 0xba, +0x7a, 0x37, 0x40, 0xf5, 0x7e, 0x0a, 0xa5, 0xf0, +0x2a, 0xac, 0x8e, 0x04, 0x0e, 0x77, 0xe3, 0x75, +0x64, 0xdd, 0x38, 0x99, 0xa4, 0xb1, 0x8c, 0xa8, +0x73, 0xf7, 0xb1, 0x8c, 0x27, 0xee, 0x76, 0xd0, +0x04, 0x5f, 0x1c, 0xfb, 0xf1, 0x06, 0xea, 0x6a, +0x9a, 0xb0, 0x6f, 0xdd, 0x65, 0xbc, 0xbc, 0x3a, +0x8c, 0xf7, 0xfe, 0xae, 0x15, 0xae, 0x8a, 0xd6, +0xd1, 0x69, 0x2b, 0x3b, 0x56, 0x9d, 0xc3, 0xfa, +0xf3, 0x2f, 0x43, 0xc4, 0xe3, 0x15, 0xb4, 0x72, +0x34, 0x85, 0x95, 0x23, 0xbf, 0xf3, 0x91, 0x2b, +0xb3, 0x6d, 0xd6, 0xd2, 0xd5, 0x88, 0x97, 0x8f, +0x73, 0xbb, 0xee, 0x60, 0xe4, 0xec, 0xbe, 0xf0, +0x0b, 0x22, 0xc3, 0x11, 0x7d, 0x06, 0x3a, 0xc1, +0x67, 0x20, 0x19, 0x29, 0xd2, 0x91, 0xbb, 0xd7, +0x54, 0xed, 0x51, 0xca, 0xe3, 0x51, 0x37, 0x32, +0xd5, 0xc7, 0xb0, 0x67, 0x84, 0x6d, 0xde, 0xca, +0x16, 0x06, 0xd1, 0x17, 0x1f, 0xc0, 0xc0, 0x98, +0x9c, 0x76, 0x03, 0x80, 0x9d, 0xbb, 0x05, 0xec, +0xdc, 0x85, 0xf7, 0xaa, 0x28, 0x2b, 0xa8, 0x46, +0x5a, 0x7c, 0x81, 0xc6, 0x75, 0x0d, 0xf4, 0x7c, +0xc9, 0x70, 0x7b, 0x9a, 0x1a, 0xe4, 0xd8, 0xf4, +0xea, 0x61, 0x28, 0xdb, 0x69, 0xa1, 0x7d, 0xdf, +0x5e, 0x46, 0xe8, 0x8c, 0xde, 0x30, 0xb3, 0x21, +0xf7, 0xeb, 0xb0, 0xb0, 0x33, 0x26, 0x3a, 0xad, +0xf6, 0x5c, 0x39, 0x18, 0x8f, 0xc4, 0xa8, 0x6c, +0xce, 0xb9, 0xba, 0x9a, 0x26, 0xec, 0xfc, 0xf2, +0x02, 0x5e, 0xdb, 0x3c, 0x8d, 0x48, 0x2f, 0x96, +0x88, 0x08, 0xe5, 0xd8, 0x1e, 0x96, 0x65, 0xf1, +0xd3, 0x47, 0xa7, 0x38, 0x71, 0xf4, 0xc2, 0xdf, +0x70, 0x5b, 0xbb, 0x6c, 0x6e, 0x56, 0x60, 0xf5, +0xbf, 0xf6, 0x61, 0xfd, 0xf9, 0x97, 0x61, 0x66, +0xcd, 0x7d, 0x8f, 0x21, 0x61, 0x7e, 0xe8, 0x35, +0xdc, 0x1d, 0xf1, 0xd7, 0x34, 0x73, 0xb6, 0x75, +0xcb, 0xc6, 0xcb, 0x67, 0x62, 0xa8, 0xab, 0x6a, +0xc4, 0xc6, 0x65, 0x07, 0xc1, 0x28, 0x95, 0x9d, +0xde, 0x7b, 0xed, 0x68, 0x3c, 0xc2, 0xf7, 0x91, +0x3f, 0x01, 0x2f, 0x96, 0x88, 0xe1, 0xe2, 0x67, +0x0d, 0x96, 0x65, 0xa0, 0x90, 0x2b, 0xb0, 0xee, +0xa5, 0xfd, 0xc8, 0x4b, 0xe5, 0xdf, 0x68, 0xa3, +0x33, 0x58, 0x86, 0xc5, 0xde, 0xb5, 0x97, 0x90, +0x97, 0x5a, 0x82, 0xca, 0xe2, 0x1a, 0x5c, 0xdc, +0x13, 0xd3, 0x6d, 0x19, 0x5b, 0xdf, 0x3f, 0x81, +0xa2, 0xec, 0x72, 0x75, 0x9e, 0x6b, 0x2a, 0xeb, +0x51, 0xd1, 0x61, 0x63, 0x1f, 0x95, 0x41, 0xbe, +0x84, 0xf3, 0x6e, 0x59, 0x49, 0xe4, 0xaa, 0xa2, +0xec, 0x94, 0x62, 0x4e, 0x9a, 0x16, 0xb9, 0x02, +0x1b, 0x57, 0x1c, 0x42, 0x65, 0x89, 0x66, 0x81, +0xd7, 0xf5, 0xd5, 0xe4, 0x12, 0xd3, 0xf2, 0xc2, +0x1a, 0xb4, 0xb4, 0xb3, 0x49, 0x75, 0x75, 0x90, +0xb1, 0xb2, 0xaa, 0x72, 0x8a, 0x3c, 0x95, 0xa8, +0xb1, 0x8c, 0xea, 0xb2, 0x5a, 0xa4, 0xdc, 0x26, +0x17, 0x98, 0xd8, 0xb9, 0xb6, 0xd9, 0x5b, 0xcf, +0xfe, 0x7e, 0x0b, 0x27, 0xb6, 0xf1, 0x2f, 0xdb, +0xe5, 0x7b, 0x7e, 0x53, 0x03, 0xb9, 0x63, 0x7f, +0x56, 0x52, 0x11, 0xe7, 0xb9, 0xe9, 0xf1, 0xf9, +0xf8, 0xee, 0xf5, 0x23, 0x50, 0xc8, 0x35, 0xdb, +0xe4, 0xa5, 0xb1, 0x8e, 0x34, 0xe5, 0xe4, 0xb4, +0xab, 0x83, 0xec, 0x64, 0xb2, 0x8e, 0xf2, 0x52, +0xcb, 0xd0, 0xa2, 0x68, 0x11, 0x7c, 0x77, 0x86, +0x51, 0x62, 0xe3, 0x8a, 0x83, 0x48, 0x8b, 0xe3, +0xff, 0xf5, 0xec, 0xae, 0x38, 0xb1, 0x2d, 0x12, +0xc9, 0x51, 0x59, 0x68, 0xa8, 0x6d, 0xc4, 0xc9, +0x5f, 0xa2, 0xba, 0x7d, 0xff, 0xce, 0xaf, 0x2e, +0x20, 0x23, 0xa1, 0x00, 0xf7, 0x6e, 0x64, 0x20, +0xf9, 0x56, 0xf7, 0x7e, 0xfb, 0x4e, 0xa9, 0x50, +0x62, 0xed, 0xe2, 0xfd, 0x90, 0x37, 0xc9, 0xbb, +0x65, 0x7b, 0x4c, 0xba, 0x95, 0xdd, 0xb5, 0xf0, +0x4e, 0x68, 0x51, 0x28, 0xb1, 0xf5, 0xfd, 0x13, +0x28, 0xc8, 0x28, 0xe3, 0xc8, 0xad, 0xaf, 0x69, +0xc4, 0x7f, 0xe6, 0xef, 0x41, 0x69, 0x5e, 0xf7, +0xf6, 0x07, 0x8e, 0xbe, 0xf0, 0x00, 0xdb, 0x3e, +0x39, 0xc5, 0x9b, 0xd7, 0xf0, 0xfd, 0xb1, 0x38, +0xb0, 0xf1, 0x4a, 0xb7, 0x42, 0x51, 0xe5, 0x4d, +0x0a, 0x6c, 0x79, 0xfb, 0x18, 0x52, 0x6e, 0x67, +0x73, 0x64, 0xe5, 0xa5, 0x95, 0x12, 0x72, 0xca, +0x0a, 0xaa, 0x55, 0x71, 0xde, 0xed, 0xd2, 0x95, +0x15, 0x54, 0x61, 0xcd, 0xc2, 0x7d, 0x68, 0x51, +0x90, 0x36, 0xe6, 0xd0, 0xe9, 0xe4, 0x76, 0x93, +0x42, 0x87, 0xc4, 0xd7, 0x20, 0x74, 0xd5, 0x43, +0x1f, 0x7c, 0x97, 0x87, 0x81, 0xb1, 0x3e, 0x67, +0x3a, 0xc4, 0xb2, 0x2c, 0x36, 0xad, 0x38, 0x88, +0xfb, 0x77, 0x72, 0x34, 0xba, 0xff, 0xee, 0xd5, +0x74, 0x84, 0x4c, 0xee, 0xc5, 0x99, 0x96, 0x96, +0xe5, 0x57, 0x63, 0xfb, 0xca, 0xd3, 0x60, 0x19, +0x95, 0x61, 0xbf, 0xba, 0xac, 0x0e, 0x17, 0x76, +0xdf, 0x81, 0x8e, 0x9e, 0x04, 0x7e, 0x83, 0x5c, +0x78, 0x47, 0x3c, 0x1d, 0x29, 0xcc, 0x2c, 0xc7, +0x9a, 0x45, 0x7b, 0x71, 0xe9, 0x40, 0xac, 0xfa, +0x59, 0x77, 0xfe, 0x7a, 0x80, 0xc6, 0x3a, 0x39, +0x02, 0x43, 0xdc, 0x20, 0x91, 0x74, 0x32, 0x1d, +0x85, 0xaa, 0x87, 0xfe, 0x63, 0xf5, 0x45, 0x9c, +0xde, 0x11, 0xc5, 0xc9, 0x2f, 0xcb, 0xb2, 0xb0, +0xb2, 0x37, 0x85, 0xef, 0xa0, 0xb6, 0x11, 0x4f, +0xec, 0xa5, 0x54, 0x9c, 0xdf, 0x75, 0x9b, 0x93, +0xae, 0x38, 0xb7, 0x12, 0x93, 0x16, 0x0d, 0x85, +0xae, 0x7e, 0xdb, 0x34, 0x69, 0xef, 0xba, 0xf0, +0x87, 0x1f, 0x7b, 0x5b, 0xba, 0xf2, 0xc2, 0x6a, +0x5c, 0x39, 0x18, 0x07, 0xaf, 0x7e, 0x8e, 0xb0, +0x71, 0x16, 0x76, 0x78, 0x65, 0x25, 0x15, 0xe1, +0x93, 0x69, 0xbf, 0xc0, 0xd6, 0xd5, 0x1c, 0x4e, +0x5e, 0x6d, 0xa3, 0xff, 0xe4, 0xa8, 0x1c, 0x5c, +0x39, 0x14, 0xd7, 0x69, 0x19, 0xb7, 0x3f, 0x0a, +0x32, 0xca, 0x11, 0xb6, 0x68, 0x28, 0x67, 0x45, +0xd5, 0xb9, 0x9d, 0xb7, 0x11, 0x71, 0x34, 0x41, +0x63, 0x19, 0x00, 0x8b, 0xea, 0xf2, 0x7a, 0x8c, +0x98, 0xc1, 0x0d, 0x1d, 0xdc, 0xb1, 0xea, 0x2c, +0x4a, 0x72, 0x2b, 0x55, 0xe5, 0xc4, 0x30, 0x88, +0x09, 0x4f, 0x45, 0x79, 0x61, 0x0d, 0x06, 0x8e, +0xf6, 0x26, 0x7e, 0xdd, 0xa2, 0x15, 0x79, 0x93, +0xaa, 0x63, 0x4d, 0xbf, 0x9b, 0x8f, 0x01, 0xa3, +0xdb, 0xa2, 0x36, 0x1a, 0x6a, 0x9a, 0xf0, 0xc3, +0x3b, 0xc7, 0xa0, 0x54, 0x2a, 0x39, 0xcf, 0xcd, +0x4c, 0x2c, 0x44, 0xfc, 0xb5, 0x0c, 0x0c, 0x9e, +0xe0, 0x07, 0x7d, 0x03, 0xe1, 0xed, 0x34, 0x0f, +0x6c, 0xb8, 0x8c, 0xdd, 0xab, 0x2f, 0x62, 0xdc, +0xbc, 0x81, 0x9c, 0xf6, 0xf2, 0xf3, 0xc7, 0x27, +0x51, 0x51, 0x54, 0x03, 0x80, 0x45, 0x4d, 0x45, +0x3d, 0x86, 0x4c, 0xf4, 0x87, 0xb9, 0x6d, 0xdb, +0xc8, 0xea, 0xe4, 0x2f, 0x91, 0xb8, 0x77, 0x23, +0xb3, 0xd3, 0x77, 0xaf, 0xab, 0x6a, 0xc4, 0x5f, +0x7b, 0x63, 0xd0, 0xa2, 0x50, 0xa2, 0xd7, 0x10, +0x57, 0xc1, 0x77, 0x6b, 0x4f, 0x79, 0x41, 0x0d, +0x36, 0x2c, 0x3b, 0x80, 0x93, 0xdb, 0x22, 0xd5, +0x72, 0x12, 0x22, 0x32, 0x50, 0x51, 0x54, 0x83, +0x3e, 0xc3, 0x3d, 0x88, 0x0d, 0x60, 0x3a, 0xa2, +0x90, 0xb7, 0xe0, 0xc8, 0xf7, 0xd7, 0x70, 0x60, +0xc3, 0x25, 0xf5, 0xfd, 0x57, 0x0f, 0xc7, 0xc3, +0xd0, 0x44, 0x1f, 0xde, 0xfd, 0x1d, 0xbb, 0xfc, +0x26, 0x2a, 0x4b, 0xea, 0xf0, 0xfd, 0xdb, 0x47, +0x11, 0x7b, 0x39, 0xb5, 0xd3, 0x77, 0xe3, 0x3b, +0x8a, 0xb2, 0x2a, 0x30, 0x6a, 0x4e, 0x7f, 0x18, +0x99, 0xf2, 0x6f, 0xd2, 0xd4, 0x19, 0x37, 0x4f, +0x27, 0xe1, 0xeb, 0x05, 0x7b, 0x90, 0x70, 0x3d, +0x83, 0x57, 0x76, 0x79, 0x61, 0x35, 0xc2, 0xf7, +0xc7, 0xc2, 0xd1, 0xd3, 0x0a, 0x4e, 0xde, 0xfc, +0x26, 0x80, 0x56, 0x94, 0x0a, 0x25, 0x7e, 0xfb, +0xe2, 0x1c, 0xb6, 0x7d, 0x7c, 0x0a, 0xcd, 0x8d, +0x72, 0x5e, 0x79, 0x2c, 0xab, 0x2a, 0xd7, 0xe4, +0xa8, 0x1c, 0xf4, 0x1b, 0xe5, 0x0d, 0x99, 0x61, +0xe7, 0x5b, 0xae, 0xe6, 0x3d, 0x28, 0xc5, 0x67, +0xb3, 0x7f, 0x43, 0xcc, 0x25, 0xb2, 0x5c, 0x9a, +0xea, 0x9b, 0x11, 0x18, 0xe2, 0x0e, 0x5b, 0x97, +0xb6, 0xef, 0xf2, 0xdc, 0xae, 0x68, 0xc4, 0xf2, +0xa4, 0x2d, 0xcb, 0xaf, 0x42, 0x79, 0x41, 0x0d, +0x06, 0x4f, 0xf4, 0xe3, 0xd4, 0xc5, 0xc9, 0xed, +0x91, 0xc8, 0x48, 0x28, 0xe0, 0xcd, 0x6b, 0xc7, +0x43, 0xe2, 0x6d, 0x18, 0xba, 0x4a, 0xd3, 0x6a, +0xc9, 0x4c, 0x2a, 0x44, 0x73, 0xa3, 0x02, 0xe6, +0xd6, 0x46, 0xa8, 0x2c, 0xa9, 0xc5, 0x2f, 0x9f, +0x9d, 0xc1, 0xb5, 0x63, 0x09, 0x1a, 0x57, 0xab, +0x42, 0xa1, 0xc4, 0x8d, 0x93, 0x89, 0x70, 0xf4, +0xb4, 0x82, 0xcc, 0x48, 0x17, 0x37, 0xcf, 0x24, +0x61, 0xc7, 0xe7, 0x67, 0x51, 0x9a, 0x5f, 0xc5, +0x49, 0xa7, 0x54, 0x32, 0x88, 0xbd, 0x92, 0x86, +0x3b, 0xe1, 0x0f, 0xd0, 0x50, 0xd3, 0x04, 0x79, +0x53, 0x0b, 0x0c, 0x4d, 0x64, 0xea, 0x20, 0xf9, +0x16, 0xb9, 0x12, 0xc5, 0x39, 0x95, 0x88, 0x38, +0x7e, 0x0f, 0xdb, 0x57, 0x9e, 0xc2, 0x8e, 0xcf, +0xcf, 0xa1, 0x38, 0xb7, 0x92, 0xfb, 0x3c, 0x96, +0x45, 0xf2, 0xed, 0x1c, 0x5c, 0xf8, 0xe3, 0x0e, +0xca, 0x0b, 0xab, 0x61, 0x68, 0x26, 0x83, 0x89, +0x85, 0xa1, 0x3a, 0x88, 0xba, 0x45, 0xae, 0x44, +0x7e, 0x5a, 0x19, 0x22, 0x8e, 0x27, 0x60, 0xcd, +0xa2, 0xbd, 0x88, 0xb9, 0x94, 0xca, 0x9b, 0xe7, +0xb4, 0xbb, 0xf9, 0x50, 0x34, 0x2b, 0x61, 0xe9, +0x60, 0x8a, 0x2b, 0x87, 0xee, 0x62, 0xf7, 0xea, +0x0b, 0xa8, 0xab, 0x6e, 0x24, 0xf2, 0x9b, 0x14, +0x95, 0x0d, 0x43, 0x53, 0x7d, 0x28, 0x95, 0x2c, +0xf6, 0xae, 0x0f, 0xc7, 0xe5, 0x43, 0x71, 0x50, +0x2a, 0x19, 0x42, 0x5e, 0x63, 0xbd, 0x1c, 0x97, +0xfe, 0x8c, 0x43, 0x4d, 0x79, 0x3d, 0xe4, 0xcd, +0x2d, 0x30, 0x34, 0xd1, 0x87, 0xcc, 0x48, 0x0f, +0x2c, 0xc3, 0x22, 0x3b, 0xb9, 0x18, 0x97, 0x0f, +0xde, 0xc5, 0xb7, 0xcb, 0xff, 0x44, 0x55, 0x79, +0x1d, 0x52, 0x63, 0xf3, 0x60, 0x68, 0x2a, 0x83, +0xa9, 0xa5, 0x21, 0xee, 0xdf, 0xc9, 0xc5, 0x8f, +0x1f, 0x1c, 0x47, 0x6d, 0x87, 0x67, 0x77, 0x5a, +0xde, 0xf2, 0x16, 0xa4, 0x44, 0xe7, 0xc0, 0xc0, +0x48, 0x0f, 0xba, 0xfa, 0x3a, 0xb8, 0x74, 0x20, +0x0e, 0x3b, 0xff, 0x73, 0x1e, 0x72, 0x79, 0x4b, +0xb7, 0x3e, 0xc7, 0xfc, 0xf4, 0x32, 0xd4, 0x55, +0x35, 0xc2, 0xc4, 0xc2, 0x00, 0x35, 0x15, 0xf5, +0xf8, 0x73, 0xf3, 0x15, 0xde, 0x7a, 0x4f, 0x8f, +0x2f, 0xc0, 0x9d, 0x4b, 0xa9, 0xa8, 0xaf, 0x69, +0x82, 0x48, 0x2c, 0x82, 0x99, 0x95, 0x11, 0xc4, +0x12, 0x31, 0x6a, 0x2a, 0x1a, 0x10, 0x1f, 0x91, +0x81, 0xef, 0xde, 0x38, 0x8c, 0xb8, 0xab, 0x69, +0x48, 0x8f, 0x2f, 0x80, 0x44, 0x2a, 0x86, 0x99, +0xb5, 0x11, 0xee, 0x45, 0x66, 0xe2, 0xa7, 0x8f, +0x4f, 0xa2, 0x28, 0xa7, 0x82, 0xf7, 0xd9, 0xa5, +0x05, 0xd5, 0xb8, 0x7a, 0x34, 0x1e, 0xf5, 0xd5, +0x8d, 0x68, 0x51, 0x28, 0x61, 0x6a, 0x65, 0x04, +0x1d, 0x3d, 0x29, 0x9a, 0x1b, 0x15, 0x48, 0x89, +0xce, 0xc5, 0xee, 0xd5, 0x17, 0x70, 0xec, 0xe7, +0x1b, 0x28, 0x2f, 0xac, 0x41, 0x79, 0x51, 0x0d, +0xcc, 0xad, 0x8d, 0x51, 0x92, 0x57, 0x85, 0xdf, +0xbf, 0x3a, 0x47, 0xd4, 0x69, 0x62, 0x54, 0x16, +0x74, 0xf5, 0x75, 0xa0, 0x6f, 0xa0, 0x8b, 0x63, +0x5b, 0xaf, 0xe3, 0xe4, 0xf6, 0x48, 0xd5, 0xe2, +0x86, 0x2e, 0xde, 0x9f, 0x61, 0x58, 0xdc, 0x8b, +0xcc, 0xc2, 0xcd, 0x33, 0x49, 0x68, 0xa8, 0x6d, +0x42, 0x53, 0x83, 0x02, 0x06, 0xc6, 0xfa, 0xea, +0xce, 0x40, 0xd9, 0xc2, 0xa0, 0x34, 0xaf, 0x0a, +0x37, 0x4f, 0x27, 0xe1, 0xd7, 0x55, 0x67, 0xf1, +0xf3, 0xbf, 0x4f, 0x22, 0x2f, 0xad, 0x8c, 0x6c, +0x4b, 0xf1, 0x05, 0x38, 0xb7, 0xeb, 0x36, 0x4a, +0x72, 0xaa, 0x60, 0x60, 0xac, 0x07, 0x53, 0x4b, +0x43, 0xf5, 0xce, 0x6e, 0xca, 0x16, 0x06, 0x85, +0x99, 0xe5, 0x88, 0x3a, 0x9b, 0x8c, 0x35, 0x8b, +0xf6, 0xe2, 0xc6, 0xa9, 0x44, 0xce, 0xbd, 0x2d, +0x2d, 0x4a, 0x44, 0xff, 0xf5, 0x00, 0x57, 0x8f, +0xc4, 0xa3, 0xb6, 0xb2, 0x11, 0xa6, 0x56, 0x86, +0x30, 0x32, 0x93, 0x41, 0xfc, 0xd0, 0x04, 0xd4, +0xd4, 0x20, 0x47, 0xce, 0xfd, 0x12, 0x9c, 0xfe, +0xed, 0x16, 0xd6, 0xbd, 0xbc, 0x1f, 0x19, 0xf7, +0x0a, 0xbb, 0xa9, 0x72, 0xdb, 0xbe, 0x9b, 0xcb, +0x07, 0xe3, 0x50, 0x92, 0x5b, 0x05, 0xb1, 0x58, +0x84, 0x8a, 0xa2, 0x1a, 0x94, 0xe4, 0x56, 0xf1, +0x1e, 0x19, 0xf7, 0x0a, 0x71, 0xf3, 0x6c, 0x32, +0xce, 0xff, 0x11, 0x8d, 0x3d, 0x6b, 0xc3, 0x71, +0x7c, 0xdb, 0x0d, 0xd4, 0x56, 0x35, 0x74, 0x2a, +0xbf, 0xb9, 0x49, 0x81, 0x6b, 0x47, 0x13, 0x90, +0xfb, 0xa0, 0x14, 0x75, 0x95, 0x0d, 0x10, 0x4b, +0x44, 0x30, 0xb6, 0x30, 0x80, 0x58, 0x22, 0x46, +0x7d, 0x4d, 0x13, 0x92, 0x6f, 0x65, 0x23, 0xe2, +0x58, 0x02, 0xb6, 0xad, 0x3c, 0xad, 0x9a, 0x99, +0x81, 0xed, 0x32, 0xcf, 0x45, 0x39, 0x15, 0x08, +0x3f, 0x10, 0x8b, 0xba, 0xaa, 0x46, 0x34, 0xd6, +0x37, 0x43, 0x66, 0xa4, 0x07, 0x03, 0x63, 0x95, +0x89, 0xad, 0x30, 0xb3, 0x1c, 0xb1, 0x97, 0xd2, +0x70, 0xfe, 0x8f, 0x68, 0x6c, 0x79, 0xf7, 0x28, +0xca, 0x8a, 0x6a, 0x04, 0xe5, 0x24, 0xdf, 0xce, +0x81, 0x44, 0x2a, 0x86, 0x91, 0xa9, 0x0c, 0xa7, +0x7e, 0xb9, 0x89, 0x23, 0x3f, 0x44, 0xa0, 0xb9, +0x49, 0xc1, 0x9b, 0x36, 0xe3, 0x5e, 0x21, 0x2a, +0x4b, 0x6a, 0xd1, 0x3b, 0xc4, 0x1d, 0x22, 0x88, +0x70, 0xfd, 0x44, 0x22, 0xf6, 0x6f, 0xb8, 0x84, +0x16, 0x9e, 0x6f, 0x9e, 0xef, 0x10, 0x4d, 0xb2, +0xfa, 0x90, 0x05, 0x85, 0x42, 0xa1, 0x50, 0xb4, +0x86, 0x54, 0x68, 0xf3, 0x10, 0x0a, 0x85, 0x42, +0xa1, 0x3c, 0x19, 0x1e, 0x69, 0x93, 0x1c, 0x0a, +0x85, 0x42, 0xa1, 0x74, 0x9f, 0xc7, 0xf2, 0x0b, +0x14, 0x14, 0x0a, 0x85, 0x42, 0xd1, 0x9c, 0x1e, +0x6f, 0x92, 0x43, 0xa1, 0x50, 0x28, 0x94, 0x9e, +0xf1, 0x58, 0x7e, 0xec, 0x92, 0x42, 0xa1, 0x50, +0x28, 0x9a, 0x43, 0x4d, 0x0d, 0x14, 0x0a, 0x85, +0xa2, 0x65, 0xa8, 0xa9, 0x81, 0x42, 0xa1, 0x50, +0xb4, 0x0c, 0x1d, 0xf1, 0x52, 0x28, 0x14, 0x8a, +0x96, 0x79, 0xe4, 0x1f, 0xbb, 0xa4, 0x50, 0x28, +0x14, 0x4a, 0xf7, 0x90, 0x3e, 0x8e, 0xdd, 0x88, +0x28, 0x14, 0x0a, 0x85, 0xa2, 0x39, 0x34, 0xaa, +0x81, 0x42, 0xa1, 0x50, 0xb4, 0x4c, 0xb7, 0xf6, +0xe3, 0xa5, 0x50, 0x28, 0x14, 0xca, 0xa3, 0x43, +0x47, 0xbc, 0x14, 0x0a, 0x85, 0xa2, 0x65, 0xa8, +0x73, 0x8d, 0x42, 0xa1, 0x50, 0xb4, 0x0c, 0x75, +0xae, 0x51, 0x28, 0x14, 0x8a, 0x96, 0xa1, 0xa6, +0x06, 0x0a, 0x85, 0x42, 0xd1, 0x32, 0xd4, 0xb9, +0x46, 0xa1, 0x50, 0x28, 0x5a, 0x86, 0x8e, 0x78, +0x29, 0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x5f, 0xa0, +0xa0, 0x50, 0x28, 0x14, 0x2d, 0x43, 0x7f, 0x81, +0x82, 0x42, 0xa1, 0x50, 0xb4, 0x0c, 0xdd, 0x24, +0x87, 0x42, 0xa1, 0x50, 0xb4, 0x0c, 0x8d, 0xe3, +0xa5, 0x50, 0x28, 0x14, 0x2d, 0x43, 0x4d, 0x0d, +0x14, 0x0a, 0x85, 0xa2, 0x65, 0xa8, 0xa9, 0x81, +0x42, 0xa1, 0x50, 0xb4, 0x0c, 0xfd, 0x05, 0x0a, +0x0a, 0x85, 0x42, 0xd1, 0x32, 0x74, 0xc4, 0x4b, +0xa1, 0x50, 0x28, 0x5a, 0x86, 0x3a, 0xd7, 0x28, +0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x4d, 0x72, 0x28, +0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x25, 0xc3, 0x14, +0x0a, 0x85, 0xa2, 0x65, 0xe8, 0x92, 0x61, 0x0a, +0x85, 0x42, 0xd1, 0x32, 0x34, 0x8e, 0x97, 0x42, +0xa1, 0x50, 0xb4, 0x0c, 0x75, 0xae, 0x51, 0x28, +0x14, 0x8a, 0x96, 0x11, 0xff, 0xaf, 0x33, 0x40, +0xa1, 0x50, 0x28, 0xff, 0x34, 0xa8, 0xe2, 0xa5, +0x50, 0x28, 0x14, 0x2d, 0x43, 0x15, 0x2f, 0x85, +0x42, 0xa1, 0x68, 0x19, 0xaa, 0x78, 0x29, 0x14, +0x0a, 0x45, 0xcb, 0x50, 0xc5, 0x4b, 0xa1, 0x50, +0x28, 0x5a, 0x86, 0x2a, 0x5e, 0x0a, 0x85, 0x42, +0xd1, 0x32, 0xff, 0x07, 0xee, 0x49, 0x07, 0xb9, +0x66, 0xef, 0x1d, 0xa8, 0x00, 0x00, 0x00, 0x00, +0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, +0x82, }; + +#endif + diff --git a/source/bitmaps/bigimgs/aboutimage.png b/source/bitmaps/bigimgs/aboutimage.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8bee733da47868a37c20cc5cd25d653343c837 GIT binary patch literal 11192 zcmZ{qWmFtZw5|ttcMI+i+$}f+w*Z0Qgy1r`yTd?m4;CzVfZ*=#?(WXu+)2K3f84Xy zowa7Vr@DIAF6r8DRX-7`%Ccz4#K-^u08L&_N*w@zGJu?$A;Lp`$69sFAqQBXguEsq z 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 + +#ifndef BIGIMGS_APPICON_CPP +#define BIGIMGS_APPICON_CPP + +static unsigned char bigimgs_appicon_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, +0x08, 0x06, 0x00, 0x00, 0x00, 0xf4, 0x78, 0xd4, +0xfa, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x01, 0x4d, 0xf7, 0x49, +0x44, 0x41, 0x54, 0x78, 0xda, 0xec, 0x7d, 0x05, +0x78, 0x54, 0xe7, 0xd6, 0xf5, 0x5f, 0xf7, 0xf6, +0xf6, 0x7e, 0xb7, 0xee, 0xee, 0xee, 0x2d, 0x75, +0x77, 0x85, 0xe2, 0x90, 0x90, 0x40, 0x1c, 0xe2, +0xee, 0x4a, 0x42, 0x20, 0xee, 0xee, 0xae, 0x24, +0x10, 0x42, 0x12, 0x08, 0x71, 0x77, 0x0f, 0x4e, +0xfd, 0xde, 0xf6, 0x6a, 0xef, 0xad, 0xed, 0x7f, +0xbf, 0x67, 0xe6, 0xcc, 0x9c, 0x33, 0x73, 0xc6, +0x92, 0x91, 0xc8, 0xcb, 0xff, 0xac, 0x87, 0xdc, +0x36, 0xf0, 0xf5, 0x87, 0x99, 0x59, 0x6b, 0xed, +0xb3, 0xf6, 0xda, 0xff, 0x0f, 0x00, 0xfe, 0x1f, +0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xc5, 0xf2, +0x02, 0xfd, 0x43, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, +0xa0, 0xa0, 0x02, 0x80, 0x82, 0x82, 0x82, 0x82, +0x82, 0x82, 0x82, 0x0a, 0x00, 0x0a, 0x0a, 0x0a, +0x0a, 0x0a, 0x0a, 0x0a, 0x2a, 0x00, 0x28, 0x28, +0x28, 0x28, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, +0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x02, +0x80, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, +0x0a, 0x00, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, +0x0a, 0x2a, 0x00, 0x28, 0x28, 0xb8, 0xd8, 0x5e, +0xb1, 0x77, 0x05, 0xe2, 0x5e, 0xfa, 0x67, 0x41, +0x41, 0x41, 0x41, 0x41, 0x05, 0x00, 0xc5, 0xf2, +0x21, 0xff, 0x73, 0xb7, 0x17, 0xef, 0x3d, 0xb5, +0xbd, 0x7c, 0xef, 0x1f, 0xdb, 0xd3, 0xf6, 0x36, +0xda, 0x54, 0x54, 0xdf, 0x49, 0xff, 0x5c, 0x28, +0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0x58, 0xea, +0x02, 0x20, 0xab, 0xc6, 0x1e, 0x45, 0x00, 0x88, +0x50, 0x0d, 0x36, 0x65, 0xd5, 0x7f, 0xd8, 0xa4, +0xed, 0xad, 0x45, 0x21, 0x70, 0x0b, 0xfd, 0xf3, +0xa1, 0xa0, 0xa0, 0xa0, 0xa0, 0x02, 0x80, 0x62, +0x69, 0xba, 0xff, 0x0b, 0xb7, 0x17, 0xd4, 0xfc, +0x93, 0x27, 0x00, 0x58, 0x88, 0x84, 0x40, 0x85, +0x4d, 0x45, 0xd5, 0x0d, 0xf4, 0xcf, 0x8a, 0x82, +0x82, 0x82, 0x82, 0x0a, 0x00, 0x8a, 0xa5, 0x24, +0x00, 0x32, 0x6b, 0x7c, 0xa5, 0xe4, 0x2f, 0x23, +0x00, 0x58, 0x94, 0x56, 0xfd, 0x6e, 0x93, 0x56, +0x5d, 0x80, 0x42, 0xe0, 0x1a, 0xfa, 0x67, 0x46, +0x41, 0x41, 0x41, 0x41, 0x05, 0x00, 0xc5, 0xe2, +0x77, 0xff, 0x97, 0x6e, 0x2f, 0xda, 0xfb, 0x33, +0x4b, 0xfe, 0xb6, 0xc5, 0xb5, 0x10, 0xdd, 0xdd, +0x0f, 0x0e, 0x45, 0xfb, 0x65, 0x44, 0x40, 0x95, +0x08, 0x25, 0x55, 0xbf, 0xa1, 0x10, 0xc8, 0xc4, +0xaf, 0xff, 0x42, 0xff, 0xfc, 0x28, 0x28, 0x28, +0x28, 0xa8, 0x00, 0xa0, 0x58, 0xac, 0x02, 0x20, +0xa3, 0x26, 0x9c, 0xeb, 0xfe, 0x43, 0x9b, 0x3a, +0x21, 0xff, 0xc4, 0x51, 0xc8, 0x43, 0x44, 0x75, +0xf5, 0x83, 0x7d, 0xd1, 0x3e, 0xbe, 0x00, 0x90, +0x0a, 0x81, 0x5f, 0x51, 0x08, 0x24, 0xda, 0x54, +0x54, 0xfe, 0x89, 0xfe, 0x39, 0x52, 0x50, 0x50, +0x50, 0x50, 0x01, 0x40, 0xb1, 0xa8, 0xdc, 0x7f, +0xcd, 0x9f, 0x30, 0xf9, 0xff, 0x3f, 0x96, 0xfc, +0xed, 0x8a, 0x6a, 0x21, 0xf7, 0xd8, 0x2c, 0x43, +0xfe, 0x5c, 0x44, 0x74, 0xf4, 0x32, 0xff, 0x4e, +0x4e, 0x04, 0x54, 0x54, 0x82, 0x4d, 0x71, 0xe5, +0x2f, 0x28, 0x04, 0x22, 0x6d, 0xca, 0x2b, 0x2f, +0xa3, 0x7f, 0xa6, 0x14, 0x14, 0x14, 0x14, 0x54, +0x00, 0x50, 0x2c, 0x06, 0x01, 0x90, 0x5e, 0x9b, +0xc4, 0x75, 0xff, 0xbb, 0x8f, 0x74, 0xcb, 0x91, +0x7f, 0xde, 0x89, 0x59, 0xc8, 0x45, 0xe4, 0x1c, +0x9f, 0x81, 0xdd, 0x6d, 0xdd, 0x60, 0x5b, 0x54, +0xc3, 0x17, 0x00, 0x2c, 0x0a, 0xab, 0xfe, 0x6b, +0x93, 0x56, 0x15, 0x6a, 0x53, 0x5e, 0x71, 0x09, +0xfd, 0xb3, 0xa5, 0xa0, 0xa0, 0xa0, 0xa0, 0x02, +0x80, 0x62, 0xe1, 0xba, 0xff, 0xab, 0xb7, 0x97, +0xd4, 0xfc, 0xc6, 0x92, 0x3f, 0x19, 0xf5, 0xe7, +0x1d, 0x9f, 0x15, 0x24, 0x7f, 0x2e, 0x88, 0x10, +0xd8, 0xd5, 0xd2, 0x25, 0x16, 0x02, 0x1c, 0x01, +0x50, 0x2e, 0x46, 0x41, 0xe5, 0x7f, 0x6c, 0xd2, +0xab, 0xfc, 0x50, 0x08, 0x5c, 0x48, 0xff, 0x9c, +0x29, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0x58, +0x78, 0xee, 0x3f, 0x1f, 0x45, 0x80, 0xc4, 0xfd, +0x47, 0xb4, 0xf7, 0x2a, 0x74, 0xff, 0x3c, 0x01, +0x20, 0x46, 0xf6, 0xb1, 0x19, 0x08, 0x3d, 0xdc, +0x0e, 0x3b, 0x8a, 0xab, 0xf9, 0x02, 0xa0, 0xbc, +0x42, 0x84, 0xfc, 0xca, 0x7f, 0xa1, 0x10, 0x70, +0xc7, 0xaf, 0xcf, 0xa7, 0x7f, 0xde, 0x14, 0x14, +0x14, 0x14, 0x54, 0x00, 0x50, 0x2c, 0x0c, 0xf7, +0x7f, 0xe3, 0xf6, 0xd2, 0x9a, 0xdf, 0x59, 0x01, +0x40, 0x12, 0xff, 0xf9, 0x1a, 0x90, 0x3f, 0x83, +0xe3, 0xa2, 0x69, 0x40, 0xe6, 0xd1, 0x29, 0x08, +0x69, 0x44, 0x21, 0x50, 0x54, 0xcd, 0x17, 0x00, +0x2c, 0xf2, 0x2a, 0xff, 0x61, 0x93, 0x51, 0x69, +0x67, 0x5d, 0x5e, 0x7e, 0x2e, 0xfd, 0xb3, 0xa7, +0xa0, 0xa0, 0xa0, 0xa0, 0x02, 0x80, 0xc2, 0xb0, +0xee, 0xbf, 0x5a, 0x44, 0xfe, 0x22, 0x01, 0x10, +0x8d, 0x69, 0x7f, 0x4d, 0xdc, 0x3f, 0x4b, 0xfe, +0x04, 0xd9, 0x62, 0x10, 0x21, 0x10, 0x74, 0xb0, +0x15, 0xb6, 0x17, 0x57, 0xc9, 0x8b, 0x80, 0xf2, +0x72, 0xb0, 0xce, 0xad, 0xf8, 0xd1, 0x3a, 0xb3, +0xc2, 0x02, 0x85, 0xc0, 0x39, 0xf4, 0xef, 0x80, +0x82, 0x82, 0x82, 0x82, 0x0a, 0x00, 0x0a, 0x7d, +0x93, 0x7f, 0x65, 0xcd, 0x9d, 0xdb, 0xcb, 0x6a, +0xfe, 0x60, 0x05, 0x80, 0x63, 0x51, 0xdd, 0xbc, +0xc9, 0x9f, 0x45, 0x16, 0x22, 0x7d, 0x76, 0x0a, +0x02, 0x0e, 0xb4, 0xa0, 0x10, 0xa8, 0xe4, 0x0b, +0x00, 0x16, 0x39, 0x15, 0x3f, 0x58, 0x67, 0x55, +0x18, 0x5b, 0x97, 0x97, 0x9d, 0x45, 0xff, 0x3e, +0x28, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0xd0, +0xdb, 0xde, 0x7f, 0x6d, 0xa3, 0xd4, 0xfd, 0xd7, +0x40, 0x5c, 0xff, 0x90, 0x4a, 0xf2, 0x17, 0x12, +0x00, 0xd9, 0x0a, 0x04, 0x40, 0x96, 0x44, 0x08, +0x4c, 0x80, 0xdf, 0xfe, 0x66, 0xd8, 0x5e, 0x52, +0xc9, 0x17, 0x00, 0x12, 0x21, 0x50, 0xfe, 0xad, +0x75, 0x76, 0xf9, 0x3a, 0x2a, 0x04, 0x28, 0x28, +0x28, 0x28, 0xa8, 0x00, 0xa0, 0xd0, 0x35, 0xf9, +0x97, 0xd7, 0x3c, 0xc4, 0x25, 0x7f, 0xe7, 0xa2, +0x7a, 0xad, 0xba, 0x7f, 0x29, 0xa6, 0x21, 0x53, +0x8c, 0xd4, 0xe9, 0x09, 0xf0, 0xad, 0x39, 0x84, +0xc5, 0x41, 0x15, 0x32, 0x22, 0xa0, 0x4c, 0x84, +0xac, 0xf2, 0xd3, 0x28, 0x06, 0x3e, 0xa3, 0x7f, +0x3f, 0x14, 0x14, 0x14, 0x14, 0x54, 0x00, 0x50, +0xe8, 0x4a, 0x00, 0x64, 0xd6, 0x76, 0xe2, 0x23, +0x00, 0x89, 0x00, 0x48, 0x1c, 0x1a, 0x9e, 0x53, +0xf0, 0x4f, 0x39, 0xf9, 0x73, 0x04, 0xc0, 0x31, +0x29, 0x92, 0xa7, 0xc6, 0xc1, 0xab, 0xba, 0x09, +0xac, 0x4b, 0x2b, 0xf8, 0x02, 0x40, 0x22, 0x04, +0x2a, 0x8e, 0x5b, 0xe7, 0x96, 0xbd, 0x4f, 0xff, +0x9e, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0xa0, +0xd0, 0x26, 0xf9, 0x97, 0xd6, 0x3e, 0xc3, 0x90, +0xbf, 0x58, 0x00, 0xb8, 0x16, 0x37, 0xe8, 0xdc, +0xfd, 0x73, 0x05, 0x40, 0x86, 0x18, 0x49, 0x53, +0xa3, 0xe0, 0x59, 0xd9, 0x88, 0x42, 0xa0, 0x4c, +0x5e, 0x04, 0x94, 0x97, 0x82, 0x75, 0x66, 0xf9, +0xb4, 0x75, 0x7e, 0xd9, 0x1b, 0xf4, 0xef, 0x8c, +0x82, 0x82, 0x82, 0x0a, 0x00, 0x0a, 0x0a, 0x6d, +0x08, 0x80, 0xac, 0x7d, 0xc3, 0x5c, 0x01, 0x90, +0x34, 0x3a, 0xa6, 0x77, 0xf2, 0x17, 0x61, 0x0a, +0xd2, 0x11, 0x89, 0x93, 0x23, 0xe0, 0x5e, 0x7e, +0x10, 0xac, 0xcb, 0x64, 0x04, 0x00, 0x8b, 0x8c, +0xf2, 0x31, 0xeb, 0xc2, 0xb2, 0x15, 0xf4, 0xef, +0x8e, 0x82, 0x82, 0x82, 0x0a, 0x00, 0x0a, 0x8a, +0xb9, 0x92, 0x7f, 0x51, 0xed, 0x6b, 0xdb, 0x2b, +0x6b, 0x81, 0x15, 0x00, 0xee, 0xa5, 0x4d, 0x3a, +0x09, 0xfe, 0x09, 0x8d, 0xfe, 0x33, 0x65, 0xc8, +0x9f, 0x15, 0x00, 0x2c, 0x12, 0x26, 0x46, 0xc0, +0xad, 0xac, 0x5e, 0x2c, 0x04, 0x4a, 0xe5, 0x91, +0x56, 0x36, 0x68, 0x5d, 0x50, 0xfa, 0x14, 0xfd, +0x7b, 0xa4, 0xa0, 0xa0, 0xa0, 0x02, 0x80, 0x82, +0x42, 0x53, 0x01, 0x90, 0xbd, 0x6f, 0x5a, 0x22, +0x00, 0xd0, 0xfd, 0xa7, 0x4e, 0x8c, 0x1b, 0xd4, +0xfd, 0xcb, 0x22, 0x0d, 0x3b, 0x04, 0xe2, 0xc6, +0x86, 0xc1, 0xa5, 0xa4, 0x4e, 0x5e, 0x00, 0x94, +0x95, 0x88, 0x90, 0x5a, 0xd6, 0x65, 0x5d, 0x52, +0xf2, 0x08, 0xfd, 0xfb, 0xa4, 0xa0, 0xa0, 0xa0, +0x02, 0x80, 0x82, 0x42, 0x1d, 0xf2, 0x2f, 0xa8, +0xfd, 0x48, 0x44, 0xfe, 0x22, 0x01, 0xe0, 0x59, +0x71, 0x48, 0x6f, 0xc1, 0xbf, 0x0c, 0x15, 0xee, +0x9f, 0x25, 0x7f, 0x11, 0x26, 0x19, 0xc4, 0x8c, +0x0e, 0x82, 0x73, 0xf1, 0x7e, 0x79, 0x01, 0x20, +0x15, 0x02, 0x2d, 0xd6, 0x25, 0xc5, 0xf7, 0xd3, +0xbf, 0x5b, 0x0a, 0x0a, 0x0a, 0x2a, 0x00, 0x28, +0x28, 0x14, 0x91, 0x7f, 0x65, 0xed, 0x59, 0xdb, +0x73, 0xf7, 0x9d, 0x92, 0x08, 0x00, 0x74, 0xff, +0x69, 0x53, 0x13, 0x06, 0x70, 0xff, 0x53, 0x4a, +0xdd, 0x3f, 0x57, 0x00, 0xa4, 0x8a, 0x11, 0x3d, +0x3c, 0x00, 0x4e, 0x78, 0x82, 0x58, 0x4e, 0x00, +0x10, 0x94, 0x16, 0x83, 0x75, 0x4a, 0x69, 0xa3, +0x55, 0x59, 0xf1, 0x9d, 0xf4, 0xef, 0x99, 0x82, +0x82, 0x82, 0x0a, 0x00, 0x0a, 0x0a, 0x59, 0x01, +0x90, 0xb7, 0x6f, 0x9d, 0xd4, 0xfd, 0xd7, 0x82, +0x77, 0x55, 0xf3, 0x82, 0x1b, 0xfd, 0x0b, 0x91, +0x3f, 0x8b, 0x14, 0x44, 0xe4, 0x60, 0x3f, 0x38, +0x16, 0xd6, 0xc8, 0x88, 0x80, 0x62, 0xb0, 0x22, +0x28, 0x29, 0xfe, 0x03, 0x85, 0xc0, 0x7e, 0xfc, +0xfa, 0x56, 0xfa, 0xf7, 0x4d, 0x41, 0x41, 0x41, +0x05, 0x00, 0x05, 0x85, 0xc8, 0xfd, 0x9f, 0x8d, +0x02, 0xe0, 0x3b, 0x89, 0x00, 0x28, 0xaf, 0x85, +0x8c, 0x99, 0xc9, 0x05, 0x11, 0xfc, 0xe3, 0x93, +0xbf, 0x72, 0x01, 0x20, 0xc2, 0x04, 0x44, 0xf4, +0xf7, 0x80, 0x43, 0xc1, 0x5e, 0xbe, 0x00, 0xe0, +0x0b, 0x81, 0x0a, 0xab, 0xb2, 0xa2, 0x1b, 0xe8, +0xdf, 0x3d, 0x05, 0x05, 0x05, 0x15, 0x00, 0x14, +0xcb, 0x5b, 0x00, 0xe4, 0xec, 0x33, 0xe3, 0xba, +0x7f, 0xbf, 0x9a, 0x96, 0x45, 0xe7, 0xfe, 0x59, +0xf2, 0x67, 0x80, 0xd5, 0xc2, 0xc9, 0x88, 0xdd, +0xbd, 0xdd, 0x60, 0x5f, 0x50, 0xc5, 0x17, 0x00, +0x0c, 0x8a, 0xc0, 0xaa, 0xb8, 0xe8, 0x77, 0x14, +0x02, 0x85, 0xf8, 0xf5, 0x35, 0xf4, 0x35, 0x40, +0x41, 0x41, 0x41, 0x05, 0x00, 0xc5, 0x32, 0x74, +0xff, 0xfb, 0xce, 0xc3, 0xf0, 0xdf, 0x8f, 0x2c, +0xf9, 0xef, 0x28, 0xdb, 0x07, 0x99, 0xb3, 0xd3, +0x0b, 0x36, 0xf8, 0x97, 0xaa, 0x86, 0x00, 0x48, +0x9e, 0xe5, 0x63, 0x57, 0x57, 0x17, 0xd8, 0x16, +0x54, 0xf2, 0x05, 0x00, 0x8b, 0xe2, 0xe2, 0xdf, +0x50, 0x08, 0x64, 0x5a, 0x95, 0x15, 0xfe, 0x85, +0xbe, 0x1e, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, +0x58, 0x46, 0xa5, 0x3f, 0xfb, 0x1d, 0xb9, 0xee, +0x3f, 0xb0, 0xae, 0x6d, 0x51, 0x04, 0xff, 0x54, +0xb9, 0x7f, 0x2e, 0x92, 0xc4, 0x08, 0xed, 0xe8, +0x80, 0x1d, 0x05, 0x15, 0x7c, 0x01, 0xc0, 0xa2, +0xa8, 0xe8, 0x57, 0xeb, 0x94, 0x92, 0x24, 0x14, +0x02, 0x7f, 0xa2, 0xaf, 0x0b, 0x0a, 0x0a, 0x0a, +0x2a, 0x00, 0x28, 0x96, 0xba, 0xfb, 0xbf, 0x70, +0x7b, 0xe1, 0xbe, 0x7f, 0x4a, 0xdc, 0x7f, 0xe9, +0x3e, 0xc8, 0x3e, 0x3a, 0xbd, 0x08, 0x47, 0xff, +0x8a, 0xdd, 0x7f, 0x92, 0x04, 0xe3, 0x12, 0x84, +0xb4, 0xb5, 0xa1, 0x10, 0x28, 0x97, 0x11, 0x01, +0x85, 0x22, 0x14, 0x16, 0xfd, 0x62, 0x9d, 0x5a, +0x12, 0x8d, 0x5f, 0x5f, 0x46, 0x5f, 0x23, 0x14, +0x14, 0x14, 0x54, 0x00, 0x50, 0x2c, 0x4d, 0x01, +0x90, 0xb9, 0xdf, 0x1f, 0x45, 0x80, 0xc4, 0xfd, +0x87, 0x1c, 0xec, 0xe0, 0x91, 0x7f, 0xde, 0x22, +0x0a, 0xfe, 0xa9, 0x72, 0xff, 0x2c, 0xf9, 0x27, +0x8a, 0x91, 0x30, 0x33, 0x06, 0xc1, 0x47, 0x5a, +0x61, 0x7b, 0x41, 0x19, 0x5f, 0x00, 0xb0, 0x28, +0x28, 0xfa, 0xaf, 0x75, 0x6a, 0x71, 0xa8, 0x55, +0x59, 0xc1, 0x25, 0xf4, 0xb5, 0x42, 0x41, 0x41, +0x41, 0x05, 0x00, 0xc5, 0x52, 0x72, 0xff, 0x97, +0x6e, 0x2f, 0xda, 0xf7, 0x33, 0x2b, 0x00, 0x6c, +0x4b, 0xf6, 0x43, 0xce, 0xb1, 0x99, 0x45, 0x1f, +0xfc, 0x53, 0xe5, 0xfe, 0x13, 0xb9, 0x98, 0x19, +0x87, 0xf8, 0xe9, 0x31, 0x08, 0x38, 0xdc, 0x02, +0x36, 0x05, 0xa5, 0xf2, 0x22, 0xa0, 0xac, 0x00, +0xac, 0xf2, 0x0b, 0x7f, 0x46, 0x21, 0xe0, 0x67, +0x55, 0x5a, 0x70, 0x21, 0x7d, 0xdd, 0x50, 0x50, +0x50, 0x50, 0x01, 0x40, 0xb1, 0xf8, 0x05, 0x40, +0xc6, 0xfe, 0x08, 0x11, 0xf9, 0x8b, 0x04, 0x40, +0xe8, 0xa1, 0xae, 0x79, 0xaf, 0xfd, 0x2d, 0xa4, +0xe0, 0x9f, 0x32, 0xf7, 0xcf, 0x92, 0x3f, 0x41, +0xc2, 0x8c, 0x68, 0x1a, 0x10, 0x3f, 0x3d, 0x0a, +0xfe, 0x8d, 0xcd, 0x60, 0x53, 0x58, 0xc2, 0x17, +0x00, 0x04, 0xa5, 0x88, 0xdc, 0xc2, 0x7f, 0xa1, +0x10, 0x70, 0xb7, 0x2c, 0xcd, 0x3f, 0x9f, 0xbe, +0x7e, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0x58, +0x94, 0xd8, 0x51, 0xb9, 0xef, 0xca, 0xed, 0x25, +0xfb, 0x7e, 0x61, 0x05, 0x80, 0x1d, 0xd6, 0xe9, +0x12, 0x52, 0x5f, 0x8a, 0xc1, 0x3f, 0x65, 0xee, +0x9f, 0x25, 0x7f, 0x2e, 0xe2, 0x50, 0x08, 0xf8, +0x1e, 0x3c, 0x24, 0x16, 0x02, 0x1c, 0x01, 0x20, +0x86, 0x65, 0x4e, 0xc1, 0x3f, 0xac, 0xd2, 0x8a, +0xec, 0x51, 0x08, 0x9c, 0x4b, 0x5f, 0x4b, 0x14, +0x14, 0x14, 0x54, 0x00, 0x50, 0x2c, 0x2e, 0x01, +0x90, 0xbe, 0x3f, 0x45, 0xea, 0xfe, 0xf7, 0x41, +0x78, 0x4b, 0xcf, 0x92, 0x0f, 0xfe, 0x09, 0x93, +0x3f, 0x5f, 0x00, 0xc4, 0x73, 0x10, 0x3b, 0x35, +0x02, 0x3e, 0x07, 0x1a, 0xc1, 0xba, 0xb0, 0x88, +0x2f, 0x00, 0x4a, 0xf3, 0x45, 0xc8, 0x29, 0xfc, +0xd1, 0x2a, 0xbd, 0xd0, 0x12, 0xbf, 0x3e, 0x87, +0xbe, 0xa6, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, +0x58, 0x0c, 0xee, 0xff, 0x1a, 0x4c, 0xfb, 0xff, +0xc6, 0x92, 0xbf, 0x7d, 0xf1, 0x01, 0xc8, 0x95, +0xb8, 0xff, 0xa5, 0x19, 0xfc, 0x53, 0xc7, 0xfd, +0xc7, 0x0b, 0x20, 0x0e, 0x11, 0x33, 0x35, 0x0c, +0x5e, 0xfb, 0x1a, 0x24, 0x42, 0x40, 0x22, 0x00, +0x58, 0x64, 0x17, 0xfe, 0x60, 0x95, 0x51, 0x60, +0x6c, 0x59, 0x9a, 0x77, 0x36, 0x7d, 0x7d, 0x51, +0x50, 0x50, 0x50, 0x01, 0x40, 0xb1, 0x90, 0xdd, +0x7f, 0xe1, 0x0e, 0x8e, 0xfb, 0x8f, 0xe8, 0xe8, +0x5f, 0x76, 0xc1, 0xbf, 0x04, 0x35, 0x04, 0x40, +0x1c, 0x83, 0x51, 0x11, 0xf0, 0xb1, 0x40, 0xd4, +0xc4, 0x10, 0x78, 0xd6, 0xd4, 0xe3, 0x9a, 0xa0, +0x80, 0x08, 0x28, 0xcd, 0x03, 0xcb, 0xac, 0x82, +0x6f, 0x2d, 0x33, 0x0b, 0xd6, 0xe1, 0xd7, 0x67, +0xd1, 0xd7, 0x19, 0x05, 0x05, 0x05, 0x15, 0x00, +0x14, 0x0b, 0xcc, 0xfd, 0xef, 0xbf, 0x09, 0x9b, +0xfe, 0x7e, 0x67, 0x05, 0x80, 0x43, 0x71, 0xfd, +0xb2, 0x0e, 0xfe, 0xa9, 0x4b, 0xfe, 0x04, 0xb1, +0x62, 0x10, 0x21, 0xe0, 0x5e, 0x7d, 0x00, 0x8b, +0x83, 0x0a, 0xf8, 0x02, 0x80, 0x45, 0x66, 0xc1, +0x19, 0x14, 0x03, 0x5f, 0xd0, 0xd7, 0x1b, 0x05, +0x05, 0x05, 0x15, 0x00, 0x14, 0x0b, 0xc8, 0xfd, +0xd7, 0xed, 0x25, 0xe4, 0xcf, 0x0a, 0x80, 0xa8, +0x9e, 0x01, 0x1a, 0xfc, 0x53, 0x26, 0x00, 0x64, +0xc8, 0x9f, 0x8b, 0x88, 0xf1, 0x41, 0x70, 0xad, +0xd8, 0x0f, 0x96, 0xc5, 0x05, 0x7c, 0x01, 0x20, +0x86, 0x55, 0x46, 0xfe, 0x71, 0xcb, 0x9c, 0xfc, +0x0f, 0xe8, 0xeb, 0x8e, 0x82, 0x82, 0x82, 0x0a, +0x00, 0x0a, 0x43, 0xbb, 0xff, 0xbb, 0x76, 0x94, +0xef, 0xff, 0x83, 0x15, 0x00, 0x8e, 0xc5, 0x07, +0x69, 0xf0, 0x4f, 0x0d, 0xf7, 0x2f, 0x44, 0xfe, +0x31, 0x0c, 0x46, 0x18, 0x44, 0x8c, 0xf5, 0x83, +0x0b, 0x5e, 0x4f, 0xb4, 0x2c, 0x96, 0x99, 0x04, +0x94, 0xe6, 0x32, 0xb0, 0x4a, 0x2f, 0x98, 0xb1, +0xcc, 0xcd, 0x7f, 0x83, 0xbe, 0x06, 0x29, 0x28, +0x28, 0xa8, 0x00, 0xa0, 0x30, 0x8c, 0x00, 0xc8, +0xa8, 0x6b, 0x42, 0x11, 0x00, 0xac, 0x00, 0x88, +0xed, 0x1f, 0xa2, 0xc1, 0xbf, 0x39, 0xba, 0x7f, +0xae, 0x00, 0x20, 0x88, 0x46, 0xec, 0x1e, 0xed, +0x03, 0xe7, 0x52, 0x14, 0x02, 0x25, 0x7c, 0x01, +0x20, 0x11, 0x02, 0x69, 0x05, 0xe3, 0x96, 0xf9, +0xb9, 0x2b, 0xe8, 0x6b, 0x91, 0x82, 0x82, 0x82, +0x0a, 0x00, 0x0a, 0xfd, 0x91, 0x7f, 0xf9, 0xfe, +0x87, 0x77, 0x54, 0x10, 0xf2, 0x17, 0x09, 0x00, +0x97, 0xe2, 0x06, 0x1a, 0xfc, 0xd3, 0x82, 0xfb, +0x67, 0xc9, 0x9f, 0xc1, 0x94, 0x08, 0xbb, 0x47, +0xfa, 0xc0, 0xa9, 0x64, 0x2f, 0x0a, 0x81, 0x5c, +0x39, 0x11, 0x60, 0x59, 0x9a, 0x03, 0x56, 0xa9, +0xf9, 0x83, 0x96, 0x05, 0xb9, 0x4f, 0xd3, 0xd7, +0x25, 0x05, 0x05, 0x05, 0x15, 0x00, 0x14, 0xfa, +0x70, 0xff, 0xdd, 0x22, 0xf2, 0x17, 0x09, 0x80, +0x84, 0xe1, 0x11, 0x83, 0x04, 0xff, 0x32, 0x8e, +0x4d, 0x42, 0xd5, 0xd8, 0x7e, 0x38, 0x34, 0x90, +0x05, 0x2d, 0xfd, 0x49, 0x70, 0x70, 0x30, 0x0f, +0x8a, 0x27, 0x5a, 0x16, 0x7c, 0xf0, 0x4f, 0x11, +0xf9, 0xc7, 0xc8, 0x90, 0x3f, 0x41, 0x14, 0x83, +0x61, 0xd8, 0x35, 0xdc, 0x03, 0x8e, 0x45, 0x55, +0x72, 0x02, 0x80, 0x85, 0x55, 0x4a, 0x7e, 0x37, +0x0a, 0x81, 0x47, 0xe9, 0xeb, 0x93, 0x82, 0x82, +0x82, 0x0a, 0x00, 0x0a, 0xdd, 0x90, 0x7f, 0xc9, +0xfe, 0x67, 0xa5, 0xe4, 0xbf, 0x1f, 0x5c, 0x4b, +0x1b, 0x0d, 0x12, 0xfc, 0x2b, 0x98, 0xee, 0x82, +0xde, 0xae, 0x30, 0x18, 0x6d, 0xf7, 0x94, 0x60, +0xa4, 0x4d, 0x84, 0xf6, 0x9e, 0x18, 0x28, 0x9c, +0x6a, 0x5f, 0x18, 0xee, 0x7f, 0x7a, 0xee, 0xee, +0x3f, 0x5a, 0x4c, 0xfe, 0x5c, 0x84, 0x0e, 0x76, +0x83, 0x43, 0x61, 0xa5, 0x9c, 0x00, 0xb0, 0x2c, +0x11, 0x23, 0x39, 0xbf, 0xd5, 0xa2, 0x28, 0xe7, +0x7e, 0xfa, 0x5a, 0xa5, 0xa0, 0xa0, 0xa0, 0x02, +0x80, 0x42, 0xbb, 0x02, 0x20, 0x6b, 0xff, 0x08, +0x57, 0x00, 0x24, 0x8d, 0x8d, 0xe9, 0x7d, 0xf4, +0x9f, 0x3d, 0x3b, 0x04, 0x7d, 0x9d, 0x21, 0x0c, +0xe9, 0x1f, 0x1d, 0x0e, 0x83, 0xaf, 0x8f, 0x27, +0xc0, 0xb7, 0x27, 0x93, 0xe1, 0xf4, 0x4c, 0x2c, +0x4c, 0x0f, 0x04, 0x4b, 0x84, 0x40, 0x53, 0x7f, +0x3a, 0x64, 0x4f, 0x0f, 0xcc, 0x21, 0xf8, 0x37, +0x61, 0xf0, 0xd1, 0x3f, 0xd7, 0xfd, 0xb3, 0x88, +0xe4, 0x20, 0x74, 0xa0, 0x0b, 0xec, 0xf0, 0x04, +0xb1, 0xac, 0x00, 0xb0, 0x28, 0xc9, 0x06, 0x8b, +0xe2, 0x6c, 0x22, 0x04, 0x1a, 0xf1, 0xeb, 0x3b, +0xe9, 0x6b, 0x96, 0x82, 0x82, 0x82, 0x0a, 0x00, +0x8a, 0xf9, 0x93, 0x7f, 0xe1, 0xfe, 0x37, 0xb8, +0xe4, 0xef, 0x51, 0x76, 0xd8, 0x20, 0xc1, 0xbf, +0x23, 0xfd, 0xa9, 0x0c, 0xf9, 0x1f, 0x1f, 0xdf, +0x0d, 0xdf, 0x9f, 0x49, 0x85, 0xef, 0x4e, 0xf3, +0x71, 0x66, 0x36, 0x16, 0x26, 0x7b, 0xfd, 0x19, +0x11, 0x30, 0xd4, 0xee, 0x03, 0x75, 0x43, 0xc5, +0x90, 0x3e, 0x3b, 0xba, 0xe0, 0x83, 0x7f, 0xca, +0xc8, 0x5f, 0x56, 0x00, 0x10, 0x44, 0x4c, 0x0d, +0x41, 0x70, 0x6f, 0x07, 0xd8, 0xe6, 0x97, 0xf1, +0x05, 0x00, 0x8b, 0xe2, 0xec, 0x3f, 0x2c, 0x93, +0xf2, 0xf7, 0x5b, 0x94, 0x64, 0xdd, 0x4a, 0x5f, +0xbf, 0x14, 0x14, 0x14, 0x54, 0x00, 0x50, 0xcc, +0x5d, 0x00, 0x64, 0xef, 0x9f, 0x95, 0x08, 0x00, +0x0c, 0x01, 0xa6, 0x4e, 0x4c, 0xe8, 0xdd, 0xfd, +0x17, 0x4d, 0xb5, 0x21, 0xb1, 0x7b, 0x21, 0xc1, +0x07, 0x30, 0xe4, 0x2f, 0x24, 0x00, 0x58, 0x9c, +0x9c, 0x8c, 0x84, 0xb1, 0x4e, 0x5f, 0x46, 0x08, +0xf4, 0x77, 0x06, 0x41, 0xe5, 0x68, 0x0d, 0x4e, +0x03, 0xc6, 0x17, 0x7c, 0xf0, 0x2f, 0x5a, 0x2d, +0xf2, 0x47, 0x4c, 0x0e, 0x49, 0x10, 0xd4, 0xdd, +0x06, 0xb6, 0x79, 0xa5, 0x7c, 0x01, 0xc0, 0xa2, +0x28, 0x0b, 0x85, 0x40, 0x5e, 0x25, 0x0a, 0x81, +0x1b, 0xe9, 0xeb, 0x98, 0x82, 0x82, 0x82, 0x0a, +0x00, 0x0a, 0xcd, 0xc8, 0x3f, 0xbf, 0xee, 0x13, +0xae, 0xfb, 0xf7, 0xaa, 0x68, 0x36, 0x48, 0xf0, +0xaf, 0x03, 0x9f, 0xef, 0x13, 0xf7, 0x4f, 0x5c, +0xbe, 0x32, 0xf2, 0x67, 0xf1, 0xed, 0xe9, 0x14, +0x38, 0x36, 0x16, 0x0e, 0x23, 0x1d, 0x5e, 0x8c, +0x10, 0xe8, 0xea, 0xde, 0x0d, 0x45, 0xe3, 0x87, +0x74, 0x18, 0xfc, 0x1b, 0xd3, 0x5a, 0xf0, 0x4f, +0x11, 0xf9, 0xb3, 0xee, 0x9f, 0x2b, 0x00, 0xf6, +0x88, 0x11, 0xd0, 0xd9, 0x0a, 0xdb, 0xf3, 0x8a, +0x65, 0x44, 0x40, 0x96, 0x08, 0x45, 0xd9, 0xbf, +0xa3, 0x10, 0x28, 0xc2, 0xaf, 0xaf, 0xa5, 0xaf, +0x69, 0x0a, 0x0a, 0x0a, 0x2a, 0x00, 0x28, 0xd4, +0x28, 0xfd, 0xa9, 0x3b, 0x6b, 0x47, 0x6e, 0xdd, +0x69, 0xae, 0xfb, 0x4f, 0x9f, 0x9a, 0xd4, 0x7b, +0xf0, 0xaf, 0x62, 0xa2, 0x91, 0x21, 0xff, 0x19, +0x7c, 0xce, 0xaf, 0xca, 0xfd, 0xcb, 0xe2, 0x9b, +0x93, 0x49, 0x30, 0x3b, 0xb4, 0x13, 0x46, 0xc4, +0x61, 0xc1, 0x23, 0xbd, 0x09, 0x90, 0x33, 0xd9, +0xb5, 0x28, 0x82, 0x7f, 0xaa, 0xdc, 0x3f, 0x57, +0x00, 0xb0, 0xf0, 0x6f, 0x3f, 0x02, 0x36, 0x79, +0x45, 0x7c, 0x01, 0xc0, 0xa2, 0x30, 0xfb, 0x37, +0xcb, 0xa4, 0xdc, 0x2c, 0x8b, 0x92, 0xcc, 0xbf, +0xd0, 0xd7, 0x37, 0x05, 0x05, 0x05, 0x15, 0x00, +0x14, 0x8a, 0x05, 0x40, 0x4e, 0xdd, 0x06, 0x14, +0x01, 0x12, 0xf7, 0xef, 0x53, 0xdd, 0xa2, 0xf7, +0xd1, 0x3f, 0x59, 0xf9, 0xeb, 0x61, 0x52, 0xff, +0x5e, 0xf0, 0xcd, 0xf1, 0x44, 0x8d, 0xc8, 0x9f, +0x8b, 0xaf, 0x8e, 0xc5, 0xc3, 0x54, 0x5f, 0x20, +0x23, 0x02, 0x86, 0xf1, 0xf7, 0xaa, 0x1f, 0xc8, +0x81, 0xf4, 0xe9, 0xc1, 0x45, 0x11, 0xfc, 0x93, +0x90, 0xff, 0x94, 0x72, 0xf2, 0xdf, 0x3d, 0x39, +0x28, 0x81, 0x6f, 0x6b, 0x33, 0x0a, 0x81, 0x42, +0x79, 0x11, 0x50, 0x92, 0x09, 0x16, 0x05, 0x59, +0xbf, 0x5a, 0x26, 0xe7, 0x26, 0xe1, 0xd7, 0x57, +0xd2, 0xd7, 0x39, 0x05, 0x05, 0x05, 0xfd, 0x43, +0xa0, 0x90, 0x75, 0xff, 0x67, 0xef, 0xc8, 0xab, +0xfb, 0x5e, 0x22, 0x00, 0xca, 0xf7, 0x43, 0xc6, +0xcc, 0x94, 0xda, 0x02, 0x40, 0x5b, 0xc1, 0xbf, +0x1a, 0x7c, 0x7e, 0x4f, 0xdc, 0xff, 0xec, 0x50, +0xa8, 0xc6, 0xee, 0x5f, 0x08, 0xa7, 0xa7, 0xa3, +0x61, 0xbc, 0xc7, 0x8f, 0x11, 0x02, 0x83, 0x1d, +0x7e, 0xb0, 0x77, 0xa8, 0x14, 0xa7, 0x01, 0xa3, +0x06, 0x0d, 0xfe, 0x45, 0xab, 0x19, 0xfc, 0x53, +0xe5, 0xfe, 0xb9, 0x02, 0x80, 0x85, 0x4f, 0xf3, +0x21, 0xb0, 0xce, 0x2b, 0xe0, 0x0b, 0x00, 0x16, +0xf9, 0x59, 0xbf, 0xa0, 0x10, 0x88, 0xb6, 0x28, +0xc9, 0xb8, 0x9c, 0xbe, 0xe6, 0x29, 0x28, 0xa8, +0x00, 0xa0, 0xa0, 0x10, 0x07, 0xff, 0xea, 0x2c, +0x44, 0xe4, 0x2f, 0x12, 0x00, 0xfe, 0xb5, 0x6d, +0x7a, 0x77, 0xff, 0x99, 0x47, 0xc7, 0x60, 0xa0, +0x33, 0x10, 0x46, 0xf1, 0x39, 0x3e, 0x19, 0xe5, +0xcf, 0x97, 0xfc, 0xb9, 0x38, 0x31, 0xb1, 0x07, +0x7f, 0x5f, 0x6f, 0x14, 0x02, 0x1e, 0xd0, 0x83, +0xab, 0x85, 0xa5, 0xa3, 0x75, 0x8b, 0x26, 0xf8, +0xa7, 0x2e, 0xf9, 0x87, 0x4f, 0x48, 0xe1, 0x7d, +0xa8, 0x09, 0x85, 0x40, 0x3e, 0x5f, 0x00, 0xb0, +0xc8, 0xcb, 0xfc, 0x9f, 0x65, 0x72, 0x4e, 0x18, +0x0a, 0x81, 0x4b, 0xe8, 0x6b, 0x9f, 0x82, 0x82, +0x0a, 0x00, 0x8a, 0xe5, 0xed, 0xfe, 0xcf, 0xdb, +0x51, 0x50, 0xf7, 0x13, 0x2b, 0x00, 0x6c, 0xcb, +0xea, 0x20, 0x6b, 0x76, 0x5a, 0xef, 0xc1, 0xbf, +0x03, 0xc3, 0x25, 0xa2, 0xb5, 0xbf, 0xb1, 0xdd, +0x5a, 0x25, 0x7f, 0x49, 0x3e, 0xe0, 0x54, 0x32, +0x1c, 0x1d, 0x09, 0xc3, 0x7c, 0x80, 0x17, 0x0c, +0xa3, 0x10, 0x68, 0xed, 0x89, 0x84, 0x5c, 0x6c, +0x14, 0x34, 0x64, 0xf0, 0x2f, 0x4a, 0x83, 0xe0, +0x9f, 0x32, 0x01, 0xc0, 0x25, 0x7f, 0x16, 0x61, +0xe3, 0xfd, 0xe0, 0xd9, 0xd8, 0x00, 0x56, 0x79, +0xb9, 0x32, 0x22, 0x20, 0x43, 0x84, 0xdc, 0xac, +0x9f, 0x2d, 0x53, 0x72, 0xfc, 0xf1, 0xeb, 0x0b, +0xe9, 0xfb, 0x80, 0x82, 0x82, 0x0a, 0x00, 0x8a, +0x65, 0x59, 0xfa, 0x53, 0xe7, 0x22, 0x75, 0xff, +0x75, 0x10, 0x74, 0xa0, 0x5d, 0xef, 0xc1, 0x3f, +0x52, 0xfa, 0x33, 0xdc, 0xe1, 0x0b, 0xe3, 0x5d, +0xbe, 0xf0, 0xdd, 0xa9, 0x14, 0x9d, 0x08, 0x00, +0x16, 0x5f, 0x63, 0xb6, 0x80, 0x14, 0x09, 0x11, +0x11, 0x30, 0x4c, 0x8a, 0x84, 0xfa, 0x52, 0x30, +0xec, 0xd8, 0xbb, 0x68, 0x82, 0x7f, 0xaa, 0xdc, +0x3f, 0xc1, 0xae, 0x89, 0x01, 0x09, 0x88, 0x10, +0xf0, 0x38, 0x58, 0xcf, 0x11, 0x02, 0x19, 0x7c, +0xe4, 0x64, 0xfd, 0xcb, 0x22, 0x39, 0xdb, 0xdd, +0xbc, 0x38, 0xfd, 0x7c, 0xfa, 0x7e, 0xa0, 0xa0, +0xa0, 0x02, 0x80, 0x62, 0xf9, 0xb8, 0xff, 0x0b, +0x77, 0x14, 0xd6, 0xfd, 0x4b, 0xe2, 0xfe, 0x4b, +0x0f, 0x40, 0xf6, 0xd1, 0x19, 0x35, 0xc8, 0x7f, +0x56, 0xab, 0xc7, 0x7e, 0x1a, 0x07, 0xb3, 0x19, +0xf7, 0x4f, 0x76, 0xfa, 0x75, 0x49, 0xfe, 0xdf, +0x72, 0x70, 0xe6, 0x68, 0x1c, 0x4c, 0xf4, 0xf8, +0x33, 0x42, 0x60, 0x08, 0xa7, 0x02, 0xfb, 0x06, +0xf2, 0x21, 0x19, 0x83, 0x82, 0x86, 0x0a, 0xfe, +0x45, 0x6a, 0x18, 0xfc, 0x53, 0x87, 0xfc, 0x25, +0x22, 0x00, 0x11, 0x8a, 0x42, 0xc0, 0xfd, 0xc0, +0x01, 0xb0, 0xcc, 0xcf, 0x96, 0x13, 0x01, 0x48, +0xfe, 0x60, 0x9e, 0x9d, 0xf9, 0x0f, 0x8b, 0x94, +0x6c, 0x7b, 0xfc, 0xfa, 0x5c, 0xfa, 0xde, 0xa0, +0xa0, 0xa0, 0x02, 0x80, 0x62, 0xa9, 0x0b, 0x80, +0x8c, 0xba, 0x40, 0xae, 0xfb, 0x0f, 0x69, 0xe8, +0xd2, 0x7b, 0xf0, 0xaf, 0x60, 0xba, 0x87, 0x19, +0xcb, 0x4f, 0x74, 0xfb, 0x69, 0x25, 0xf8, 0xa7, +0xae, 0x00, 0x60, 0x71, 0x72, 0x0a, 0x8b, 0x84, +0x70, 0xf2, 0x40, 0x84, 0x40, 0x7f, 0x47, 0x00, +0x94, 0x0f, 0x57, 0xe2, 0x14, 0x60, 0x74, 0xd1, +0x04, 0xff, 0x54, 0x09, 0x80, 0x30, 0x19, 0x84, +0x8e, 0xf6, 0x82, 0xeb, 0xbe, 0xfd, 0x3c, 0x21, +0xc0, 0x08, 0x00, 0x31, 0x2c, 0xb2, 0x32, 0x7f, +0xb2, 0x48, 0xcd, 0xb2, 0x32, 0x2f, 0x4e, 0x3b, +0x87, 0xbe, 0x47, 0x28, 0x28, 0xa8, 0x00, 0xa0, +0x58, 0x8a, 0xe4, 0x5f, 0x75, 0xe0, 0xb2, 0x1d, +0xc5, 0x75, 0x3f, 0xb3, 0xe4, 0x6f, 0x57, 0x72, +0x00, 0x72, 0x8e, 0xcd, 0xe8, 0xfd, 0xd4, 0x2f, +0xb9, 0xf0, 0x47, 0xdc, 0xff, 0xe9, 0x99, 0x18, +0xbd, 0x93, 0xff, 0xb7, 0xe2, 0x12, 0xa1, 0x6f, +0x4e, 0x89, 0x8a, 0x84, 0x86, 0xc5, 0xf9, 0x80, +0xce, 0xce, 0x30, 0x28, 0x18, 0x6d, 0x58, 0x54, +0xc1, 0x3f, 0x75, 0xc8, 0x3f, 0x6c, 0x5c, 0x34, +0x09, 0x20, 0x08, 0x41, 0x21, 0xe0, 0x52, 0xb3, +0x0f, 0x2c, 0x0b, 0xb2, 0x78, 0x02, 0x40, 0x22, +0x04, 0x32, 0x33, 0x7f, 0xb0, 0x48, 0xcb, 0x34, +0x41, 0x21, 0x70, 0x36, 0x7d, 0xbf, 0x50, 0x50, +0x50, 0x01, 0x40, 0xb1, 0xa4, 0xdc, 0xff, 0x81, +0x48, 0xae, 0xfb, 0x0f, 0x3b, 0xdc, 0xa3, 0xf7, +0xe0, 0x5f, 0xc9, 0x64, 0x0b, 0x43, 0xfe, 0x64, +0x67, 0xdf, 0x50, 0xe4, 0xcf, 0xc5, 0xd7, 0xb8, +0x7d, 0x30, 0x33, 0x1c, 0x8a, 0x42, 0xc0, 0x93, +0x11, 0x02, 0xcd, 0x3d, 0xb1, 0x90, 0x31, 0xd1, +0xba, 0x68, 0x82, 0x7f, 0x4a, 0x05, 0x00, 0x87, +0xfc, 0xb9, 0x08, 0x1e, 0xe9, 0x01, 0xe7, 0xaa, +0x1a, 0xec, 0x0b, 0xc8, 0x94, 0x11, 0x01, 0x69, +0x0c, 0x2c, 0x32, 0x32, 0xbf, 0xb5, 0x48, 0xcf, +0x5c, 0x67, 0x5e, 0x9c, 0x7a, 0x16, 0x7d, 0xdf, +0x50, 0x50, 0x50, 0x01, 0x40, 0xb1, 0xf8, 0xdd, +0xff, 0x9f, 0x77, 0x94, 0x1e, 0xf8, 0x85, 0x25, +0x7f, 0xfb, 0x92, 0x7a, 0xc8, 0x3d, 0x3e, 0xab, +0xd7, 0xe0, 0x1f, 0x71, 0xff, 0x9d, 0x98, 0xc4, +0x27, 0x02, 0xe0, 0x2b, 0x7c, 0x1e, 0xbf, 0x10, +0x04, 0x00, 0x8b, 0xaf, 0x8e, 0x25, 0xc0, 0x64, +0x7f, 0x90, 0x28, 0x1f, 0x80, 0x38, 0xd0, 0x97, +0x01, 0xc9, 0x53, 0x7d, 0x8b, 0xdc, 0xfd, 0xcb, +0x93, 0xff, 0x4e, 0x0e, 0x82, 0x47, 0xba, 0xc1, +0xa9, 0xb2, 0x1a, 0x85, 0x40, 0x06, 0x4f, 0x00, +0x48, 0x84, 0x40, 0x7a, 0xc6, 0x19, 0x8b, 0x8c, +0x8c, 0x2f, 0xe8, 0xfb, 0x87, 0x82, 0x82, 0x0a, +0x00, 0x8a, 0xc5, 0xed, 0xfe, 0xd3, 0x50, 0x04, +0x48, 0xdc, 0xff, 0xee, 0xd6, 0x3e, 0xbd, 0x07, +0xff, 0x2a, 0xc7, 0xeb, 0x45, 0x95, 0xbf, 0x83, +0x21, 0x0b, 0x8a, 0xfc, 0xb9, 0x38, 0x85, 0x8f, +0x25, 0x48, 0x91, 0x10, 0x11, 0x01, 0x03, 0xed, +0xbe, 0x50, 0x35, 0x58, 0x04, 0xf1, 0xe8, 0xd6, +0x17, 0x4b, 0xf0, 0x4f, 0x99, 0xfb, 0xdf, 0x29, +0x87, 0x3e, 0x08, 0x41, 0x04, 0x0e, 0x77, 0x81, +0x63, 0x79, 0x15, 0x98, 0x17, 0xca, 0x8a, 0x80, +0x54, 0x06, 0x16, 0x69, 0x19, 0x27, 0x2c, 0x32, +0x33, 0x3e, 0xa4, 0xef, 0x23, 0x0a, 0x0a, 0x2a, +0x00, 0x28, 0x16, 0x9f, 0xfb, 0xbf, 0x66, 0x47, +0xd9, 0x81, 0xdf, 0x58, 0x01, 0xe0, 0x50, 0x7c, +0x50, 0xfb, 0xee, 0x5f, 0x45, 0xf0, 0x2f, 0xe3, +0xd8, 0x04, 0xf4, 0x75, 0x85, 0x8a, 0x2a, 0x7f, +0x4f, 0x24, 0x1a, 0x40, 0x00, 0xa4, 0x68, 0x84, +0xe3, 0x93, 0x11, 0x30, 0xda, 0xe9, 0xcd, 0x08, +0x81, 0xee, 0x8e, 0x20, 0x28, 0x1e, 0xa9, 0x51, +0x39, 0xfa, 0x5f, 0x48, 0xc1, 0x3f, 0x55, 0xee, +0x9f, 0x2b, 0x00, 0x18, 0x8c, 0xa1, 0x10, 0x18, +0xea, 0xc4, 0xc9, 0x50, 0x05, 0x47, 0x08, 0xa4, +0xf2, 0x60, 0x91, 0x9a, 0x39, 0x63, 0x9e, 0x9d, +0xfe, 0x06, 0x7d, 0x4f, 0x51, 0x50, 0x50, 0x01, +0x40, 0xb1, 0x78, 0xdc, 0x7f, 0x31, 0x43, 0xfe, +0x62, 0x01, 0x10, 0xd1, 0x31, 0xa0, 0xf7, 0xe0, +0x5f, 0xed, 0x68, 0x15, 0xe3, 0xfe, 0x49, 0x31, +0xcf, 0x42, 0x75, 0xff, 0xb2, 0xf8, 0xe6, 0x24, +0x16, 0x09, 0x8d, 0xee, 0x62, 0xba, 0x03, 0x88, +0x10, 0x68, 0xed, 0xde, 0x03, 0xd9, 0x63, 0x4d, +0x8b, 0x2a, 0xf8, 0xa7, 0x16, 0xf9, 0x8b, 0x05, +0x40, 0xb0, 0x18, 0xfe, 0x83, 0x1d, 0x60, 0x57, +0x5c, 0x0e, 0xe6, 0x45, 0xf2, 0x22, 0x80, 0x11, +0x02, 0x29, 0x19, 0xe3, 0xe6, 0x39, 0x69, 0x2f, +0xd1, 0xf7, 0x16, 0x05, 0x05, 0x15, 0x00, 0x14, +0x0b, 0xdb, 0xfd, 0xdf, 0xbc, 0xa3, 0xe2, 0xc0, +0xef, 0xac, 0x00, 0x70, 0x2c, 0x6e, 0x98, 0x73, +0xf0, 0x2f, 0x7b, 0x8e, 0xc1, 0xbf, 0xac, 0xa3, +0xa3, 0x30, 0xd8, 0x19, 0x00, 0x63, 0xe8, 0xa8, +0xbf, 0x45, 0x52, 0x5d, 0x0c, 0xe4, 0xcf, 0xcb, +0x07, 0xe0, 0xc4, 0x62, 0x1a, 0x1f, 0x5b, 0x0c, +0x89, 0xf3, 0x01, 0x8d, 0xbd, 0x89, 0x90, 0x3c, +0xd1, 0xb1, 0xa8, 0x82, 0x7f, 0xaa, 0xc8, 0x9f, +0x2b, 0x00, 0x44, 0xe8, 0x05, 0xbf, 0x81, 0x36, +0xb0, 0x2d, 0x2a, 0x45, 0x21, 0x20, 0x2b, 0x02, +0x52, 0x18, 0x58, 0x24, 0x67, 0x0c, 0x9a, 0xe7, +0xa5, 0x3e, 0x4d, 0xdf, 0x67, 0x14, 0x14, 0x54, +0x00, 0x50, 0x2c, 0x4c, 0xf7, 0x5f, 0x2b, 0x71, +0xff, 0x88, 0xe8, 0x9e, 0x41, 0xbd, 0x07, 0xff, +0xea, 0x87, 0x0a, 0x75, 0x5a, 0xf9, 0xab, 0x6b, +0x01, 0xf0, 0x8d, 0x18, 0xa7, 0x49, 0x91, 0x50, +0x5f, 0x80, 0x28, 0x1f, 0x80, 0x53, 0x81, 0xda, +0xfe, 0x1c, 0x88, 0x9f, 0xec, 0x5b, 0x54, 0xc1, +0x3f, 0xa1, 0xd1, 0xbf, 0x3c, 0xf9, 0x8b, 0x04, +0x40, 0x90, 0x18, 0x7e, 0xfd, 0x28, 0x04, 0x0a, +0x4a, 0xe4, 0x04, 0x80, 0x04, 0xc9, 0x19, 0x3d, +0x66, 0xf9, 0x29, 0x8f, 0xd2, 0xf7, 0x1b, 0x05, +0x05, 0x15, 0x00, 0x14, 0x0b, 0xc7, 0xfd, 0xdf, +0xb5, 0xa3, 0xf2, 0xc0, 0x1f, 0x2c, 0xf9, 0x3b, +0x95, 0x34, 0x6a, 0x2d, 0xf8, 0x97, 0xa5, 0xe6, +0xe8, 0x3f, 0x77, 0x66, 0x00, 0x57, 0xec, 0x7c, +0x44, 0x95, 0xbf, 0xa7, 0x17, 0x2f, 0xf9, 0x73, +0x71, 0x62, 0x2a, 0x0a, 0x46, 0xf1, 0xff, 0x3f, +0x44, 0x08, 0xf4, 0xb5, 0xfb, 0x41, 0xe9, 0x60, +0x19, 0x8a, 0x80, 0xa1, 0x45, 0x15, 0xfc, 0x13, +0x1a, 0xfd, 0x0b, 0x91, 0x3f, 0x8b, 0x40, 0x84, +0x4f, 0x5f, 0x2b, 0xec, 0xc8, 0x2f, 0x96, 0x13, +0x00, 0x66, 0x0c, 0x92, 0xc1, 0x3c, 0x31, 0xa3, +0xcd, 0xac, 0x20, 0xe5, 0x7e, 0xfa, 0xde, 0xa3, +0xa0, 0xa0, 0x02, 0x80, 0xc2, 0xf0, 0xee, 0xbf, +0x99, 0xeb, 0xfe, 0xe3, 0x06, 0x86, 0xf5, 0x1a, +0xfc, 0x23, 0x02, 0xe0, 0xf0, 0x40, 0x06, 0xe3, +0xfe, 0x4f, 0xe9, 0xb1, 0xf2, 0x97, 0xe0, 0xf8, +0x74, 0x3c, 0xf8, 0x79, 0x7f, 0x09, 0xf7, 0xdd, +0x7b, 0x23, 0x3c, 0xfe, 0xd8, 0xed, 0xf0, 0xf9, +0xa7, 0xcf, 0xc2, 0xec, 0x44, 0x8c, 0x56, 0x04, +0x00, 0x29, 0x11, 0x22, 0x87, 0x86, 0x8e, 0x8d, +0xef, 0xc6, 0x7b, 0x06, 0x5e, 0x8c, 0x10, 0xe8, +0xe8, 0x08, 0x81, 0xbc, 0x91, 0xfd, 0x8b, 0x2e, +0xf8, 0x27, 0x34, 0xfa, 0x57, 0x24, 0x00, 0x18, +0x60, 0x99, 0x90, 0x4f, 0xcf, 0x11, 0xd8, 0x8e, +0x27, 0x88, 0x65, 0x05, 0x80, 0x59, 0x11, 0xa2, +0x90, 0x11, 0x02, 0x4d, 0x66, 0x45, 0x49, 0x77, +0xd1, 0xf7, 0x20, 0x05, 0x05, 0x15, 0x00, 0x14, +0x86, 0x20, 0xff, 0x8a, 0xfa, 0x47, 0xb8, 0xe4, +0xef, 0x52, 0xd2, 0xa4, 0xf7, 0xe0, 0x5f, 0xe1, +0x74, 0x27, 0x93, 0xfa, 0x9f, 0xc4, 0xfe, 0x7d, +0x7d, 0x92, 0x7f, 0x45, 0xa9, 0x33, 0xfc, 0xdf, +0xff, 0x5d, 0x86, 0xaf, 0xfa, 0xff, 0xc7, 0xc3, +0xd3, 0x4f, 0xdd, 0x09, 0xa7, 0x8e, 0x26, 0xcc, +0x8f, 0xfc, 0x25, 0x02, 0x40, 0x84, 0xaf, 0x4e, +0x26, 0x32, 0x45, 0x42, 0x6c, 0x3e, 0xe0, 0x70, +0x77, 0x14, 0xa4, 0x8e, 0x1d, 0x59, 0x74, 0xc1, +0x3f, 0x55, 0xee, 0x9f, 0x25, 0xff, 0xc0, 0xd1, +0x1e, 0x08, 0x10, 0xc3, 0xab, 0xab, 0x19, 0x6c, +0x72, 0xf3, 0xf9, 0x02, 0x80, 0x45, 0x61, 0xd2, +0x1f, 0xe6, 0x89, 0xe9, 0xfb, 0x51, 0x08, 0xdc, +0x4a, 0xdf, 0x8f, 0x14, 0x14, 0x54, 0x00, 0x50, +0xe8, 0x53, 0x00, 0x64, 0xd6, 0xf7, 0x70, 0x05, +0x40, 0xe2, 0xc8, 0x88, 0x5e, 0x83, 0x7f, 0x44, +0x00, 0xb4, 0xf5, 0xc5, 0x8b, 0x2a, 0x7f, 0x67, +0x63, 0xf5, 0x46, 0xfe, 0xd9, 0xe9, 0x36, 0x70, +0xc1, 0x05, 0xe7, 0xc9, 0x91, 0x3f, 0x8b, 0xd1, +0x81, 0x3d, 0x5a, 0x23, 0x7f, 0x2e, 0xce, 0x1c, +0xc7, 0x22, 0x21, 0xbc, 0x38, 0xc8, 0x0a, 0x81, +0xba, 0xde, 0x54, 0x88, 0x9f, 0xe8, 0x5e, 0x74, +0xc1, 0xbf, 0x20, 0x0d, 0x04, 0x00, 0x0b, 0xcf, +0x8e, 0xc3, 0x60, 0x9d, 0x9b, 0xcb, 0x17, 0x00, +0x45, 0x49, 0x22, 0x14, 0x24, 0xff, 0x61, 0x9e, +0x90, 0x5e, 0x89, 0x5f, 0xdf, 0x48, 0xdf, 0x97, +0x14, 0x14, 0x54, 0x00, 0x50, 0xe8, 0x9a, 0xfc, +0x8b, 0xeb, 0x9f, 0xdf, 0x51, 0x55, 0x2f, 0x21, +0x7f, 0xb7, 0xd2, 0xc3, 0x7a, 0x0f, 0xfe, 0x95, +0x4d, 0x1c, 0x66, 0xc8, 0x7f, 0x1a, 0xdb, 0xf5, +0xf4, 0xe5, 0xfe, 0xeb, 0x6a, 0x3d, 0xe1, 0xbc, +0x73, 0xcf, 0x51, 0x48, 0xfe, 0xe7, 0x9c, 0x73, +0x36, 0x9c, 0x98, 0x89, 0xd3, 0x89, 0x00, 0x60, +0x71, 0x6a, 0x26, 0x16, 0xc6, 0xc4, 0x45, 0x42, +0xfd, 0xed, 0xde, 0x50, 0xd1, 0x9f, 0x0f, 0xd1, +0x93, 0xfd, 0x8b, 0x2e, 0xf8, 0xa7, 0x2e, 0xf9, +0x13, 0xf8, 0x8b, 0xe1, 0xde, 0xd6, 0x08, 0x56, +0x39, 0x39, 0x7c, 0x01, 0x20, 0x15, 0x02, 0xbf, +0x9b, 0x27, 0xa4, 0x15, 0x99, 0x15, 0x25, 0x5e, +0x4b, 0xdf, 0xa3, 0x14, 0x14, 0x54, 0x00, 0x50, +0xe8, 0x4a, 0x00, 0x64, 0xd5, 0x8f, 0x71, 0x05, +0x40, 0xf2, 0xf8, 0x98, 0x5e, 0x83, 0x7f, 0xe9, +0xc7, 0x26, 0xa1, 0xab, 0x7b, 0x37, 0x23, 0x00, +0xbe, 0xc6, 0x8a, 0x5d, 0x7d, 0x90, 0x3f, 0x79, +0xe6, 0x7f, 0xe7, 0x1d, 0xd7, 0x2a, 0x24, 0xff, +0x8b, 0x2f, 0xbe, 0x00, 0x72, 0xb3, 0xb6, 0x2b, +0x24, 0xfc, 0xe1, 0xfe, 0x70, 0xa8, 0x2a, 0x73, +0x86, 0x83, 0xfb, 0xbd, 0xe0, 0x6b, 0x7c, 0xbe, +0x3f, 0x17, 0xf2, 0xe7, 0xe2, 0x38, 0x66, 0x1e, +0x86, 0x71, 0xed, 0x71, 0xb0, 0xd5, 0x1d, 0x8b, +0x84, 0x02, 0xa0, 0x70, 0xa8, 0x12, 0x09, 0x7f, +0x50, 0x2f, 0xc1, 0xbf, 0x50, 0x1d, 0x8d, 0xfe, +0x03, 0x95, 0x90, 0xbf, 0x08, 0xdd, 0xe0, 0x87, +0x70, 0x6b, 0x69, 0x00, 0xab, 0xec, 0x2c, 0x79, +0x11, 0x50, 0x94, 0x08, 0x66, 0xf9, 0x49, 0xbf, +0xa1, 0x10, 0xc8, 0xc6, 0xaf, 0xff, 0x42, 0xdf, +0xab, 0x14, 0x14, 0x54, 0x00, 0x50, 0x68, 0x93, +0xfc, 0x0b, 0xeb, 0xdf, 0x12, 0x91, 0xbf, 0x48, +0x00, 0x78, 0x94, 0x37, 0xeb, 0x3d, 0xf8, 0x57, +0x3d, 0xb6, 0x9f, 0x21, 0xff, 0xd9, 0xa1, 0x9d, +0x7a, 0x73, 0xff, 0x1e, 0x6e, 0x5f, 0x28, 0x24, +0xff, 0xbf, 0xfc, 0xe5, 0x32, 0xa8, 0xdf, 0xe7, +0x29, 0x48, 0xfc, 0xe5, 0xc5, 0x8e, 0xf0, 0xc0, +0xfd, 0x37, 0xf1, 0xbe, 0xff, 0xcf, 0x7f, 0xbe, +0x14, 0x36, 0x6d, 0x78, 0x05, 0x66, 0x27, 0x63, +0xe7, 0x44, 0xfe, 0x04, 0x5f, 0x13, 0x60, 0xe7, +0xc1, 0xec, 0x68, 0x38, 0x0c, 0xe1, 0x9f, 0x05, +0x11, 0x02, 0xad, 0x5d, 0xe1, 0x90, 0x31, 0x72, +0x70, 0x51, 0x06, 0xff, 0x54, 0xb9, 0x7f, 0x42, +0xfe, 0xac, 0x00, 0xf0, 0x1b, 0x11, 0xc1, 0xf5, +0x70, 0x3d, 0x58, 0xe6, 0x64, 0xf1, 0x05, 0x00, +0x8b, 0xbc, 0xa4, 0x5f, 0xcd, 0x13, 0xd3, 0x92, +0xf1, 0xeb, 0x2b, 0xe9, 0xfb, 0x96, 0x82, 0x82, +0x0a, 0x00, 0x0a, 0x6d, 0x08, 0x80, 0x9c, 0xfa, +0xa3, 0x12, 0x01, 0x50, 0x79, 0x00, 0x52, 0x27, +0xc7, 0xf5, 0x1a, 0xfc, 0xcb, 0x3c, 0x3a, 0x0e, +0x7d, 0x9d, 0x21, 0x30, 0xda, 0x21, 0xaa, 0xfc, +0xd5, 0xd7, 0xb3, 0xff, 0x7b, 0xef, 0xb9, 0x41, +0x90, 0xfc, 0xaf, 0xbe, 0xea, 0x0a, 0x68, 0x69, +0xf2, 0x97, 0x23, 0xfe, 0xae, 0xb6, 0x60, 0x78, +0xef, 0x9d, 0xc7, 0x15, 0x8a, 0x06, 0x82, 0xbb, +0xee, 0xba, 0x0e, 0x9a, 0x1b, 0xfd, 0x34, 0x16, +0x00, 0x5f, 0xcb, 0xe0, 0xab, 0x13, 0x09, 0x30, +0x35, 0xb8, 0x93, 0x79, 0x2c, 0x40, 0x84, 0x40, +0x43, 0x4f, 0x3c, 0x44, 0x8f, 0x77, 0x2d, 0xca, +0xe0, 0x9f, 0x2a, 0xf7, 0xcf, 0x92, 0x3f, 0x0b, +0x5f, 0x84, 0x4b, 0xd3, 0x01, 0x14, 0x02, 0x99, +0x7c, 0x01, 0xc0, 0x22, 0x37, 0xe9, 0x17, 0xf3, +0xc4, 0xd4, 0x68, 0xb3, 0xa2, 0x84, 0xcb, 0xe9, +0xfb, 0x97, 0x82, 0x82, 0x0a, 0x00, 0x8a, 0x39, +0xc2, 0x36, 0xaf, 0xfe, 0x73, 0xa9, 0xfb, 0xaf, +0x07, 0xaf, 0xaa, 0x23, 0x7a, 0x0f, 0xfe, 0xed, +0x1b, 0x29, 0x67, 0xdc, 0xff, 0x31, 0xac, 0xd0, +0xd5, 0x17, 0xf9, 0x37, 0xd5, 0xfb, 0x0a, 0x12, +0xf8, 0x75, 0xd7, 0x5e, 0x09, 0x6d, 0xcd, 0x81, +0x72, 0xe4, 0xef, 0xeb, 0xb5, 0x0a, 0xce, 0x3b, +0xef, 0x5c, 0xa5, 0xe4, 0xcf, 0xe2, 0x92, 0x4b, +0x2e, 0x80, 0xc1, 0xde, 0xf0, 0x79, 0x09, 0x00, +0x16, 0xa7, 0x8e, 0x89, 0x8a, 0x84, 0x88, 0x08, +0xe8, 0xe8, 0x08, 0x86, 0xf8, 0xb1, 0xd6, 0x79, +0x05, 0xff, 0xc2, 0x0c, 0x18, 0xfc, 0xf3, 0x57, +0xe1, 0xfe, 0x59, 0xf2, 0x97, 0xa2, 0x0b, 0x9c, +0x1b, 0xf6, 0x83, 0x45, 0x4e, 0xba, 0x80, 0x10, +0x48, 0x00, 0xb3, 0x9c, 0xa4, 0xff, 0xa1, 0x10, +0xd8, 0x85, 0x5f, 0x5f, 0x42, 0xdf, 0xcb, 0x14, +0x14, 0x54, 0x00, 0x50, 0x68, 0x42, 0xfe, 0x55, +0xf5, 0x67, 0xa1, 0x00, 0xf8, 0x4a, 0x22, 0x00, +0x2a, 0xea, 0x21, 0x7d, 0x7a, 0x42, 0xaf, 0xc1, +0xbf, 0xec, 0xa3, 0xc3, 0x30, 0xd4, 0xe1, 0x87, +0x95, 0xbf, 0x3e, 0xf0, 0x2d, 0x12, 0x9e, 0xbe, +0x04, 0x80, 0xa2, 0xf1, 0xbf, 0xa3, 0xdd, 0x47, +0x3c, 0xe2, 0x3f, 0x39, 0x1b, 0x0f, 0x2b, 0x3f, +0x7f, 0x4e, 0x2d, 0xe2, 0xe7, 0xc2, 0x78, 0xf3, +0x6b, 0xf3, 0x26, 0x7f, 0x2e, 0x66, 0x51, 0x1c, +0x11, 0x11, 0xd0, 0xd4, 0x15, 0xb9, 0xe8, 0x83, +0x7f, 0x8a, 0xc8, 0xdf, 0x4f, 0x86, 0xfc, 0x09, +0x7c, 0x08, 0x86, 0x3b, 0xc1, 0xa9, 0x7e, 0x1f, +0x0a, 0x81, 0x34, 0xbe, 0x00, 0x60, 0x91, 0x9d, +0xf4, 0xb3, 0x59, 0x52, 0x6a, 0xc0, 0xb6, 0xa2, +0xf8, 0x8b, 0xe8, 0xfb, 0x9a, 0x82, 0x82, 0x0a, +0x00, 0x0a, 0x75, 0x04, 0x40, 0x6e, 0xfd, 0x26, +0x5b, 0x8e, 0xfb, 0xf7, 0xdd, 0xdb, 0xa6, 0x98, +0xfc, 0x4f, 0xe8, 0x22, 0xf8, 0x37, 0x05, 0x0d, +0x83, 0x79, 0x8c, 0xfb, 0x3f, 0x31, 0xb1, 0x47, +0xaf, 0x8d, 0x7f, 0x5e, 0xee, 0x2b, 0x05, 0x89, +0xdb, 0xdd, 0xf5, 0x73, 0x09, 0xf9, 0xf7, 0x77, +0x87, 0xc1, 0x63, 0x8f, 0xde, 0xa6, 0x31, 0xf9, +0x13, 0x9c, 0x7f, 0xfe, 0xb9, 0xcc, 0xaf, 0xd7, +0x8e, 0x00, 0x48, 0x66, 0x30, 0xd1, 0x1f, 0xc8, +0x88, 0x80, 0xb4, 0x91, 0x86, 0x05, 0x1c, 0xfc, +0xeb, 0x55, 0x3b, 0xf8, 0xa7, 0xca, 0xfd, 0xfb, +0xc8, 0x02, 0x85, 0x80, 0x43, 0x5d, 0x8d, 0x58, +0x08, 0x24, 0xf0, 0xb0, 0x8d, 0x11, 0x02, 0x89, +0xff, 0x36, 0x4b, 0x4e, 0xf1, 0x40, 0x21, 0x70, +0x3e, 0x7d, 0x7f, 0x53, 0x50, 0x50, 0x01, 0x40, +0xa1, 0xd0, 0xfd, 0x1f, 0x3c, 0xc7, 0x36, 0xbf, +0xfe, 0x07, 0x5b, 0x8e, 0xfb, 0xcf, 0x98, 0x99, +0xd4, 0xab, 0xfb, 0xcf, 0x9b, 0xe9, 0x83, 0x11, +0x5c, 0x7b, 0x1b, 0xef, 0xf6, 0xd3, 0x7b, 0xe5, +0x6f, 0x48, 0xe0, 0x3a, 0x41, 0xe2, 0x26, 0x63, +0x7e, 0x0f, 0xb7, 0xcf, 0x61, 0xbb, 0xf5, 0xfb, +0xcc, 0x28, 0x5f, 0x19, 0xc9, 0xbf, 0xf2, 0xf2, +0x03, 0xf0, 0xfe, 0xbb, 0x8a, 0x33, 0x01, 0x45, +0x79, 0x76, 0x5a, 0x71, 0xff, 0xac, 0x00, 0x38, +0x31, 0x1d, 0xc5, 0x08, 0x80, 0x92, 0x81, 0xa2, +0xe5, 0xe3, 0xfe, 0x39, 0xf0, 0x26, 0x18, 0xee, +0x02, 0x2f, 0x3c, 0x41, 0xec, 0xb0, 0xaf, 0x1a, +0xcc, 0x73, 0x53, 0x78, 0x02, 0x00, 0x89, 0x9f, +0x81, 0x59, 0x56, 0xd2, 0x3f, 0xcd, 0x92, 0x52, +0xec, 0xb7, 0x15, 0xc6, 0x9d, 0x47, 0xdf, 0xeb, +0x14, 0x14, 0x54, 0x00, 0x50, 0xc8, 0x0a, 0x80, +0xec, 0x83, 0xd6, 0x84, 0xfc, 0x59, 0x01, 0xe0, +0xbf, 0xaf, 0x5d, 0xaf, 0xc1, 0x3f, 0x82, 0xe6, +0xfe, 0x54, 0x51, 0xe9, 0x0f, 0xf6, 0xe4, 0xeb, +0xbb, 0xef, 0x9f, 0xac, 0xf7, 0xcd, 0xc5, 0xd9, +0x13, 0x5c, 0x73, 0xf5, 0x15, 0x50, 0x52, 0xe8, +0x20, 0x49, 0xfb, 0x9b, 0x6d, 0x7d, 0x4b, 0xf0, +0xfb, 0x72, 0x32, 0x6c, 0xb4, 0x46, 0xfe, 0x04, +0xa7, 0x8e, 0xc6, 0x32, 0x02, 0xa0, 0xb2, 0x2f, +0x7b, 0x49, 0x06, 0xff, 0x94, 0xb9, 0x7f, 0x96, +0xfc, 0x45, 0xe8, 0x64, 0xe0, 0x39, 0xd8, 0x0e, +0xf6, 0x7b, 0x2b, 0x51, 0x08, 0x24, 0xf3, 0x04, +0x00, 0x83, 0x42, 0x14, 0x02, 0x19, 0x89, 0x3f, +0x99, 0x25, 0x27, 0x5b, 0xa1, 0x10, 0x38, 0x87, +0xbe, 0xe7, 0x29, 0x28, 0xa8, 0x00, 0xa0, 0x10, +0xb9, 0xff, 0xf3, 0x6c, 0x0b, 0x0f, 0xfe, 0x9d, +0x15, 0x00, 0xb6, 0xe5, 0x07, 0x21, 0x73, 0x76, +0x4a, 0xaf, 0xc1, 0xbf, 0xa2, 0xa9, 0x76, 0x18, +0x69, 0xc3, 0xca, 0xdf, 0xde, 0x00, 0x83, 0x1c, +0xfb, 0x21, 0xbd, 0xfc, 0x8f, 0x3c, 0x7c, 0x8b, +0xc6, 0xe4, 0xff, 0xe8, 0x23, 0xb7, 0x42, 0x7f, +0x4f, 0x18, 0x6f, 0xd7, 0xdf, 0xda, 0xf2, 0x5d, +0xc1, 0xef, 0x4d, 0x49, 0x34, 0xd7, 0xaa, 0x00, +0x38, 0x8a, 0x77, 0x04, 0x88, 0x00, 0xc8, 0x1f, +0xac, 0x58, 0xd2, 0xc1, 0x3f, 0x41, 0x01, 0x20, +0x43, 0xfe, 0x04, 0x5e, 0x62, 0x10, 0x21, 0x60, +0x5b, 0x5d, 0x41, 0xd6, 0x04, 0x79, 0x02, 0x00, +0x89, 0x9f, 0x81, 0x59, 0x7a, 0xe2, 0x5f, 0xcd, +0x52, 0x92, 0x4c, 0xf0, 0xeb, 0xb3, 0xe9, 0xfb, +0x9f, 0x82, 0x82, 0x0a, 0x80, 0xe5, 0x2d, 0x00, +0xb2, 0x0e, 0xba, 0xa1, 0x08, 0x00, 0x56, 0x00, +0x04, 0xd5, 0x77, 0xea, 0x75, 0xf4, 0x4f, 0xd0, +0xde, 0x1b, 0xc3, 0xb8, 0xff, 0x33, 0x7a, 0xac, +0xfc, 0x95, 0xbd, 0xf6, 0x57, 0x90, 0x6b, 0xab, +0x11, 0xf9, 0x93, 0x30, 0x20, 0x09, 0x05, 0x72, +0xc9, 0xff, 0xcc, 0x89, 0x24, 0xe6, 0x78, 0x90, +0xd0, 0xf7, 0xb7, 0x1e, 0x0a, 0xd0, 0x1a, 0xf9, +0x13, 0x8c, 0x76, 0xfb, 0xe2, 0x49, 0x61, 0x0f, +0x88, 0x1a, 0xeb, 0x5a, 0x84, 0xa3, 0xff, 0x9e, +0x79, 0x8f, 0xfe, 0xb9, 0x02, 0xc0, 0x8b, 0x87, +0x0e, 0xf0, 0x44, 0x78, 0x0c, 0xb6, 0x80, 0x6d, +0x45, 0x19, 0x0a, 0x81, 0x44, 0x9e, 0x00, 0x90, +0x08, 0x81, 0xb4, 0xc4, 0x6f, 0xcd, 0x52, 0x13, +0xd7, 0x6f, 0x2b, 0x8c, 0x3d, 0x8b, 0x7e, 0x0e, +0x50, 0x50, 0x50, 0x01, 0xb0, 0x1c, 0xdd, 0xff, +0x45, 0xb6, 0x45, 0x07, 0xff, 0xcd, 0x0a, 0x00, +0xbb, 0xb2, 0x83, 0x90, 0x75, 0x74, 0x5a, 0xaf, +0xc1, 0xbf, 0xf2, 0xf1, 0x46, 0x86, 0xfc, 0x67, +0xb0, 0x07, 0xdf, 0xd0, 0xa7, 0x7e, 0x23, 0xc2, +0x8d, 0x94, 0xde, 0x01, 0x20, 0xb8, 0xe3, 0xf6, +0x6b, 0xf0, 0x5e, 0x80, 0xb5, 0x60, 0xdd, 0xef, +0x36, 0xd3, 0x37, 0x05, 0x7f, 0xcd, 0x43, 0x0f, +0xdd, 0xa2, 0x95, 0xe0, 0x1f, 0x8b, 0x63, 0x13, +0x11, 0x8c, 0xfb, 0xaf, 0xed, 0x49, 0x5d, 0x5e, +0xc1, 0x3f, 0x35, 0xc9, 0x5f, 0x84, 0x76, 0xf0, +0x40, 0xb8, 0x0f, 0x1c, 0x81, 0x1d, 0x65, 0x25, +0x28, 0x04, 0x12, 0xe4, 0x44, 0x00, 0x92, 0x3f, +0xa0, 0x08, 0x38, 0x83, 0x62, 0xe0, 0x0b, 0xfa, +0x79, 0x40, 0x41, 0x41, 0x05, 0xc0, 0xf2, 0x12, +0x00, 0x99, 0x07, 0x83, 0x45, 0xe4, 0x2f, 0x12, +0x00, 0x3b, 0x1b, 0xbb, 0xf4, 0xea, 0xfe, 0x33, +0xb0, 0xf2, 0xb7, 0x07, 0xdb, 0xed, 0xc8, 0xc5, +0xbf, 0x6f, 0x8e, 0x27, 0xea, 0x59, 0x00, 0x08, +0x57, 0xfa, 0x36, 0xd4, 0x79, 0xc3, 0x5d, 0x77, +0xca, 0x57, 0x02, 0xff, 0xe9, 0x8a, 0x8b, 0x21, +0xc0, 0x77, 0x35, 0x9c, 0xc6, 0xff, 0x4e, 0xd9, +0xbe, 0xff, 0x53, 0x58, 0x57, 0xac, 0x88, 0xfc, +0x09, 0xbc, 0x3d, 0x57, 0x69, 0xcd, 0xfd, 0x7f, +0x85, 0xed, 0x80, 0xc3, 0xb8, 0x26, 0xd9, 0x87, +0x8f, 0x4c, 0xa2, 0xc7, 0x3a, 0x97, 0x65, 0xf0, +0x4f, 0x91, 0x00, 0xe0, 0x92, 0xbf, 0x48, 0x00, +0xb4, 0x89, 0xd1, 0x0a, 0xae, 0xfd, 0x87, 0x61, +0x7b, 0x49, 0x11, 0x6c, 0xcb, 0x8b, 0xe7, 0x09, +0x00, 0x16, 0x66, 0x29, 0x89, 0x27, 0xcc, 0xd2, +0x13, 0x3e, 0xa4, 0x9f, 0x0b, 0x14, 0x14, 0x54, +0x00, 0x2c, 0x07, 0xf7, 0x7f, 0x99, 0x6d, 0xc9, +0xc1, 0xff, 0xb2, 0x02, 0xc0, 0xbe, 0xf4, 0x20, +0x64, 0x1f, 0x9b, 0xd1, 0x6b, 0xf0, 0x6f, 0xef, +0x68, 0x8d, 0xb8, 0xf2, 0x37, 0xd4, 0xe0, 0xee, +0x5f, 0x16, 0xed, 0x47, 0x02, 0x61, 0xd7, 0xce, +0x8d, 0x10, 0x1c, 0xb0, 0x0e, 0x72, 0x32, 0x6d, +0x60, 0x72, 0x34, 0x4a, 0xf0, 0xd8, 0x4f, 0xc3, +0x01, 0x6f, 0x78, 0xf0, 0x81, 0x9b, 0x14, 0x92, +0xff, 0x65, 0x97, 0x5e, 0x04, 0x43, 0x7d, 0xe1, +0x5a, 0x1b, 0xfd, 0xcf, 0x8e, 0x85, 0x33, 0xee, +0xbf, 0xbc, 0x2f, 0x6f, 0xd9, 0x07, 0xff, 0x84, +0xdd, 0xbf, 0x2c, 0xf9, 0xb7, 0x81, 0x3b, 0x0a, +0x00, 0x11, 0x5a, 0xc0, 0xa5, 0xbf, 0x09, 0x6c, +0x8a, 0x0b, 0x60, 0x5b, 0x7e, 0x3c, 0x4f, 0x00, +0x48, 0x84, 0x40, 0x72, 0xd2, 0xac, 0x59, 0x46, +0xfc, 0x9b, 0xf4, 0x33, 0x82, 0x82, 0x82, 0x0a, +0x80, 0xa5, 0x2b, 0x00, 0x32, 0x0e, 0xc6, 0x48, +0xdd, 0xff, 0x41, 0x08, 0x6b, 0xee, 0xd5, 0x6b, +0xf0, 0x2f, 0xf3, 0xe8, 0x18, 0x0c, 0x74, 0x06, +0x89, 0x2a, 0x7f, 0x4f, 0x26, 0x2d, 0x28, 0xf2, +0x57, 0xf7, 0xd2, 0x5f, 0x45, 0xa9, 0x93, 0xca, +0x46, 0xc0, 0xc4, 0xb8, 0x6d, 0x5a, 0x73, 0xff, +0x67, 0xb0, 0x1a, 0x99, 0xdc, 0x05, 0xe8, 0x6e, +0xf7, 0x87, 0x88, 0xf1, 0x5e, 0x1a, 0xfc, 0x53, +0xe0, 0xfe, 0x3d, 0x38, 0x02, 0x40, 0x4a, 0xfe, +0x22, 0x01, 0xe0, 0xc6, 0xe0, 0x08, 0xb8, 0xf4, +0x35, 0x82, 0x75, 0x61, 0x1e, 0x0a, 0x81, 0x38, +0x01, 0x21, 0x10, 0x83, 0x42, 0x20, 0x71, 0xdc, +0x2c, 0x2b, 0xee, 0x25, 0xfa, 0x59, 0x41, 0x41, +0x41, 0x05, 0xc0, 0x52, 0x73, 0xff, 0x7f, 0xb6, +0x2d, 0x3d, 0xf8, 0x0b, 0x4b, 0xfe, 0x0e, 0xa5, +0x8d, 0x0c, 0xc1, 0xeb, 0x33, 0xf8, 0x57, 0x37, +0x5c, 0xc2, 0xb8, 0xff, 0xe3, 0x63, 0xbb, 0x0d, +0xe2, 0xfe, 0x4f, 0x1d, 0x4d, 0x60, 0x9e, 0xf9, +0x6f, 0xde, 0xf8, 0x0a, 0x7c, 0xf8, 0xfe, 0x13, +0xf0, 0xfc, 0xb3, 0xf7, 0xc0, 0xdd, 0x77, 0x5f, +0xcf, 0x5c, 0x04, 0x5c, 0xbf, 0xf6, 0x25, 0x48, +0x8a, 0xdf, 0x06, 0xe3, 0x43, 0x11, 0x0a, 0x05, +0xc0, 0x29, 0x7c, 0x14, 0x70, 0xe5, 0x95, 0x97, +0x2a, 0x25, 0xff, 0x0d, 0xeb, 0x5e, 0xd2, 0x6a, +0xf0, 0x6f, 0x7a, 0x78, 0x27, 0xe3, 0xfe, 0x0b, +0x07, 0xcb, 0x68, 0xf0, 0x4f, 0x2d, 0xf7, 0x2f, +0x4c, 0xfe, 0x04, 0xae, 0xc3, 0xcd, 0x0c, 0x9c, +0x7b, 0xeb, 0xc1, 0xba, 0x20, 0x17, 0xb6, 0x15, +0xf0, 0x05, 0x00, 0x0b, 0xb3, 0xa4, 0xc4, 0xa1, +0xad, 0x39, 0xb1, 0x4f, 0xd3, 0xcf, 0x0d, 0x0a, +0x2a, 0x00, 0x28, 0x96, 0x86, 0x00, 0x48, 0x3f, +0x98, 0xc9, 0x75, 0xff, 0xbb, 0xdb, 0xfa, 0xe6, +0x19, 0xfc, 0x9b, 0xd1, 0x28, 0xf8, 0x97, 0x33, +0x3b, 0x04, 0xc3, 0x58, 0xf9, 0x3b, 0xde, 0xe5, +0x03, 0xdf, 0xe9, 0xa8, 0xf2, 0x57, 0x11, 0xf9, +0x4f, 0x0c, 0x47, 0x80, 0xb3, 0xc3, 0x27, 0x70, +0xd5, 0x55, 0x97, 0xab, 0x4c, 0xfa, 0x9f, 0x75, +0xd6, 0x59, 0xf0, 0x2a, 0x16, 0xfc, 0x4c, 0x8d, +0x45, 0xc9, 0xb9, 0xff, 0x16, 0x4c, 0xf5, 0x2b, +0xfb, 0xb5, 0x5b, 0x8c, 0x5e, 0xc7, 0x23, 0x3e, +0xc9, 0x5a, 0x13, 0x00, 0xa7, 0x8f, 0xc5, 0xc3, +0x60, 0x9b, 0x27, 0xb4, 0x75, 0x84, 0xc0, 0x6e, +0x24, 0x76, 0x1a, 0xfc, 0x53, 0x1c, 0xfc, 0x13, +0x1a, 0xfd, 0x73, 0xc9, 0x9f, 0x2b, 0x00, 0x5c, +0x87, 0x0f, 0x83, 0x0b, 0xc2, 0xb1, 0xf7, 0x00, +0x58, 0xe5, 0xe5, 0x88, 0x85, 0x40, 0x0c, 0x0f, +0x5b, 0x0b, 0xa3, 0x61, 0x5b, 0x62, 0x62, 0xcf, +0xd6, 0xdc, 0x98, 0xc7, 0xe8, 0xe7, 0x07, 0x05, +0x15, 0x00, 0x14, 0x8b, 0xd8, 0xfd, 0x37, 0x5c, +0x6b, 0x5b, 0x76, 0xf0, 0x37, 0x96, 0xfc, 0x1d, +0x4b, 0xf4, 0xef, 0xfe, 0x9b, 0x06, 0xb3, 0x19, +0xf7, 0x7f, 0x12, 0x6f, 0xde, 0xeb, 0xcb, 0xfd, +0x13, 0xd2, 0xdd, 0x61, 0xf3, 0x3e, 0x5c, 0x78, +0xe1, 0xf9, 0x1a, 0xef, 0xfb, 0x93, 0x4b, 0x81, +0xc7, 0xa6, 0x62, 0x79, 0x02, 0x80, 0xac, 0xfc, +0xdd, 0x78, 0xe3, 0xff, 0xc9, 0xb7, 0x07, 0x9e, +0x7b, 0x8e, 0xd2, 0xd0, 0xdf, 0x5c, 0xdd, 0xff, +0xe4, 0x40, 0x10, 0xe3, 0xfe, 0xb3, 0x86, 0x6a, +0x69, 0xf0, 0x4f, 0xcd, 0xe0, 0x9f, 0x2a, 0xf7, +0xcf, 0x92, 0xbf, 0xcb, 0xf0, 0x21, 0x06, 0xce, +0xc3, 0x4d, 0xe0, 0xd0, 0xbd, 0x1f, 0xac, 0x72, +0x33, 0xe5, 0x04, 0x00, 0x8b, 0x6d, 0x09, 0x89, +0x6d, 0x5b, 0xf3, 0x63, 0x1e, 0xa0, 0x9f, 0x25, +0x14, 0x54, 0x00, 0x50, 0x2c, 0x42, 0xf7, 0xdf, +0x50, 0xca, 0x75, 0xff, 0x91, 0x9d, 0x03, 0x7a, +0x0d, 0xfe, 0xe5, 0xcf, 0xf4, 0x60, 0xe5, 0xaf, +0x17, 0x4c, 0xe8, 0xb0, 0xf2, 0x57, 0x96, 0xfc, +0x4f, 0x1f, 0x4b, 0x84, 0x8f, 0x3f, 0x7a, 0x7a, +0xce, 0x6d, 0x7f, 0xe7, 0x9e, 0x7b, 0x36, 0x93, +0xfe, 0x97, 0x5d, 0xfb, 0x6b, 0x6f, 0x09, 0x62, +0x44, 0x00, 0x99, 0x14, 0x90, 0xef, 0x59, 0xbd, +0xea, 0x05, 0x3c, 0x13, 0x1c, 0xa2, 0x75, 0xf2, +0x67, 0x5b, 0xff, 0x0e, 0x77, 0x45, 0xd0, 0xe0, +0xdf, 0x1c, 0x82, 0x7f, 0xc2, 0xe4, 0x2f, 0x2c, +0x00, 0x44, 0x68, 0x04, 0xfb, 0xae, 0x5a, 0x3c, +0x41, 0x9c, 0x21, 0x27, 0x00, 0x18, 0x14, 0xa0, +0x10, 0x88, 0x4f, 0x68, 0xda, 0x5a, 0x10, 0x75, +0x17, 0xfd, 0x4c, 0xa1, 0xa0, 0x02, 0x80, 0x62, +0xb1, 0xb8, 0xff, 0x5b, 0x6c, 0x2b, 0x1a, 0xfe, +0x60, 0xc9, 0xdf, 0xa9, 0xa4, 0x49, 0xaf, 0xc1, +0x3f, 0x82, 0x96, 0xbe, 0x24, 0x51, 0xe5, 0xef, +0x4c, 0x8c, 0xde, 0x46, 0xff, 0xe4, 0x1a, 0xdf, +0x5c, 0xc9, 0x9f, 0xe0, 0xae, 0xbb, 0xae, 0xe3, +0x11, 0x7f, 0x77, 0x7b, 0x08, 0x8c, 0xe3, 0xa3, +0x04, 0xb2, 0x92, 0xc7, 0x90, 0x3a, 0xfe, 0x7c, +0x62, 0x26, 0x5e, 0x6b, 0xd7, 0xfe, 0x64, 0x05, +0xc0, 0x58, 0xaf, 0xe8, 0x04, 0x70, 0xca, 0x48, +0xd3, 0xa2, 0x08, 0xfe, 0x05, 0x18, 0x38, 0xf8, +0x37, 0x57, 0xf7, 0xcf, 0x92, 0xbf, 0x13, 0x83, +0x06, 0x06, 0x76, 0x9d, 0x7b, 0x99, 0x83, 0x43, +0xf2, 0x22, 0x20, 0x0a, 0xb6, 0xe6, 0x47, 0x11, +0x21, 0x50, 0x87, 0x5f, 0xdf, 0x4a, 0x3f, 0x5f, +0x28, 0xa8, 0x00, 0xa0, 0x58, 0xe8, 0xee, 0xbf, +0x0e, 0x45, 0x80, 0xc4, 0xfd, 0x47, 0xf7, 0x0e, +0xe9, 0xd5, 0xfd, 0x97, 0x4c, 0xb6, 0x30, 0xe4, +0x3f, 0xd5, 0x17, 0xa8, 0x37, 0xf7, 0x4f, 0x3a, +0xf8, 0x95, 0x91, 0xfb, 0x3d, 0x18, 0xfc, 0x23, +0xcf, 0xf9, 0xc9, 0x31, 0x1f, 0x45, 0xb9, 0x00, +0x72, 0x2c, 0x88, 0x10, 0xff, 0xc4, 0x48, 0x24, +0xbc, 0xf3, 0xf6, 0xa3, 0x92, 0x7f, 0x4e, 0xbe, +0xfe, 0xfa, 0x64, 0xb2, 0x56, 0x4f, 0xfd, 0xca, +0x92, 0x3f, 0x7b, 0xf4, 0xe7, 0x40, 0x77, 0x02, +0x0d, 0xfe, 0x69, 0x29, 0xf8, 0x27, 0x4b, 0xfe, +0x0a, 0x05, 0x00, 0x5e, 0x5a, 0x74, 0x1c, 0x39, +0xc8, 0xc0, 0xb6, 0xa3, 0x0a, 0xcc, 0xb3, 0x53, +0xf9, 0x02, 0x80, 0x45, 0x5e, 0xf4, 0x1f, 0x28, +0x04, 0xaa, 0xb6, 0x16, 0x44, 0xde, 0x48, 0x3f, +0x67, 0x28, 0xa8, 0x00, 0xa0, 0x58, 0x88, 0xee, +0xff, 0x6e, 0xdb, 0x4a, 0xe2, 0xfe, 0x45, 0x02, +0xc0, 0xb9, 0xe4, 0x90, 0x5e, 0x83, 0x7f, 0x04, +0x1d, 0x3d, 0x51, 0x8c, 0x00, 0xf8, 0xea, 0x68, +0x9c, 0xde, 0xdc, 0x3f, 0x71, 0xef, 0x42, 0xa4, +0x4e, 0xba, 0xff, 0xab, 0xcb, 0x5d, 0x78, 0xe9, +0xfe, 0xbe, 0xce, 0x50, 0xe6, 0x74, 0x2f, 0xf7, +0xfb, 0x6e, 0xbf, 0xed, 0x1a, 0x1c, 0xff, 0x27, +0x31, 0x02, 0x60, 0xf3, 0xa6, 0x57, 0xe5, 0x7e, +0x1f, 0x17, 0xa7, 0x4f, 0x75, 0x2a, 0x00, 0x46, +0xba, 0x7c, 0xa1, 0xbf, 0xd5, 0x03, 0xe2, 0x46, +0x5b, 0x17, 0x65, 0xf0, 0xcf, 0xdf, 0xe0, 0xc1, +0xbf, 0xb9, 0xbb, 0x7f, 0x96, 0xfc, 0x09, 0x1c, +0x46, 0xea, 0x19, 0xec, 0x68, 0xab, 0x40, 0x21, +0x90, 0xc2, 0x17, 0x00, 0x12, 0x21, 0x10, 0x85, +0x42, 0x20, 0xbe, 0x08, 0x85, 0xc0, 0xb5, 0xf4, +0x33, 0x87, 0x82, 0x0a, 0x00, 0x8a, 0x05, 0xb4, +0xf7, 0xdf, 0xd0, 0x22, 0x22, 0x7f, 0x91, 0x00, +0x88, 0x1b, 0x18, 0xd6, 0x6b, 0xf0, 0xaf, 0x72, +0xfc, 0xa0, 0xa8, 0xf2, 0x77, 0x30, 0x44, 0x6f, +0xee, 0xbf, 0xbc, 0xd8, 0x49, 0x90, 0xfc, 0x6f, +0xbd, 0xe5, 0x2a, 0x98, 0x44, 0x37, 0x2f, 0xbb, +0xde, 0x47, 0xfa, 0xfd, 0x65, 0xbf, 0x37, 0x35, +0xc9, 0x5c, 0x32, 0xfa, 0x7f, 0x0e, 0x57, 0x05, +0x65, 0xff, 0xfd, 0xe3, 0x8f, 0xdd, 0xae, 0x33, +0xf2, 0x3f, 0x3a, 0xbe, 0x87, 0x71, 0xff, 0xd5, +0xbd, 0x19, 0x34, 0xf8, 0xa7, 0xc3, 0xe0, 0x1f, +0x9f, 0xfc, 0xe5, 0xdd, 0xbf, 0xa3, 0x98, 0xfc, +0x1d, 0x46, 0x0e, 0x30, 0xb0, 0x1f, 0xa9, 0x83, +0xed, 0x47, 0xca, 0xc8, 0xa9, 0x61, 0x19, 0x11, +0x10, 0x29, 0x42, 0x6e, 0xd4, 0xef, 0x28, 0x04, +0xb2, 0xf1, 0xeb, 0xbf, 0xd0, 0xcf, 0x1e, 0x0a, +0x2a, 0x00, 0x28, 0x0c, 0x4b, 0xfe, 0x65, 0x0d, +0x8f, 0x49, 0xc9, 0xbf, 0x01, 0x5c, 0x4b, 0x0f, +0xeb, 0x75, 0xf4, 0x9f, 0x71, 0x6c, 0x02, 0x7a, +0xbb, 0x42, 0x99, 0xca, 0xdf, 0xaf, 0x75, 0x54, +0xf9, 0x2b, 0xe4, 0xfe, 0x4d, 0x8d, 0xdf, 0x10, +0x14, 0x00, 0xe5, 0x25, 0x8e, 0x82, 0x15, 0xc0, +0x67, 0x9f, 0x7d, 0x16, 0xef, 0xfb, 0x9e, 0x7c, +0xe2, 0x0e, 0xde, 0xb3, 0xff, 0xe7, 0x9f, 0x93, +0x17, 0x00, 0xa4, 0x0b, 0x40, 0x17, 0xe4, 0xff, +0x15, 0x96, 0x23, 0x0d, 0x77, 0x78, 0x43, 0x6f, +0xbb, 0x8f, 0xe4, 0xe0, 0x0f, 0x0d, 0xfe, 0xe9, +0x36, 0xf8, 0x27, 0x4c, 0xfe, 0x52, 0xf7, 0x2f, +0x22, 0x7f, 0x91, 0x00, 0x10, 0x61, 0x3f, 0xd8, +0x1c, 0xc6, 0x3b, 0x03, 0x59, 0x89, 0x7c, 0x01, +0xc0, 0x22, 0x27, 0xea, 0x37, 0x14, 0x02, 0x29, +0x5b, 0x0b, 0x22, 0xae, 0xa4, 0x9f, 0x43, 0x14, +0x54, 0x00, 0x50, 0x18, 0xa8, 0xf3, 0xbf, 0xa1, +0x8f, 0x2b, 0x00, 0x12, 0x46, 0x46, 0xf4, 0x1a, +0xfc, 0xab, 0x1d, 0xa9, 0x62, 0xdc, 0xff, 0xd1, +0x91, 0x30, 0xbd, 0xee, 0xfc, 0xbf, 0xfc, 0xd2, +0xfd, 0x72, 0x84, 0xfd, 0x97, 0xbf, 0x5c, 0xc6, +0x3c, 0xb7, 0x97, 0x15, 0x00, 0x42, 0xdf, 0x5b, +0x85, 0x8f, 0x08, 0xb8, 0x02, 0x40, 0x68, 0x02, +0x40, 0x70, 0x6c, 0x2a, 0x4e, 0xeb, 0x02, 0x60, +0x66, 0x74, 0x17, 0xe3, 0xfe, 0x4b, 0xfb, 0x0b, +0xb5, 0xe8, 0xfe, 0x69, 0xf0, 0x4f, 0xd3, 0xd1, +0xbf, 0x90, 0xfb, 0x67, 0xc9, 0xdf, 0x8e, 0xc1, +0x3e, 0x06, 0x36, 0x4d, 0xc5, 0x28, 0x04, 0x12, +0xe4, 0x45, 0x00, 0x41, 0x76, 0xd4, 0xaf, 0xdb, +0xe2, 0xe3, 0x62, 0x51, 0x08, 0x5c, 0x4e, 0x3f, +0x8f, 0x28, 0xa8, 0x00, 0xa0, 0xd0, 0x1f, 0xf9, +0x17, 0x37, 0xbe, 0xc0, 0x25, 0x7f, 0xb7, 0xb2, +0x23, 0x7a, 0x75, 0xff, 0x59, 0x47, 0x47, 0x61, +0xb0, 0x33, 0x10, 0xc6, 0xd0, 0xcd, 0x7e, 0x8b, +0xc4, 0xab, 0x4f, 0x01, 0xf0, 0xc0, 0xfd, 0xf2, +0x1d, 0xfd, 0x4f, 0x3c, 0x7e, 0xbb, 0x1c, 0xf9, +0x17, 0xe5, 0xd9, 0xc9, 0x7d, 0xdf, 0xbb, 0xef, +0x3c, 0x26, 0xb7, 0xf6, 0xf7, 0x30, 0xe6, 0x06, +0x64, 0xbf, 0xef, 0xe2, 0x8b, 0x2f, 0xd0, 0x3a, +0xf9, 0x93, 0xca, 0xdf, 0x41, 0x14, 0x4c, 0x5d, +0xed, 0x81, 0xb0, 0x67, 0xa2, 0x4f, 0x37, 0xa3, +0xff, 0x71, 0x1a, 0xfc, 0x53, 0xed, 0xfe, 0xeb, +0x95, 0xba, 0x7f, 0xae, 0x00, 0xb0, 0x1d, 0xa9, +0x65, 0x60, 0xdd, 0x80, 0x77, 0x06, 0xb2, 0xe2, +0x65, 0x44, 0x40, 0x04, 0x83, 0x6d, 0xd9, 0x51, +0xbf, 0xa0, 0x10, 0xd8, 0x65, 0x5a, 0xb0, 0xe7, +0x12, 0xfa, 0xd9, 0x44, 0x41, 0x05, 0x00, 0x85, +0xee, 0x05, 0x40, 0x56, 0xe3, 0x04, 0x57, 0x00, +0x24, 0x8f, 0x8f, 0xeb, 0x35, 0xf8, 0x57, 0x3f, +0x54, 0xa4, 0xd3, 0xca, 0x5f, 0x65, 0x75, 0xbf, +0x9f, 0x7f, 0xfa, 0xac, 0x1c, 0x61, 0x5f, 0x73, +0xf5, 0x15, 0x3c, 0xf2, 0x27, 0xd3, 0x00, 0xd9, +0x63, 0x3e, 0x64, 0xa7, 0xbf, 0xf5, 0x70, 0x00, +0x8f, 0xfc, 0xc9, 0xca, 0xdf, 0xff, 0xfd, 0xdf, +0x65, 0x82, 0x5b, 0x04, 0xda, 0x16, 0x00, 0x53, +0x43, 0x21, 0x8c, 0xfb, 0xcf, 0x1b, 0xac, 0x5c, +0x38, 0xc1, 0xbf, 0x31, 0x43, 0x07, 0xff, 0x3a, +0x0d, 0x16, 0xfc, 0x53, 0xe5, 0xfe, 0x59, 0xf2, +0xb7, 0x1d, 0xa9, 0x81, 0x1d, 0x04, 0xc3, 0x35, +0x60, 0x55, 0x9f, 0x8f, 0x42, 0x20, 0x8e, 0x27, +0x00, 0x08, 0x4c, 0xc9, 0xcf, 0x59, 0x51, 0xff, +0xdd, 0x96, 0x10, 0x1b, 0x80, 0x42, 0xe0, 0x22, +0xfa, 0x19, 0x45, 0x41, 0x05, 0x00, 0x85, 0x6e, +0xc8, 0xbf, 0xa0, 0xf1, 0x1d, 0xdb, 0xaa, 0x46, +0x09, 0xf9, 0x7b, 0x56, 0xb4, 0xe8, 0x35, 0xf8, +0x97, 0x3b, 0x33, 0x80, 0xcf, 0xb1, 0x7d, 0xb1, +0xf2, 0xd7, 0xd7, 0x20, 0xa7, 0x7e, 0x7d, 0xbd, +0x56, 0x09, 0x8e, 0xec, 0xb3, 0xd2, 0xac, 0x24, +0xdf, 0x13, 0x13, 0xb9, 0x45, 0xee, 0xdf, 0x6f, +0xda, 0xf0, 0x8a, 0x9c, 0xfb, 0xaf, 0x2c, 0x75, +0x16, 0xfc, 0xbd, 0xde, 0x7c, 0xe3, 0x61, 0xad, +0x92, 0xbf, 0xa8, 0xf2, 0xd7, 0x03, 0x5a, 0x3b, +0x42, 0x15, 0x56, 0xfe, 0xd2, 0xe0, 0x9f, 0x61, +0x82, 0x7f, 0x6a, 0x0b, 0x80, 0x91, 0xbd, 0x0c, +0xb6, 0x0f, 0x57, 0x81, 0x65, 0x1d, 0x1e, 0x1c, +0xca, 0x8e, 0xe1, 0x09, 0x00, 0x24, 0x7e, 0x06, +0x5b, 0x33, 0xa3, 0xfe, 0xb3, 0x35, 0x21, 0xd6, +0x13, 0xbf, 0x3e, 0x9f, 0x7e, 0x5e, 0x51, 0x50, +0x01, 0x40, 0xa1, 0x5d, 0x01, 0x90, 0xd3, 0x78, +0x5c, 0x22, 0x00, 0x2a, 0x1b, 0x20, 0x65, 0x72, +0x42, 0x6f, 0xa3, 0x7f, 0x82, 0x43, 0x03, 0x99, +0x8c, 0xfb, 0x3f, 0xa5, 0xa3, 0xca, 0x5f, 0x55, +0xd7, 0xfe, 0xca, 0x8b, 0x1d, 0x05, 0x49, 0x9b, +0xb4, 0xf7, 0x0d, 0xf4, 0x84, 0xc1, 0xc9, 0xd9, +0x78, 0xb8, 0xe1, 0x86, 0x3f, 0xf3, 0xfe, 0xdd, +0x25, 0x97, 0x5c, 0x00, 0xc3, 0xfd, 0xbb, 0xe5, +0x04, 0xc0, 0x67, 0x9f, 0x3c, 0x23, 0xf8, 0x7b, +0xf9, 0x7a, 0x7d, 0xa9, 0x35, 0xf2, 0x27, 0x98, +0xe8, 0x0f, 0x64, 0xdc, 0x7f, 0xc6, 0x50, 0x1d, +0x0d, 0xfe, 0x29, 0x1c, 0xfd, 0xb7, 0x1b, 0x34, +0xf8, 0xa7, 0x16, 0xf9, 0x8f, 0x54, 0x4b, 0x31, +0x5c, 0x09, 0x96, 0xb5, 0x39, 0x8c, 0x10, 0xe0, +0x0a, 0x00, 0x89, 0x10, 0xc8, 0x88, 0xfa, 0xd7, +0xd6, 0xc4, 0x18, 0x47, 0xd3, 0x82, 0xdd, 0xe7, +0xd1, 0xcf, 0x2d, 0x0a, 0x2a, 0x00, 0x28, 0xe6, +0x4f, 0xfe, 0x79, 0x8d, 0x5f, 0x88, 0xc8, 0x5f, +0x24, 0x00, 0xbc, 0xab, 0x5a, 0xb5, 0x1e, 0xfc, +0x53, 0xe6, 0xfe, 0x0b, 0xa6, 0xbb, 0x98, 0xd4, +0xff, 0x44, 0x8f, 0xbf, 0xc1, 0x4e, 0xfd, 0x4e, +0x8f, 0x47, 0x2b, 0x3c, 0xd7, 0x7b, 0xfd, 0x75, +0x57, 0xc2, 0xc6, 0xf5, 0x2f, 0xcb, 0xfd, 0x73, +0x47, 0xbb, 0x8f, 0xe4, 0xc8, 0x3f, 0x6a, 0x8f, +0xb1, 0xe0, 0xef, 0x41, 0x7e, 0xef, 0xb1, 0xc1, +0x08, 0xad, 0x09, 0x80, 0x93, 0xb3, 0x31, 0x0c, +0xf9, 0x37, 0x76, 0x45, 0xd1, 0xe0, 0xdf, 0x22, +0x08, 0xfe, 0xa9, 0x27, 0x00, 0xaa, 0xc0, 0x86, +0xc5, 0x10, 0x76, 0x08, 0xd4, 0x64, 0x93, 0x50, +0xa0, 0x9c, 0x08, 0x40, 0xf2, 0x87, 0xad, 0xe9, +0x51, 0xff, 0x40, 0x21, 0x60, 0x65, 0x9a, 0xbf, +0xfb, 0x1c, 0xfa, 0x19, 0x46, 0x41, 0x05, 0x00, +0xc5, 0xdc, 0xc8, 0xbf, 0xba, 0xf1, 0x2c, 0x14, +0x00, 0x5f, 0x4b, 0x04, 0x40, 0x45, 0x03, 0xa4, +0x4d, 0x4f, 0xea, 0xd5, 0xfd, 0xb7, 0xf6, 0xc5, +0x8b, 0x2b, 0x7f, 0x63, 0x0d, 0x26, 0x00, 0x08, +0xdc, 0x5d, 0x3f, 0x57, 0xbb, 0xf2, 0xf7, 0xea, +0xab, 0xae, 0x80, 0xa3, 0x78, 0xf4, 0x87, 0x4b, +0xfe, 0x21, 0x41, 0xeb, 0xe5, 0xca, 0x81, 0x58, +0x7c, 0x80, 0x67, 0x84, 0xb5, 0xe9, 0xfe, 0xc7, +0x7a, 0xfc, 0x60, 0x00, 0x4b, 0x7f, 0x92, 0x46, +0x0e, 0xd3, 0xe0, 0xdf, 0x22, 0x0a, 0xfe, 0x29, +0x73, 0xff, 0x12, 0xf2, 0x1f, 0xa9, 0x64, 0x60, +0x3d, 0x52, 0x01, 0xd6, 0x43, 0x65, 0x60, 0x5e, +0x95, 0x49, 0xd6, 0x04, 0x79, 0x02, 0x80, 0x41, +0x3e, 0x0a, 0x81, 0xb4, 0xa8, 0x1f, 0xb7, 0x26, +0x45, 0x9b, 0x9a, 0xe6, 0x87, 0x9f, 0x4d, 0x3f, +0xcf, 0x28, 0xa8, 0x00, 0xa0, 0xd0, 0x74, 0xf4, +0x6f, 0x84, 0x22, 0x00, 0x58, 0x01, 0xe0, 0x5b, +0xd3, 0xae, 0xf3, 0xe0, 0x1f, 0x57, 0x00, 0x94, +0x4e, 0x36, 0x33, 0xe4, 0x3f, 0xdd, 0x1f, 0x64, +0x50, 0xf2, 0x27, 0xf8, 0x0a, 0xaf, 0xf6, 0x91, +0xb2, 0x1e, 0x75, 0x04, 0x00, 0x59, 0x05, 0x4c, +0xc1, 0xe2, 0x1f, 0xb2, 0xfe, 0x17, 0xe8, 0xbf, +0x06, 0x56, 0xbc, 0x70, 0xaf, 0xc2, 0xef, 0x25, +0x9d, 0x01, 0x7b, 0x2b, 0x5c, 0xb5, 0x26, 0x00, +0x8e, 0x4f, 0x45, 0x32, 0xee, 0x7f, 0x7f, 0x4f, +0x32, 0x0d, 0xfe, 0x2d, 0xc6, 0xe0, 0x9f, 0x52, +0xf7, 0xcf, 0x21, 0x7f, 0x31, 0xac, 0x46, 0xca, +0xc1, 0x6a, 0xb0, 0x14, 0xcc, 0x2b, 0xd2, 0xc1, +0x34, 0x27, 0x92, 0x27, 0x00, 0x58, 0x6c, 0x4d, +0x8d, 0xfa, 0x61, 0x6b, 0x52, 0xd4, 0x06, 0x14, +0x02, 0x67, 0xd1, 0xcf, 0x35, 0x0a, 0x2a, 0x00, +0x28, 0xd4, 0x71, 0xff, 0xe7, 0x60, 0xf8, 0xef, +0x07, 0x89, 0x00, 0xa8, 0x68, 0x84, 0xf4, 0x99, +0x29, 0xbd, 0x05, 0xff, 0xd2, 0x8f, 0x4d, 0x42, +0x57, 0x4f, 0x04, 0x23, 0x00, 0xbe, 0x3e, 0x96, +0xa0, 0xf7, 0xe0, 0x9f, 0x10, 0x48, 0xa2, 0xff, +0x82, 0x0b, 0xce, 0x9b, 0xd7, 0x41, 0x20, 0x59, +0x98, 0x99, 0xbe, 0xa5, 0x3d, 0xf7, 0x7f, 0x92, +0x54, 0xfe, 0xfa, 0x40, 0x7f, 0x9b, 0x27, 0xc4, +0x8e, 0xb5, 0xd3, 0xe0, 0xdf, 0x62, 0x0e, 0xfe, +0x29, 0x70, 0xff, 0xd6, 0x1c, 0x01, 0xc0, 0x90, +0x3f, 0x83, 0x32, 0x06, 0x96, 0x83, 0xd8, 0x21, +0x50, 0x96, 0x06, 0xa6, 0xb9, 0x11, 0x3c, 0x01, +0x80, 0xc4, 0xcf, 0x60, 0x6b, 0x4a, 0xd4, 0xb7, +0x88, 0x95, 0xf4, 0xf3, 0x8d, 0x82, 0x0a, 0x00, +0x0a, 0xe5, 0x02, 0x20, 0xbb, 0x71, 0x3b, 0x43, +0xfe, 0x62, 0x01, 0x10, 0xb0, 0xbf, 0x53, 0xaf, +0xa3, 0xff, 0xaa, 0xf1, 0x3a, 0x71, 0xe5, 0xef, +0x4e, 0x83, 0xb8, 0xff, 0xb1, 0xc1, 0x3d, 0x78, +0x3e, 0x37, 0x41, 0x4e, 0x04, 0xc4, 0x46, 0x99, +0x68, 0x4d, 0x04, 0x3c, 0xf6, 0xe8, 0x6d, 0x82, +0xd7, 0xff, 0xe6, 0x3a, 0xfa, 0x9f, 0xc5, 0x15, +0x49, 0xe2, 0xfe, 0x2b, 0xfb, 0xb2, 0x69, 0xf0, +0x4f, 0x9f, 0xc1, 0xbf, 0x61, 0x1d, 0x06, 0xff, +0x14, 0xba, 0x7f, 0x19, 0xf2, 0x67, 0x50, 0xca, +0xc0, 0x62, 0xa0, 0x08, 0xcc, 0x4a, 0xb0, 0xc1, +0x32, 0x67, 0x0f, 0x4f, 0x00, 0x48, 0x84, 0x40, +0x72, 0xd4, 0x99, 0xad, 0xa9, 0x11, 0x1f, 0xd2, +0xcf, 0x39, 0x0a, 0x2a, 0x00, 0x28, 0x04, 0xdc, +0x7f, 0xd3, 0xf9, 0xb6, 0x45, 0x8d, 0xff, 0x60, +0x05, 0x80, 0x5d, 0x79, 0x23, 0x64, 0xce, 0x4e, +0xe9, 0x2d, 0xf8, 0x97, 0x71, 0x74, 0x02, 0xfa, +0xba, 0x42, 0x98, 0xf0, 0xdf, 0x37, 0x27, 0x12, +0xf5, 0x4a, 0xfe, 0x24, 0xf1, 0xff, 0xd2, 0x8b, +0xd2, 0x36, 0xbf, 0xdb, 0x6e, 0xbd, 0x1a, 0x7a, +0x3b, 0x76, 0xf2, 0x44, 0xc0, 0xa1, 0x83, 0x3e, +0xcc, 0xde, 0xfe, 0x7c, 0xc8, 0xff, 0x99, 0xa7, +0xee, 0x82, 0x99, 0xf1, 0x18, 0xed, 0x55, 0xfe, +0xe2, 0x23, 0x8a, 0x21, 0xfc, 0xf3, 0xea, 0x69, +0xf7, 0x85, 0xc8, 0xf1, 0x6e, 0xad, 0x05, 0xff, +0x76, 0xd2, 0xe0, 0xdf, 0xc2, 0x08, 0xfe, 0x29, +0x71, 0xff, 0x5c, 0xf2, 0xb7, 0x1c, 0x29, 0x01, +0x0b, 0x06, 0xc5, 0x28, 0x04, 0x0a, 0xc0, 0xac, +0x28, 0x05, 0x27, 0x02, 0xf2, 0x22, 0xc0, 0x34, +0x7f, 0x17, 0xe0, 0x63, 0x81, 0xe3, 0x5b, 0xd3, +0x22, 0xde, 0xa4, 0x9f, 0x79, 0x14, 0x54, 0x00, +0x50, 0x70, 0x4a, 0x7f, 0x9a, 0x3c, 0x24, 0xee, +0x1f, 0x11, 0x54, 0xdf, 0xad, 0x57, 0xf7, 0xbf, +0x0f, 0x3f, 0xe0, 0x88, 0xfb, 0x3f, 0x86, 0x35, +0xb6, 0xfa, 0x74, 0xff, 0x56, 0x16, 0xef, 0x08, +0x92, 0xf5, 0x2d, 0x37, 0x5f, 0xc5, 0x10, 0x2c, +0x57, 0x04, 0x90, 0xd5, 0x3f, 0xe3, 0xcd, 0xaf, +0x6a, 0x4c, 0xfc, 0x7f, 0xfa, 0xd3, 0x25, 0xe0, +0xee, 0xf2, 0x39, 0x1c, 0x9f, 0x8e, 0xd3, 0x6a, +0xf0, 0x6f, 0x66, 0x38, 0x8c, 0x71, 0xff, 0xc5, +0x03, 0xc5, 0x34, 0xf8, 0xb7, 0x94, 0x83, 0x7f, +0x82, 0xee, 0x5f, 0x96, 0xfc, 0x45, 0x02, 0xc0, +0x9c, 0x41, 0x11, 0x98, 0xf7, 0x63, 0x99, 0x50, +0x41, 0x92, 0x8c, 0x10, 0xd8, 0x25, 0x01, 0x0a, +0x81, 0x69, 0xd3, 0x8c, 0x3d, 0x2f, 0xd1, 0xcf, +0x3e, 0x0a, 0x2a, 0x00, 0xa8, 0xfb, 0xbf, 0xc8, +0xb6, 0xb8, 0xe9, 0xdf, 0x52, 0xf7, 0xdf, 0x84, +0x35, 0xbc, 0xd3, 0x7a, 0x0b, 0xfe, 0x65, 0x1d, +0x1d, 0x81, 0xc1, 0x0e, 0x7f, 0x18, 0xeb, 0xf4, +0x81, 0x6f, 0x91, 0xec, 0xf4, 0x41, 0xfe, 0x84, +0x78, 0xd7, 0xae, 0x79, 0x51, 0x69, 0x50, 0x4f, +0x51, 0x2e, 0xa0, 0xb6, 0xca, 0x8d, 0x11, 0x0e, +0xf7, 0xdd, 0x7b, 0xa3, 0x52, 0xe2, 0xbf, 0xec, +0xd2, 0x8b, 0xc0, 0x01, 0x57, 0x03, 0xc9, 0x4a, +0xa1, 0xb6, 0x1b, 0xff, 0x4e, 0x1f, 0x4f, 0x60, +0x2a, 0x7f, 0x3b, 0x3b, 0x82, 0xb0, 0xf4, 0xa7, +0x5f, 0x67, 0xc1, 0xbf, 0x10, 0x1a, 0xfc, 0xd3, +0x7a, 0xf0, 0xcf, 0x76, 0xae, 0xc1, 0x3f, 0x01, +0xf7, 0xcf, 0x25, 0x7f, 0x0b, 0x96, 0xfc, 0xc5, +0x30, 0x1b, 0x29, 0x04, 0xb3, 0xbe, 0x5c, 0xd8, +0x96, 0x9f, 0x08, 0xa6, 0x79, 0xbb, 0x79, 0x02, +0x80, 0xc0, 0x84, 0x08, 0x81, 0xc4, 0xa8, 0x31, +0xd3, 0xac, 0xf0, 0xa7, 0xe9, 0xe7, 0x20, 0x05, +0x15, 0x00, 0xcb, 0xf6, 0xdc, 0x6f, 0xd3, 0x4e, +0x14, 0x01, 0x12, 0xf7, 0xbf, 0xb3, 0xa9, 0x47, +0x8f, 0xc1, 0xbf, 0x29, 0x68, 0x18, 0xcc, 0x67, +0xdc, 0xff, 0x89, 0x89, 0x3d, 0x7a, 0x73, 0xff, +0x7e, 0xde, 0x5f, 0x2a, 0x25, 0xef, 0xbb, 0xee, +0xbc, 0x56, 0x69, 0x38, 0xf0, 0x5b, 0xf1, 0xaa, +0x5f, 0x3f, 0x96, 0x02, 0xed, 0x0e, 0xdb, 0xc4, +0x34, 0x00, 0x5a, 0x59, 0xbc, 0x0b, 0xde, 0x9e, +0xab, 0x20, 0x6a, 0xb7, 0x31, 0xe4, 0x64, 0xd8, +0xc0, 0xc4, 0x70, 0xa4, 0x4e, 0xae, 0xfd, 0x11, +0x4c, 0x0e, 0x8a, 0x2a, 0x7f, 0x73, 0x06, 0xf7, +0xd2, 0xe0, 0xdf, 0x72, 0x0b, 0xfe, 0x09, 0x8d, +0xfe, 0x85, 0xc8, 0x9f, 0x01, 0xde, 0x17, 0x20, +0xe8, 0xcd, 0x86, 0x6d, 0xb9, 0x09, 0x28, 0x04, +0xf8, 0x02, 0xc0, 0x24, 0x3f, 0x8c, 0xc1, 0xd6, +0x84, 0xa8, 0x41, 0x93, 0xec, 0xf0, 0xc7, 0xe8, +0xe7, 0x21, 0x05, 0x15, 0x00, 0xcb, 0xcb, 0xfd, +0x5f, 0x6e, 0x5b, 0xda, 0xf4, 0x5f, 0x56, 0x00, +0xd8, 0x97, 0x35, 0x41, 0xf6, 0xb1, 0x19, 0xbd, +0x8d, 0xfe, 0x73, 0x67, 0xfa, 0x61, 0x04, 0x8f, +0xfd, 0x8c, 0x77, 0xfb, 0xe9, 0x8d, 0xfc, 0x0f, +0x37, 0xf8, 0x29, 0xdc, 0xcf, 0x67, 0x83, 0x7a, +0xa3, 0x03, 0x7b, 0x04, 0x49, 0xbf, 0xa7, 0x3d, +0x04, 0xe2, 0xa2, 0x4d, 0x18, 0x67, 0x1f, 0x1c, +0xb0, 0x0e, 0x5a, 0x9b, 0x03, 0xf9, 0xe5, 0x3f, +0xa7, 0xd4, 0xc7, 0x5c, 0xc9, 0xff, 0xd4, 0xd1, +0x38, 0xa6, 0xf2, 0xf7, 0x48, 0x67, 0x38, 0x92, +0xff, 0x00, 0x0d, 0xfe, 0x2d, 0xd7, 0xe0, 0x9f, +0xd0, 0xe8, 0x9f, 0x47, 0xfe, 0x1c, 0x01, 0x30, +0x92, 0xcf, 0x60, 0x6b, 0x4f, 0x16, 0x76, 0x08, +0xc4, 0xcb, 0x09, 0x00, 0x8e, 0x10, 0xe8, 0x32, +0xc9, 0x0d, 0x7b, 0x80, 0x7e, 0x36, 0x52, 0x50, +0x01, 0xb0, 0x3c, 0xdc, 0x7f, 0x9c, 0x88, 0xfc, +0x45, 0x02, 0x60, 0xd7, 0x91, 0x3e, 0xbd, 0x05, +0xff, 0x08, 0x9a, 0xfb, 0xd3, 0x60, 0x04, 0x57, +0xd8, 0x4e, 0x4d, 0x45, 0xe9, 0xed, 0xb9, 0xbf, +0xd0, 0xa1, 0x1f, 0x16, 0xaf, 0xbd, 0xf2, 0x20, +0xf3, 0xac, 0x5e, 0x96, 0xf8, 0xc9, 0x18, 0xdf, +0x7c, 0xdb, 0x5b, 0x82, 0xed, 0x80, 0x8f, 0x3c, +0x7c, 0x2b, 0x74, 0xb6, 0x05, 0x6b, 0x44, 0xfe, +0xf3, 0x11, 0x00, 0xe3, 0x7d, 0xa2, 0xca, 0xdf, +0xb4, 0xe1, 0x7a, 0x1a, 0xfc, 0xa3, 0xc1, 0x3f, +0xd5, 0xee, 0x9f, 0x25, 0xff, 0x91, 0x3c, 0x31, +0x72, 0xc1, 0xb4, 0x3b, 0x03, 0x5b, 0x05, 0xe3, +0xe4, 0x04, 0x00, 0x83, 0xbc, 0x50, 0xd8, 0x1a, +0x1f, 0xd5, 0x62, 0x92, 0x1f, 0x7a, 0x17, 0xfd, +0x8c, 0xa4, 0xa0, 0x02, 0x60, 0xe9, 0xba, 0xff, +0xff, 0xb3, 0x2d, 0x6b, 0xfa, 0x95, 0x15, 0x00, +0x0e, 0xa5, 0x4d, 0x0c, 0xd1, 0xeb, 0xcb, 0xfd, +0x17, 0x4d, 0x75, 0x20, 0xf9, 0x7b, 0xc1, 0x64, +0x6f, 0x80, 0xde, 0xdc, 0xff, 0xb1, 0xa9, 0x38, +0xe6, 0x0c, 0xaf, 0x10, 0xf9, 0xbf, 0xf5, 0xe6, +0x23, 0x72, 0x6b, 0x80, 0x24, 0x08, 0x18, 0x1a, +0xbc, 0x5e, 0xf0, 0x9a, 0x1f, 0x17, 0x57, 0x5c, +0x7e, 0x31, 0x64, 0xa4, 0x5a, 0xe9, 0x9c, 0xfc, +0x4f, 0x4c, 0x8b, 0x2a, 0x7f, 0x0f, 0x76, 0xc7, +0xd2, 0xe0, 0x1f, 0x0d, 0xfe, 0x29, 0x71, 0xff, +0x7c, 0xf2, 0x97, 0x13, 0x00, 0x04, 0xa3, 0x39, +0x60, 0xda, 0x85, 0x65, 0x42, 0x59, 0xb1, 0x32, +0x22, 0x20, 0x54, 0x04, 0x91, 0x10, 0x68, 0xc4, +0x9f, 0x6f, 0xa5, 0x9f, 0x97, 0x14, 0x54, 0x00, +0x2c, 0x3d, 0xf7, 0x9f, 0x2d, 0x75, 0xff, 0x4d, +0xb0, 0xbb, 0xad, 0x5f, 0x6f, 0xc1, 0x3f, 0x82, +0xf6, 0xde, 0x58, 0xc6, 0xfd, 0x9f, 0x99, 0x8d, +0xd5, 0x9b, 0xfb, 0x8f, 0x8f, 0x31, 0x15, 0x24, +0xf0, 0x57, 0x5e, 0x7e, 0x00, 0x83, 0x75, 0x89, +0x3c, 0xf2, 0x1f, 0x1f, 0x8a, 0x80, 0xe7, 0x9f, +0xbb, 0x47, 0xed, 0xb4, 0xff, 0x79, 0xe7, 0x9e, +0x03, 0xdd, 0xf8, 0x88, 0x40, 0x97, 0x02, 0x60, +0xb4, 0xdb, 0x97, 0xa9, 0xfc, 0x4d, 0x18, 0x6d, +0xa6, 0xc1, 0x3f, 0x0d, 0x82, 0x7f, 0xee, 0xcb, +0x29, 0xf8, 0xa7, 0xca, 0xfd, 0xb3, 0xe4, 0x8f, +0x30, 0x19, 0xcd, 0x16, 0xa1, 0x03, 0x3b, 0x04, +0xb2, 0x62, 0xf8, 0x02, 0x80, 0x45, 0x4e, 0xd8, +0x1f, 0x5b, 0xe3, 0x22, 0xf7, 0x99, 0xe4, 0xed, +0xbc, 0x91, 0x7e, 0x6e, 0x52, 0x50, 0x01, 0xb0, +0x04, 0x60, 0x57, 0xdd, 0x74, 0x9d, 0x6d, 0x45, +0xd3, 0xef, 0x2c, 0xf9, 0x3b, 0x96, 0x1e, 0x66, +0xc8, 0x5e, 0x5f, 0xc1, 0xbf, 0xb2, 0x89, 0x43, +0xa2, 0xca, 0xdf, 0x81, 0x60, 0xbd, 0x36, 0xfe, +0x99, 0x1a, 0xbf, 0x2e, 0x48, 0xde, 0xa4, 0xec, +0x87, 0x4b, 0xfe, 0x4d, 0xf5, 0x3e, 0x70, 0xd3, +0x4d, 0x7f, 0xd1, 0x78, 0xe5, 0x6f, 0xf5, 0xaa, +0x17, 0x74, 0x46, 0xfe, 0xc7, 0x26, 0x23, 0x18, +0xf7, 0x5f, 0xdb, 0x9b, 0x4a, 0x83, 0x7f, 0x3a, +0x0e, 0xfe, 0x39, 0x1b, 0x38, 0xf8, 0x67, 0xad, +0x8d, 0xe0, 0x9f, 0x00, 0xf9, 0x2b, 0x14, 0x00, +0xa3, 0x59, 0xb0, 0x85, 0xa0, 0x0d, 0xdf, 0x23, +0x99, 0x51, 0x7c, 0x01, 0x90, 0x47, 0xb0, 0x13, +0x85, 0x40, 0x28, 0x11, 0x02, 0x15, 0xf8, 0xf5, +0xb5, 0xf4, 0x33, 0x94, 0x82, 0x0a, 0x80, 0xc5, +0x2c, 0x00, 0xd2, 0x9b, 0xca, 0xb9, 0xee, 0x3f, +0xb2, 0x6b, 0x50, 0x6f, 0xa3, 0xff, 0x0c, 0xac, +0xfc, 0xed, 0xe9, 0x0e, 0x67, 0x4a, 0x7f, 0xbe, +0x3e, 0xae, 0xdf, 0xd2, 0x1f, 0x1b, 0xcb, 0x77, +0x05, 0x89, 0x7b, 0x87, 0xcd, 0xfb, 0x12, 0xf2, +0x8f, 0x8e, 0x30, 0x56, 0xf8, 0x98, 0x40, 0x15, +0xce, 0x39, 0xe7, 0x6c, 0x18, 0xec, 0x0d, 0xd7, +0x3a, 0xf9, 0x7f, 0x45, 0x2a, 0x7f, 0x71, 0x4d, +0xb2, 0xaf, 0xcd, 0x1b, 0xa2, 0xc7, 0x3a, 0x69, +0xf0, 0x8f, 0x06, 0xff, 0x78, 0xa3, 0xff, 0x79, +0xb9, 0x7f, 0x96, 0xfc, 0x47, 0x33, 0x19, 0x18, +0x93, 0x9f, 0x5b, 0x92, 0x51, 0x08, 0x44, 0xf2, +0x05, 0x00, 0x8b, 0x6c, 0x46, 0x08, 0x14, 0x98, +0xe4, 0x85, 0x5c, 0x45, 0x3f, 0x4b, 0x29, 0xa8, +0x00, 0x58, 0x7c, 0xee, 0xff, 0x56, 0xbb, 0xca, +0xa6, 0x3f, 0x58, 0xf2, 0x77, 0x2a, 0x6d, 0xd6, +0x6b, 0xf0, 0xaf, 0x7a, 0xac, 0x96, 0x19, 0xfd, +0xcf, 0x0e, 0x85, 0xea, 0xbd, 0xef, 0xdf, 0xd9, +0xe1, 0x13, 0x41, 0xe2, 0x3e, 0xeb, 0xac, 0xb3, +0xe0, 0xed, 0xb7, 0x1e, 0xc5, 0x40, 0xdf, 0x2d, +0x4a, 0x09, 0xfe, 0x9a, 0xab, 0xaf, 0x00, 0x1f, +0xaf, 0x55, 0xe0, 0xe5, 0xfe, 0x05, 0x9c, 0x7b, +0xee, 0xd9, 0x82, 0xdf, 0x73, 0x70, 0xbf, 0xb7, +0xd6, 0x05, 0xc0, 0xec, 0x58, 0x38, 0xe3, 0xfe, +0x2b, 0x70, 0xaf, 0x7b, 0xf9, 0x05, 0xff, 0xba, +0x68, 0xf0, 0x4f, 0x1b, 0xc1, 0x3f, 0x0e, 0xf9, +0x2b, 0x17, 0x00, 0x19, 0x62, 0xa4, 0xc3, 0x96, +0x66, 0xec, 0x10, 0xc8, 0x88, 0xe4, 0x0b, 0x00, +0x16, 0x59, 0xa1, 0xbf, 0x6f, 0x8d, 0x8f, 0xc8, +0x40, 0x21, 0x70, 0x25, 0xfd, 0x5c, 0xa5, 0xa0, +0x02, 0x60, 0xb1, 0x08, 0x80, 0x8c, 0xa6, 0x7a, +0x3b, 0x8e, 0xfb, 0x8f, 0xee, 0x1b, 0xd6, 0x9b, +0xfb, 0xcf, 0x3c, 0x3a, 0x06, 0xfd, 0x5d, 0xc1, +0x30, 0xda, 0x81, 0x95, 0xbf, 0x27, 0x93, 0xf4, +0xde, 0xf7, 0x5f, 0x98, 0x6b, 0x3b, 0xe7, 0x2a, +0xdf, 0x77, 0xdf, 0x79, 0x0c, 0x66, 0x26, 0x62, +0x24, 0x2b, 0x7f, 0x64, 0xef, 0x5f, 0xe8, 0xfb, +0x6a, 0x2a, 0xdd, 0xb4, 0x4a, 0xfe, 0x67, 0xb0, +0x1a, 0x79, 0x08, 0x1f, 0x97, 0xf4, 0xb4, 0xfb, +0x41, 0xc4, 0x78, 0xef, 0x12, 0x0b, 0xfe, 0x75, +0xd3, 0xe0, 0x9f, 0xd6, 0x83, 0x7f, 0xf3, 0x73, +0xff, 0xac, 0x00, 0x30, 0x42, 0x01, 0x20, 0x42, +0x1a, 0x18, 0x37, 0x11, 0x21, 0xb0, 0x47, 0x46, +0x04, 0x84, 0x88, 0x90, 0x15, 0xfa, 0x1b, 0x0a, +0x81, 0xc4, 0x2d, 0x79, 0x21, 0x97, 0xd3, 0xcf, +0x57, 0x0a, 0x2a, 0x00, 0x16, 0x32, 0xf9, 0x57, +0x1c, 0xba, 0xd7, 0xae, 0xaa, 0xe9, 0x0f, 0x56, +0x00, 0x38, 0x6b, 0xe0, 0xfe, 0xb5, 0x11, 0xfc, +0xdb, 0x8f, 0x1f, 0x66, 0xc4, 0xfd, 0x1f, 0x1b, +0xdd, 0x6d, 0xb0, 0x53, 0xbf, 0xcf, 0x3d, 0x73, +0xb7, 0x46, 0xc4, 0x4f, 0xa6, 0x03, 0x64, 0xef, +0x9f, 0x90, 0x31, 0x77, 0xe7, 0xff, 0xfd, 0x77, +0x1f, 0x17, 0xfc, 0xfe, 0xca, 0x32, 0x67, 0xad, +0x0a, 0x80, 0x69, 0x9c, 0x94, 0x10, 0xf7, 0x5f, +0x38, 0x50, 0x4a, 0x83, 0x7f, 0x34, 0xf8, 0xa7, +0xbd, 0xe0, 0x9f, 0x84, 0xfc, 0x85, 0xdd, 0x3f, +0x4b, 0xfe, 0x04, 0x9b, 0x47, 0x53, 0x19, 0x18, +0x37, 0x60, 0x87, 0x40, 0xc6, 0x6e, 0xbe, 0x00, +0x60, 0x91, 0x19, 0xf6, 0xab, 0x69, 0xfc, 0x9e, +0xc8, 0x2d, 0x79, 0xc1, 0x97, 0xd0, 0xcf, 0x5a, +0x0a, 0x2a, 0x00, 0x16, 0xa6, 0xfb, 0x6f, 0x23, +0xe4, 0xcf, 0x0a, 0x80, 0xb8, 0xc1, 0x11, 0xbd, +0x05, 0xff, 0x72, 0x66, 0x87, 0x60, 0xb8, 0xc3, +0x8f, 0xa9, 0xfc, 0xfd, 0x4e, 0x4f, 0x95, 0xbf, +0x42, 0x65, 0x3e, 0x35, 0x95, 0xae, 0x4c, 0x62, +0x5f, 0xad, 0x1e, 0xff, 0x2b, 0x2e, 0x86, 0xd4, +0x64, 0x0b, 0x7e, 0xd9, 0x0f, 0xa2, 0xaf, 0x2b, +0x94, 0xa9, 0xfa, 0x95, 0xfd, 0xfe, 0x4b, 0x2f, +0xbd, 0x50, 0xb0, 0xf3, 0x7f, 0xae, 0xe4, 0x7f, +0xfa, 0x58, 0x3c, 0x96, 0xfe, 0x78, 0x42, 0x7b, +0x47, 0x08, 0x56, 0xfe, 0x0e, 0xd0, 0xe0, 0x1f, +0x0d, 0xfe, 0x69, 0x48, 0xfe, 0xf3, 0x77, 0xff, +0x9b, 0x39, 0x02, 0x60, 0xd3, 0x68, 0x0a, 0x6c, +0x1a, 0x49, 0x01, 0xe3, 0xfa, 0x38, 0x14, 0x02, +0xe1, 0x3c, 0x01, 0xb0, 0x85, 0x41, 0x30, 0x0a, +0x81, 0x50, 0x22, 0x04, 0x76, 0xe2, 0xd7, 0x17, +0xd1, 0xcf, 0x5c, 0x0a, 0xfa, 0x87, 0xb0, 0x50, +0xc8, 0xbf, 0xf4, 0xd0, 0xe3, 0x76, 0xd5, 0x87, +0x80, 0x15, 0x00, 0xae, 0x65, 0x47, 0xf4, 0x36, +0xfa, 0x27, 0x68, 0x1c, 0xcc, 0x65, 0xdc, 0xff, +0xc9, 0x89, 0x48, 0x83, 0xb9, 0x7f, 0x6e, 0x9f, +0xff, 0xf5, 0xd7, 0x5d, 0xa9, 0x90, 0xf8, 0xc9, +0xf3, 0x7d, 0x13, 0xa3, 0xd7, 0x61, 0x62, 0x24, +0x52, 0x8e, 0xfc, 0x8f, 0x4e, 0xc5, 0xc2, 0x43, +0x0f, 0xde, 0x2c, 0xf8, 0xeb, 0x56, 0x7d, 0xf1, +0xbc, 0xd6, 0xc8, 0x9f, 0xa9, 0xfc, 0xc5, 0x2d, +0x09, 0xe2, 0xfe, 0xb3, 0x86, 0x6a, 0x69, 0xf0, +0x8f, 0x06, 0xff, 0x74, 0x1a, 0xfc, 0x53, 0xe5, +0xfe, 0x37, 0x13, 0xf2, 0x67, 0x90, 0xcc, 0x60, +0xe3, 0x48, 0x32, 0x18, 0xd7, 0x61, 0x87, 0x40, +0xe6, 0x2e, 0x9e, 0x00, 0x60, 0x61, 0x92, 0x11, +0xfa, 0x3f, 0x93, 0x84, 0xdd, 0x3e, 0x5b, 0xf2, +0x82, 0x2e, 0xa0, 0x9f, 0xbf, 0x54, 0x00, 0x50, +0x18, 0x5a, 0x00, 0x64, 0x35, 0xf5, 0x73, 0x05, +0x40, 0xc2, 0xe8, 0x98, 0xde, 0x82, 0x7f, 0xf9, +0x33, 0xbd, 0x30, 0x8c, 0xa9, 0xff, 0x09, 0x3d, +0x56, 0xfe, 0xaa, 0xea, 0xf2, 0x27, 0x7b, 0xfe, +0x84, 0xb0, 0x65, 0x4b, 0x7e, 0xde, 0x7c, 0xfd, +0x61, 0x68, 0x39, 0x14, 0x20, 0xe9, 0xfb, 0xe7, +0xe2, 0x50, 0x83, 0xaf, 0xd2, 0xb3, 0xc0, 0xf9, +0x39, 0xb6, 0x5a, 0xac, 0xfc, 0x8d, 0x65, 0xc8, +0xbf, 0xb9, 0x6b, 0x0f, 0x0d, 0xfe, 0x2d, 0x89, +0xe0, 0x5f, 0xf5, 0xa2, 0x08, 0xfe, 0x29, 0x75, +0xff, 0x62, 0x01, 0xb0, 0x91, 0x41, 0x92, 0x08, +0x23, 0x89, 0x60, 0xb4, 0x2f, 0x06, 0xb6, 0xa0, +0x10, 0xe0, 0x0a, 0x00, 0x89, 0x10, 0x48, 0x0f, +0xfd, 0xaf, 0x49, 0x62, 0xb8, 0x0b, 0x0a, 0x81, +0xf3, 0xe8, 0xe7, 0x30, 0x15, 0x00, 0x14, 0x86, +0x20, 0xff, 0xe2, 0x43, 0x2f, 0x8a, 0xc8, 0x5f, +0x24, 0x00, 0xdc, 0xcb, 0x5b, 0xf4, 0xea, 0xfe, +0x8f, 0xf4, 0x27, 0x33, 0xee, 0xff, 0xf4, 0x4c, +0x8c, 0x5e, 0xdd, 0xff, 0x89, 0x99, 0x38, 0x08, +0xf2, 0x5f, 0x0b, 0x0f, 0xdc, 0x7f, 0x13, 0xd3, +0xf1, 0xff, 0xf1, 0x47, 0x4f, 0xc1, 0xe4, 0x68, +0x14, 0xff, 0xa8, 0x0f, 0x92, 0xed, 0x91, 0x46, +0x3f, 0x68, 0x69, 0xf2, 0x67, 0xbe, 0x9f, 0x7b, +0xec, 0x87, 0x05, 0x21, 0x64, 0x77, 0xd7, 0xcf, +0x55, 0xde, 0x10, 0x38, 0x73, 0x3c, 0x49, 0x6b, +0xee, 0x7f, 0x0c, 0x1b, 0x12, 0x89, 0x00, 0x48, +0x19, 0x69, 0xa4, 0xee, 0x7f, 0x59, 0x06, 0xff, +0x4a, 0x0d, 0x1a, 0xfc, 0x53, 0xea, 0xfe, 0x59, +0xf2, 0x1f, 0x4d, 0x84, 0x0d, 0x2c, 0x86, 0xe3, +0xc1, 0x68, 0x6f, 0x34, 0x6c, 0xc9, 0x0a, 0x95, +0x11, 0x01, 0x41, 0x0c, 0x50, 0x08, 0xfc, 0x07, +0x85, 0x80, 0x2d, 0x7e, 0x7d, 0x0e, 0xfd, 0x4c, +0xa6, 0x02, 0x80, 0x42, 0x9f, 0x02, 0x20, 0xfb, +0xd0, 0x24, 0x57, 0x00, 0x24, 0x8f, 0x8f, 0xeb, +0x2d, 0xf8, 0x57, 0x3c, 0xd5, 0xca, 0x90, 0xff, +0x54, 0x6f, 0xa0, 0x5e, 0xc9, 0x9f, 0x8c, 0xf9, +0xaf, 0xbe, 0xea, 0x0a, 0x39, 0xa2, 0x7e, 0xf4, +0x91, 0x5b, 0x05, 0xfb, 0xfe, 0x65, 0x2f, 0xfd, +0x71, 0x41, 0x7a, 0x02, 0x54, 0x9d, 0xfe, 0xed, +0x6c, 0x0d, 0xd6, 0x5e, 0xe5, 0x2f, 0xde, 0x46, +0x20, 0xe4, 0x5f, 0xdf, 0x13, 0xaf, 0xda, 0xfd, +0xd3, 0xe0, 0xdf, 0x22, 0x0c, 0xfe, 0x55, 0x2e, +0x9a, 0xe0, 0x9f, 0x32, 0xf7, 0x2f, 0x21, 0xff, +0xd1, 0x04, 0x06, 0xeb, 0x47, 0xe3, 0x61, 0xfd, +0x70, 0x1c, 0x18, 0x55, 0x71, 0x85, 0x40, 0x10, +0x0f, 0x26, 0x69, 0x61, 0xff, 0x32, 0x49, 0xdc, +0x65, 0xb6, 0x25, 0x37, 0xf0, 0x6c, 0xfa, 0xd9, +0x4c, 0x05, 0x00, 0x85, 0xae, 0xc9, 0x3f, 0xff, +0xd0, 0x7b, 0x52, 0xf2, 0x3f, 0x04, 0x9e, 0x95, +0x6d, 0x7a, 0x0b, 0xfe, 0x11, 0x74, 0xf6, 0x46, +0x33, 0x02, 0xe0, 0x2b, 0xbc, 0x62, 0xa7, 0xaf, +0xd1, 0x3f, 0x59, 0xf7, 0x53, 0x56, 0xe6, 0xd3, +0xdb, 0xb1, 0x53, 0x6d, 0x01, 0x40, 0xea, 0x7d, +0x55, 0x55, 0x00, 0xa7, 0x91, 0xa0, 0xa0, 0x16, +0x9f, 0xfd, 0x8f, 0x74, 0xf9, 0x42, 0x3f, 0x56, +0xfe, 0xc6, 0x8f, 0xb6, 0xd2, 0xe0, 0x1f, 0x0d, +0xfe, 0xa9, 0xd5, 0xf7, 0xaf, 0xd3, 0xe0, 0x9f, +0x52, 0xf7, 0xcf, 0x21, 0x7f, 0x31, 0xd6, 0x8d, +0xc6, 0xc1, 0xba, 0xa1, 0x58, 0x30, 0xaa, 0x88, +0x42, 0x21, 0x10, 0x22, 0x27, 0x02, 0x90, 0xfc, +0xc1, 0x24, 0x25, 0xf4, 0x1f, 0x26, 0x49, 0x61, +0x9b, 0xf1, 0xeb, 0xb3, 0xe8, 0xe7, 0x34, 0x15, +0x00, 0x14, 0xba, 0x12, 0x00, 0xb9, 0x87, 0x4e, +0x48, 0x04, 0x40, 0xd5, 0x21, 0x48, 0x9d, 0x9c, +0xd0, 0xdb, 0xe8, 0xbf, 0x62, 0xbc, 0x81, 0x21, +0xff, 0x19, 0xbc, 0x5f, 0xaf, 0x2f, 0xf7, 0x7f, +0xe8, 0xa0, 0x8f, 0xd2, 0x51, 0xfd, 0xd9, 0x67, +0x9f, 0x25, 0xf7, 0x18, 0x40, 0x99, 0xfb, 0xaf, +0xc1, 0x49, 0x82, 0x32, 0xe7, 0x5f, 0x98, 0x67, +0xa7, 0x55, 0xf2, 0x3f, 0x3a, 0xb1, 0x87, 0x71, +0xff, 0x7b, 0x7b, 0x33, 0xe6, 0xb4, 0xf6, 0xb7, +0xd8, 0x46, 0xff, 0x3e, 0xcb, 0x3e, 0xf8, 0x57, +0xbe, 0x78, 0x82, 0x7f, 0x0a, 0xdc, 0xff, 0x7a, +0x8e, 0x00, 0x60, 0xc8, 0x5f, 0x82, 0x58, 0x14, +0x02, 0x31, 0x60, 0x54, 0x16, 0x09, 0x5b, 0xb2, +0x43, 0x78, 0x02, 0x80, 0x85, 0x49, 0x4a, 0xd8, +0x4f, 0x26, 0xc9, 0x61, 0x5f, 0xd2, 0xcf, 0x6a, +0x2a, 0x00, 0x28, 0xb4, 0x4d, 0xfe, 0x79, 0x87, +0x56, 0x71, 0xdd, 0xbf, 0x77, 0x75, 0xbb, 0xde, +0x82, 0x7f, 0x4c, 0xe5, 0x6f, 0x57, 0x98, 0x5e, +0x2b, 0x7f, 0xc9, 0x35, 0xbf, 0xfb, 0xee, 0xbd, +0x51, 0x21, 0x61, 0x5f, 0x78, 0xe1, 0xf9, 0x90, +0x91, 0x62, 0xa9, 0x90, 0xfc, 0x47, 0xfa, 0x77, +0x43, 0x75, 0x85, 0x2b, 0x1c, 0xa8, 0xf5, 0x64, +0xea, 0x77, 0x89, 0x00, 0x38, 0x85, 0xff, 0xed, +0xe4, 0xb1, 0x81, 0xec, 0xef, 0x45, 0x72, 0x05, +0x0d, 0x75, 0xde, 0x5a, 0xaf, 0xfc, 0x1d, 0xee, +0xf0, 0x86, 0xbe, 0x76, 0x1f, 0x88, 0x1e, 0xef, +0xd2, 0x93, 0xfb, 0xd7, 0x5d, 0xf0, 0xcf, 0x6f, +0x49, 0x06, 0xff, 0xf6, 0xd3, 0xe0, 0x9f, 0x2a, +0xf7, 0xcf, 0x92, 0x3f, 0x62, 0xed, 0x68, 0x0c, +0x83, 0x75, 0x83, 0x51, 0x60, 0x54, 0x12, 0x01, +0x5b, 0x72, 0x82, 0x79, 0x02, 0x40, 0x22, 0x04, +0x92, 0x43, 0x7f, 0x30, 0x49, 0xd9, 0xf9, 0x09, +0xfd, 0xdc, 0xa6, 0x02, 0x80, 0x42, 0x2b, 0x95, +0xbf, 0x87, 0xcf, 0x42, 0x01, 0xf0, 0x8d, 0x44, +0x00, 0x54, 0x1e, 0x82, 0xb4, 0xe9, 0x49, 0xbd, +0xb9, 0xff, 0x9a, 0xd1, 0xbd, 0x8c, 0xfb, 0x3f, +0x3a, 0x12, 0xa6, 0x37, 0xf7, 0x1f, 0xe0, 0xb7, +0x46, 0xf1, 0x4e, 0xff, 0x9f, 0x2e, 0x61, 0x72, +0x01, 0x42, 0xc4, 0x5f, 0x5d, 0xee, 0x02, 0x8f, +0x3e, 0xcc, 0x27, 0xf9, 0x2b, 0xaf, 0xbc, 0x14, +0xd6, 0xae, 0x79, 0x11, 0xa6, 0xc7, 0xa3, 0x61, +0x62, 0x38, 0x12, 0x3e, 0xfe, 0xf0, 0x29, 0x78, +0x16, 0x4b, 0x84, 0x9e, 0x7b, 0xf6, 0x1e, 0x48, +0x49, 0x34, 0x87, 0xaf, 0x89, 0x40, 0xd0, 0x22, +0xf9, 0x33, 0x95, 0xbf, 0xa3, 0xbb, 0x18, 0xf7, +0x5f, 0xd6, 0x5f, 0x40, 0x83, 0x7f, 0x06, 0x09, +0xfe, 0x1d, 0xa4, 0xc1, 0x3f, 0x4d, 0x82, 0x7f, +0x0a, 0xdd, 0x3f, 0x9f, 0xfc, 0x09, 0xd6, 0x8c, +0x46, 0x33, 0x58, 0x3b, 0x18, 0x09, 0x46, 0x45, +0x7b, 0x70, 0x22, 0x10, 0x24, 0x23, 0x02, 0x02, +0x18, 0xe0, 0x34, 0xe0, 0xdb, 0x2d, 0x69, 0x21, +0xef, 0xd0, 0xcf, 0x70, 0x2a, 0x00, 0x28, 0xe6, +0x23, 0x00, 0x72, 0x0e, 0x99, 0x70, 0xdd, 0xbf, +0x5f, 0x6d, 0xa7, 0xde, 0x82, 0x7f, 0x59, 0x47, +0x47, 0x61, 0xa0, 0x33, 0x10, 0xc6, 0xd0, 0xcd, +0x7e, 0x8b, 0x44, 0xa9, 0xaf, 0xe0, 0x9f, 0x90, +0x53, 0x27, 0x20, 0xab, 0x7e, 0x8d, 0x07, 0xbc, +0xe5, 0x88, 0x9f, 0x64, 0x01, 0x08, 0xb1, 0x2b, +0x7b, 0xc6, 0x7f, 0xdb, 0xad, 0x57, 0x2b, 0x74, +0xfa, 0xda, 0xae, 0xfc, 0x1d, 0xc4, 0xca, 0xdf, +0xae, 0xf6, 0x00, 0xd8, 0x33, 0xd1, 0xb7, 0xe4, +0x82, 0x7f, 0xbe, 0x4b, 0x32, 0xf8, 0x57, 0x4b, +0x83, 0x7f, 0x0a, 0xdc, 0xff, 0x5a, 0x8e, 0x00, +0x60, 0xc9, 0x7f, 0x0d, 0x3e, 0x7a, 0x23, 0x58, +0x3d, 0x1a, 0x09, 0x6b, 0x06, 0x22, 0xc0, 0x28, +0x7f, 0x37, 0x47, 0x08, 0x04, 0x48, 0x60, 0x4c, +0x7e, 0x4e, 0x0a, 0xfb, 0x6a, 0x4b, 0x7a, 0xf0, +0x2b, 0xf4, 0xb3, 0x9c, 0x0a, 0x00, 0x0a, 0xcd, +0xdd, 0xff, 0x39, 0x76, 0x05, 0x87, 0xff, 0xca, +0x75, 0xff, 0x19, 0x33, 0x53, 0x7a, 0x0b, 0xfe, +0xd5, 0x0f, 0x17, 0x33, 0xee, 0xff, 0xf8, 0x98, +0xfe, 0x2a, 0x7f, 0xdb, 0x8f, 0x04, 0x0a, 0x12, +0xf8, 0x55, 0x57, 0x5d, 0x0e, 0xcd, 0xb8, 0xe6, +0x27, 0x4b, 0xfe, 0x21, 0x81, 0xeb, 0xe0, 0x82, +0x0b, 0xce, 0x53, 0xab, 0x11, 0x90, 0x3c, 0x3a, +0xe8, 0x69, 0xdf, 0xa9, 0x33, 0xf2, 0x27, 0x98, +0x1a, 0xda, 0xc9, 0xb8, 0xff, 0xfc, 0xc1, 0x0a, +0x1a, 0xfc, 0xd3, 0xb2, 0xfb, 0x9f, 0x5b, 0xf0, +0xef, 0x00, 0x0d, 0xfe, 0x69, 0x1a, 0xfc, 0x13, +0x74, 0xff, 0xb2, 0xe4, 0x2f, 0x12, 0x00, 0x04, +0x5f, 0x8e, 0x46, 0xc0, 0x9a, 0xfe, 0x3d, 0x60, +0x94, 0x87, 0x42, 0x20, 0x27, 0x90, 0x27, 0x00, +0x44, 0xf0, 0x27, 0x42, 0xe0, 0xe4, 0x96, 0xf4, +0xa0, 0xe7, 0xe8, 0xe7, 0x3a, 0x15, 0x00, 0x14, +0x6a, 0x97, 0xfe, 0x1c, 0xb2, 0x45, 0x11, 0x20, +0x71, 0xff, 0x01, 0x75, 0x5d, 0x7a, 0x1b, 0xfd, +0xe7, 0xcc, 0x0e, 0xc2, 0x50, 0x87, 0x2f, 0x8c, +0x61, 0x92, 0xfd, 0xbb, 0xd3, 0x29, 0x7a, 0x73, +0xff, 0x8a, 0xc6, 0xff, 0xd6, 0x78, 0xb4, 0x87, +0x4b, 0xfc, 0xa7, 0x8f, 0xe1, 0x07, 0xd7, 0xda, +0x97, 0x34, 0x3e, 0x06, 0xb4, 0x76, 0xf5, 0x8b, +0x3a, 0x23, 0x7f, 0x51, 0xe5, 0xaf, 0x07, 0xb4, +0x75, 0xee, 0xc4, 0xb5, 0x3f, 0x1a, 0xfc, 0x9b, +0x4b, 0xf0, 0x4f, 0x9b, 0xee, 0x7f, 0x2e, 0xe4, +0xaf, 0x5e, 0xdf, 0xff, 0xf2, 0x08, 0xfe, 0x29, +0x72, 0xff, 0x5c, 0xf2, 0x5f, 0x8d, 0xe4, 0xff, +0x25, 0x83, 0x3d, 0x0c, 0x56, 0xf7, 0x85, 0x83, +0x51, 0x4e, 0x38, 0x0a, 0x01, 0xbe, 0x00, 0x60, +0x81, 0x42, 0xe0, 0xa8, 0x71, 0x56, 0xe0, 0x63, +0xf4, 0xf3, 0x9d, 0x0a, 0x00, 0x0a, 0xe5, 0xee, +0xff, 0x7c, 0xbb, 0xc2, 0xc3, 0xff, 0x60, 0x05, +0x80, 0x7d, 0xc5, 0x21, 0xc8, 0x9c, 0x9d, 0xd6, +0x4b, 0xf0, 0x8f, 0xe0, 0xd0, 0x40, 0x16, 0xe3, +0xfe, 0x4f, 0x4d, 0x46, 0xea, 0xb5, 0xf1, 0x8f, +0x14, 0xfe, 0x08, 0x11, 0xb7, 0xbd, 0xed, 0x87, +0x92, 0xef, 0x19, 0xee, 0x0f, 0x87, 0xa7, 0x9f, +0xba, 0x73, 0x4e, 0xd7, 0x00, 0x49, 0x3d, 0x70, +0x57, 0x5b, 0x88, 0x4e, 0x04, 0xc0, 0x44, 0x7f, +0x10, 0xe3, 0xfe, 0x33, 0x86, 0xeb, 0x68, 0xf0, +0x6f, 0x99, 0x04, 0xff, 0xac, 0x96, 0x41, 0xf0, +0x6f, 0xad, 0xc0, 0xe8, 0x9f, 0x4f, 0xfe, 0x22, +0x01, 0xb0, 0x8a, 0xc1, 0x6e, 0x06, 0x5f, 0xf6, +0xec, 0x02, 0xa3, 0xec, 0x5d, 0x72, 0x02, 0x40, +0x2a, 0x04, 0x42, 0x27, 0x8d, 0x73, 0xfc, 0x1f, +0xa4, 0x9f, 0xf5, 0x54, 0x00, 0x50, 0x08, 0x09, +0x80, 0xcc, 0x43, 0x5e, 0x22, 0xf2, 0x17, 0x09, +0x80, 0xe0, 0x83, 0x3d, 0x7a, 0x73, 0xff, 0x05, +0xd3, 0x5d, 0x48, 0xfe, 0x58, 0xf9, 0xdb, 0xe3, +0xaf, 0xf7, 0xbe, 0xff, 0x88, 0x70, 0x23, 0x85, +0xc4, 0xed, 0xe6, 0xfc, 0x29, 0xd8, 0xed, 0xf8, +0x00, 0x2e, 0xbb, 0xec, 0x22, 0xa5, 0x24, 0xff, +0xe2, 0x8a, 0xfb, 0xe0, 0xc3, 0x0f, 0x9e, 0x54, +0xf8, 0xef, 0xb3, 0xd2, 0xac, 0xb5, 0x4e, 0xfe, +0x27, 0x67, 0x63, 0x18, 0xf2, 0x6f, 0xea, 0x8a, +0xa4, 0xc1, 0x3f, 0xad, 0x8d, 0xfe, 0x0f, 0xd3, +0xe0, 0xdf, 0x02, 0x0a, 0xfe, 0x09, 0x8d, 0xfe, +0xb9, 0xee, 0x9f, 0x25, 0x7f, 0x82, 0x95, 0xa3, +0xe1, 0x0c, 0xbe, 0xec, 0x0e, 0x03, 0xa3, 0xac, +0x30, 0x01, 0x11, 0xe0, 0x07, 0xc6, 0x39, 0x88, +0xe4, 0xd0, 0x11, 0xfc, 0xfa, 0x2e, 0xfa, 0x99, +0x4f, 0x05, 0x00, 0x85, 0xd4, 0xfd, 0x5f, 0x6c, +0x57, 0x7c, 0xf8, 0x3f, 0xac, 0x00, 0xb0, 0x2f, +0x3f, 0x8c, 0x81, 0xbc, 0x69, 0xbd, 0x04, 0xff, +0x08, 0x5a, 0xfa, 0x12, 0x75, 0x52, 0xf9, 0xab, +0xce, 0xb1, 0x9f, 0xb2, 0x22, 0x87, 0x39, 0x39, +0x7b, 0x36, 0x24, 0x98, 0x8f, 0xe5, 0x41, 0x92, +0xe6, 0x3f, 0x6b, 0xe1, 0xe6, 0xbf, 0xe4, 0x78, +0x33, 0xad, 0x0b, 0x80, 0x31, 0x14, 0x4b, 0x03, +0x58, 0xfa, 0x93, 0x3c, 0x7a, 0x88, 0x06, 0xff, +0xd4, 0x0a, 0xfe, 0xb5, 0xd2, 0xe0, 0xdf, 0x22, +0x0d, 0xfe, 0x09, 0x8d, 0xfe, 0x85, 0xc8, 0x7f, +0x25, 0x6e, 0xc3, 0x7c, 0x31, 0x46, 0x10, 0x06, +0x5f, 0xe2, 0xe5, 0x4d, 0xa3, 0xcc, 0x50, 0xbe, +0x00, 0x60, 0x91, 0x83, 0xff, 0x3b, 0x29, 0xb4, +0xcf, 0x38, 0xd7, 0xf7, 0x36, 0xfa, 0xf9, 0x4f, +0x05, 0x00, 0x15, 0x00, 0x19, 0x87, 0x76, 0x49, +0xdd, 0xff, 0x61, 0x08, 0x3d, 0xd4, 0xab, 0xb7, +0xe0, 0x5f, 0xc9, 0xe4, 0x11, 0x86, 0xfc, 0xa7, +0xfb, 0x82, 0x0c, 0x76, 0xed, 0x6f, 0x2e, 0xe3, +0xfd, 0x07, 0x1f, 0xb8, 0x09, 0x7a, 0x3b, 0x43, +0x79, 0xe5, 0x3f, 0x8e, 0xf6, 0x1f, 0x0b, 0x7e, +0x6f, 0x4c, 0xa4, 0x89, 0x56, 0xc9, 0xff, 0xf8, +0x54, 0x24, 0xe3, 0xfe, 0xeb, 0xba, 0x13, 0x69, +0xf0, 0x4f, 0x67, 0xc1, 0xbf, 0x26, 0x1a, 0xfc, +0x5b, 0x60, 0xc1, 0x3f, 0xa1, 0xd1, 0xbf, 0x94, +0xfc, 0xf9, 0x02, 0x80, 0xe0, 0xf3, 0xb1, 0x50, +0xf8, 0x12, 0xf3, 0x31, 0x22, 0x21, 0xe0, 0x27, +0x8f, 0x6c, 0x66, 0x22, 0xd0, 0x69, 0x9c, 0xe3, +0x7b, 0x23, 0xe5, 0x01, 0x2a, 0x00, 0x96, 0xa9, +0xfb, 0x6f, 0xbe, 0xdc, 0xae, 0xf4, 0xf0, 0xff, +0x58, 0xf2, 0x77, 0x28, 0x6b, 0x86, 0xac, 0x63, +0x33, 0x1c, 0xf2, 0x9f, 0xd5, 0xd9, 0xe8, 0x3f, +0x1d, 0x4b, 0x7f, 0xba, 0xba, 0x23, 0x18, 0x01, +0xf0, 0x35, 0x86, 0xec, 0x0c, 0x75, 0xea, 0xb7, +0xa2, 0xd4, 0x49, 0x23, 0xf2, 0xff, 0x08, 0x57, +0x00, 0x8f, 0xe1, 0x5d, 0x00, 0xde, 0xe1, 0x1f, +0x5c, 0x5b, 0x7c, 0xe4, 0x61, 0xe1, 0x75, 0xc2, +0x83, 0xfb, 0xbd, 0xb5, 0x46, 0xfe, 0xe4, 0xff, +0xce, 0x48, 0x97, 0x0f, 0xf4, 0xe3, 0x9f, 0x59, +0xec, 0x68, 0x1b, 0x0d, 0xfe, 0xd1, 0xe0, 0xdf, +0xb2, 0x0b, 0xfe, 0xa9, 0x72, 0xff, 0x2c, 0xf9, +0x8b, 0xb0, 0x13, 0x3e, 0x43, 0x7c, 0xd9, 0x1e, +0x0c, 0x46, 0x19, 0x3b, 0x65, 0x44, 0x80, 0xaf, +0x08, 0x59, 0x44, 0x08, 0xec, 0x3c, 0x82, 0x42, +0xe0, 0x5a, 0xca, 0x09, 0x54, 0x00, 0x2c, 0x2f, +0x01, 0x90, 0x7e, 0x38, 0x81, 0xeb, 0xfe, 0x77, +0xb5, 0xf4, 0xeb, 0x2d, 0xf8, 0x57, 0x35, 0x76, +0x40, 0x5c, 0xf9, 0xbb, 0xd3, 0xe0, 0xa7, 0x7e, +0xe3, 0x63, 0x4c, 0x95, 0xde, 0x01, 0x20, 0xb8, +0xe5, 0xe6, 0xab, 0x20, 0x95, 0xf4, 0xf7, 0xcb, +0x56, 0xff, 0x22, 0x61, 0x6f, 0x57, 0x30, 0xfe, +0xbf, 0xeb, 0xce, 0xeb, 0xb4, 0x5b, 0xfa, 0x83, +0x2b, 0x92, 0xc4, 0xfd, 0x57, 0xf5, 0x65, 0xd3, +0xe0, 0x9f, 0x9e, 0x82, 0x7f, 0xea, 0xf5, 0xfd, +0xd3, 0xe0, 0x9f, 0xbe, 0x83, 0x7f, 0x8a, 0xc8, +0x5f, 0x48, 0x00, 0x7c, 0x36, 0x16, 0xc2, 0x60, +0x55, 0x0b, 0x11, 0x02, 0x21, 0x7c, 0x01, 0x90, +0x23, 0x46, 0xa6, 0xff, 0x1f, 0x46, 0x29, 0x21, +0x0d, 0xc6, 0x39, 0x3e, 0x57, 0x51, 0x6e, 0xa0, +0x02, 0x60, 0x39, 0xb8, 0xff, 0xbf, 0xd8, 0x95, +0x35, 0xff, 0xca, 0x92, 0xbf, 0x23, 0xba, 0x7f, +0x42, 0xee, 0xfa, 0x08, 0xfe, 0x65, 0x1c, 0x9b, +0x80, 0x3e, 0x1c, 0xcf, 0x91, 0xca, 0xdf, 0x6f, +0x4e, 0x24, 0x1a, 0xcc, 0xfd, 0x73, 0x41, 0xf6, +0xfe, 0xef, 0xbd, 0xe7, 0x06, 0x39, 0x12, 0xbf, +0x1c, 0x43, 0x80, 0x5e, 0xee, 0x5f, 0xc0, 0x29, +0x9c, 0x52, 0xc8, 0x92, 0xff, 0x69, 0x3c, 0xe5, +0x6b, 0x6d, 0xf9, 0xae, 0x42, 0xd1, 0xe0, 0xec, +0xf8, 0x89, 0xd6, 0xc8, 0xff, 0xab, 0x13, 0x49, +0x30, 0x84, 0x7f, 0x5e, 0xbd, 0x6d, 0xbe, 0x10, +0x31, 0xde, 0x4d, 0x83, 0x7f, 0x34, 0xf8, 0x27, +0x48, 0xfe, 0x66, 0xcb, 0x2c, 0xf8, 0xa7, 0xca, +0xfd, 0xb3, 0xe4, 0xff, 0xe9, 0x58, 0xb0, 0x18, +0x41, 0xf0, 0x65, 0x33, 0x11, 0x02, 0xc1, 0x7c, +0x01, 0xc0, 0xc0, 0x07, 0x85, 0x80, 0x1f, 0x11, +0x02, 0xb5, 0x46, 0x39, 0x3e, 0x57, 0x52, 0x9e, +0xa0, 0x02, 0x60, 0x29, 0xbb, 0xff, 0x5c, 0x14, +0x01, 0x12, 0xf7, 0xbf, 0xa7, 0x63, 0x50, 0x6f, +0xc1, 0xbf, 0xda, 0xe1, 0x4a, 0xc6, 0xfd, 0x1f, +0xc3, 0x37, 0xef, 0x42, 0x20, 0x7f, 0x2e, 0xc8, +0x89, 0xde, 0xdd, 0x61, 0x9b, 0x20, 0xd0, 0x7f, +0x0d, 0x64, 0xa7, 0x5b, 0x63, 0xa5, 0x6f, 0x84, +0xbc, 0xeb, 0x47, 0x1c, 0x46, 0xc1, 0xa0, 0xa8, +0x45, 0x90, 0x80, 0x4c, 0x14, 0x7a, 0x3b, 0x42, +0xb5, 0x26, 0x00, 0x66, 0xb0, 0x1e, 0x99, 0xb8, +0xff, 0xe2, 0x81, 0x22, 0x83, 0x05, 0xff, 0x82, +0x68, 0xf0, 0x6f, 0xc9, 0x05, 0xff, 0x4c, 0x0c, +0x1c, 0xfc, 0x5b, 0xab, 0xa5, 0xe0, 0x9f, 0x2c, +0xf9, 0x2b, 0x13, 0x00, 0x9f, 0x30, 0x08, 0x84, +0x2f, 0x0f, 0x05, 0x81, 0x71, 0x5a, 0x30, 0x5f, +0x00, 0x88, 0x61, 0x94, 0xe1, 0xf7, 0xc7, 0xe6, +0xd4, 0x90, 0x0a, 0xa3, 0x1c, 0xef, 0xcb, 0x29, +0x5f, 0x50, 0x01, 0xb0, 0xd4, 0xdc, 0xff, 0xf5, +0x76, 0x15, 0xcd, 0xbf, 0xb3, 0x02, 0xc0, 0xa9, +0xf4, 0x08, 0x12, 0xbc, 0x7e, 0x82, 0x7f, 0x59, +0xb3, 0x23, 0x30, 0xd8, 0x19, 0x00, 0x63, 0x9d, +0x3e, 0xf0, 0xed, 0xa9, 0x94, 0x05, 0x27, 0x00, +0xd4, 0xbd, 0xf6, 0x47, 0x9a, 0xfe, 0x94, 0x3d, +0x32, 0x88, 0xdc, 0x6d, 0xa4, 0xbd, 0xd2, 0x9f, +0xe3, 0x09, 0x4c, 0xe5, 0x6f, 0x67, 0x47, 0x10, +0xec, 0x1e, 0xef, 0xa3, 0xc1, 0x3f, 0x1a, 0xfc, +0x5b, 0xb6, 0xc1, 0xbf, 0xf9, 0xba, 0x7f, 0x96, +0xfc, 0x09, 0x3e, 0x66, 0x10, 0x00, 0x5f, 0x36, +0x10, 0x21, 0x10, 0xc4, 0x17, 0x00, 0x2c, 0x32, +0xfc, 0x7e, 0xdf, 0x94, 0x16, 0x5c, 0x88, 0x42, +0xe0, 0x12, 0xca, 0x1d, 0x54, 0x00, 0x2c, 0x15, +0xf7, 0x5f, 0x25, 0x22, 0x7f, 0x91, 0x00, 0x88, +0xe8, 0x1e, 0xd2, 0x53, 0xf0, 0x6f, 0x0a, 0x0e, +0x0e, 0x16, 0x30, 0xee, 0xff, 0x04, 0x9e, 0xb0, +0x35, 0x04, 0xf9, 0x93, 0x56, 0xbf, 0x98, 0xc8, +0x2d, 0x60, 0xb4, 0xe9, 0x55, 0xf8, 0x08, 0xf7, +0xf7, 0x9f, 0x7f, 0xee, 0x1e, 0xb8, 0xfb, 0xee, +0xeb, 0xe1, 0x8e, 0xdb, 0xaf, 0x61, 0x0e, 0xf9, +0x24, 0xc6, 0x6e, 0x85, 0xd1, 0x81, 0x3d, 0x0a, +0xc9, 0x9f, 0x5c, 0xdf, 0xbb, 0xe6, 0xea, 0x2b, +0x94, 0x92, 0xff, 0xca, 0xcf, 0x9f, 0x9b, 0xc3, +0xb3, 0xff, 0x64, 0x85, 0x98, 0xc4, 0xd3, 0xc8, +0xc4, 0xfd, 0xe7, 0x0c, 0x55, 0x2d, 0x98, 0xe0, +0x5f, 0xa0, 0xc1, 0x83, 0x7f, 0x1d, 0x34, 0xf8, +0x47, 0x83, 0x7f, 0x1a, 0x90, 0xbf, 0x90, 0x00, +0x08, 0x10, 0xc3, 0x1f, 0x3e, 0x1a, 0xf5, 0x87, +0x2f, 0xeb, 0x03, 0xc1, 0x38, 0x3d, 0x90, 0x2f, +0x00, 0x72, 0xbc, 0x45, 0x48, 0x47, 0x21, 0x90, +0x11, 0x94, 0x85, 0x5f, 0x5f, 0x44, 0x39, 0x84, +0x0a, 0x80, 0xc5, 0xec, 0xfe, 0x6f, 0xb3, 0xab, +0x6c, 0xfe, 0x83, 0x15, 0x00, 0xce, 0xe8, 0xfe, +0xf5, 0x15, 0xfc, 0xcb, 0x9b, 0xe9, 0x87, 0xe1, +0x76, 0x6f, 0x18, 0xef, 0xf6, 0xd3, 0x53, 0xe5, +0xaf, 0x94, 0xf8, 0x27, 0xf1, 0x03, 0xc6, 0xdd, +0xf5, 0x73, 0xb8, 0xf6, 0x9a, 0x3f, 0xa9, 0x4c, +0xfa, 0x9f, 0x75, 0xd6, 0x59, 0xb0, 0xe2, 0x85, +0x7b, 0x05, 0xc7, 0xff, 0x3d, 0x78, 0x0c, 0x48, +0xd9, 0xaf, 0x25, 0x95, 0xc1, 0xa7, 0x8f, 0x25, +0x69, 0xcd, 0xfd, 0x9f, 0x3a, 0x1a, 0xc7, 0x54, +0xfe, 0xb6, 0x74, 0xee, 0x42, 0xc2, 0xef, 0xd7, +0x4b, 0xf0, 0x2f, 0x98, 0x06, 0xff, 0x68, 0xf0, +0x6f, 0x51, 0x04, 0xff, 0xe6, 0xef, 0xfe, 0x09, +0x3e, 0x22, 0x02, 0x80, 0x81, 0x1f, 0x7c, 0x38, +0xea, 0x07, 0x5f, 0xd6, 0x05, 0x20, 0xe1, 0x07, +0xf0, 0x05, 0x80, 0x44, 0x08, 0xf8, 0xff, 0xb6, +0x29, 0x33, 0x30, 0xc9, 0x28, 0xc7, 0xeb, 0x02, +0xca, 0x27, 0x54, 0x00, 0x2c, 0xc2, 0xbd, 0xff, +0xc3, 0x0d, 0x52, 0xf7, 0xdf, 0x0c, 0xd1, 0x7d, +0x23, 0x7a, 0x09, 0xfe, 0x11, 0x1c, 0xee, 0x4f, +0x17, 0x55, 0xfe, 0x4e, 0x45, 0xe9, 0xd5, 0xfd, +0x3b, 0xe1, 0x8e, 0xbe, 0xaa, 0x94, 0xbf, 0x10, +0xee, 0xb8, 0xe3, 0x5a, 0x98, 0xc2, 0xd3, 0xbe, +0xbc, 0x95, 0x3f, 0x24, 0x65, 0x32, 0x2d, 0x90, +0xfd, 0xde, 0x73, 0xce, 0x39, 0x1b, 0x5c, 0x9c, +0x3e, 0xd5, 0x6a, 0xea, 0x9f, 0x60, 0xbc, 0x2f, +0x90, 0x71, 0xff, 0x69, 0xc3, 0x07, 0x68, 0xf0, +0x4f, 0xe1, 0xe8, 0xbf, 0x8d, 0x06, 0xff, 0x68, +0xf0, 0x4f, 0x6d, 0xf2, 0x97, 0x73, 0xff, 0x62, +0xf2, 0x67, 0x04, 0xc0, 0x98, 0xaf, 0x08, 0xa3, +0xbe, 0xf0, 0x65, 0x2d, 0x11, 0x02, 0xfe, 0xf2, +0x22, 0x20, 0xc7, 0x0b, 0x8c, 0xd2, 0xfc, 0x7e, +0xdb, 0x98, 0x15, 0x10, 0x85, 0x5f, 0x9f, 0x47, +0x79, 0x85, 0x0a, 0x80, 0xc5, 0x41, 0xfe, 0x95, +0xcd, 0xf7, 0xd9, 0x55, 0x49, 0xdd, 0xbf, 0x4b, +0x59, 0xab, 0xde, 0x82, 0x7f, 0x85, 0x53, 0x1d, +0x4c, 0xe5, 0xef, 0x64, 0x6f, 0x80, 0xde, 0xc8, +0xff, 0x0c, 0xa6, 0xf4, 0x57, 0x7d, 0xf1, 0xfc, +0x9c, 0xdb, 0xfe, 0xc8, 0x24, 0xe0, 0xe8, 0x54, +0xac, 0xdc, 0xda, 0x1f, 0xb9, 0xf2, 0x77, 0xeb, +0x2d, 0x57, 0xc1, 0xd9, 0x67, 0x9f, 0xc5, 0x10, +0x3f, 0x19, 0xf9, 0xb7, 0x1f, 0x09, 0xd2, 0x7a, +0xe3, 0xdf, 0x89, 0x19, 0x51, 0xe5, 0x6f, 0x43, +0x57, 0x0c, 0x0d, 0xfe, 0xd1, 0xe0, 0x1f, 0x0d, +0xfe, 0x29, 0x25, 0x7f, 0x2d, 0xb8, 0x7f, 0x8e, +0x00, 0xf8, 0x60, 0xcc, 0x87, 0xc1, 0x87, 0x23, +0xde, 0xb0, 0x7a, 0xaf, 0x3f, 0xc9, 0x02, 0xf0, +0x05, 0x00, 0x8b, 0x34, 0xbf, 0x5f, 0x37, 0x64, +0x07, 0xec, 0x32, 0xca, 0xf1, 0x3c, 0x87, 0x72, +0x0c, 0x15, 0x00, 0x0b, 0xbc, 0xf3, 0xff, 0x70, +0x3b, 0xd7, 0xfd, 0xc7, 0x0d, 0x8d, 0xea, 0x25, +0xf8, 0x47, 0xd0, 0xd6, 0x1b, 0xc7, 0xb8, 0xff, +0x33, 0xb3, 0xb1, 0x7a, 0x13, 0x00, 0x16, 0x66, +0x6f, 0xcf, 0x99, 0xfc, 0x09, 0x6e, 0xba, 0xe9, +0x2f, 0x3c, 0xf2, 0xef, 0x6e, 0x0f, 0x81, 0xb1, +0xc1, 0x08, 0x46, 0x58, 0x30, 0xe4, 0x7e, 0x92, +0x90, 0x74, 0xbc, 0x4e, 0x8e, 0xfd, 0x30, 0x95, +0xbf, 0xdd, 0xbe, 0xcc, 0xf8, 0x3f, 0x61, 0xf4, +0x30, 0x0d, 0xfe, 0xd1, 0xe0, 0x9f, 0xc1, 0x82, +0x7f, 0x9b, 0x97, 0x60, 0xf0, 0x4f, 0xa9, 0xfb, +0x17, 0x93, 0xff, 0x07, 0x63, 0xde, 0x0c, 0xde, +0x27, 0x3f, 0x8f, 0x78, 0xc1, 0xea, 0x2a, 0x56, +0x08, 0x78, 0xc9, 0x23, 0xd5, 0xef, 0x97, 0x0d, +0xb9, 0x7e, 0x01, 0x28, 0x04, 0xce, 0xa6, 0x5c, +0x43, 0x05, 0xc0, 0xc2, 0x23, 0xff, 0xb2, 0x23, +0x4f, 0xd8, 0xed, 0x95, 0x92, 0xbf, 0x5b, 0x59, +0x9b, 0xde, 0x82, 0x7f, 0xa5, 0xe3, 0x87, 0x44, +0x95, 0xbf, 0x03, 0xc1, 0x7a, 0x23, 0xff, 0xe2, +0x7c, 0x3b, 0xc6, 0xc1, 0x2b, 0x22, 0xf7, 0xbb, +0xee, 0xba, 0x0e, 0x5e, 0x7d, 0xf9, 0x01, 0x06, +0x8a, 0x42, 0x7d, 0x5e, 0x1e, 0x2b, 0x19, 0xe2, +0x27, 0x8f, 0x01, 0x48, 0x03, 0x20, 0xfb, 0xcf, +0xc9, 0xaf, 0x61, 0x45, 0xc0, 0xfc, 0xce, 0xfd, +0x2a, 0x26, 0xff, 0x63, 0x93, 0x11, 0x8c, 0xfb, +0xaf, 0xed, 0x49, 0xa1, 0xc1, 0x3f, 0x1a, 0xfc, +0x5b, 0x54, 0xc1, 0x3f, 0x75, 0xfb, 0xfe, 0x75, +0x15, 0xfc, 0x53, 0x2e, 0x00, 0x64, 0xc9, 0x5f, +0xb1, 0xfb, 0x67, 0xc9, 0xff, 0xfd, 0x31, 0x2f, +0x31, 0x3c, 0xe1, 0xfd, 0x61, 0x4f, 0x58, 0x5d, +0x81, 0x42, 0x20, 0xd3, 0x47, 0x46, 0x04, 0x78, +0x8a, 0x90, 0xea, 0xf7, 0xdf, 0xf5, 0x79, 0xbe, +0x1e, 0x46, 0xd9, 0x9e, 0x67, 0x51, 0xde, 0xa1, +0x02, 0x60, 0xe1, 0x08, 0x80, 0xac, 0xe6, 0x41, +0xae, 0x00, 0x48, 0x18, 0x1d, 0x9f, 0x9b, 0xfb, +0xd7, 0x30, 0xf8, 0x97, 0x81, 0x95, 0xbf, 0xdd, +0x5d, 0xe1, 0x4c, 0xe9, 0xcf, 0xd7, 0xc7, 0x13, +0xf4, 0x16, 0xfc, 0x7b, 0xe8, 0xc1, 0x9b, 0x05, +0x49, 0xfd, 0xfe, 0xfb, 0x6e, 0x84, 0xf2, 0x12, +0x47, 0x5e, 0x40, 0x90, 0x9c, 0xfc, 0xbd, 0xe8, +0x22, 0xfe, 0x5a, 0xdf, 0x8d, 0x37, 0xfe, 0x1f, +0x9c, 0x3c, 0x2a, 0x2a, 0xff, 0x31, 0xdf, 0xf6, +0x96, 0xdc, 0xef, 0x43, 0x8e, 0xff, 0xcc, 0x8f, +0xfc, 0x95, 0x94, 0xfe, 0x90, 0xca, 0x5f, 0x5c, +0x93, 0xec, 0x6b, 0xf3, 0x86, 0xe8, 0xb1, 0x76, +0x1a, 0xfc, 0x5b, 0x40, 0xc1, 0x3f, 0x7b, 0x1a, +0xfc, 0x5b, 0x72, 0xc1, 0x3f, 0xe5, 0xee, 0x5f, +0x4a, 0xfe, 0xef, 0x49, 0xe0, 0x81, 0x42, 0xc0, +0x03, 0xd6, 0x94, 0xf9, 0x71, 0x84, 0x80, 0xa7, +0x14, 0xd9, 0x88, 0x14, 0xff, 0x9f, 0xd7, 0x15, +0xf8, 0x38, 0x50, 0xee, 0xa1, 0x02, 0xc0, 0xf0, +0xe4, 0x5f, 0xd4, 0xfc, 0xb2, 0xdd, 0xde, 0x23, +0xc0, 0x0a, 0x00, 0xf7, 0x8a, 0x76, 0xbd, 0x05, +0xff, 0xaa, 0x46, 0xf7, 0x31, 0xee, 0x7f, 0x76, +0x28, 0x54, 0x6f, 0xee, 0x7f, 0x5f, 0xb5, 0x9b, +0x20, 0xf9, 0xdf, 0x70, 0xc3, 0x9f, 0x79, 0x2b, +0x7e, 0x2c, 0x36, 0xac, 0x7b, 0x49, 0xfe, 0x88, +0x4f, 0x94, 0x89, 0x64, 0xf4, 0xff, 0xda, 0x2b, +0x0f, 0x0a, 0x0a, 0x09, 0x5d, 0x8d, 0xfe, 0x67, +0xc7, 0xc2, 0x19, 0xf7, 0x5f, 0xd1, 0x97, 0x43, +0x83, 0x7f, 0x34, 0xf8, 0xb7, 0xc8, 0x83, 0x7f, +0xb1, 0x06, 0x0e, 0xfe, 0x05, 0xa9, 0x1f, 0xfc, +0x53, 0xe2, 0xfe, 0xb9, 0xe4, 0xff, 0xae, 0x04, +0xee, 0xf0, 0xfe, 0x90, 0x3b, 0xac, 0x29, 0x26, +0x13, 0x01, 0x6f, 0xbe, 0x00, 0x60, 0xe0, 0x01, +0x9b, 0x53, 0xfc, 0xfe, 0xb3, 0xb6, 0xc8, 0xcb, +0x9a, 0xf2, 0x10, 0x15, 0x00, 0x86, 0x13, 0x00, +0x39, 0xcd, 0x53, 0x5c, 0x01, 0x90, 0x34, 0x3e, +0x31, 0xef, 0xb5, 0x3f, 0x75, 0x82, 0x7f, 0x19, +0xb3, 0xe3, 0xd0, 0xdf, 0x19, 0x0c, 0xa3, 0x1d, +0x58, 0xf9, 0x7b, 0x32, 0x49, 0x6f, 0xa9, 0x7f, +0x6b, 0x0b, 0xe1, 0x7a, 0xde, 0xfc, 0x9c, 0x1d, +0x72, 0xe4, 0xdf, 0x72, 0x28, 0x80, 0x09, 0xf2, +0x71, 0xbf, 0x8f, 0x4c, 0x0f, 0x08, 0x11, 0x4b, +0x04, 0xc0, 0xab, 0x0f, 0x09, 0x36, 0xfd, 0xe9, +0x42, 0x00, 0x9c, 0xc1, 0x6a, 0xe4, 0x21, 0x2c, +0xfd, 0xe9, 0x69, 0xf7, 0xc3, 0xca, 0xdf, 0x1e, +0x1a, 0xfc, 0xa3, 0xc1, 0xbf, 0x65, 0x16, 0xfc, +0xdb, 0x63, 0xf0, 0xe0, 0x9f, 0x62, 0xf7, 0xef, +0xc1, 0x11, 0x00, 0xee, 0x0c, 0xde, 0x19, 0x73, +0x63, 0xf0, 0xde, 0xa0, 0x2b, 0xac, 0x2d, 0xc4, +0x89, 0x40, 0x96, 0x17, 0x4f, 0x00, 0xb0, 0xd8, +0x94, 0xe2, 0xf7, 0xaf, 0x35, 0x25, 0x5e, 0xa6, +0x94, 0x8f, 0xa8, 0x00, 0xd0, 0x2f, 0xf9, 0xe7, +0x37, 0xbf, 0x2f, 0x22, 0x7f, 0x91, 0x00, 0xf0, +0xac, 0xea, 0xd0, 0x5b, 0xf0, 0x6f, 0xff, 0x70, +0x99, 0xb8, 0xf2, 0x37, 0x5c, 0xaf, 0x6b, 0x7f, +0x6f, 0xbf, 0xf5, 0xa8, 0x1c, 0x61, 0x5f, 0x71, +0xf9, 0xc5, 0xd8, 0xa8, 0x97, 0x28, 0x27, 0x00, +0xde, 0x79, 0x5b, 0xfe, 0x7b, 0x8b, 0x30, 0x3f, +0xc0, 0x0d, 0xff, 0x09, 0x4d, 0x00, 0x08, 0xc6, +0x87, 0x22, 0xb4, 0xee, 0xfe, 0xa7, 0x87, 0x43, +0x19, 0xf7, 0x5f, 0x38, 0x50, 0x42, 0x83, 0x7f, +0x34, 0xf8, 0xb7, 0xc4, 0x82, 0x7f, 0xd1, 0x8b, +0x2a, 0xf8, 0xa7, 0xd8, 0xfd, 0xf3, 0xc9, 0x5f, +0x04, 0x57, 0x78, 0x1b, 0xc1, 0x08, 0x81, 0x7c, +0x56, 0x08, 0x48, 0x05, 0xc0, 0x66, 0x31, 0x36, +0xa5, 0xf8, 0xfe, 0x63, 0x75, 0x99, 0xc7, 0x46, +0xca, 0x4d, 0x54, 0x00, 0xe8, 0x47, 0x00, 0xe4, +0x35, 0x9f, 0x94, 0x08, 0x00, 0x74, 0xff, 0x29, +0x93, 0x93, 0x1a, 0x05, 0xff, 0xb2, 0xe6, 0x38, +0xfa, 0xcf, 0x9a, 0x19, 0x86, 0xa1, 0x0e, 0x3f, +0xa6, 0xf2, 0xf7, 0x3b, 0x2d, 0x56, 0xfe, 0xaa, +0xd3, 0xf8, 0xf7, 0xc4, 0xe3, 0xb7, 0xcb, 0x91, +0xf5, 0x03, 0xf7, 0xdf, 0x24, 0x47, 0xfe, 0x95, +0xa5, 0xce, 0x72, 0xdf, 0x47, 0x02, 0x7e, 0xb2, +0x6b, 0x7f, 0xcf, 0x3c, 0x75, 0x97, 0xdc, 0xf7, +0x9d, 0x77, 0xee, 0x39, 0x78, 0xa0, 0x27, 0x59, +0xab, 0xc1, 0xbf, 0xd3, 0xc7, 0xe3, 0x31, 0xf5, +0xef, 0x09, 0xed, 0x1d, 0xc1, 0x10, 0x3e, 0xd1, +0x47, 0x83, 0x7f, 0x34, 0xf8, 0x47, 0x83, 0x7f, +0x0b, 0x20, 0xf8, 0xa7, 0xca, 0xfd, 0xb3, 0xe4, +0xff, 0xf6, 0x98, 0x0b, 0x83, 0xb7, 0xc6, 0x9c, +0xe1, 0xdd, 0x01, 0x17, 0x58, 0x87, 0xc7, 0x86, +0x8c, 0xb2, 0x3c, 0x79, 0x02, 0x60, 0x73, 0xb6, +0x3b, 0x03, 0x14, 0x02, 0x3f, 0x7e, 0x59, 0xe9, +0xbe, 0x92, 0x72, 0x14, 0x15, 0x00, 0x3a, 0x83, +0x7d, 0x6e, 0xf3, 0x6a, 0xa9, 0xfb, 0x3f, 0x02, +0xde, 0x7b, 0x3b, 0xf5, 0x12, 0xfc, 0x23, 0x68, +0x18, 0xc8, 0x65, 0xdc, 0xff, 0xc9, 0x89, 0x08, +0xbd, 0x9f, 0xfa, 0x5d, 0x87, 0x95, 0xbe, 0x42, +0x13, 0x00, 0xd9, 0xef, 0x93, 0x15, 0x0a, 0x64, +0xaf, 0xbf, 0xb1, 0xde, 0x87, 0x47, 0xfe, 0x04, +0xd7, 0x5d, 0x77, 0xa5, 0xe0, 0x79, 0x60, 0x6d, +0xbb, 0xff, 0x49, 0xdc, 0x92, 0x20, 0xee, 0x3f, +0x6b, 0xb0, 0x86, 0x06, 0xff, 0x74, 0xe2, 0xfe, +0x69, 0xf0, 0x4f, 0x4a, 0xfe, 0x19, 0x06, 0x0e, +0xfe, 0x45, 0x2e, 0xba, 0xe0, 0x9f, 0x3a, 0xe4, +0xcf, 0x0a, 0x00, 0x11, 0x9c, 0xe0, 0xdd, 0x7e, +0x67, 0x58, 0x8f, 0x87, 0x86, 0x36, 0x67, 0xf1, +0x05, 0x00, 0x8b, 0x8d, 0xa9, 0x7e, 0x7f, 0x5d, +0xb9, 0xd7, 0xe5, 0x63, 0xca, 0x57, 0x54, 0x00, +0x68, 0x97, 0xfc, 0xf7, 0x1e, 0x39, 0xcb, 0x3e, +0xbf, 0xf9, 0x5b, 0x89, 0x00, 0xa8, 0x3a, 0x02, +0xa9, 0xd3, 0x93, 0x7a, 0x09, 0xfe, 0xe5, 0x4e, +0xf5, 0x62, 0xe5, 0xaf, 0x17, 0x4c, 0x30, 0x95, +0xbf, 0xfa, 0xef, 0xfb, 0xdf, 0x19, 0xb4, 0x5e, +0x70, 0x64, 0x9f, 0x14, 0xb7, 0x4d, 0xf2, 0x3d, +0x29, 0x89, 0xe6, 0x72, 0xff, 0x7e, 0xd5, 0xca, +0xe7, 0xe5, 0xdc, 0x7f, 0x5d, 0x8d, 0x87, 0xe0, +0xef, 0xf5, 0xe2, 0x8a, 0xfb, 0xb4, 0x4a, 0xfe, +0xa7, 0x8e, 0xc6, 0x32, 0xe4, 0x7f, 0xb8, 0x73, +0x37, 0x0d, 0xfe, 0xcd, 0x33, 0xf8, 0xe7, 0x6a, +0xe0, 0xe0, 0xdf, 0xf6, 0x25, 0x19, 0xfc, 0x4b, +0x5a, 0xd6, 0xc1, 0x3f, 0x4d, 0xdc, 0x3f, 0x4b, +0xfe, 0x6f, 0x32, 0x70, 0x64, 0xf0, 0x6e, 0xaf, +0x23, 0xac, 0xcb, 0xf2, 0x95, 0x13, 0x00, 0x22, +0xb8, 0xa1, 0x10, 0xf0, 0xfd, 0xee, 0x8b, 0x5a, +0xe7, 0xb7, 0x29, 0x77, 0x51, 0x01, 0xa0, 0x1d, +0x01, 0x90, 0xd3, 0xbc, 0xd5, 0x9e, 0xe3, 0xfe, +0xfd, 0xf6, 0x75, 0xeb, 0x25, 0xf8, 0x97, 0x76, +0x74, 0x0a, 0x9a, 0xfb, 0x52, 0x18, 0xf7, 0x7f, +0x1a, 0x9b, 0xec, 0x0c, 0x71, 0xe9, 0x4f, 0xd1, +0x16, 0x00, 0xb9, 0x03, 0xd0, 0x8b, 0x5d, 0xfe, +0x24, 0x0b, 0x70, 0xdb, 0xad, 0x57, 0xf3, 0xfe, +0xdd, 0x05, 0x17, 0x9c, 0x07, 0x7d, 0x5d, 0xa1, +0x72, 0xee, 0x5f, 0x68, 0x9a, 0x40, 0xe0, 0x2a, +0x53, 0xfb, 0x3b, 0xef, 0xd2, 0x1f, 0x6c, 0x48, +0x24, 0x02, 0x20, 0x05, 0x89, 0x49, 0xd9, 0xe8, +0x3f, 0x8c, 0x06, 0xff, 0x96, 0x5c, 0xf0, 0xcf, +0xd2, 0xe0, 0xc1, 0xbf, 0x34, 0x1a, 0xfc, 0x9b, +0x43, 0xf0, 0x4f, 0x19, 0xf9, 0xcb, 0x0a, 0x80, +0x37, 0xc6, 0x1c, 0x18, 0x10, 0x21, 0xb0, 0x3e, +0xd3, 0x57, 0x4e, 0x00, 0x30, 0xc8, 0x72, 0x83, +0x0d, 0x69, 0xbe, 0x5f, 0x7f, 0x5e, 0xe7, 0xf8, +0x0a, 0x15, 0x00, 0x14, 0xf3, 0x71, 0xff, 0xe7, +0xda, 0x17, 0x36, 0xff, 0xcd, 0x9e, 0xe3, 0xfe, +0xd3, 0x67, 0xa6, 0xf4, 0x12, 0xfc, 0x2b, 0x9a, +0x6c, 0x63, 0xc8, 0x7f, 0xaa, 0x37, 0xd0, 0x60, +0xa7, 0x7e, 0x4f, 0xcc, 0xc4, 0x29, 0x3c, 0xd7, +0x7b, 0xf5, 0x55, 0x57, 0x80, 0xf1, 0xe6, 0x57, +0xe5, 0xfe, 0xb9, 0x15, 0x6e, 0x0e, 0xc8, 0xba, +0x7f, 0x32, 0x31, 0x10, 0xfa, 0x3d, 0xc8, 0xd6, +0x40, 0x7f, 0x77, 0x98, 0xd6, 0xc8, 0xff, 0xc4, +0x54, 0x34, 0x43, 0xfe, 0xf5, 0xdd, 0x71, 0x34, +0xf8, 0x47, 0x83, 0x7f, 0x8b, 0x20, 0xf8, 0x97, +0x40, 0x83, 0x7f, 0x1a, 0xb8, 0x7f, 0x96, 0xfc, +0xdf, 0x18, 0xb7, 0x87, 0xd7, 0xc5, 0x78, 0xaf, +0xdb, 0x11, 0x36, 0x64, 0xf8, 0xf2, 0x05, 0x80, +0x44, 0x08, 0xb8, 0xc3, 0xfa, 0x74, 0xef, 0xd3, +0x9f, 0x1d, 0x70, 0x78, 0x81, 0x0a, 0x00, 0x0a, +0xcd, 0x05, 0x40, 0x56, 0xb3, 0x3d, 0x21, 0x7f, +0x56, 0x00, 0x04, 0x1c, 0xe8, 0xd1, 0xa0, 0xef, +0x7f, 0xee, 0xc1, 0x3f, 0xe2, 0xfe, 0x3b, 0x7a, +0xa2, 0x19, 0x01, 0xf0, 0x15, 0x5e, 0xb1, 0x33, +0x04, 0xf9, 0xb3, 0x08, 0xf0, 0x5d, 0xad, 0x76, +0xe5, 0xef, 0x95, 0x57, 0x5e, 0xca, 0x3f, 0xfa, +0x83, 0x84, 0xbd, 0x67, 0xd7, 0x66, 0x85, 0x22, +0xe2, 0x8d, 0xd7, 0x1f, 0xd6, 0x5a, 0xf0, 0x8f, +0x60, 0xb4, 0xcb, 0x17, 0x06, 0xb0, 0xf2, 0x37, +0x6e, 0xf4, 0x88, 0xd6, 0xd7, 0xfe, 0x74, 0x1a, +0xfc, 0x1b, 0xa5, 0xc1, 0xbf, 0xa5, 0x17, 0xfc, +0x4b, 0xa1, 0xc1, 0x3f, 0x2d, 0x8e, 0xfe, 0x25, +0xe4, 0xcf, 0x13, 0x00, 0x76, 0x0c, 0x5e, 0x1b, +0xb7, 0x85, 0x77, 0x3b, 0x1d, 0x60, 0x43, 0xba, +0xb7, 0xbc, 0x08, 0xc8, 0x76, 0x65, 0x26, 0x02, +0xeb, 0x32, 0xbc, 0x8f, 0x7f, 0x52, 0x6f, 0xff, +0x0c, 0x15, 0x00, 0x14, 0x6a, 0xba, 0xff, 0x96, +0x0b, 0xec, 0x8b, 0x9b, 0xff, 0xc9, 0x0a, 0x00, +0xfb, 0xca, 0x23, 0xb8, 0x8f, 0x3f, 0xad, 0x97, +0xe0, 0x5f, 0xf9, 0x58, 0x03, 0x43, 0xfe, 0x33, +0x78, 0xbf, 0x5e, 0x9f, 0xc1, 0xbf, 0xbe, 0xce, +0x50, 0x08, 0x0b, 0xd9, 0x00, 0xd1, 0x11, 0xc6, +0x92, 0xa2, 0x9f, 0x6f, 0x90, 0x58, 0x9f, 0x7f, +0xf6, 0x1e, 0xb5, 0x04, 0xc0, 0xf3, 0xcf, 0xdd, +0x03, 0xc9, 0x09, 0x66, 0x50, 0x55, 0xee, 0x02, +0xc1, 0x01, 0xeb, 0xe0, 0x95, 0x97, 0x1e, 0x50, +0x7a, 0x20, 0xa8, 0xb4, 0xd0, 0x41, 0x6b, 0xee, +0xff, 0xe8, 0x84, 0xa8, 0xf2, 0x77, 0x6f, 0x6f, +0xda, 0xd2, 0x0f, 0xfe, 0x8d, 0xd0, 0xe0, 0x9f, +0xd6, 0x83, 0x7f, 0x6a, 0x09, 0x00, 0x1a, 0xfc, +0xd3, 0x67, 0xf0, 0x4f, 0x95, 0xfb, 0xe7, 0x0a, +0x00, 0x11, 0x76, 0xc0, 0xbb, 0x6d, 0xb2, 0x42, +0xc0, 0x55, 0x8a, 0x4c, 0x14, 0x02, 0x99, 0x5e, +0x33, 0x1f, 0x1f, 0xb4, 0x7b, 0x8c, 0x0a, 0x00, +0x0a, 0xe5, 0x02, 0x20, 0xf3, 0x88, 0x8f, 0x84, +0xfc, 0x11, 0x41, 0x8d, 0xbd, 0x7a, 0x09, 0xfe, +0xa5, 0x1f, 0x9d, 0x84, 0x9e, 0xae, 0x30, 0x71, +0xe5, 0x6f, 0xa2, 0xde, 0xdc, 0x7f, 0x45, 0xa9, +0x13, 0xfc, 0xf9, 0xcf, 0x97, 0xf2, 0x9e, 0xe5, +0x27, 0xc5, 0x8b, 0xc2, 0x7e, 0xdd, 0x6d, 0x21, +0x70, 0xc9, 0x25, 0x17, 0xcc, 0xeb, 0x20, 0x90, +0x2c, 0x36, 0x6f, 0x78, 0x45, 0x6b, 0xe4, 0x4f, +0x2a, 0x7f, 0x87, 0x3b, 0xbc, 0x99, 0xca, 0xdf, +0xa8, 0xf1, 0x4e, 0x1a, 0xfc, 0xa3, 0xc1, 0x3f, +0x19, 0xf2, 0x2f, 0xa4, 0xc1, 0xbf, 0x45, 0x1c, +0xfc, 0x53, 0x97, 0xfc, 0x5f, 0x65, 0xb0, 0x9d, +0xc1, 0x7b, 0xad, 0xf6, 0xb0, 0x31, 0xcd, 0x9b, +0x2f, 0x00, 0x58, 0x64, 0xb8, 0xc1, 0xda, 0x2c, +0xcf, 0xc9, 0x8f, 0x1a, 0x6d, 0x1f, 0xa4, 0x02, +0x80, 0x42, 0xc8, 0xfd, 0x5f, 0x6c, 0x5f, 0xd2, +0xf2, 0x33, 0x4b, 0xfe, 0x0e, 0x15, 0x47, 0x20, +0xf3, 0xe8, 0xb4, 0x5e, 0x82, 0x7f, 0x35, 0xf8, +0x81, 0x48, 0xdc, 0xff, 0xd1, 0x91, 0x30, 0xbd, +0x91, 0xff, 0xc9, 0xd9, 0x78, 0x86, 0xf0, 0x65, +0x49, 0x9a, 0x04, 0xfc, 0xd8, 0xef, 0x21, 0xce, +0x5e, 0xb6, 0xe7, 0x7f, 0xae, 0x20, 0x0d, 0x81, +0x47, 0x27, 0x63, 0xb5, 0x57, 0xf9, 0x8b, 0x1f, +0x76, 0xc4, 0xfd, 0x97, 0xf6, 0xe7, 0x2f, 0xbb, +0xe0, 0x9f, 0xb7, 0x81, 0x83, 0x7f, 0x8e, 0x4b, +0x32, 0xf8, 0x97, 0x4d, 0x83, 0x7f, 0x0b, 0x30, +0xf8, 0xf7, 0x86, 0x42, 0xf2, 0x97, 0x17, 0x00, +0xaf, 0x8c, 0xdb, 0x30, 0x78, 0xff, 0x08, 0x11, +0x02, 0x5e, 0x7c, 0x01, 0x90, 0xe5, 0x22, 0x42, +0xba, 0x1b, 0xac, 0xce, 0xf6, 0x18, 0xfd, 0xe0, +0xd0, 0xf6, 0x7b, 0xa8, 0x00, 0xa0, 0x90, 0x0a, +0x80, 0x8c, 0x23, 0xbb, 0x51, 0x04, 0x48, 0xdc, +0x7f, 0xe8, 0xe1, 0x7e, 0xbd, 0x04, 0xff, 0x32, +0x67, 0xc7, 0x60, 0xa0, 0x33, 0x08, 0xc6, 0xd0, +0xcd, 0x7e, 0x8b, 0xae, 0x56, 0x5f, 0x02, 0x80, +0x1c, 0xf5, 0x11, 0x22, 0xea, 0xab, 0xae, 0xba, +0x9c, 0x5f, 0xf7, 0xdb, 0xe4, 0x0f, 0x0f, 0x3e, +0x70, 0xd3, 0xbc, 0xc8, 0xff, 0xb1, 0x47, 0x6f, +0x83, 0x49, 0xfc, 0x40, 0xd3, 0x16, 0xf9, 0x93, +0xca, 0xdf, 0x41, 0xac, 0xfc, 0xed, 0xea, 0x08, +0x80, 0x3d, 0x13, 0xbd, 0x34, 0xf8, 0x47, 0x83, +0x7f, 0x4a, 0xc9, 0x5f, 0x9b, 0xee, 0x9f, 0x06, +0xff, 0x0c, 0x13, 0xfc, 0x53, 0xe5, 0xfe, 0x59, +0xf2, 0x7f, 0x65, 0xdc, 0x1a, 0x5e, 0x66, 0x60, +0x05, 0x1f, 0x1c, 0xe2, 0x08, 0x01, 0x56, 0x00, +0x20, 0x36, 0x11, 0xa0, 0x10, 0xf8, 0x32, 0xd7, +0x6d, 0xe0, 0xbd, 0x66, 0x9b, 0x3b, 0xa8, 0x00, +0xa0, 0xee, 0xff, 0x0a, 0xfb, 0xb2, 0x96, 0xff, +0xb1, 0x02, 0xc0, 0xb1, 0xbc, 0x05, 0xb2, 0x8e, +0xcd, 0xe8, 0x25, 0xf8, 0x57, 0x37, 0x54, 0xcc, +0xb8, 0xff, 0xe3, 0x63, 0xbb, 0xf5, 0x1a, 0xfc, +0xf3, 0xf7, 0xf9, 0x52, 0x90, 0xac, 0xef, 0xbd, +0xe7, 0x06, 0xb9, 0x50, 0xe0, 0xe9, 0x63, 0x09, +0xb0, 0xcd, 0xf4, 0x4d, 0xa5, 0x27, 0x82, 0x85, +0x40, 0x0a, 0x84, 0x9c, 0x1d, 0x3f, 0xe1, 0x39, +0x7f, 0x6d, 0x04, 0xff, 0xa6, 0x86, 0x76, 0x32, +0xee, 0x3f, 0x7f, 0xa0, 0x6c, 0x01, 0x04, 0xff, +0x7a, 0x69, 0xf0, 0x6f, 0x89, 0x05, 0xff, 0xb6, +0x18, 0x38, 0xf8, 0xb7, 0x86, 0x06, 0xff, 0x54, +0xb8, 0x7f, 0x3e, 0xf9, 0x2b, 0x12, 0x00, 0x04, +0x2f, 0x8d, 0x5b, 0xc2, 0x07, 0x8d, 0xf6, 0xb0, +0x29, 0xd5, 0x93, 0x2f, 0x00, 0x18, 0x38, 0xc3, +0xa6, 0x34, 0x37, 0x58, 0x95, 0xe7, 0xda, 0xf3, +0xce, 0x11, 0xeb, 0x5b, 0xa9, 0x00, 0x58, 0xbe, +0xee, 0x3f, 0x59, 0x44, 0xfe, 0x22, 0x01, 0xb0, +0xab, 0x65, 0x40, 0x2f, 0xee, 0x3f, 0x7b, 0x66, +0x10, 0x2b, 0x7f, 0x7d, 0x61, 0x0c, 0x93, 0xec, +0xdf, 0x9d, 0x4e, 0xd1, 0x6b, 0xe3, 0x5f, 0x13, +0xb6, 0xf6, 0x09, 0x91, 0xf6, 0x73, 0xcf, 0xdc, +0xad, 0x70, 0x3b, 0x60, 0x3f, 0x16, 0xfb, 0xd8, +0x58, 0xbd, 0xc7, 0x4c, 0x04, 0x94, 0x89, 0x01, +0x92, 0x1d, 0x20, 0x27, 0x7f, 0xb9, 0xae, 0x5f, +0x5b, 0xee, 0xff, 0xf4, 0x31, 0x52, 0xf9, 0xeb, +0x01, 0xad, 0x1d, 0x21, 0x58, 0xf9, 0xdb, 0xbf, +0xac, 0xdd, 0x3f, 0x0d, 0xfe, 0xd1, 0xe0, 0x1f, +0x21, 0x7f, 0x6d, 0xba, 0xff, 0xc5, 0x12, 0xfc, +0x53, 0xe5, 0xfe, 0x59, 0xf2, 0x17, 0xc1, 0x02, +0x5e, 0x1c, 0xb3, 0x80, 0x0f, 0xea, 0x89, 0x10, +0xf0, 0xe0, 0x0b, 0x00, 0x16, 0x28, 0x04, 0x56, +0x16, 0xb8, 0xb4, 0xbd, 0xd5, 0x66, 0x71, 0x23, +0x15, 0x00, 0xcb, 0xcb, 0xfd, 0xff, 0xc5, 0xbe, +0xa2, 0xe5, 0x37, 0x56, 0x00, 0x10, 0xf7, 0x9f, +0x7d, 0x6c, 0x46, 0xe7, 0xc1, 0x3f, 0xe2, 0xfe, +0x1b, 0x07, 0xb2, 0x18, 0xf7, 0x7f, 0x6a, 0x32, +0x52, 0xaf, 0xee, 0xff, 0xd4, 0xd1, 0x04, 0x38, +0x3e, 0x1d, 0xc7, 0x74, 0xfc, 0x0b, 0x8d, 0xeb, +0x85, 0xc8, 0xff, 0x1b, 0x19, 0x0c, 0xf6, 0x85, +0x43, 0x44, 0xb8, 0x11, 0x6c, 0xc2, 0x60, 0x1f, +0xe9, 0x01, 0xf0, 0xf2, 0x58, 0x09, 0x91, 0xbb, +0x8d, 0x20, 0x27, 0xc3, 0x06, 0xc6, 0x06, 0x23, +0x74, 0x72, 0xea, 0x97, 0x60, 0xa2, 0x3f, 0x88, +0x71, 0xff, 0x19, 0x43, 0xfb, 0x68, 0xf0, 0x6f, +0x59, 0x04, 0xff, 0xca, 0x68, 0xf0, 0x8f, 0x06, +0xff, 0xd4, 0x22, 0x7f, 0xa5, 0x02, 0x80, 0x81, +0x39, 0xbc, 0x34, 0x66, 0x0e, 0x1f, 0xd6, 0x39, +0x60, 0x7b, 0xa0, 0x07, 0x5f, 0x00, 0xb0, 0x48, +0x75, 0x83, 0x2f, 0x8a, 0x9d, 0x9a, 0xdf, 0xe8, +0x30, 0xbf, 0x8e, 0x0a, 0x80, 0xe5, 0x20, 0x00, +0xd2, 0x8f, 0xe4, 0x4b, 0xdd, 0x7f, 0x0b, 0xec, +0xe9, 0x18, 0xd2, 0x4b, 0xf0, 0x2f, 0x6f, 0xaa, +0x9b, 0x21, 0xff, 0x89, 0x1e, 0x7f, 0xbd, 0x92, +0x3f, 0x21, 0x69, 0x72, 0x8c, 0xe7, 0xbc, 0xf3, +0xce, 0x85, 0x3f, 0x5d, 0x71, 0xb1, 0x9c, 0x00, +0xb8, 0xeb, 0xae, 0xeb, 0x54, 0x92, 0xbf, 0x6c, +0xe3, 0x9f, 0xba, 0x98, 0xaf, 0x00, 0x38, 0x39, +0x1b, 0xc3, 0x90, 0x7f, 0x53, 0x57, 0x04, 0x0d, +0xfe, 0x2d, 0x89, 0xe0, 0x5f, 0x15, 0x0d, 0xfe, +0xd1, 0xe0, 0x9f, 0x56, 0x82, 0x7f, 0xaa, 0xc9, +0x5f, 0x24, 0x00, 0x56, 0x30, 0x30, 0xc3, 0x89, +0x80, 0x19, 0x7c, 0x54, 0x4b, 0x26, 0x02, 0xee, +0x32, 0x22, 0xc0, 0x89, 0xc1, 0xc6, 0x54, 0xb7, +0x3f, 0x3e, 0x2b, 0x71, 0x6c, 0x78, 0xad, 0x7b, +0xdb, 0xd5, 0x54, 0x00, 0x2c, 0x59, 0xf7, 0xdf, +0x7a, 0xbd, 0x7d, 0x65, 0xcb, 0xef, 0x2c, 0xf9, +0x3b, 0x95, 0xb5, 0xa2, 0xfb, 0xd7, 0xfd, 0xe8, +0x9f, 0x08, 0x80, 0x96, 0xde, 0x44, 0xbd, 0x57, +0xfe, 0x66, 0xa6, 0x5a, 0x31, 0x47, 0x7b, 0x54, +0x15, 0xfb, 0x9c, 0x39, 0x9e, 0xa4, 0x75, 0x01, +0xa0, 0x0d, 0xf7, 0x3f, 0x86, 0x62, 0x69, 0xa0, +0xd5, 0x03, 0x92, 0x46, 0x1a, 0x17, 0xc1, 0xe8, +0xbf, 0x87, 0x06, 0xff, 0xb4, 0x1e, 0xfc, 0x2b, +0xa1, 0xc1, 0x3f, 0x1a, 0xfc, 0xd3, 0x80, 0xfc, +0xf9, 0xee, 0xff, 0x45, 0x31, 0xf9, 0x8b, 0xb0, +0x0d, 0x5e, 0x40, 0xac, 0x18, 0x35, 0x83, 0x8f, +0xf7, 0x3a, 0x30, 0x8f, 0x00, 0xb8, 0x02, 0x80, +0x2b, 0x04, 0x3e, 0x2d, 0xb3, 0xdf, 0xf7, 0x52, +0xbf, 0xe9, 0xff, 0x51, 0x01, 0xb0, 0xe4, 0xdc, +0x7f, 0xcb, 0x5e, 0xae, 0xfb, 0x8f, 0xec, 0x19, +0xd6, 0x4b, 0xf0, 0xaf, 0x78, 0xf2, 0x08, 0x43, +0xfe, 0xd3, 0x7d, 0x81, 0x7a, 0x75, 0xff, 0x9f, +0x7e, 0xf2, 0xb4, 0x5a, 0xe1, 0xbd, 0x5d, 0x3b, +0x37, 0x1a, 0xc0, 0xfd, 0x2b, 0x27, 0xff, 0xe3, +0x53, 0x91, 0x8c, 0xfb, 0xaf, 0xeb, 0x49, 0xa4, +0xc1, 0xbf, 0x25, 0x19, 0xfc, 0xab, 0xa0, 0xc1, +0x3f, 0x1a, 0xfc, 0x53, 0x23, 0xf8, 0x37, 0x7f, +0xf7, 0x4f, 0xf0, 0x82, 0x58, 0x00, 0xbc, 0x30, +0xbe, 0x15, 0x9e, 0x47, 0xbc, 0x30, 0xba, 0x15, +0x3e, 0xae, 0x22, 0x42, 0xc0, 0x55, 0x4e, 0x04, +0x6c, 0xca, 0x72, 0x44, 0x21, 0xe0, 0xfa, 0xc7, +0xc7, 0x95, 0x76, 0x55, 0x2b, 0x06, 0x4c, 0xfe, +0x44, 0x05, 0xc0, 0xd2, 0x70, 0xff, 0xb7, 0xd9, +0x57, 0xb5, 0xfe, 0xc1, 0x92, 0xbf, 0x4b, 0x59, +0x9b, 0x5e, 0x82, 0x7f, 0x69, 0x58, 0xfa, 0xd3, +0xd9, 0x13, 0xc9, 0x08, 0x80, 0xaf, 0x31, 0xd0, +0xa6, 0xcf, 0xe0, 0x1f, 0x79, 0xbe, 0xaf, 0x8e, +0x00, 0x20, 0x7d, 0xfd, 0xce, 0x0e, 0x9f, 0x30, +0xe9, 0xff, 0x85, 0x30, 0xfa, 0xff, 0x1a, 0xd7, +0x23, 0x47, 0xba, 0x7c, 0xd0, 0xfd, 0x7b, 0x42, +0xec, 0x58, 0x2b, 0x0d, 0xfe, 0x2d, 0x88, 0xe0, +0x5f, 0xdd, 0xb2, 0x0e, 0xfe, 0x6d, 0xa2, 0xc1, +0xbf, 0x85, 0x1f, 0xfc, 0x53, 0xe1, 0xfe, 0x09, +0xf9, 0x8b, 0x04, 0x80, 0xa9, 0x04, 0x2f, 0x8c, +0x98, 0xc2, 0x27, 0xe5, 0xb2, 0x42, 0xc0, 0x51, +0x82, 0x0d, 0x28, 0x04, 0x3e, 0xaa, 0xde, 0x51, +0xfa, 0xdc, 0xb0, 0xd1, 0xe5, 0x54, 0x00, 0x2c, +0xea, 0xe4, 0x7f, 0x4b, 0x23, 0x8a, 0x00, 0x89, +0xfb, 0x8f, 0xee, 0x1f, 0xd5, 0x4b, 0xf0, 0xaf, +0x62, 0xec, 0x80, 0xb8, 0xf2, 0x77, 0xe7, 0x9c, +0xc9, 0xfe, 0xeb, 0x13, 0xc9, 0x0c, 0x41, 0xdf, +0x79, 0xc7, 0xb5, 0x70, 0xcd, 0xd5, 0x57, 0xc0, +0x47, 0x1f, 0x3c, 0x09, 0xf9, 0x39, 0xb6, 0x2a, +0x05, 0xc0, 0x86, 0x75, 0x2f, 0x69, 0xb4, 0xc6, +0x77, 0xdd, 0x75, 0x57, 0x82, 0x3f, 0xde, 0x05, +0x38, 0x86, 0x81, 0x41, 0x43, 0x8e, 0xfe, 0x8f, +0x8e, 0xef, 0x66, 0xdc, 0x7f, 0x55, 0x6f, 0x26, +0x0d, 0xfe, 0xd1, 0xe0, 0x1f, 0x0d, 0xfe, 0xcd, +0x81, 0xfc, 0x3f, 0x5d, 0x92, 0xc1, 0x3f, 0x1b, +0xb5, 0x82, 0x7f, 0xaa, 0xdc, 0x3f, 0x4b, 0xfe, +0xcf, 0x8d, 0x9b, 0x88, 0xb1, 0x05, 0x85, 0x80, +0x09, 0x7c, 0x5a, 0x8a, 0xa4, 0x9f, 0xee, 0xc2, +0x13, 0x00, 0x1c, 0x21, 0xf0, 0xfb, 0x07, 0x35, +0x36, 0xf9, 0x4f, 0x8d, 0x6f, 0xbc, 0x94, 0x0a, +0x80, 0xc5, 0x46, 0xfe, 0xe5, 0xad, 0x0f, 0xd8, +0x57, 0x13, 0xf2, 0x17, 0x09, 0x00, 0xd7, 0xf2, +0x36, 0xbd, 0x04, 0xff, 0xd2, 0x8f, 0x4e, 0x60, +0xf7, 0xfe, 0x4e, 0xa6, 0xf2, 0xf7, 0x9b, 0x13, +0x73, 0xaf, 0xfc, 0xb5, 0xb1, 0x7c, 0x4f, 0x90, +0xb0, 0x1f, 0x7e, 0xe8, 0x16, 0x48, 0x4d, 0xb2, +0x40, 0xc7, 0x2c, 0xbc, 0xc6, 0x37, 0x8d, 0x47, +0x7b, 0x3e, 0x7c, 0xff, 0x09, 0x8d, 0x8b, 0x7c, +0xfe, 0xef, 0xff, 0x2e, 0x03, 0x37, 0x97, 0xcf, +0x98, 0x5f, 0xaf, 0x6f, 0xf7, 0xff, 0xd5, 0x89, +0x24, 0x18, 0xc2, 0x3f, 0xaf, 0xde, 0x36, 0x1f, +0x88, 0x1c, 0xef, 0xa2, 0xc1, 0xbf, 0x05, 0x18, +0xfc, 0x53, 0x4f, 0x00, 0xd0, 0xe0, 0xdf, 0x62, +0x0a, 0xfe, 0x7d, 0x68, 0xe0, 0xe0, 0x9f, 0x36, +0xdd, 0xff, 0x0a, 0xb5, 0xdc, 0xbf, 0x94, 0xfc, +0x09, 0x9e, 0x65, 0x60, 0x0c, 0x2f, 0x0c, 0x6f, +0x81, 0xcf, 0x8a, 0x89, 0x10, 0x70, 0x96, 0x11, +0x01, 0x38, 0x25, 0xc8, 0x74, 0x80, 0xf5, 0x29, +0xae, 0xbf, 0xbf, 0xb7, 0xdf, 0x2a, 0xe3, 0xa9, +0xf1, 0x0d, 0x97, 0x50, 0x01, 0xb0, 0x68, 0x3a, +0xff, 0x5b, 0x3a, 0x45, 0xe4, 0x2f, 0x12, 0x00, +0x71, 0x43, 0x63, 0x7a, 0x09, 0xfe, 0xd5, 0xe2, +0x87, 0x1f, 0x71, 0xff, 0xc7, 0xf0, 0x4d, 0x3c, +0x57, 0xf2, 0xff, 0xea, 0x78, 0x32, 0x5c, 0x7e, +0xd9, 0x45, 0x4a, 0x09, 0xfb, 0xae, 0x3b, 0xaf, +0x83, 0xa8, 0x3d, 0xc6, 0x72, 0x61, 0x3e, 0x16, +0x95, 0xa5, 0xce, 0xf0, 0xda, 0x2b, 0x0f, 0x6a, +0x2c, 0x04, 0xc8, 0xff, 0x5d, 0xb2, 0xdf, 0xaf, +0x68, 0xcd, 0x4f, 0x17, 0xee, 0x7f, 0x06, 0xeb, +0x91, 0x89, 0xfb, 0x2f, 0xee, 0x2f, 0xa4, 0xc1, +0x3f, 0x83, 0x04, 0xff, 0xea, 0x69, 0xf0, 0x8f, +0x06, 0xff, 0x54, 0x06, 0xff, 0x0c, 0xb1, 0xf6, +0xc7, 0x25, 0x7f, 0xe5, 0xee, 0x5f, 0x96, 0xfc, +0x95, 0xbb, 0x7f, 0x96, 0xfc, 0x45, 0x30, 0x82, +0x67, 0x10, 0x2f, 0x0c, 0x6d, 0x81, 0xcf, 0x0b, +0x91, 0xf8, 0x33, 0x9c, 0x78, 0x02, 0x60, 0xa3, +0x18, 0xeb, 0x52, 0x5c, 0x7f, 0x7b, 0xe7, 0x80, +0x79, 0xd2, 0x93, 0xe3, 0xeb, 0x2f, 0xa6, 0x02, +0x60, 0x21, 0x93, 0x7f, 0x49, 0xcb, 0x53, 0x52, +0xf2, 0x6f, 0x05, 0xb7, 0x8a, 0x76, 0x35, 0x83, +0x7f, 0x33, 0xf3, 0x0a, 0xfe, 0x65, 0xce, 0x8c, +0xc2, 0x60, 0x87, 0x3f, 0x8c, 0x75, 0x62, 0xe5, +0xef, 0xa9, 0x94, 0x79, 0x8d, 0xff, 0xcf, 0xc7, +0x15, 0x3e, 0x75, 0x08, 0xfb, 0xc6, 0x1b, 0xff, +0x8f, 0xb9, 0xd0, 0x47, 0x7a, 0xff, 0x85, 0x84, +0x40, 0xfd, 0x3e, 0x4f, 0x66, 0x22, 0xa0, 0x6a, +0x33, 0x40, 0x16, 0xe4, 0x3e, 0xc0, 0x56, 0x93, +0x37, 0xa1, 0xbf, 0x3b, 0x4c, 0xa7, 0x02, 0xe0, +0xf4, 0xf1, 0x04, 0xac, 0xfc, 0xf5, 0x80, 0xce, +0xf6, 0x40, 0xd8, 0x8d, 0xc4, 0x4d, 0x83, 0x7f, +0xea, 0x04, 0xff, 0x5a, 0x0c, 0x1c, 0xfc, 0xab, +0xa1, 0xc1, 0x3f, 0x1a, 0xfc, 0x5b, 0xf0, 0xc1, +0x3f, 0xe5, 0xee, 0x9f, 0x4f, 0xfe, 0x22, 0x6c, +0x86, 0xa7, 0x11, 0xcf, 0x0f, 0x1a, 0xc1, 0x17, +0xf9, 0x44, 0x08, 0x38, 0xf2, 0x04, 0x80, 0x08, +0xf6, 0xb0, 0x36, 0xd5, 0xe5, 0xb7, 0xb7, 0x1a, +0xcc, 0x62, 0x9f, 0x98, 0x58, 0x77, 0x11, 0x15, +0x00, 0x0b, 0x51, 0x00, 0x64, 0xb5, 0x0c, 0x73, +0x05, 0x40, 0xe2, 0xe8, 0xb8, 0x5e, 0xdc, 0x7f, +0xfd, 0x60, 0x01, 0xe3, 0xfe, 0x4f, 0x4c, 0xec, +0x99, 0x77, 0xe0, 0x6f, 0xcd, 0x97, 0x2b, 0x34, +0x22, 0x6c, 0xd2, 0xef, 0xef, 0xe1, 0xf6, 0x39, +0xcc, 0x4e, 0xc4, 0x08, 0x0a, 0x81, 0xd6, 0xc3, +0x01, 0xb0, 0x7a, 0xd5, 0x0b, 0x4c, 0x3f, 0x80, +0x26, 0xbf, 0xef, 0xf9, 0xe7, 0x9f, 0x0b, 0x6e, +0xce, 0x9f, 0x31, 0x93, 0x06, 0x5d, 0xb8, 0xff, +0x49, 0x3c, 0x8d, 0x4c, 0xdc, 0x7f, 0xee, 0x60, +0x25, 0x0d, 0xfe, 0xd1, 0xe0, 0x1f, 0x0d, 0xfe, +0x2d, 0x9a, 0xe0, 0x9f, 0xeb, 0xa2, 0x0a, 0xfe, +0x29, 0x72, 0xff, 0xb2, 0xe4, 0x2f, 0xc2, 0x26, +0x06, 0x44, 0x08, 0xac, 0xcc, 0xc5, 0x35, 0x41, +0x14, 0x02, 0x5c, 0x01, 0xc0, 0x62, 0x4d, 0x9a, +0xf3, 0xaf, 0x6f, 0x1c, 0x32, 0xdd, 0xf3, 0xf8, +0xc4, 0x9a, 0x0b, 0xa9, 0x00, 0x58, 0x28, 0xe4, +0x5f, 0xd8, 0xf2, 0x0a, 0x97, 0xfc, 0x3d, 0x2a, +0x3b, 0xf5, 0x12, 0xfc, 0xcb, 0x99, 0xee, 0x87, +0xe1, 0x76, 0x6f, 0x18, 0xef, 0xf6, 0x65, 0x08, +0x77, 0xbe, 0x02, 0xe0, 0xf8, 0x54, 0x1c, 0x43, +0xd8, 0x9a, 0x8e, 0xf0, 0x49, 0x37, 0xbf, 0xdd, +0x8e, 0x0f, 0x60, 0x62, 0x38, 0x42, 0x50, 0x08, +0xf4, 0x75, 0x86, 0x82, 0xb1, 0xd1, 0x6b, 0x70, +0xe1, 0x85, 0x9a, 0x5d, 0x00, 0x74, 0xb4, 0xff, +0x58, 0xeb, 0xe4, 0x7f, 0xea, 0x68, 0x1c, 0x53, +0xf9, 0x7b, 0xa4, 0x33, 0x0c, 0x89, 0xbf, 0x9f, +0x06, 0xff, 0xe6, 0x14, 0xfc, 0x6b, 0xa6, 0xc1, +0x3f, 0x1a, 0xfc, 0xa3, 0xc1, 0x3f, 0x35, 0x83, +0x7f, 0xaa, 0xdc, 0x3f, 0x4b, 0xfe, 0x18, 0xfc, +0x13, 0x63, 0x03, 0x3c, 0x3f, 0xb0, 0x19, 0x56, +0x66, 0xb3, 0x42, 0xc0, 0x5e, 0x0e, 0xab, 0xd3, +0x9c, 0x7e, 0x79, 0xad, 0xc5, 0x78, 0xe7, 0x63, +0x13, 0xab, 0x2f, 0xa0, 0x02, 0xc0, 0xd0, 0x02, +0x20, 0xa7, 0x65, 0x86, 0x2b, 0x00, 0x92, 0xc6, +0x27, 0x74, 0x1e, 0xfc, 0x23, 0x38, 0xd4, 0x9f, +0x2e, 0xaa, 0xfc, 0x9d, 0x8a, 0xd2, 0xea, 0xca, +0xdf, 0xbe, 0x6a, 0x77, 0x78, 0xfb, 0xad, 0x47, +0x35, 0x3e, 0xd2, 0x73, 0xf1, 0xc5, 0x17, 0x30, +0xc7, 0x7d, 0x06, 0x7a, 0xc2, 0x04, 0x0b, 0x7f, +0x46, 0x06, 0xf6, 0x80, 0xb5, 0xe5, 0xbb, 0x70, +0x99, 0x8a, 0xac, 0x01, 0x8b, 0xbf, 0xfc, 0xe5, +0x32, 0xad, 0x0b, 0x80, 0x71, 0xec, 0x48, 0x20, +0xee, 0x3f, 0x7d, 0xf8, 0xc0, 0x3c, 0xdc, 0xbf, +0xee, 0x82, 0x7f, 0x01, 0x06, 0x0e, 0xfe, 0x79, +0xd0, 0xe0, 0x1f, 0x0d, 0xfe, 0x2d, 0x8a, 0xe0, +0x9f, 0xf3, 0xa2, 0x0b, 0xfe, 0x09, 0xbb, 0x7f, +0x59, 0xf2, 0x17, 0x09, 0x80, 0x27, 0x19, 0xac, +0x87, 0x17, 0xfa, 0x36, 0xc3, 0xaa, 0x2c, 0x21, +0x11, 0x60, 0xc7, 0xe0, 0xe3, 0x6a, 0xf3, 0x6a, +0x2a, 0x00, 0x0c, 0x49, 0xfe, 0xf9, 0xad, 0x1f, +0x72, 0xc9, 0xdf, 0xab, 0xaa, 0x4b, 0x2f, 0xee, +0xbf, 0x60, 0xb2, 0x13, 0x53, 0xff, 0x9e, 0x30, +0xd9, 0x1b, 0xa0, 0xb3, 0x9d, 0xff, 0x43, 0x07, +0x7d, 0xe1, 0xb3, 0x4f, 0x9e, 0x61, 0xf6, 0xf7, +0x35, 0x11, 0x02, 0xa4, 0x0e, 0x78, 0xfd, 0xda, +0x97, 0xa0, 0xb3, 0x35, 0x58, 0xb0, 0xf4, 0x67, +0x72, 0x2c, 0x0a, 0x5c, 0x9c, 0x3e, 0x85, 0x3f, +0xff, 0xf9, 0x52, 0xa5, 0xbf, 0xcf, 0xd5, 0x57, +0x5d, 0xa1, 0x55, 0xf2, 0x3f, 0x31, 0x23, 0xaa, +0xfc, 0x6d, 0xe8, 0x8e, 0xa6, 0xc1, 0x3f, 0x2d, +0x8d, 0xfe, 0xd5, 0x73, 0xff, 0xba, 0x0b, 0xfe, +0xd9, 0xd0, 0xe0, 0x1f, 0x0d, 0xfe, 0x2d, 0xb2, +0xe0, 0x9f, 0x2a, 0xf7, 0xcf, 0x92, 0x3f, 0xc1, +0x13, 0xe3, 0xeb, 0x00, 0x9f, 0xfb, 0xc3, 0x0b, +0xbd, 0x9b, 0xe0, 0x4b, 0x0c, 0x0a, 0xca, 0x0a, +0x80, 0xd5, 0x85, 0x36, 0xcf, 0x53, 0x01, 0x60, +0x48, 0x01, 0x90, 0xd7, 0x7a, 0x4a, 0x22, 0x00, +0x70, 0x05, 0x30, 0x65, 0x72, 0x52, 0xe7, 0xc1, +0x3f, 0x82, 0xb6, 0xde, 0x38, 0xc6, 0xfd, 0x9f, +0x99, 0x8d, 0xd5, 0x79, 0xe3, 0x1f, 0x21, 0x72, +0xb2, 0xeb, 0x7f, 0x9e, 0x9a, 0x21, 0x41, 0x6e, +0xf1, 0x0f, 0x69, 0x09, 0x6c, 0x3a, 0xe8, 0x23, +0x58, 0xfa, 0x73, 0x0c, 0x1f, 0x39, 0xf8, 0xfb, +0xac, 0x66, 0x7a, 0x01, 0x84, 0x7e, 0xbd, 0x83, +0xed, 0x47, 0x5a, 0x15, 0x00, 0xa3, 0xf8, 0xa8, +0x64, 0xb0, 0xcd, 0x1d, 0x12, 0x46, 0x0f, 0x2f, +0x8a, 0xe0, 0x9f, 0xff, 0x12, 0x0c, 0xfe, 0x39, +0x18, 0x38, 0xf8, 0x67, 0x41, 0x83, 0x7f, 0x3a, +0x08, 0xfe, 0x05, 0x18, 0x34, 0xf8, 0xa7, 0x5e, +0xdf, 0xff, 0xc2, 0x0b, 0xfe, 0xa9, 0x22, 0x7f, +0x46, 0x00, 0x4c, 0xac, 0x13, 0x63, 0x2d, 0xbc, +0xda, 0x6c, 0xca, 0x13, 0x00, 0xeb, 0x12, 0x5d, +0x67, 0x68, 0x06, 0xc0, 0xa0, 0xa3, 0xff, 0xd6, +0x75, 0xf6, 0x7b, 0xdb, 0x24, 0xee, 0xdf, 0xa7, +0xa6, 0x5b, 0x2f, 0xc1, 0xbf, 0xd2, 0x89, 0x43, +0xa2, 0xca, 0xdf, 0x81, 0x60, 0xbd, 0x36, 0xfe, +0x0d, 0xf6, 0xee, 0x82, 0x2d, 0xf8, 0x2c, 0x5f, +0xd3, 0x8c, 0x00, 0x79, 0x94, 0x40, 0x1e, 0x29, +0xd4, 0x56, 0xbb, 0x09, 0x16, 0xfe, 0x90, 0x2b, +0x82, 0xbb, 0xc3, 0x36, 0xc1, 0x73, 0xcf, 0xde, +0xc3, 0x88, 0x0c, 0x32, 0x19, 0xb0, 0xdb, 0xfe, +0x01, 0xee, 0xea, 0x27, 0x6b, 0x8d, 0xfc, 0x8f, +0x4d, 0x46, 0x30, 0xee, 0x7f, 0x5f, 0x4f, 0x32, +0x0d, 0xfe, 0xe9, 0x2c, 0xf8, 0xd7, 0xb8, 0xe4, +0x82, 0x7f, 0x5b, 0x69, 0xf0, 0x8f, 0x06, 0xff, +0xb4, 0x1c, 0xfc, 0x53, 0xdb, 0xfd, 0x73, 0xc8, +0xff, 0x71, 0xc4, 0xfa, 0x14, 0x67, 0xa9, 0x00, +0xc8, 0xc0, 0xcd, 0x80, 0xbc, 0x1d, 0xf7, 0x50, +0x01, 0x60, 0xb0, 0xca, 0xdf, 0xb6, 0xb3, 0x71, +0xfc, 0xff, 0x9d, 0x44, 0x00, 0x54, 0xb5, 0x42, +0xda, 0xd4, 0xa4, 0xce, 0x47, 0xff, 0xe9, 0x58, +0xf9, 0xdb, 0xdd, 0x15, 0xce, 0x8c, 0xff, 0xbf, +0xc6, 0x75, 0x36, 0x7d, 0xf5, 0xfd, 0x13, 0x94, +0x15, 0x39, 0x30, 0x57, 0xfd, 0x34, 0x15, 0x00, +0x5c, 0xac, 0x78, 0xe1, 0x5e, 0x28, 0xce, 0xb7, +0xd7, 0x6b, 0xe3, 0xdf, 0x57, 0x58, 0xf9, 0x3b, +0x8c, 0x6b, 0x92, 0xfd, 0x6d, 0x5e, 0x10, 0x33, +0xd6, 0x4e, 0x83, 0x7f, 0x34, 0xf8, 0x47, 0x83, +0x7f, 0x3a, 0x0b, 0xfe, 0xf9, 0xd1, 0xe0, 0x9f, +0x16, 0xdc, 0x3f, 0x3b, 0xfa, 0x27, 0xe4, 0x4f, +0xf0, 0xe6, 0x41, 0x33, 0x5e, 0x06, 0x60, 0x5d, +0x92, 0x4b, 0x37, 0xdd, 0x02, 0x30, 0xe8, 0xda, +0x5f, 0xab, 0x99, 0x88, 0xfc, 0x45, 0x02, 0xc0, +0x6f, 0x7f, 0x8f, 0x5e, 0x82, 0x7f, 0x55, 0xa3, +0xfb, 0x19, 0xf7, 0x3f, 0x3b, 0x14, 0xaa, 0x37, +0xf2, 0x3f, 0x7d, 0x3c, 0x11, 0xbe, 0xf8, 0xec, +0xd9, 0x79, 0x11, 0xbf, 0x2c, 0xc8, 0xfd, 0x80, +0x0c, 0xbc, 0x22, 0x48, 0xfa, 0xf8, 0x75, 0x2d, +0x00, 0x66, 0xc7, 0xc2, 0x19, 0xf7, 0x5f, 0xd1, +0x97, 0x43, 0x83, 0x7f, 0x34, 0xf8, 0x47, 0x83, +0x7f, 0x34, 0xf8, 0xb7, 0xa0, 0x83, 0x7f, 0xb2, +0xee, 0x9f, 0x88, 0x81, 0x0d, 0x5c, 0xf7, 0x9f, +0xe6, 0xf8, 0x07, 0x3e, 0x02, 0xb8, 0x8e, 0x0a, +0x00, 0xc3, 0xb9, 0xff, 0x73, 0xed, 0x0b, 0x5b, +0x7f, 0x94, 0x08, 0x00, 0x74, 0xff, 0xe9, 0xd3, +0x53, 0x3a, 0x77, 0xff, 0x19, 0xb3, 0xe3, 0xb8, +0x52, 0x17, 0x0c, 0xa3, 0x1d, 0x58, 0xf9, 0x7b, +0x32, 0x49, 0x6f, 0x02, 0x60, 0xd3, 0x86, 0x57, +0xb4, 0x4a, 0xfe, 0x5c, 0xdc, 0x7b, 0xcf, 0x0d, +0x90, 0x9b, 0xb9, 0x5d, 0x67, 0xe4, 0x7f, 0x86, +0xa9, 0xfc, 0xf5, 0x84, 0x9e, 0x76, 0x3f, 0xd8, +0x33, 0xde, 0xad, 0x9d, 0xd1, 0xff, 0x38, 0x0d, +0xfe, 0xd1, 0xe0, 0x1f, 0x0d, 0xfe, 0xa9, 0x0e, +0xfe, 0xf9, 0xd0, 0xe0, 0xdf, 0x3c, 0xdd, 0x3f, +0x19, 0xfd, 0xbf, 0x57, 0x63, 0xc9, 0x73, 0xff, +0x6b, 0x93, 0x5d, 0x6b, 0x69, 0x11, 0x90, 0x41, +0x2b, 0x7f, 0x5b, 0x1d, 0xa5, 0xee, 0xbf, 0x0d, +0x02, 0xeb, 0x7b, 0xb5, 0x16, 0xfc, 0x53, 0xe6, +0xfe, 0xf7, 0x0d, 0x97, 0x89, 0x2b, 0x7f, 0xc3, +0xf5, 0x46, 0xfe, 0x61, 0x21, 0x1b, 0x14, 0xa7, +0xfd, 0xb1, 0xe0, 0xe7, 0x8d, 0xd7, 0x1e, 0x82, +0x3d, 0xbb, 0x36, 0x43, 0x62, 0xec, 0x56, 0xd8, +0x83, 0xcf, 0xf1, 0x89, 0x58, 0x20, 0xeb, 0x7b, +0x9a, 0x0a, 0x01, 0x57, 0xdc, 0x0a, 0xd0, 0x85, +0x00, 0x98, 0x1e, 0x0e, 0x65, 0xdc, 0x7f, 0xe1, +0x40, 0x89, 0xe1, 0x82, 0x7f, 0x63, 0x86, 0x0e, +0xfe, 0x75, 0xd2, 0xe0, 0x1f, 0x0d, 0xfe, 0xd1, +0xe0, 0xdf, 0x22, 0x0c, 0xfe, 0x3d, 0x39, 0xba, +0x0e, 0x4f, 0x06, 0x73, 0xd2, 0xff, 0xa9, 0x4e, +0xbf, 0xe3, 0xcf, 0x57, 0x50, 0x01, 0x60, 0x38, +0xf7, 0x7f, 0x81, 0x7d, 0x71, 0xeb, 0xbf, 0x58, +0xf2, 0x77, 0xa8, 0x6c, 0x43, 0x67, 0x3e, 0xa5, +0xf3, 0xe0, 0x5f, 0xd6, 0xcc, 0x30, 0x0c, 0x75, +0xf8, 0x61, 0xe5, 0xaf, 0xcf, 0xbc, 0x2a, 0x7f, +0x35, 0x09, 0xfe, 0x4d, 0x8e, 0x44, 0xc2, 0x05, +0x17, 0x9c, 0x27, 0x48, 0xd8, 0x97, 0x5e, 0x7a, +0x21, 0x1c, 0xa8, 0xf5, 0x14, 0x2c, 0xfe, 0x21, +0xae, 0x3b, 0x2e, 0xc6, 0x94, 0x69, 0x0a, 0xd4, +0x64, 0x63, 0xa0, 0xa7, 0x7d, 0xa7, 0x56, 0xc9, +0xff, 0xf4, 0xf1, 0x78, 0xa6, 0xf4, 0xa7, 0xbd, +0x23, 0x08, 0xc2, 0x27, 0xfa, 0x68, 0xf0, 0x8f, +0x06, 0xff, 0x96, 0x71, 0xf0, 0x2f, 0xdc, 0xc0, +0xc1, 0x3f, 0x2f, 0x1a, 0xfc, 0x9b, 0x43, 0xf0, +0xef, 0xc3, 0xf2, 0xed, 0x7c, 0xf7, 0x9f, 0xe2, +0x92, 0x41, 0xab, 0x80, 0x0d, 0x7b, 0xee, 0xd7, +0x9f, 0xeb, 0xfe, 0x43, 0x1a, 0xfb, 0x75, 0x3e, +0xfa, 0x27, 0x38, 0x38, 0x98, 0xcb, 0xb8, 0xff, +0x93, 0x13, 0x11, 0x7a, 0x73, 0xff, 0xfe, 0x3e, +0x5f, 0x2a, 0x24, 0xec, 0xe2, 0x7c, 0x3b, 0x41, +0xf2, 0xe7, 0xed, 0xfb, 0xe3, 0x87, 0xd4, 0x6b, +0xaf, 0x3e, 0xa4, 0xb6, 0x08, 0x28, 0xcc, 0xb3, +0xd3, 0x1a, 0xf9, 0x13, 0x4c, 0xe0, 0x96, 0x04, +0x71, 0xff, 0xd9, 0x43, 0xd5, 0x34, 0xf8, 0x27, +0x21, 0xff, 0x76, 0x1a, 0xfc, 0xd3, 0x72, 0xf0, +0xcf, 0xd8, 0xc0, 0xc1, 0xbf, 0xd5, 0x34, 0xf8, +0xb7, 0x24, 0x83, 0x7f, 0x4f, 0x0f, 0xaf, 0xc7, +0xe7, 0xfd, 0x1c, 0xf7, 0x9f, 0xe2, 0xfc, 0x2b, +0xfe, 0x7c, 0x21, 0x15, 0x00, 0x86, 0x22, 0xff, +0x9a, 0xf6, 0x4b, 0xec, 0x4b, 0x5b, 0x7f, 0x96, +0xb8, 0xff, 0x8a, 0x36, 0xc8, 0x9c, 0x9d, 0x9e, +0x53, 0xf0, 0x2f, 0x53, 0x83, 0xd1, 0x7f, 0xee, +0x74, 0x2f, 0x8c, 0x60, 0xe5, 0xef, 0x44, 0xb7, +0x9f, 0x5e, 0x53, 0xff, 0xcf, 0x3d, 0x73, 0xb7, +0x20, 0x51, 0xdf, 0x7c, 0xf3, 0x5f, 0x04, 0xc9, +0x5f, 0xa8, 0xf4, 0xe7, 0xd8, 0x74, 0x1c, 0x3c, +0xfe, 0xd8, 0xed, 0x6a, 0xf5, 0xff, 0x4f, 0x0c, +0x47, 0x6a, 0xb1, 0xf2, 0x37, 0x96, 0x21, 0xff, +0xc3, 0x9d, 0xbb, 0x69, 0xf0, 0x8f, 0x06, 0xff, +0x16, 0x54, 0xf0, 0x6f, 0xa3, 0x81, 0x83, 0x7f, +0xda, 0x74, 0xff, 0x34, 0xf8, 0xa7, 0x9b, 0xe0, +0x1f, 0x71, 0xff, 0x9f, 0x16, 0xd8, 0xf1, 0x6e, +0x01, 0xac, 0x49, 0x75, 0x0e, 0xa6, 0xd7, 0x00, +0x0d, 0xea, 0xfe, 0x5b, 0x23, 0xb8, 0xee, 0x3f, +0xf4, 0xf0, 0x80, 0x5e, 0xdc, 0x7f, 0x73, 0x5f, +0x0a, 0xe3, 0xfe, 0x4f, 0x63, 0x93, 0x9d, 0x3e, +0x05, 0xc0, 0x2d, 0x37, 0x5f, 0x25, 0x48, 0xd6, +0x9f, 0x7c, 0xfc, 0xb4, 0x5a, 0xe4, 0xcf, 0xa2, +0xab, 0x2d, 0x44, 0x69, 0xad, 0x30, 0x79, 0x9c, +0x50, 0x5a, 0xe8, 0xa0, 0x55, 0xf7, 0x3f, 0x8e, +0x0d, 0x89, 0x44, 0x00, 0xa4, 0x0c, 0x1f, 0xa4, +0xc1, 0x3f, 0x1a, 0xfc, 0xa3, 0xc1, 0xbf, 0x79, +0x8c, 0xfe, 0x3f, 0xa1, 0xc1, 0x3f, 0xbd, 0x07, +0xff, 0x9e, 0x19, 0x44, 0xf7, 0x9f, 0xee, 0x28, +0x11, 0x00, 0x1b, 0x92, 0x5c, 0x7e, 0xc6, 0x9f, +0xcf, 0xa1, 0x02, 0xc0, 0x70, 0xee, 0xff, 0x0a, +0xfb, 0xf2, 0xb6, 0x5f, 0x58, 0xf2, 0x77, 0x2c, +0x6f, 0x83, 0xac, 0xa3, 0xd3, 0x3a, 0x0f, 0xfe, +0x15, 0x4e, 0xb6, 0x31, 0xe4, 0x3f, 0xd5, 0x1b, +0xa8, 0x57, 0xf2, 0x27, 0xb8, 0xf2, 0xca, 0x4b, +0x15, 0xae, 0xf0, 0xa9, 0x4b, 0xfe, 0xec, 0x33, +0xfd, 0x67, 0x9e, 0xba, 0x4b, 0xee, 0xf7, 0xf1, +0xf6, 0x5c, 0x05, 0xc9, 0xf1, 0x66, 0xd0, 0x7a, +0x28, 0x40, 0xab, 0xcf, 0xfe, 0x8f, 0x4f, 0x47, +0x33, 0xe4, 0x7f, 0xb0, 0x3b, 0x96, 0x06, 0xff, +0x68, 0xf0, 0x8f, 0x06, 0xff, 0x94, 0x92, 0xff, +0xce, 0x25, 0x17, 0xfc, 0x7b, 0x6d, 0x91, 0x07, +0xff, 0x88, 0x00, 0xf8, 0x22, 0x9b, 0x7f, 0x0d, +0x70, 0x4d, 0x9a, 0x93, 0xb5, 0x21, 0xf9, 0x8f, +0x0a, 0x80, 0x8c, 0xd6, 0x54, 0x14, 0x01, 0x12, +0xf7, 0x1f, 0xde, 0x32, 0xa8, 0xf3, 0xe0, 0x1f, +0x41, 0x7b, 0x4f, 0x34, 0x23, 0x00, 0xbe, 0xc2, +0x2b, 0x76, 0xfa, 0x6a, 0xfc, 0x63, 0xf1, 0xe8, +0xc3, 0xb7, 0x2a, 0x74, 0xed, 0x3d, 0xed, 0x21, +0xaa, 0x05, 0x00, 0x27, 0xd1, 0xbf, 0x6e, 0xcd, +0x8b, 0x72, 0xbf, 0x87, 0x93, 0xc3, 0x27, 0x5a, +0x4f, 0xfd, 0x8b, 0x2a, 0x7f, 0x7d, 0x60, 0x00, +0xc3, 0x7f, 0xf1, 0xa3, 0x47, 0x68, 0xf0, 0x8f, +0x06, 0xff, 0x68, 0xf0, 0x8f, 0x06, 0xff, 0x16, +0x76, 0xf0, 0x4f, 0xc6, 0xfd, 0x3f, 0xdf, 0xb7, +0x11, 0x9b, 0xfe, 0x1c, 0x24, 0x02, 0x60, 0x43, +0xa2, 0xeb, 0xdf, 0x0d, 0xcd, 0x7f, 0xcb, 0xdd, +0xfd, 0x5f, 0x65, 0x5f, 0xd9, 0xfe, 0x1b, 0x2b, +0x00, 0x9c, 0xca, 0xdb, 0x21, 0xfb, 0xd8, 0xb4, +0xce, 0x47, 0xff, 0xe5, 0xe3, 0x0d, 0x0c, 0xf9, +0xcf, 0xe0, 0xfd, 0x7a, 0x7d, 0xbb, 0x7f, 0x82, +0xb5, 0x02, 0xa4, 0xcd, 0xe2, 0xa9, 0x27, 0xef, +0x80, 0x93, 0xb3, 0xf1, 0x6a, 0xb9, 0x7f, 0x82, +0xbb, 0xef, 0xba, 0x5e, 0xee, 0xf7, 0x78, 0xe5, +0xa5, 0x07, 0xb4, 0x4e, 0xfe, 0xc7, 0x26, 0xf6, +0x30, 0xee, 0x7f, 0x6f, 0x6f, 0x2a, 0x0d, 0xfe, +0xe9, 0x32, 0xf8, 0x37, 0x4c, 0x83, 0x7f, 0xda, +0x0f, 0xfe, 0xc5, 0x69, 0x25, 0xf8, 0xb7, 0xaa, +0x6f, 0x17, 0xac, 0x2b, 0x0a, 0x84, 0xcd, 0x41, +0x9e, 0x60, 0xe4, 0xec, 0x0a, 0x46, 0xf6, 0x2e, +0xb0, 0x3e, 0xc1, 0x0b, 0x56, 0x62, 0x87, 0x88, +0x72, 0xf2, 0x0f, 0xa6, 0xc1, 0x3f, 0x03, 0x07, +0xff, 0x88, 0x00, 0x58, 0x9d, 0xee, 0xcc, 0x71, +0xff, 0x0e, 0xb0, 0x36, 0xc3, 0xf1, 0x33, 0x2a, +0x00, 0x0c, 0xeb, 0xfe, 0x8b, 0x18, 0xf2, 0x17, +0x0b, 0x80, 0x3d, 0x1d, 0x43, 0x3a, 0x0f, 0xfe, +0x91, 0xca, 0xdf, 0x9e, 0xae, 0x30, 0x71, 0xe5, +0x6f, 0xa2, 0xde, 0xc9, 0x9f, 0xa0, 0xae, 0xc6, +0x43, 0x69, 0x70, 0xef, 0xdd, 0x77, 0x1e, 0x83, +0xd9, 0x89, 0x18, 0x95, 0xe4, 0xbf, 0x7f, 0xaf, +0x87, 0x60, 0x06, 0xe0, 0x89, 0xc7, 0x6f, 0xd7, +0x7e, 0xe5, 0x6f, 0x87, 0x37, 0xf4, 0xb5, 0x79, +0x43, 0xd4, 0x58, 0xc7, 0x9c, 0x83, 0x7f, 0x3b, +0x69, 0xf0, 0x8f, 0x06, 0xff, 0x16, 0x45, 0xf0, +0x4f, 0x24, 0x00, 0x56, 0x63, 0x35, 0xf8, 0xc6, +0xbc, 0x40, 0xd8, 0xe2, 0xe3, 0x05, 0x66, 0xeb, +0x9c, 0xc0, 0x6a, 0xc5, 0x76, 0xb0, 0x7c, 0xce, +0x06, 0x2c, 0x9e, 0xb3, 0x06, 0xf3, 0x67, 0xad, +0xc0, 0xfc, 0x19, 0x2b, 0x30, 0x7b, 0xda, 0x12, +0xb6, 0xbe, 0x6a, 0x05, 0xab, 0xcb, 0xfc, 0x68, +0xf0, 0x6f, 0x01, 0x07, 0xff, 0x5e, 0xec, 0x34, +0x82, 0x4d, 0x1c, 0xf2, 0x5f, 0x9f, 0xe8, 0xf6, +0xf5, 0x42, 0xe0, 0xc0, 0x65, 0x4b, 0xfe, 0x0e, +0x35, 0xed, 0x37, 0xd8, 0x57, 0xb5, 0xff, 0xce, +0x0a, 0x00, 0xa7, 0x32, 0xe2, 0xfe, 0x75, 0x1f, +0xfc, 0xdb, 0x3b, 0xba, 0x97, 0x71, 0xff, 0x47, +0x47, 0xc2, 0xe6, 0x4c, 0xfa, 0xdf, 0x9c, 0x4c, +0x01, 0x37, 0xe7, 0xcf, 0xe0, 0xae, 0x3b, 0xaf, +0x63, 0x4e, 0xeb, 0x7e, 0xf0, 0xde, 0x13, 0x90, +0x9b, 0xb5, 0x5d, 0x6d, 0x01, 0x40, 0xf0, 0xba, +0x8a, 0x35, 0xbe, 0xeb, 0xaf, 0xff, 0x33, 0x64, +0x67, 0xd8, 0x30, 0x04, 0x2c, 0x24, 0x00, 0xea, +0xf7, 0x79, 0xc1, 0x15, 0x57, 0x5c, 0x2c, 0xf8, +0x6b, 0xb7, 0x99, 0xbe, 0xa9, 0x55, 0xf7, 0x3f, +0x83, 0xe3, 0x4e, 0xe2, 0xfe, 0xcb, 0xfa, 0xf3, +0x68, 0xf0, 0x8f, 0x06, 0xff, 0x16, 0x79, 0xf0, +0x4f, 0xb1, 0xfb, 0x5f, 0xdb, 0x16, 0x0e, 0x46, +0x59, 0xc1, 0xb0, 0xd5, 0xd3, 0x1b, 0xac, 0x56, +0xbb, 0xc2, 0x8e, 0x97, 0xec, 0x61, 0xfb, 0x0a, +0x3b, 0xb0, 0x79, 0xc1, 0x16, 0xac, 0x5f, 0xd8, +0x01, 0x56, 0xcf, 0x8b, 0x05, 0xc0, 0xb3, 0xd6, +0x22, 0xf2, 0x7f, 0xc6, 0x12, 0xb6, 0x3d, 0x6d, +0x01, 0x5b, 0x9f, 0x32, 0x07, 0x93, 0xe7, 0xcc, +0xe1, 0x8b, 0x23, 0x81, 0x34, 0xf8, 0xb7, 0x00, +0x83, 0x7f, 0x8f, 0x4f, 0xac, 0x81, 0x75, 0x69, +0x2e, 0x3c, 0x01, 0xb0, 0x36, 0xcb, 0xe1, 0x79, +0x2a, 0x00, 0x0c, 0xeb, 0xfe, 0x6b, 0x24, 0xee, +0x1f, 0x11, 0xd5, 0x33, 0xa2, 0xf3, 0xe0, 0x5f, +0xe6, 0xec, 0x28, 0x0c, 0x74, 0x06, 0x62, 0xe5, +0xaf, 0x37, 0x7c, 0x8b, 0xae, 0x76, 0xae, 0x02, +0x80, 0x9c, 0xd3, 0x15, 0x22, 0xde, 0x07, 0xee, +0xbf, 0x09, 0x92, 0x30, 0x7c, 0x47, 0x7a, 0xf8, +0x55, 0x09, 0x00, 0x52, 0x06, 0x74, 0xeb, 0x2d, +0x57, 0xa9, 0x5c, 0xe3, 0xbb, 0xee, 0xda, 0x2b, +0xf1, 0x52, 0xe0, 0xeb, 0xb0, 0x33, 0x78, 0x3d, +0xc4, 0x45, 0x9b, 0x42, 0x68, 0xf0, 0x06, 0xa6, +0x03, 0x40, 0xd9, 0x09, 0xe1, 0xfc, 0x1c, 0x5b, +0x2d, 0x56, 0xfe, 0x26, 0xc2, 0x20, 0x4e, 0x4b, +0xba, 0xdb, 0xfd, 0xb1, 0xf2, 0xb7, 0x47, 0x6b, +0xc1, 0xbf, 0x90, 0x25, 0x18, 0xfc, 0x73, 0x37, +0x70, 0xf0, 0xcf, 0x96, 0x06, 0xff, 0x34, 0x0a, +0xfe, 0x6d, 0x68, 0xde, 0x03, 0x5b, 0xd2, 0x42, +0xc0, 0xc2, 0xd5, 0x17, 0x76, 0xac, 0x74, 0x03, +0xfb, 0x57, 0x9c, 0xc0, 0xee, 0x65, 0x47, 0xb0, +0x7d, 0xc9, 0x01, 0x76, 0xbc, 0x88, 0xe4, 0xff, +0x22, 0x92, 0xff, 0x0a, 0x01, 0xf2, 0x7f, 0x96, +0x4f, 0xfe, 0xa6, 0x4f, 0x9a, 0x81, 0xc9, 0x13, +0xdb, 0x60, 0x83, 0x9d, 0x83, 0xd6, 0x83, 0x7f, +0x1f, 0xd0, 0xe0, 0xdf, 0xbc, 0x83, 0x7f, 0xe4, +0xdc, 0xef, 0xa6, 0x2c, 0x07, 0x89, 0x00, 0x40, +0xf7, 0x3f, 0xb5, 0x50, 0x78, 0x70, 0x79, 0xba, +0xff, 0xaa, 0xf6, 0x3b, 0x1c, 0xaa, 0xdb, 0xff, +0x60, 0xc9, 0xdf, 0xa5, 0xbc, 0x43, 0x2f, 0xc1, +0xbf, 0xba, 0xa1, 0x62, 0xc6, 0xfd, 0x1f, 0x1f, +0xdb, 0x3d, 0x2f, 0xf7, 0xaf, 0x28, 0xc5, 0xcf, +0xe2, 0x8e, 0xdb, 0xaf, 0x61, 0x6a, 0x7c, 0xc9, +0xb1, 0x1f, 0x65, 0x22, 0xe0, 0x48, 0xa3, 0x1f, +0xb3, 0xaa, 0xa7, 0xcd, 0x1b, 0x00, 0x97, 0x5d, +0x7a, 0x11, 0x9c, 0x98, 0x89, 0xd7, 0x9a, 0xfb, +0x9f, 0x1a, 0xda, 0xc9, 0xb8, 0xff, 0x82, 0xc1, +0x32, 0x1a, 0xfc, 0x5b, 0x62, 0xc1, 0x3f, 0x6b, +0x83, 0x07, 0xff, 0x32, 0xf5, 0x17, 0xfc, 0x1b, +0x89, 0x81, 0x4d, 0x0d, 0x7b, 0x60, 0x6b, 0x52, +0x28, 0x58, 0x3b, 0xfb, 0x83, 0xc3, 0xe7, 0x9e, +0xe0, 0xf4, 0xba, 0x2b, 0x38, 0xbe, 0xe6, 0x02, +0x0e, 0xaf, 0x3a, 0x4b, 0xc9, 0xff, 0x65, 0x07, +0x91, 0xf3, 0x17, 0x20, 0x7f, 0x9e, 0xfb, 0xc7, +0xd1, 0xff, 0xb6, 0xa7, 0xf8, 0x02, 0xc0, 0x78, +0x85, 0x19, 0x7c, 0x36, 0x1c, 0x6c, 0xd0, 0xe0, +0xdf, 0x3b, 0x06, 0x0e, 0xfe, 0xbd, 0xb4, 0xc0, +0x82, 0x7f, 0xc4, 0xfd, 0xaf, 0x4f, 0x75, 0x95, +0x0a, 0x80, 0x0c, 0x47, 0x58, 0x9f, 0x6d, 0x7f, +0x0f, 0x15, 0x00, 0x86, 0xed, 0xfc, 0x3f, 0xe4, +0xc0, 0x71, 0xff, 0x31, 0xfd, 0xa3, 0x3a, 0x1f, +0xfd, 0x67, 0xcf, 0x0c, 0xe2, 0x73, 0x6c, 0x5f, +0xac, 0xfc, 0xf5, 0x65, 0xc8, 0x77, 0xce, 0xcf, +0xfc, 0x91, 0x38, 0x2f, 0xba, 0xe8, 0x7c, 0xb5, +0xc8, 0x98, 0x8c, 0xf1, 0x03, 0xfc, 0xd6, 0x20, +0x21, 0xc7, 0x29, 0x14, 0x01, 0xd9, 0xe9, 0xd6, +0x4c, 0x5d, 0xaf, 0xb6, 0x04, 0x40, 0xd4, 0x1e, +0x63, 0xad, 0x91, 0xff, 0xa9, 0x63, 0xa2, 0xca, +0xdf, 0xb6, 0x8e, 0x10, 0xac, 0xfc, 0xed, 0xa7, +0xc1, 0x3f, 0x1a, 0xfc, 0x33, 0x70, 0xf0, 0x2f, +0x59, 0xfd, 0xe0, 0xdf, 0x70, 0x1c, 0x18, 0xd7, +0x45, 0x82, 0x79, 0x7c, 0x18, 0xd8, 0x3a, 0x04, +0x82, 0xcb, 0xa7, 0xde, 0xe0, 0xfa, 0xa6, 0x07, +0xb8, 0xbc, 0xe9, 0x0e, 0xce, 0x6f, 0xb8, 0x81, +0x33, 0x92, 0xbf, 0x13, 0x92, 0xbf, 0x23, 0x92, +0xbf, 0x03, 0x92, 0xbf, 0xfd, 0x2b, 0x8e, 0x28, +0x00, 0x1c, 0xa4, 0xee, 0x7f, 0x85, 0x02, 0xf7, +0xff, 0x8c, 0xb0, 0xfb, 0xdf, 0xf2, 0xf8, 0x56, +0x30, 0x7e, 0xdc, 0x14, 0x56, 0x96, 0x7b, 0xd3, +0xe0, 0x9f, 0x06, 0xc1, 0xbf, 0xe7, 0x75, 0x1c, +0xfc, 0x23, 0xe7, 0x7e, 0x37, 0x65, 0x39, 0x4a, +0x04, 0xc0, 0xba, 0x44, 0xb7, 0xce, 0x85, 0xc4, +0x85, 0xcb, 0xcf, 0xfd, 0x57, 0x74, 0x3c, 0xe8, +0xb0, 0xb7, 0x1d, 0x58, 0x01, 0xe0, 0x5a, 0xde, +0xa9, 0xf3, 0xe0, 0x1f, 0x41, 0xe3, 0x40, 0x96, +0xa8, 0xf2, 0x77, 0x32, 0x72, 0xde, 0xc1, 0xbf, +0x8d, 0xeb, 0x5f, 0xd6, 0x88, 0x94, 0xff, 0xef, +0xff, 0x2e, 0x03, 0x37, 0x97, 0xcf, 0x60, 0x7a, +0x3c, 0x5a, 0x38, 0x14, 0x58, 0xeb, 0x01, 0xf7, +0xdd, 0x7b, 0xe3, 0xbc, 0xc9, 0x9f, 0xac, 0x04, +0x6a, 0xb5, 0xf2, 0xb7, 0x3f, 0x88, 0x71, 0xff, +0x99, 0x43, 0xb5, 0x34, 0xf8, 0x47, 0x83, 0x7f, +0x3a, 0x0e, 0xfe, 0xa5, 0xcf, 0x2b, 0xf8, 0xb7, +0x61, 0x30, 0x0e, 0x4c, 0x6a, 0xa2, 0xc0, 0x2a, +0x7a, 0x17, 0x3e, 0xa2, 0x0b, 0x06, 0x8f, 0x4f, +0x7c, 0xc1, 0xf3, 0x1d, 0x6f, 0xf0, 0x78, 0xdb, +0x0b, 0xdc, 0xdf, 0xf6, 0x04, 0xb7, 0xb7, 0x3c, +0x50, 0x00, 0xb8, 0x83, 0x0b, 0x4b, 0xfe, 0x42, +0xee, 0x5f, 0xc3, 0xd1, 0xff, 0xd6, 0x27, 0x65, +0x04, 0xc0, 0x63, 0xa6, 0xb0, 0xc6, 0xd7, 0x91, +0x06, 0xff, 0x16, 0x48, 0xf0, 0xef, 0x89, 0xf1, +0xb5, 0x78, 0xe4, 0xc7, 0x55, 0x2a, 0x00, 0xd2, +0x9c, 0xf0, 0xdc, 0xaf, 0xc3, 0x75, 0x54, 0x00, +0x18, 0xd2, 0xfd, 0x67, 0xb5, 0x75, 0x13, 0xf2, +0x67, 0x05, 0x40, 0xdc, 0xd0, 0x98, 0xce, 0xdd, +0x7f, 0xfe, 0x54, 0x37, 0x0c, 0xb7, 0x7b, 0xc1, +0x44, 0x8f, 0x76, 0x2a, 0x7f, 0x8f, 0x4f, 0xa3, +0xd3, 0x58, 0xf3, 0x92, 0xc6, 0x04, 0x7d, 0xf9, +0x65, 0x17, 0xc1, 0x76, 0xeb, 0xf7, 0x61, 0x6c, +0x70, 0x8f, 0x9c, 0x08, 0x20, 0x8f, 0x0b, 0x1c, +0xed, 0x3f, 0x56, 0xfa, 0x6c, 0x5f, 0x11, 0xc8, +0x26, 0x80, 0x83, 0xdd, 0x47, 0x5a, 0x25, 0xff, +0x93, 0xb3, 0x31, 0x0c, 0xf9, 0x1f, 0xea, 0x8c, +0x58, 0x02, 0xc1, 0xbf, 0x6e, 0x1a, 0xfc, 0x5b, +0x62, 0xc1, 0xbf, 0x4d, 0xfd, 0x09, 0xb0, 0xad, +0x32, 0x1a, 0x76, 0x44, 0xec, 0x06, 0xd7, 0xed, +0x3b, 0xc1, 0xe7, 0x93, 0x00, 0xf0, 0x79, 0xdf, +0x0f, 0xbc, 0xdf, 0xf3, 0x05, 0xaf, 0x77, 0x7d, +0xc0, 0x13, 0xe1, 0x81, 0x02, 0xc0, 0x1d, 0x05, +0x80, 0xdb, 0x5b, 0x9e, 0x22, 0xf7, 0xff, 0x86, +0xc8, 0xfd, 0xab, 0x3b, 0xfa, 0x17, 0x74, 0xff, +0x02, 0xa3, 0x7f, 0x96, 0xfc, 0x8d, 0x1e, 0x33, +0x81, 0x0d, 0x9f, 0x5b, 0xd0, 0xe0, 0xdf, 0x02, +0x09, 0xfe, 0xbd, 0x57, 0x63, 0x25, 0x26, 0x7f, +0x91, 0x00, 0x58, 0x97, 0xe4, 0x56, 0xb3, 0xd0, +0xf8, 0x70, 0x79, 0xb9, 0xff, 0x92, 0xf6, 0x67, +0x1c, 0x6a, 0x3a, 0x80, 0x15, 0x00, 0x6e, 0x15, +0x9d, 0x3a, 0x0f, 0xfe, 0xa5, 0xe1, 0xda, 0x5f, +0x4b, 0x5f, 0xa2, 0xd6, 0x2a, 0x7f, 0xb9, 0x49, +0x7f, 0xb2, 0xce, 0x47, 0x56, 0xf6, 0x94, 0xd5, +0xf1, 0x0a, 0x81, 0x3c, 0x42, 0x30, 0x35, 0x7e, +0x1d, 0xfa, 0xbb, 0x42, 0xe5, 0x0a, 0x7f, 0x0e, +0x63, 0x2e, 0x60, 0xfd, 0xda, 0x97, 0xe0, 0xda, +0x6b, 0xfe, 0xa4, 0xf2, 0xf7, 0x21, 0x5b, 0x00, +0x5b, 0x4d, 0xde, 0xd4, 0x7a, 0xe3, 0x1f, 0xc1, +0x58, 0x8f, 0x3f, 0x0c, 0xb4, 0x7a, 0x40, 0xd2, +0x48, 0x23, 0x0d, 0xfe, 0xd1, 0xe0, 0x9f, 0x9e, +0x83, 0x7f, 0xf2, 0xee, 0xdf, 0xa8, 0x27, 0x11, +0x2c, 0x4a, 0x63, 0xc1, 0x3e, 0x3c, 0x02, 0x3c, +0xad, 0x76, 0x81, 0xff, 0xa7, 0xc1, 0xe0, 0xff, +0x51, 0x10, 0xf8, 0x7d, 0x18, 0x08, 0xbe, 0x1f, +0x10, 0xf2, 0xf7, 0x07, 0x6f, 0x14, 0x00, 0x5e, +0x28, 0x00, 0x84, 0xc8, 0x9f, 0xe7, 0xfe, 0xd9, +0xd1, 0xff, 0xab, 0x5a, 0x18, 0xfd, 0x3f, 0x21, +0x1a, 0xfd, 0x13, 0xf2, 0x37, 0x7a, 0xd4, 0x04, +0x36, 0x3f, 0xba, 0x05, 0x3e, 0xeb, 0xf4, 0xa7, +0xc1, 0x3f, 0x03, 0x07, 0xff, 0x9e, 0x1c, 0x45, +0xf7, 0x4f, 0x92, 0xff, 0xac, 0x00, 0x48, 0x73, +0xfe, 0x1d, 0x1f, 0x01, 0xfc, 0x89, 0x0a, 0x00, +0x43, 0xba, 0xff, 0xec, 0xb6, 0x11, 0xae, 0x00, +0x48, 0x1c, 0x1d, 0xd7, 0x79, 0xf0, 0xaf, 0x68, +0xa2, 0x45, 0x54, 0xf9, 0xdb, 0xa7, 0xbb, 0xca, +0x5f, 0x12, 0xe6, 0xfb, 0xe2, 0xb3, 0x67, 0xe1, +0xdc, 0x73, 0x35, 0x7b, 0x96, 0x7f, 0xde, 0xb9, +0xe7, 0xc0, 0xda, 0xd5, 0x2b, 0xa0, 0x1d, 0xd7, +0x87, 0x64, 0xf7, 0xfd, 0x09, 0x09, 0xd7, 0xef, +0xf3, 0x64, 0xa6, 0x02, 0xa4, 0xd8, 0xe7, 0xb5, +0x57, 0x1e, 0x84, 0x77, 0xde, 0x7a, 0x14, 0x3e, +0xfa, 0xf0, 0x29, 0x58, 0xf9, 0xf9, 0x73, 0x10, +0xb5, 0xdb, 0x18, 0x27, 0x11, 0x71, 0x3a, 0x69, +0xfc, 0x3b, 0x3e, 0x15, 0xc5, 0xb8, 0xff, 0x03, +0xdd, 0x09, 0x34, 0xf8, 0xa7, 0xe5, 0xe0, 0x9f, +0xf3, 0x92, 0x0c, 0xfe, 0xe5, 0x69, 0x3d, 0xf8, +0xb7, 0xa5, 0x33, 0x19, 0x6c, 0x0a, 0xe3, 0xc0, +0x39, 0x34, 0x0a, 0x7c, 0x2c, 0x76, 0x43, 0xf0, +0xe7, 0xa1, 0x10, 0xf4, 0xe9, 0x4e, 0x08, 0xfc, +0x24, 0x04, 0x02, 0x3e, 0xe6, 0x93, 0xbf, 0xef, +0x07, 0xfe, 0x7c, 0xf7, 0x4f, 0x46, 0xff, 0xef, +0xc8, 0x8e, 0xfe, 0xd1, 0xfd, 0xbf, 0xee, 0xa6, +0x78, 0xf4, 0xaf, 0x20, 0xf8, 0xc7, 0xee, 0xfc, +0x13, 0xf2, 0x97, 0xb8, 0x7f, 0x81, 0xd1, 0x3f, +0x4b, 0xfe, 0x9b, 0x1e, 0x31, 0x86, 0x95, 0x29, +0xae, 0x34, 0xf8, 0x37, 0xef, 0xe0, 0xdf, 0xfc, +0xdc, 0xff, 0x47, 0x78, 0xee, 0x57, 0xea, 0xfe, +0x1d, 0x61, 0x5d, 0x8a, 0x6b, 0xea, 0x42, 0xe4, +0xc4, 0xe5, 0xe3, 0xfe, 0x0b, 0xdb, 0x5f, 0x13, +0x91, 0xbf, 0x48, 0x00, 0x78, 0x56, 0x75, 0xe9, +0x7c, 0xf4, 0x4f, 0xdc, 0x7f, 0x67, 0x4f, 0xa4, +0xa8, 0xf2, 0x17, 0x03, 0x6d, 0xba, 0x2e, 0xfd, +0xe9, 0xc6, 0xe3, 0x3c, 0x9b, 0x36, 0xbc, 0xc2, +0x5c, 0xe0, 0xd3, 0x44, 0x08, 0x9c, 0x7d, 0xf6, +0x59, 0x0c, 0xb1, 0x37, 0x1c, 0xf0, 0x56, 0x58, +0xfa, 0xa3, 0x0a, 0xda, 0x22, 0x7f, 0x82, 0x91, +0x2e, 0xac, 0xfc, 0x6d, 0xf5, 0x84, 0xd8, 0xb1, +0x16, 0x1a, 0xfc, 0x5b, 0xe6, 0xc1, 0x3f, 0x6d, +0xba, 0x7f, 0x65, 0xc1, 0xbf, 0xad, 0xad, 0xc9, +0x60, 0x9b, 0x9f, 0x00, 0xee, 0xc1, 0x31, 0x10, +0x68, 0x16, 0x01, 0xa1, 0x5f, 0x84, 0xc3, 0xce, +0xcf, 0x77, 0x41, 0xc8, 0xe7, 0x61, 0x10, 0xf2, +0x59, 0x28, 0x04, 0x23, 0xf9, 0x07, 0x21, 0xf9, +0x07, 0x22, 0xf9, 0x07, 0x7c, 0x1c, 0x84, 0x02, +0x20, 0x10, 0x05, 0x00, 0x4b, 0xfe, 0xe8, 0xfe, +0xdf, 0x53, 0xec, 0xfe, 0x85, 0x46, 0xff, 0x6c, +0xf0, 0x8f, 0x1d, 0xfd, 0x4b, 0xdc, 0xbf, 0xa2, +0x9d, 0xff, 0xa7, 0x15, 0x04, 0xff, 0xc4, 0xa3, +0x7f, 0x96, 0xfc, 0x37, 0x3e, 0x6c, 0x04, 0xab, +0xad, 0x6d, 0x16, 0x74, 0xf0, 0xef, 0x8d, 0x25, +0x19, 0xfc, 0x93, 0x0a, 0x80, 0xa7, 0x47, 0xd6, +0xc1, 0x26, 0x6c, 0xfd, 0x93, 0x08, 0x80, 0x14, +0xd7, 0x5f, 0xf1, 0x11, 0xc0, 0x45, 0x54, 0x00, +0x18, 0xd2, 0xfd, 0xe7, 0xb6, 0xcd, 0x72, 0x05, +0x40, 0xd2, 0xc4, 0x84, 0xce, 0x83, 0x7f, 0x15, +0x63, 0x07, 0xc4, 0x95, 0xbf, 0x3b, 0xf5, 0xda, +0xf7, 0x3f, 0xdc, 0x1f, 0xce, 0x8c, 0xe6, 0xe7, +0x12, 0xe4, 0x7b, 0xe3, 0xf5, 0x87, 0xa1, 0xba, +0xc2, 0x55, 0x23, 0xf2, 0xd7, 0xa6, 0x00, 0x38, +0x3a, 0x2e, 0xaa, 0xfc, 0xad, 0xea, 0xcb, 0x58, +0x06, 0xc1, 0xbf, 0x2e, 0x1a, 0xfc, 0xd3, 0x72, +0xf0, 0x4f, 0xbd, 0xbe, 0xff, 0x74, 0x30, 0x3f, +0x8c, 0x7d, 0x1a, 0xd9, 0x49, 0xe0, 0x1d, 0x18, +0x07, 0xa1, 0x5b, 0xa3, 0x60, 0xf7, 0x97, 0x11, +0x10, 0xbe, 0x6a, 0x0f, 0xec, 0x5a, 0xb9, 0x1b, +0xc2, 0x56, 0x86, 0xa3, 0x00, 0xd8, 0x85, 0x02, +0x80, 0x25, 0x7f, 0x74, 0xff, 0x9f, 0x08, 0xbb, +0x7f, 0x45, 0xa3, 0x7f, 0xc1, 0xe0, 0x1f, 0x6f, +0xf4, 0x3f, 0xbf, 0x9d, 0x7f, 0x32, 0xfa, 0xe7, +0xb9, 0xff, 0x47, 0xa4, 0x02, 0x60, 0xfd, 0x4b, +0x26, 0x34, 0xf8, 0xa7, 0xc5, 0xe0, 0x9f, 0x52, +0x01, 0x30, 0x21, 0xef, 0xfe, 0x3f, 0x2d, 0xb4, +0xe7, 0xbb, 0xff, 0x54, 0xd7, 0x80, 0x85, 0xca, +0x8b, 0xcb, 0xc3, 0xfd, 0xe7, 0xb5, 0x7f, 0x22, +0x25, 0xff, 0x0e, 0xf0, 0xde, 0xdb, 0xad, 0x73, +0xf7, 0x9f, 0x7e, 0x74, 0x1c, 0x7a, 0xbb, 0x76, +0x62, 0xe5, 0xaf, 0x17, 0x7c, 0x73, 0x42, 0xbf, +0x95, 0xbf, 0x15, 0xa5, 0x4e, 0x70, 0xef, 0x3d, +0x37, 0xcc, 0x2b, 0xd1, 0xff, 0xdc, 0xb3, 0xf7, +0x40, 0x41, 0xae, 0xad, 0x5e, 0xc9, 0xff, 0xab, +0x13, 0x49, 0xb8, 0x2a, 0xe9, 0x05, 0xbd, 0xed, +0x3e, 0x10, 0x39, 0xd6, 0x49, 0x83, 0x7f, 0x34, +0xf8, 0x27, 0x43, 0xfe, 0x73, 0x73, 0xff, 0x26, +0x23, 0x99, 0x60, 0xd5, 0x90, 0x0e, 0x2e, 0x19, +0x29, 0xe0, 0xef, 0x9f, 0x08, 0xbb, 0x4d, 0x63, +0x21, 0x72, 0x6d, 0x34, 0x44, 0xac, 0x89, 0x82, +0x3d, 0xab, 0x23, 0x91, 0xfc, 0x23, 0x21, 0x1c, +0x05, 0xc0, 0x2e, 0x14, 0x00, 0x61, 0x28, 0x00, +0x24, 0xee, 0xff, 0xb3, 0x30, 0x08, 0xfe, 0x4c, +0x7e, 0xf4, 0xcf, 0x77, 0xff, 0x8a, 0x46, 0xff, +0x1c, 0xf7, 0xff, 0xba, 0x9b, 0xc6, 0x3b, 0xff, +0x64, 0xf4, 0xaf, 0x56, 0xf0, 0xef, 0x51, 0xbe, +0xfb, 0xdf, 0xf0, 0xd0, 0x66, 0xd8, 0xf8, 0x90, +0x11, 0x7c, 0xbe, 0xdf, 0x9b, 0x06, 0xff, 0x0c, +0x10, 0xfc, 0x7b, 0x66, 0x68, 0x3d, 0x6c, 0xca, +0x70, 0x92, 0x90, 0xff, 0xc6, 0x64, 0xd7, 0x9f, +0xf1, 0xe7, 0x73, 0xa9, 0x00, 0x30, 0xac, 0x00, +0x38, 0x2d, 0x11, 0x00, 0x7b, 0x3b, 0x20, 0x79, +0x72, 0x52, 0xe7, 0xc1, 0xbf, 0x1a, 0xfc, 0x10, +0x64, 0x2a, 0x7f, 0xb1, 0xc6, 0x56, 0x5f, 0xe4, +0x7f, 0xe6, 0x78, 0x12, 0xac, 0x5e, 0xf5, 0x82, +0x56, 0x8b, 0x7d, 0x1e, 0xc1, 0xcb, 0x81, 0xa9, +0x49, 0x16, 0x4c, 0xbb, 0xa0, 0xae, 0x05, 0xc0, +0x0c, 0xd6, 0x23, 0x13, 0xf7, 0x5f, 0xd2, 0x5f, +0x48, 0x83, 0x7f, 0x34, 0xf8, 0x37, 0xe7, 0xd1, +0xbf, 0xe9, 0x50, 0x16, 0x6c, 0x3f, 0x90, 0x01, +0xee, 0xa9, 0x69, 0x10, 0xec, 0x93, 0x0c, 0x51, +0xa6, 0x09, 0x10, 0xb3, 0x21, 0x1e, 0xa2, 0xd7, +0xc7, 0x41, 0xd4, 0x3a, 0x42, 0xfe, 0x31, 0x48, +0xfe, 0xd1, 0x48, 0xfe, 0xe8, 0xfc, 0x57, 0xcb, +0x93, 0x3f, 0xdf, 0xfd, 0x0b, 0x8d, 0xfe, 0x39, +0xee, 0x5f, 0xd9, 0xe8, 0xff, 0x4d, 0xe9, 0xe8, +0x5f, 0xeb, 0x3b, 0xff, 0x02, 0xa3, 0x7f, 0x42, +0xfc, 0x8c, 0x00, 0x78, 0xd0, 0x08, 0x56, 0xed, +0x74, 0xa4, 0xc1, 0x3f, 0x9d, 0x04, 0xff, 0x94, +0xbb, 0xff, 0x95, 0x39, 0x4e, 0x7c, 0xf7, 0x9f, +0xe6, 0x62, 0xb9, 0x90, 0xb9, 0x71, 0xe9, 0x8f, +0xfe, 0x73, 0xda, 0x36, 0x70, 0xdd, 0xbf, 0x6f, +0x6d, 0xaf, 0xce, 0x83, 0x7f, 0x99, 0xb3, 0x23, +0x30, 0xd8, 0x11, 0x00, 0xa3, 0x9d, 0xde, 0x4c, +0x71, 0x8f, 0xbe, 0x46, 0xff, 0x24, 0xd9, 0xaf, +0x4d, 0xf2, 0xe7, 0x82, 0xdc, 0x1d, 0xc8, 0x4a, +0xb3, 0xd6, 0x19, 0xf9, 0x9f, 0x3e, 0x91, 0x80, +0x95, 0xbf, 0x1e, 0xd0, 0xd9, 0x1e, 0x00, 0xbb, +0xc7, 0x7b, 0x69, 0xf0, 0x8f, 0x06, 0xff, 0xd4, +0x0e, 0xfe, 0x6d, 0x1b, 0xcc, 0x01, 0xfb, 0x7d, +0x59, 0xe0, 0x9d, 0x8c, 0x8f, 0x8d, 0xbc, 0xd2, +0x20, 0xce, 0x24, 0x19, 0xe2, 0x37, 0x25, 0x41, +0xdc, 0xa6, 0x44, 0x88, 0xdb, 0x98, 0x00, 0xb1, +0x48, 0xfe, 0x31, 0x48, 0xfe, 0xd1, 0x48, 0xfe, +0x51, 0xeb, 0x62, 0x64, 0xdc, 0xbf, 0x78, 0xf4, +0xbf, 0x8a, 0x3b, 0xfa, 0x17, 0xbb, 0x7f, 0x65, +0xa3, 0xff, 0x0f, 0xf8, 0xa3, 0x7f, 0xa5, 0x3b, +0xff, 0x84, 0xfc, 0xe7, 0xb9, 0xf3, 0x4f, 0xc8, +0x5f, 0xd0, 0xfd, 0x3f, 0x22, 0xe3, 0xfe, 0x91, +0xfc, 0x37, 0x3d, 0x68, 0x8c, 0x6b, 0xc2, 0x56, +0x34, 0xf8, 0xa7, 0xa6, 0xfb, 0xd7, 0x56, 0xf0, +0xef, 0xf9, 0xbe, 0x4d, 0x58, 0xf6, 0xc3, 0x71, +0xff, 0x49, 0x6e, 0x3f, 0xe1, 0xcf, 0x67, 0x51, +0x01, 0x60, 0xb0, 0x83, 0x3f, 0x9d, 0x67, 0x3b, +0x14, 0xb4, 0x7f, 0x2f, 0x11, 0x00, 0xd5, 0x1d, +0x90, 0x3a, 0x35, 0xa9, 0xf3, 0xe0, 0xdf, 0x81, +0xa1, 0x42, 0xc6, 0xfd, 0x9f, 0xc0, 0xe7, 0xd9, +0xfa, 0x72, 0xff, 0xa4, 0xfa, 0x57, 0x11, 0x79, +0x93, 0xed, 0x00, 0x92, 0xe2, 0xdf, 0x13, 0xb6, +0x09, 0x12, 0x63, 0xb7, 0x32, 0x3f, 0x6f, 0xde, +0xf4, 0x2a, 0x73, 0x48, 0x48, 0x53, 0x21, 0x40, +0xee, 0x10, 0xe8, 0x22, 0xf8, 0x37, 0x89, 0xa7, +0x91, 0x89, 0xfb, 0xcf, 0x1b, 0xac, 0x54, 0xcb, +0xfd, 0xd3, 0xe0, 0xdf, 0x62, 0x0b, 0xfe, 0x95, +0x6b, 0x2d, 0xf8, 0x67, 0xd1, 0x9b, 0x07, 0xce, +0xd5, 0x39, 0xe0, 0x9f, 0x90, 0x05, 0x91, 0x9e, +0x19, 0x90, 0x6c, 0x9a, 0x06, 0xc9, 0xc6, 0xa9, +0x90, 0x64, 0x94, 0x02, 0x89, 0x46, 0xc9, 0x90, +0xb0, 0x39, 0x09, 0x05, 0x80, 0x0c, 0xf9, 0xaf, +0x67, 0xc9, 0x9f, 0xe3, 0xfe, 0x15, 0x8d, 0xfe, +0x3f, 0xe7, 0x8f, 0xfe, 0x19, 0xf7, 0xaf, 0x72, +0xf4, 0xaf, 0xe7, 0x9d, 0x7f, 0x05, 0xa3, 0xff, +0x8d, 0x48, 0xfe, 0x44, 0x00, 0x6c, 0xc6, 0x7f, +0xff, 0xc9, 0x80, 0xdf, 0x12, 0x0f, 0xfe, 0x59, +0x2c, 0x98, 0xe0, 0x1f, 0x11, 0x00, 0xab, 0x33, +0xc8, 0xda, 0x9f, 0x54, 0x00, 0xac, 0x4f, 0x77, +0xfe, 0x74, 0xa1, 0x73, 0xe4, 0x12, 0x2f, 0xfd, +0x69, 0xb7, 0xe0, 0xba, 0x7f, 0xff, 0xba, 0x3e, +0x9d, 0x07, 0xff, 0x72, 0xa6, 0xfb, 0xb1, 0xf4, +0xc7, 0x07, 0xc6, 0xbb, 0xe6, 0x57, 0xf9, 0xab, +0x89, 0xfb, 0x9f, 0xc1, 0x86, 0xbf, 0x8b, 0x2f, +0xbe, 0x40, 0x90, 0xb0, 0xc9, 0x3f, 0xdf, 0x57, +0xed, 0x26, 0xf7, 0x6b, 0x48, 0xca, 0x9f, 0x9c, +0xd9, 0x4d, 0x8a, 0xdf, 0x06, 0xd7, 0x5c, 0x7d, +0x85, 0x46, 0x1b, 0x03, 0xed, 0x47, 0x82, 0xb4, +0x2a, 0x00, 0x4e, 0x1d, 0x8d, 0x63, 0x2a, 0x7f, +0x5b, 0x3a, 0x42, 0xb1, 0xf2, 0x97, 0x06, 0xff, +0x16, 0x5f, 0xf0, 0xaf, 0x5a, 0xa7, 0xc1, 0x3f, +0xab, 0xae, 0x7c, 0xec, 0xec, 0xc8, 0x83, 0x90, +0xb8, 0x1c, 0x88, 0x75, 0xcf, 0x86, 0xf4, 0x6d, +0x99, 0x90, 0x66, 0x9a, 0x01, 0xa9, 0x26, 0xe9, +0x90, 0xb2, 0x05, 0xc9, 0x7f, 0x0b, 0x92, 0xbf, +0x31, 0x4b, 0xfe, 0x62, 0xf7, 0xbf, 0x31, 0x11, +0x62, 0x37, 0xca, 0x8f, 0xfe, 0x59, 0xf7, 0xcf, +0x1d, 0xfd, 0x33, 0xc1, 0x3f, 0xa5, 0xa3, 0x7f, +0xcd, 0x76, 0xfe, 0x5d, 0xf4, 0xb0, 0xf3, 0x4f, +0xc8, 0x9f, 0x71, 0xff, 0x0f, 0x1b, 0xf3, 0x46, +0xff, 0x0c, 0xf9, 0x3f, 0xb0, 0x05, 0x8c, 0x1e, +0x30, 0x81, 0x2f, 0x72, 0xdd, 0x69, 0xf0, 0x8f, +0x47, 0xfe, 0x26, 0x3a, 0x0b, 0xfe, 0x31, 0xe7, +0x7e, 0x19, 0xf2, 0x17, 0x09, 0x80, 0x0d, 0x49, +0xee, 0x5f, 0x2d, 0x06, 0x8e, 0x5c, 0xca, 0xee, +0xff, 0x5c, 0x87, 0xa2, 0x8e, 0x9f, 0xb8, 0xee, +0x3f, 0x6d, 0x66, 0x4a, 0xe7, 0xee, 0xff, 0x50, +0x7f, 0x3a, 0xe3, 0xfe, 0x4f, 0xe1, 0x2e, 0xbb, +0xbe, 0xdc, 0x7f, 0x48, 0xe0, 0x3a, 0x85, 0x84, +0x2d, 0x3a, 0x13, 0x2c, 0x4f, 0xfe, 0x5c, 0x4c, +0xa1, 0x80, 0x78, 0xeb, 0xcd, 0x47, 0xd4, 0x16, +0x01, 0x39, 0xcc, 0x99, 0x60, 0xed, 0xb9, 0xff, +0x89, 0xfe, 0x40, 0xc6, 0xfd, 0xa7, 0x0d, 0xd7, +0xd1, 0xb5, 0xbf, 0x65, 0x11, 0xfc, 0x53, 0xde, +0xf7, 0xbf, 0xa3, 0xbd, 0x10, 0xbc, 0xca, 0x0a, +0x60, 0x57, 0x4c, 0x3e, 0x24, 0xb9, 0xe5, 0x42, +0x96, 0x79, 0x0e, 0x64, 0x9a, 0x65, 0x43, 0xc6, +0x36, 0x24, 0xff, 0xad, 0x59, 0x48, 0xfe, 0x99, +0x48, 0xfe, 0x19, 0x90, 0x82, 0x02, 0x20, 0x19, +0x05, 0x40, 0x12, 0xba, 0xff, 0x44, 0x74, 0xff, +0x84, 0xfc, 0x05, 0xdd, 0xbf, 0xca, 0xd1, 0xbf, +0xea, 0xe0, 0x1f, 0x77, 0xf4, 0x2f, 0xe7, 0xfe, +0x05, 0x47, 0xff, 0x6e, 0x9a, 0xd7, 0xfd, 0x3e, +0xc7, 0x1f, 0xfd, 0x2b, 0xdd, 0xf9, 0x57, 0x30, +0xfa, 0x27, 0xe4, 0xbf, 0x19, 0xc9, 0xdf, 0xe8, +0x7e, 0xac, 0x05, 0x76, 0xb2, 0x5b, 0x46, 0xc1, +0x3f, 0x33, 0x83, 0x05, 0xff, 0x44, 0xe7, 0x7e, +0x5d, 0x79, 0x02, 0x60, 0x7d, 0xa6, 0xd3, 0xf3, +0x54, 0x00, 0x18, 0xd6, 0xfd, 0xbb, 0xa0, 0x08, +0x90, 0xb8, 0xff, 0xa0, 0x83, 0xfd, 0x3a, 0x0f, +0xfe, 0x15, 0x4c, 0x75, 0xc2, 0x08, 0x9e, 0xae, +0x9d, 0xec, 0xf5, 0xd7, 0x6b, 0xea, 0xff, 0xa5, +0x17, 0xef, 0x57, 0x78, 0xca, 0x57, 0x15, 0xf9, +0xb3, 0x20, 0x17, 0xfc, 0x9e, 0x7e, 0xea, 0x4e, +0xd5, 0xe5, 0x41, 0x58, 0x15, 0x3c, 0xdc, 0xbf, +0x5b, 0x6b, 0x02, 0xe0, 0xc4, 0x4c, 0x34, 0x43, +0xfe, 0x8d, 0x5d, 0xd1, 0x4b, 0x22, 0xf8, 0xe7, +0xbb, 0xec, 0x83, 0x7f, 0x95, 0x1a, 0x07, 0xff, +0xec, 0x5b, 0x8a, 0xc0, 0xaf, 0xa4, 0x08, 0x22, +0xa3, 0x8a, 0x20, 0xdd, 0xa5, 0x10, 0x72, 0x2d, +0x0b, 0x20, 0xc7, 0x32, 0x1f, 0xb2, 0x2d, 0xf2, +0x90, 0xfc, 0x73, 0x91, 0xfc, 0x73, 0x18, 0xf2, +0xcf, 0xd8, 0x96, 0x85, 0x02, 0x40, 0xc6, 0xfd, +0x1b, 0x73, 0xdd, 0xbf, 0xd0, 0xe8, 0x5f, 0xbd, +0xe0, 0x1f, 0x77, 0xf4, 0xcf, 0x73, 0xff, 0x82, +0xa3, 0x7f, 0xcd, 0x76, 0xfe, 0xed, 0x39, 0x3b, +0xff, 0xf6, 0xaf, 0x3b, 0x41, 0xf1, 0xee, 0x52, +0x38, 0x98, 0xd3, 0x00, 0x7b, 0xcc, 0x22, 0xe7, +0x54, 0xf7, 0xab, 0x74, 0xf4, 0x2f, 0x76, 0xff, +0xc6, 0x28, 0x00, 0x36, 0xbf, 0x69, 0xb9, 0x80, +0x83, 0x7f, 0xb6, 0x06, 0x0e, 0xfe, 0x19, 0x6b, +0x2d, 0xf8, 0xf7, 0xea, 0x11, 0x53, 0x0e, 0xf9, +0x3b, 0xc1, 0x86, 0x44, 0xf7, 0xc9, 0xc5, 0xc2, +0x93, 0x4b, 0xd5, 0xfd, 0x5f, 0xe0, 0x50, 0xd2, +0xf1, 0x2f, 0x56, 0x00, 0x38, 0x56, 0x75, 0x40, +0xfa, 0xec, 0x94, 0x4e, 0x83, 0x7f, 0x44, 0x00, +0xb4, 0xf6, 0xc6, 0x33, 0xee, 0xff, 0xcc, 0x6c, +0xac, 0xde, 0x82, 0x7f, 0x04, 0x77, 0xdd, 0x79, +0xad, 0x20, 0x59, 0xbf, 0xff, 0xee, 0xe3, 0x6a, +0x0b, 0x00, 0x32, 0xd2, 0xef, 0xef, 0x0a, 0x63, +0x46, 0xfc, 0x8a, 0xc8, 0x9f, 0x3c, 0x4e, 0x28, +0xcc, 0xb3, 0xd3, 0xaa, 0xfb, 0x1f, 0xed, 0xf6, +0xc3, 0xf1, 0xbf, 0x3b, 0x24, 0x8e, 0x1c, 0xa2, +0xc1, 0x3f, 0x83, 0x04, 0xff, 0x0e, 0xe8, 0x35, +0xf8, 0x67, 0x35, 0x5c, 0x02, 0x4e, 0xcd, 0xa5, +0x10, 0x54, 0x58, 0x02, 0xb1, 0x91, 0x25, 0x90, +0xed, 0x52, 0x02, 0x05, 0x36, 0xc5, 0x90, 0x6f, +0x5d, 0x84, 0x28, 0x84, 0x3c, 0xab, 0x02, 0x14, +0x00, 0xf9, 0x90, 0x83, 0xe4, 0x9f, 0x8d, 0xe4, +0x9f, 0x65, 0xc6, 0xba, 0x7f, 0x01, 0xf2, 0x67, +0x46, 0xff, 0x52, 0xf7, 0xcf, 0x06, 0xff, 0xb8, +0xa3, 0x7f, 0xc6, 0xfd, 0xaf, 0x55, 0xe0, 0xfe, +0x15, 0x8e, 0xfe, 0x35, 0xdb, 0xf9, 0x27, 0xe4, +0xaf, 0x7c, 0xe7, 0xdf, 0x91, 0x71, 0xff, 0x8e, +0xaf, 0xbb, 0xc0, 0x58, 0xfb, 0x38, 0x70, 0x7f, +0x7c, 0x73, 0xfc, 0x1b, 0xc8, 0x0d, 0xce, 0x63, +0x44, 0x80, 0xb2, 0x9d, 0x7f, 0x32, 0xfa, 0xe7, +0xb9, 0xff, 0x87, 0x85, 0xdd, 0xbf, 0x91, 0xd8, +0xfd, 0x1b, 0xdf, 0x8f, 0x3d, 0x01, 0xf7, 0x6d, +0x83, 0x4f, 0x9b, 0xbd, 0x69, 0xf0, 0x4f, 0x87, +0xc1, 0x3f, 0xd1, 0xb9, 0x5f, 0x37, 0xa9, 0x00, +0xc8, 0x74, 0x86, 0x8d, 0xd9, 0x0e, 0xf7, 0x50, +0x01, 0x60, 0x48, 0xf7, 0x9f, 0xd1, 0x1e, 0x28, +0x22, 0x7f, 0x91, 0x00, 0x08, 0x69, 0x1a, 0xd0, +0xf9, 0xe8, 0xbf, 0x74, 0xe2, 0x30, 0x43, 0xfe, +0xd3, 0x03, 0xc1, 0x7a, 0x75, 0xff, 0x04, 0x8a, +0x9e, 0xe1, 0x3f, 0xf8, 0xc0, 0x4d, 0x6a, 0x93, +0x3f, 0x8b, 0x15, 0x2f, 0xdc, 0x2b, 0xf7, 0xfb, +0x78, 0xb8, 0x7e, 0x0e, 0xc9, 0xf1, 0x66, 0x70, +0xa4, 0xc9, 0x5f, 0xab, 0xe4, 0x7f, 0x7c, 0x32, +0x82, 0x71, 0xff, 0xfb, 0x7a, 0x92, 0x96, 0x64, +0xf0, 0xcf, 0x87, 0x06, 0xff, 0xc0, 0x7a, 0xa8, +0x0c, 0xdc, 0x9a, 0xca, 0x21, 0x2c, 0xbf, 0x1c, +0x92, 0x22, 0xca, 0xa1, 0xd0, 0xa5, 0x1c, 0x4a, +0x6c, 0xcb, 0xa0, 0x78, 0x47, 0x29, 0x14, 0x6d, +0x2f, 0x81, 0xc2, 0xed, 0xc5, 0x28, 0x00, 0x04, +0xc8, 0xdf, 0x22, 0x97, 0xe7, 0xfe, 0x25, 0xa3, +0x7f, 0x53, 0xfe, 0xe8, 0x9f, 0x09, 0xfe, 0x69, +0x34, 0xfa, 0xd7, 0x6c, 0xe7, 0x9f, 0x90, 0xbf, +0xea, 0x9d, 0x7f, 0x0f, 0xb5, 0x76, 0xfe, 0xe3, +0xed, 0x12, 0x41, 0xf6, 0xc7, 0x6f, 0xbf, 0xfd, +0x06, 0xff, 0xfd, 0xef, 0x7f, 0xb1, 0x00, 0xeb, +0x18, 0x44, 0xef, 0x88, 0x55, 0xbb, 0xee, 0x97, +0xeb, 0xfe, 0xf9, 0xa3, 0x7f, 0x91, 0xfb, 0xdf, +0x72, 0xdf, 0x56, 0x30, 0x41, 0x01, 0xb0, 0x2a, +0xca, 0x65, 0xc1, 0x07, 0xff, 0xb4, 0xe9, 0xfe, +0xf5, 0x1d, 0xfc, 0x13, 0x9d, 0xfb, 0x95, 0xba, +0xff, 0xf5, 0x89, 0x1e, 0xed, 0x8b, 0x89, 0x2b, +0x97, 0xa2, 0xfb, 0xbf, 0xc4, 0xa1, 0xb4, 0xe3, +0x67, 0x56, 0x00, 0x38, 0x56, 0x76, 0x40, 0xc6, +0xec, 0xb4, 0x4e, 0x83, 0x7f, 0x69, 0x47, 0x27, +0xa0, 0xab, 0x7b, 0x37, 0x96, 0xfe, 0x78, 0xc2, +0xd7, 0xc7, 0x13, 0xf4, 0xea, 0xfe, 0x09, 0x9e, +0x7a, 0xf2, 0x0e, 0x85, 0xae, 0x9d, 0xf4, 0xfc, +0x2b, 0x15, 0x00, 0x32, 0x6b, 0x7d, 0x9b, 0x37, +0xbe, 0x2a, 0xf7, 0x7b, 0xd8, 0xda, 0x7c, 0xa0, +0xfd, 0xd2, 0x9f, 0x93, 0x58, 0xfa, 0xd3, 0xe5, +0x0d, 0xfd, 0x28, 0x9a, 0x62, 0xc6, 0xda, 0x74, +0xe4, 0xfe, 0x75, 0x17, 0xfc, 0xf3, 0x5b, 0x92, +0xc1, 0xbf, 0xf9, 0xbb, 0xff, 0x1d, 0x83, 0x15, +0xe0, 0x75, 0xb0, 0x12, 0xf6, 0xe4, 0x56, 0x42, +0xfa, 0xee, 0x2a, 0x28, 0x75, 0xad, 0x82, 0x72, +0x87, 0x4a, 0x28, 0xb3, 0xaf, 0x80, 0x52, 0x3b, +0x0e, 0xf9, 0xef, 0x20, 0xe4, 0x2f, 0x75, 0xff, +0x79, 0x56, 0x38, 0xfa, 0xb7, 0xe2, 0x8f, 0xfe, +0x19, 0xf7, 0xaf, 0xe9, 0xe8, 0x7f, 0xa3, 0x66, +0x3b, 0xff, 0x84, 0xfc, 0x77, 0xaa, 0xac, 0xfb, +0xd5, 0x6c, 0xe7, 0xdf, 0x51, 0x66, 0xe7, 0xdf, +0x56, 0x1c, 0xfc, 0xab, 0x8c, 0xad, 0xe6, 0x91, +0xff, 0x1f, 0x7f, 0xfc, 0x01, 0xbf, 0xfc, 0xf2, +0x0b, 0xfc, 0xe7, 0x3f, 0xff, 0x81, 0x7f, 0xfc, +0xe3, 0x1f, 0xf0, 0xb7, 0xbf, 0xfd, 0x0d, 0xba, +0x1a, 0xf1, 0xf5, 0xb4, 0x2e, 0x40, 0xad, 0xd1, +0xbf, 0x90, 0xfb, 0x67, 0xc8, 0x5f, 0xec, 0xfe, +0x4d, 0xee, 0x35, 0x83, 0x0d, 0x46, 0xb6, 0x06, +0x0e, 0xfe, 0xd9, 0x2f, 0xd9, 0xe0, 0x9f, 0xf4, +0xdc, 0xaf, 0x58, 0x00, 0x64, 0xb8, 0xfc, 0x81, +0x3f, 0x5f, 0x4f, 0x05, 0x80, 0x61, 0xdd, 0x7f, +0x94, 0xd4, 0xfd, 0x77, 0x42, 0x68, 0xf3, 0xa0, +0xce, 0xdd, 0x7f, 0xd5, 0xe8, 0x7e, 0xc6, 0xfd, +0xcf, 0x0e, 0x85, 0xea, 0xdd, 0xfd, 0x13, 0x6c, +0xde, 0xf8, 0x8a, 0x42, 0x01, 0xf0, 0xd8, 0xa3, +0xb7, 0x89, 0x8e, 0xf6, 0xa8, 0x29, 0x00, 0xc8, +0xd4, 0x40, 0xf6, 0xf7, 0x78, 0xfe, 0xb9, 0x7b, +0xb4, 0xbe, 0xf6, 0x37, 0x3b, 0x16, 0xce, 0xb8, +0xff, 0xca, 0xbe, 0x2c, 0x1a, 0xfc, 0xd3, 0x4b, +0xf0, 0xef, 0xa0, 0x4e, 0x82, 0x7f, 0x76, 0xfd, +0x95, 0xe0, 0x7f, 0xa0, 0x1a, 0xa2, 0xb3, 0xf7, +0x42, 0x4e, 0x78, 0x0d, 0x54, 0xb9, 0x22, 0x9c, +0xf7, 0x42, 0xa5, 0xd3, 0x5e, 0xa8, 0x70, 0xac, +0x46, 0xf2, 0xaf, 0x42, 0xf2, 0xaf, 0x44, 0xf2, +0x17, 0x09, 0x80, 0x62, 0x14, 0x00, 0x45, 0x28, +0x00, 0x08, 0xf9, 0x17, 0xda, 0x28, 0x70, 0xff, +0xca, 0x46, 0xff, 0x02, 0xc1, 0x3f, 0xee, 0xe8, +0x9f, 0xe7, 0xfe, 0xd7, 0xaa, 0xb3, 0xf3, 0x1f, +0xa6, 0xfd, 0x9d, 0x7f, 0x66, 0xf4, 0x2f, 0x1f, +0xfc, 0x0b, 0x35, 0x0e, 0x87, 0xdf, 0x7f, 0xfb, +0x5d, 0x22, 0x00, 0x7e, 0xfd, 0xf5, 0x57, 0xf8, +0xf9, 0xe7, 0x9f, 0xe1, 0x5f, 0xff, 0xfa, 0x17, +0xfc, 0xf4, 0xd3, 0x4f, 0xf0, 0xc3, 0x0f, 0x3f, +0xc0, 0x37, 0xdf, 0x7c, 0x03, 0xa7, 0x4f, 0x9f, +0x86, 0xda, 0xbc, 0x7d, 0xe0, 0xf8, 0x9e, 0xb3, +0xda, 0xc1, 0x3f, 0xe9, 0xe8, 0x5f, 0xea, 0xfe, +0x4d, 0xef, 0x25, 0x22, 0xc2, 0x12, 0x3e, 0x1c, +0xd1, 0x24, 0xf8, 0xe7, 0x61, 0xe0, 0xe0, 0x9f, +0xf5, 0xa2, 0x09, 0xfe, 0xbd, 0x57, 0x6b, 0xcd, +0x77, 0xff, 0x49, 0xee, 0x55, 0x8b, 0x8d, 0x2f, +0x97, 0x9a, 0xfb, 0xff, 0x93, 0x43, 0x79, 0xc7, +0x2f, 0x2c, 0xf9, 0x3b, 0xe1, 0xb9, 0xdf, 0xcc, +0xa3, 0xd3, 0x3a, 0x0d, 0xfe, 0xa5, 0xcf, 0x8e, +0x43, 0x5f, 0x67, 0x08, 0x8c, 0x76, 0x90, 0xca, +0xdf, 0x24, 0xbd, 0x93, 0x3f, 0x41, 0x43, 0x9d, +0xb7, 0xd2, 0xe0, 0xde, 0x9b, 0x6f, 0x3c, 0xcc, +0x24, 0xfd, 0x55, 0x91, 0x7f, 0xfd, 0x3e, 0x2f, +0xc1, 0x0c, 0xc0, 0x43, 0x0f, 0xdd, 0xa2, 0x55, +0x01, 0x70, 0x06, 0xff, 0x9c, 0x86, 0xda, 0x49, +0xe5, 0xaf, 0x2f, 0x44, 0x8c, 0x77, 0xd3, 0xe0, +0x9f, 0xe0, 0xe8, 0xbf, 0xd5, 0xc0, 0xc1, 0x3f, +0x61, 0x01, 0xe0, 0xd8, 0xbb, 0x17, 0x82, 0xf7, +0xd7, 0x40, 0x42, 0xd6, 0x3e, 0x28, 0xdc, 0xb5, +0x0f, 0x6a, 0xdc, 0xf7, 0x43, 0x8d, 0x2b, 0xc1, +0x3e, 0xd8, 0xeb, 0x52, 0x0b, 0xd5, 0xce, 0x28, +0x00, 0x90, 0xfc, 0x2b, 0x91, 0xfc, 0x2b, 0x1c, +0x14, 0xb8, 0x7f, 0x45, 0xa3, 0x7f, 0x81, 0xe0, +0x1f, 0x33, 0xfa, 0xdf, 0x2a, 0x1d, 0xfd, 0x4b, +0xdc, 0xbf, 0xb2, 0xd1, 0xff, 0x7a, 0xee, 0xe8, +0x5f, 0xc5, 0xce, 0xbf, 0xc0, 0xe8, 0x5f, 0x57, +0x3b, 0xff, 0x04, 0xbd, 0x07, 0xfb, 0x18, 0xf2, +0xff, 0xfd, 0xf7, 0xdf, 0xe1, 0x7f, 0xff, 0xfb, +0x1f, 0xfc, 0xfb, 0xdf, 0xff, 0x86, 0xbf, 0xff, +0xfd, 0xef, 0xf0, 0xd7, 0xbf, 0xfe, 0x15, 0xbe, +0xfd, 0xf6, 0x5b, 0xf8, 0xea, 0xab, 0xaf, 0xe0, +0xe4, 0xc9, 0x93, 0x70, 0xf4, 0xe8, 0x51, 0x18, +0x1f, 0x1b, 0x87, 0x9c, 0xdd, 0xb9, 0x60, 0xbe, +0xc2, 0x4a, 0x75, 0xf0, 0x4f, 0x66, 0xf4, 0x4f, +0xc8, 0xdf, 0xf4, 0x5e, 0x73, 0xd8, 0x7a, 0x8f, +0x05, 0x7c, 0x56, 0xee, 0x4e, 0x83, 0x7f, 0x5a, +0x0e, 0xfe, 0x3d, 0x39, 0x46, 0xdc, 0x3f, 0xe7, +0xd9, 0x7f, 0x9a, 0xcb, 0xef, 0xf8, 0xf3, 0x95, +0x54, 0x00, 0x18, 0xd2, 0xfd, 0xa7, 0xb7, 0x67, +0x70, 0xdd, 0x7f, 0x78, 0xdb, 0x90, 0xce, 0x83, +0x7f, 0xfb, 0x86, 0xcb, 0x19, 0xf7, 0x7f, 0x6c, +0x34, 0xdc, 0x20, 0xee, 0x9f, 0xc5, 0x3b, 0x6f, +0x3f, 0xaa, 0x54, 0x04, 0x90, 0x8d, 0x80, 0xf4, +0x14, 0x4b, 0x86, 0x80, 0x85, 0x04, 0x40, 0x53, +0xbd, 0x0f, 0x5c, 0x79, 0xe5, 0xa5, 0x82, 0xbf, +0xd6, 0x78, 0xf3, 0x6b, 0x5a, 0x75, 0xff, 0xd3, +0xc3, 0xa1, 0x8c, 0xfb, 0x2f, 0x1a, 0x28, 0x5e, +0x96, 0xc1, 0x3f, 0xaf, 0x45, 0x14, 0xfc, 0x73, +0xed, 0xaa, 0x81, 0xb0, 0xda, 0xfd, 0x90, 0x9a, +0x79, 0x00, 0xca, 0xc3, 0xea, 0xe1, 0x80, 0xe7, +0x41, 0xa8, 0xf3, 0xa8, 0x87, 0xfd, 0xee, 0x07, +0x60, 0x9f, 0x7b, 0x1d, 0xd4, 0xba, 0x09, 0x90, +0xbf, 0x13, 0x92, 0xbf, 0xa3, 0x00, 0xf9, 0x73, +0xdc, 0xbf, 0xd0, 0xe8, 0x9f, 0xe7, 0xfe, 0xb7, +0x29, 0x0b, 0xfe, 0x71, 0x47, 0xff, 0x8a, 0x77, +0xfe, 0x09, 0xf9, 0xcb, 0xee, 0xfc, 0x87, 0xa9, +0xdc, 0xf9, 0x0f, 0xd2, 0x78, 0xe7, 0xdf, 0x59, +0xd6, 0xfd, 0xcb, 0xd4, 0xfd, 0x86, 0x9b, 0xec, +0x81, 0xa6, 0xc2, 0xc3, 0xf0, 0xd3, 0x77, 0x3f, +0xf1, 0x46, 0xff, 0xc4, 0xfd, 0xff, 0xf3, 0x9f, +0xff, 0x84, 0x1f, 0x7f, 0xfc, 0x11, 0xbe, 0xff, +0xfe, 0x7b, 0xf8, 0xfa, 0xeb, 0xaf, 0xe1, 0xd4, +0xa9, 0x53, 0x70, 0xec, 0xd8, 0x31, 0x98, 0x99, +0x99, 0x81, 0x09, 0x3c, 0x58, 0x36, 0x32, 0x32, +0x82, 0xed, 0x98, 0x5d, 0x10, 0xe5, 0x1a, 0x03, +0xc6, 0x4f, 0x98, 0x2a, 0xdc, 0xf9, 0xe7, 0x8d, +0xfe, 0xef, 0x63, 0xc9, 0xdf, 0x1c, 0xb6, 0xa1, +0x00, 0x58, 0xeb, 0xe5, 0x38, 0xc7, 0xe0, 0x9f, +0x9b, 0x81, 0x83, 0x7f, 0x96, 0x0b, 0x36, 0xf8, +0xf7, 0x61, 0xf9, 0x0e, 0x24, 0x7e, 0x67, 0xa9, +0xfb, 0x4f, 0x76, 0x4f, 0x59, 0x8c, 0x9c, 0xb9, +0x84, 0xdc, 0x7f, 0xd7, 0xd5, 0x0e, 0x95, 0x9d, +0xbf, 0x71, 0xdd, 0x7f, 0xd6, 0xb1, 0x69, 0x9d, +0x8e, 0xfe, 0xb3, 0x66, 0x87, 0xb0, 0xf2, 0xd7, +0x0f, 0x2b, 0x7f, 0x7d, 0xe6, 0x5d, 0xf9, 0x3b, +0x1f, 0xf2, 0x27, 0x98, 0x46, 0x87, 0x7f, 0xe7, +0x1d, 0xd7, 0xaa, 0x5c, 0xe3, 0xbb, 0xf6, 0x9a, +0x3f, 0x81, 0xd1, 0xe6, 0x57, 0x61, 0x67, 0xd0, +0x7a, 0x88, 0x8b, 0x36, 0x85, 0x5d, 0x3b, 0x37, +0x32, 0x17, 0x00, 0xc9, 0x7a, 0x9f, 0xa2, 0x5f, +0x93, 0x95, 0x6e, 0xa3, 0x35, 0xf2, 0x3f, 0x7d, +0x3c, 0x9e, 0x29, 0xfd, 0xe9, 0x68, 0x0f, 0xc2, +0xd2, 0x9f, 0x3e, 0x1a, 0xfc, 0x53, 0x23, 0xf8, +0xa7, 0x4d, 0xf7, 0xaf, 0x8a, 0xfc, 0x3d, 0x3b, +0xf6, 0x43, 0xc4, 0xde, 0x03, 0x90, 0x95, 0xd1, +0x00, 0x7b, 0xc3, 0x1a, 0xa1, 0xc1, 0xa7, 0x09, +0x0e, 0x7a, 0x37, 0x42, 0xbd, 0x57, 0x83, 0x94, +0xfc, 0x3d, 0x04, 0xc8, 0x1f, 0x51, 0x85, 0x02, +0x80, 0x1d, 0xfd, 0x33, 0xee, 0xdf, 0x5e, 0x2a, +0x00, 0x8a, 0xb9, 0xee, 0xdf, 0x46, 0x59, 0xf0, +0x8f, 0x3b, 0xfa, 0x57, 0xbe, 0xf3, 0x4f, 0xc8, +0x3f, 0x7e, 0x4e, 0x75, 0xbf, 0xe1, 0xfc, 0xba, +0xdf, 0x4f, 0x95, 0x8f, 0xfe, 0x55, 0xef, 0xfc, +0xbb, 0x2a, 0xdc, 0xf9, 0xcf, 0x0d, 0xcc, 0x67, +0x08, 0x5f, 0x28, 0xf8, 0x27, 0x3b, 0xfa, 0x3f, +0x73, 0xe6, 0x0c, 0x9c, 0x38, 0x71, 0x02, 0x66, +0x67, 0x67, 0x61, 0x12, 0xef, 0x95, 0x8c, 0x8e, +0x8e, 0xc2, 0xe0, 0xe0, 0x20, 0xf4, 0xf5, 0xf5, +0x41, 0x57, 0x57, 0x17, 0x1c, 0xa8, 0xa9, 0x07, +0x7f, 0xd3, 0x40, 0xd8, 0xf4, 0x90, 0xb1, 0xdc, +0xce, 0xbf, 0xac, 0xfb, 0xdf, 0x2a, 0x76, 0xff, +0xdb, 0xee, 0xb1, 0x04, 0xe3, 0x0f, 0x77, 0xc8, +0x8d, 0xfe, 0xdf, 0xa7, 0xc1, 0xbf, 0x39, 0x07, +0xff, 0x9e, 0x62, 0xce, 0xfd, 0xba, 0x4a, 0x05, +0x40, 0x2a, 0x39, 0xf7, 0xeb, 0x74, 0x11, 0x15, +0x00, 0x06, 0x75, 0xff, 0x1d, 0x25, 0x5c, 0xf7, +0xbf, 0xa7, 0x73, 0x58, 0xeb, 0xc1, 0x3f, 0x59, +0x01, 0x70, 0x70, 0x30, 0x8f, 0x71, 0xff, 0x27, +0x27, 0x22, 0xf4, 0x1e, 0xfc, 0x13, 0x42, 0xeb, +0xe1, 0x00, 0xb8, 0xfc, 0xb2, 0x8b, 0xb4, 0x7a, +0x03, 0x80, 0xac, 0xfe, 0xcd, 0x4c, 0xc4, 0x6a, +0xaf, 0xf2, 0x17, 0xb7, 0x24, 0x88, 0xfb, 0xcf, +0x1e, 0xaa, 0xa6, 0xc1, 0xbf, 0x05, 0x12, 0xfc, +0xf3, 0x6e, 0xaf, 0x83, 0xac, 0x9c, 0x26, 0x38, +0x10, 0xda, 0x0c, 0x87, 0xfc, 0x9b, 0xa1, 0xc9, +0xef, 0x30, 0x34, 0xfa, 0x1e, 0xe2, 0x93, 0xbf, +0x17, 0x92, 0xbf, 0xa7, 0x94, 0xfc, 0xf7, 0xb9, +0x29, 0x70, 0xff, 0xca, 0x46, 0xff, 0x3b, 0x64, +0x47, 0xff, 0x8a, 0x77, 0xfe, 0x09, 0xf9, 0x6b, +0xbe, 0xf3, 0x1f, 0xab, 0xf1, 0xce, 0x7f, 0x90, +0xca, 0x9d, 0x7f, 0x5f, 0x8d, 0x77, 0xfe, 0xd9, +0xd1, 0x7f, 0x96, 0x6f, 0x0e, 0xfc, 0xf1, 0x3b, +0x9f, 0xfc, 0xd9, 0xd1, 0x3f, 0x37, 0xf8, 0xf7, +0xdd, 0x77, 0xdf, 0xf1, 0x46, 0xff, 0xd3, 0xd3, +0xd3, 0x30, 0x3e, 0x3e, 0x0e, 0xc3, 0xc3, 0xc3, +0xd0, 0xdf, 0xdf, 0x0f, 0xdd, 0xdd, 0xdd, 0xd0, +0xde, 0xde, 0x0e, 0x47, 0x8e, 0x1c, 0x81, 0x43, +0x87, 0x0e, 0x41, 0x71, 0x66, 0x31, 0x38, 0x7f, +0xe6, 0xc6, 0x77, 0xff, 0x62, 0xf2, 0x37, 0xe1, +0x8c, 0xfe, 0x09, 0xf9, 0x9b, 0xdd, 0x6d, 0x09, +0xe6, 0xf7, 0x5a, 0xc1, 0x47, 0x5d, 0x5e, 0xf3, +0x22, 0x7f, 0x43, 0xac, 0xfd, 0xbd, 0xa8, 0xb6, +0xfb, 0xd7, 0x5f, 0xf0, 0x4f, 0x7a, 0xee, 0xd7, +0x59, 0x22, 0x00, 0xd6, 0xa7, 0xb8, 0xf9, 0x2f, +0x56, 0xde, 0x5c, 0x2a, 0xee, 0xff, 0x46, 0x87, +0xaa, 0xae, 0xdf, 0x59, 0xf2, 0x77, 0x2e, 0xef, +0x42, 0xf7, 0xaf, 0xdb, 0xe0, 0x5f, 0xee, 0x74, +0x2f, 0x56, 0xfe, 0x7a, 0xc3, 0x04, 0xee, 0xb1, +0x1b, 0x72, 0xf4, 0x2f, 0x8b, 0xfc, 0x9c, 0x1d, +0x4c, 0xf7, 0xbf, 0xb6, 0x04, 0xc0, 0xae, 0xd0, +0x4d, 0x5a, 0x23, 0x7f, 0xa6, 0xf2, 0x17, 0xc9, +0xbf, 0xb9, 0x2b, 0x1c, 0x09, 0xbf, 0x9f, 0x06, +0xff, 0xe6, 0x44, 0xfe, 0x87, 0xb5, 0x1a, 0xfc, +0x8b, 0xac, 0x39, 0x08, 0xcd, 0x81, 0x2d, 0x70, +0x38, 0xe0, 0x08, 0x8f, 0xfc, 0x1b, 0x7d, 0x0e, +0x09, 0xbb, 0x7f, 0x45, 0xa3, 0x7f, 0x67, 0xd9, +0xd1, 0xbf, 0x28, 0xf8, 0x57, 0x22, 0x13, 0xfc, +0xe3, 0x8e, 0xfe, 0x35, 0xdf, 0xf9, 0x4f, 0xe1, +0x07, 0xff, 0x04, 0x46, 0xff, 0x51, 0x32, 0x75, +0xbf, 0xaa, 0x77, 0xfe, 0x43, 0x34, 0xde, 0xf9, +0x27, 0xe4, 0xef, 0xaa, 0xa2, 0xee, 0x77, 0xcf, +0xb6, 0x48, 0x86, 0xec, 0x65, 0x7f, 0xb0, 0xc1, +0xbf, 0xe9, 0xe1, 0x19, 0xa8, 0xc9, 0xd8, 0x07, +0x69, 0xbe, 0x19, 0x50, 0x18, 0x59, 0x04, 0xfb, +0xf3, 0xeb, 0x30, 0xa7, 0x33, 0xc5, 0x1b, 0xfd, +0x0f, 0x0c, 0x0c, 0x40, 0x6f, 0x6f, 0x2f, 0x74, +0x76, 0x76, 0x42, 0x6b, 0x6b, 0x2b, 0x1c, 0x3e, +0x7c, 0x18, 0x1a, 0x1a, 0x1a, 0xa0, 0xae, 0x0e, +0xff, 0xfc, 0x6b, 0x6b, 0x21, 0xd6, 0x2f, 0x0e, +0x4c, 0x1f, 0x35, 0x93, 0xec, 0xfc, 0x8b, 0x46, +0xff, 0x22, 0xf7, 0x4f, 0x46, 0xff, 0x84, 0xfc, +0xcd, 0xee, 0xb6, 0x02, 0xf3, 0xbb, 0xad, 0x61, +0x65, 0xb2, 0xeb, 0xb2, 0x0a, 0xfe, 0x3d, 0xa7, +0xa3, 0xe0, 0x9f, 0xe8, 0xdc, 0xaf, 0x8b, 0x54, +0x00, 0xa4, 0xb8, 0xe1, 0xb9, 0x5f, 0xa7, 0x73, +0xa9, 0x00, 0x30, 0xac, 0xfb, 0xdf, 0x87, 0x22, +0x40, 0xe2, 0xfe, 0x23, 0x7b, 0x46, 0x75, 0x1a, +0xfc, 0x23, 0x68, 0xee, 0x4f, 0x15, 0x55, 0xfe, +0x4e, 0x47, 0x2f, 0x18, 0xf2, 0x67, 0x71, 0x70, +0xbf, 0x97, 0x60, 0x9a, 0x5f, 0x53, 0xac, 0xfa, +0xe2, 0x79, 0xad, 0x3e, 0xfb, 0x1f, 0xef, 0x0b, +0x60, 0x04, 0x40, 0x2a, 0x12, 0x12, 0x0d, 0xfe, +0x19, 0x3e, 0xf8, 0x17, 0xd8, 0x7c, 0x00, 0x9a, +0x83, 0x5a, 0xa1, 0x39, 0x00, 0x05, 0x80, 0x3f, +0x0a, 0x00, 0x3f, 0x05, 0xee, 0xdf, 0x93, 0xef, +0xfe, 0x45, 0xe4, 0xbf, 0x1f, 0xc9, 0x7f, 0x9f, +0x64, 0xf4, 0xcf, 0x73, 0xff, 0xf6, 0x1a, 0x04, +0xff, 0x78, 0xa3, 0x7f, 0xe5, 0x3b, 0xff, 0x89, +0x1a, 0xef, 0xfc, 0x47, 0x68, 0xbc, 0xf3, 0x4f, +0xc8, 0x5f, 0xf5, 0xce, 0xbf, 0xbb, 0xf2, 0x9d, +0x7f, 0x1c, 0xfd, 0x8f, 0xb6, 0x8d, 0x29, 0xdc, +0xf9, 0xaf, 0x48, 0xa8, 0x64, 0x0a, 0x7f, 0x64, +0x77, 0xfe, 0x2d, 0x5e, 0xb0, 0x86, 0x68, 0xc7, +0x18, 0xe8, 0xe9, 0xe8, 0x85, 0xa1, 0xa1, 0x21, +0xc9, 0xe8, 0xbf, 0xad, 0xad, 0x0d, 0x9a, 0x9b, +0xf1, 0xef, 0xa6, 0xa9, 0x09, 0xea, 0xeb, 0xeb, +0x61, 0xdf, 0x3e, 0xfc, 0x73, 0xaf, 0xc6, 0x0d, +0x8b, 0xf2, 0x72, 0xc8, 0x88, 0xcf, 0x60, 0x4a, +0x84, 0x64, 0x83, 0x7f, 0x22, 0xf7, 0x4f, 0xc8, +0xdf, 0x0a, 0x2c, 0xee, 0xc2, 0xb4, 0xba, 0x85, +0x83, 0x16, 0x47, 0xff, 0x4e, 0xcb, 0x32, 0xf8, +0x27, 0x3a, 0xf7, 0xeb, 0xcc, 0x71, 0xff, 0xce, +0xa4, 0x04, 0xc8, 0x7c, 0x31, 0x73, 0xe7, 0xe2, +0x77, 0xff, 0x55, 0x5d, 0x77, 0x3a, 0x54, 0x77, +0xfd, 0xc1, 0x0a, 0x00, 0x97, 0x8a, 0x2e, 0x9d, +0x07, 0xff, 0x0a, 0x27, 0xdb, 0x18, 0xf2, 0x9f, +0xea, 0x0d, 0x5c, 0x50, 0xee, 0x9f, 0x8b, 0xd3, +0xc7, 0x93, 0xc0, 0x15, 0x8f, 0x51, 0x9d, 0x7f, +0xfe, 0xb9, 0x73, 0x22, 0xff, 0x1d, 0xd6, 0xef, +0x33, 0xc7, 0x82, 0xb4, 0x45, 0xfe, 0x27, 0xa6, +0x45, 0x95, 0xbf, 0x07, 0xbb, 0x63, 0x69, 0xf0, +0x4f, 0x6b, 0xa3, 0xff, 0xa6, 0x79, 0x05, 0xff, +0x72, 0xb3, 0x0e, 0x89, 0xc8, 0x5f, 0xc6, 0xfd, +0x4b, 0xc8, 0xdf, 0x5b, 0x3a, 0xfa, 0x97, 0xb8, +0x7f, 0x37, 0x0d, 0x83, 0x7f, 0xbc, 0xd1, 0x3f, +0x27, 0xf8, 0x27, 0x30, 0xfa, 0xcf, 0x9c, 0x4b, +0xdd, 0xaf, 0x86, 0x3b, 0xff, 0x21, 0x2a, 0x77, +0xfe, 0xfd, 0x55, 0xef, 0xfc, 0x0b, 0x8c, 0xfe, +0xb9, 0x3b, 0xff, 0x5e, 0x9f, 0xfa, 0xca, 0x91, +0x3f, 0x1b, 0xfc, 0xdb, 0x97, 0xb1, 0x5f, 0x5a, +0xf7, 0xfb, 0xb4, 0x70, 0xdd, 0xaf, 0xd5, 0xab, +0xdb, 0xa1, 0x3a, 0xaf, 0x1a, 0x7a, 0x7a, 0x7a, +0xa0, 0xa3, 0xa3, 0x03, 0x5a, 0x5a, 0x5a, 0x98, +0xd1, 0xff, 0xc1, 0x83, 0x07, 0x61, 0xff, 0x7e, +0xfc, 0xb3, 0xaf, 0xc1, 0xac, 0x45, 0x25, 0x4e, +0x58, 0x4a, 0x71, 0xaa, 0x52, 0x58, 0x08, 0x3b, +0x6d, 0xc3, 0x38, 0xa3, 0x7f, 0xa9, 0xfb, 0x27, +0xe4, 0x6f, 0x8e, 0xe4, 0x6f, 0x71, 0x97, 0x0d, +0x6c, 0x7b, 0xd6, 0x96, 0x06, 0xff, 0xe6, 0xe9, +0xfe, 0x9f, 0xed, 0xdb, 0x88, 0x4d, 0x7f, 0x52, +0xf7, 0xbf, 0x31, 0xc9, 0x03, 0xcf, 0xfd, 0x3a, +0x9d, 0x45, 0x05, 0x80, 0x41, 0xf7, 0xfe, 0x3b, +0x8e, 0x88, 0xc8, 0x5f, 0x24, 0x00, 0x62, 0x06, +0x46, 0x75, 0x3a, 0xfa, 0x27, 0x68, 0xeb, 0x89, +0x61, 0x04, 0xc0, 0x57, 0x38, 0xd2, 0x5e, 0x88, +0xe4, 0xcf, 0x5d, 0xf5, 0x6b, 0x39, 0x14, 0x00, +0x1b, 0xd7, 0xbf, 0x0c, 0xd7, 0x5d, 0x77, 0xa5, +0x4a, 0xd2, 0xbf, 0xe2, 0xf2, 0x8b, 0xc1, 0xc4, +0xf8, 0x75, 0xa6, 0xf1, 0xef, 0x1b, 0x2d, 0x3a, +0x7f, 0x51, 0xe5, 0xaf, 0x2f, 0x0c, 0xa0, 0x00, +0x88, 0x1f, 0x6d, 0xa6, 0xc1, 0xbf, 0x05, 0x12, +0xfc, 0xdb, 0x1b, 0xdd, 0xcc, 0x90, 0xbf, 0xc4, +0xfd, 0xfb, 0x1e, 0x56, 0x3c, 0xfa, 0xf7, 0x50, +0x35, 0xfa, 0xe7, 0xef, 0xfc, 0x0b, 0x8d, 0xfe, +0x35, 0xde, 0xf9, 0x67, 0x46, 0xff, 0x69, 0x4a, +0xeb, 0x7e, 0x35, 0xdf, 0xf9, 0x0f, 0x55, 0xbe, +0xf3, 0x2f, 0x30, 0xfa, 0x57, 0xbd, 0xf3, 0xef, +0xc4, 0x73, 0xff, 0xc9, 0x2e, 0xa9, 0x0a, 0x47, +0xff, 0x3e, 0xab, 0xfd, 0x15, 0xd6, 0xfd, 0x72, +0x77, 0xfe, 0xc9, 0xff, 0xde, 0x5b, 0x5c, 0x23, +0x19, 0xfd, 0x37, 0x36, 0x36, 0xc2, 0x81, 0x03, +0x07, 0x98, 0xd1, 0x7f, 0x55, 0x15, 0xfe, 0x39, +0x97, 0xe1, 0x9f, 0x6d, 0x11, 0xfe, 0x79, 0xe6, +0xe7, 0x43, 0xc8, 0xf6, 0x9d, 0x72, 0xc1, 0x3f, +0x76, 0xf4, 0x4f, 0xc8, 0xdf, 0xf2, 0xae, 0xed, +0x60, 0x75, 0xe7, 0x76, 0xf8, 0xb4, 0xce, 0x5d, +0xfb, 0xc1, 0x3f, 0xa5, 0xee, 0x7f, 0xe9, 0x04, +0xff, 0x44, 0xe7, 0x7e, 0x5d, 0x79, 0xee, 0x7f, +0x43, 0x9a, 0xdb, 0xa7, 0x8b, 0x9d, 0x3f, 0x17, +0xb7, 0xfb, 0x2f, 0xeb, 0x7c, 0xc8, 0x61, 0x2f, +0x4b, 0xfe, 0x5d, 0x78, 0x32, 0xb4, 0x4b, 0xe7, +0xc1, 0xbf, 0xb2, 0xf1, 0x46, 0x86, 0xfc, 0x67, +0xf0, 0x7e, 0xbd, 0xb6, 0xdc, 0xff, 0xf1, 0xe9, +0x78, 0x68, 0x6b, 0x0e, 0x82, 0xb2, 0x22, 0x47, +0x48, 0x8c, 0xdd, 0x0a, 0x45, 0xd8, 0xb7, 0x4f, +0x02, 0x7d, 0x27, 0x66, 0xe2, 0xe6, 0x2d, 0x00, +0xb8, 0x2b, 0x7f, 0x07, 0xf7, 0x7b, 0x83, 0x93, +0xc3, 0x27, 0xf0, 0xca, 0x4b, 0x0f, 0xc0, 0xab, +0x2f, 0x3f, 0x00, 0x6f, 0xbf, 0xf9, 0x28, 0x7c, +0xf4, 0xe1, 0x53, 0xb0, 0xf2, 0xf3, 0xe7, 0x60, +0xcf, 0xae, 0xcd, 0x70, 0x6c, 0x2a, 0x4e, 0xeb, +0x8d, 0x7f, 0x04, 0xc7, 0x26, 0xf6, 0x30, 0xee, +0xbf, 0xa6, 0x27, 0x55, 0x67, 0xc1, 0xbf, 0xe0, +0x65, 0x1e, 0xfc, 0x53, 0xee, 0xfe, 0x85, 0x1b, +0xff, 0x2a, 0xe2, 0x0e, 0x8b, 0xc8, 0x5f, 0xcd, +0xe0, 0x1f, 0x77, 0xf4, 0x3f, 0xef, 0x9d, 0x7f, +0x66, 0xf4, 0xaf, 0x7c, 0xe7, 0x3f, 0x59, 0xe3, +0x9d, 0xff, 0x28, 0x8d, 0x77, 0xfe, 0xfd, 0x55, +0xee, 0xfc, 0x7b, 0xc9, 0xbb, 0xff, 0xd7, 0x95, +0xef, 0xfc, 0xe7, 0xef, 0x2c, 0x14, 0x0c, 0xfe, +0x7d, 0x7b, 0xe6, 0x5b, 0xd5, 0xc7, 0x7e, 0x38, +0x75, 0xbf, 0x56, 0xaf, 0xd9, 0x40, 0x53, 0xe3, +0x21, 0xde, 0xe8, 0x7f, 0xef, 0x5e, 0xdc, 0xb2, +0xa8, 0x40, 0x81, 0x55, 0x82, 0xa2, 0xaa, 0xa0, +0x00, 0xb2, 0x32, 0xb3, 0xc1, 0xf6, 0x55, 0x07, +0x85, 0xa3, 0x7f, 0x46, 0x00, 0xdc, 0x49, 0x04, +0xc0, 0x0e, 0x58, 0x1b, 0xec, 0x42, 0x83, 0x7f, +0x73, 0x0c, 0xfe, 0xad, 0x60, 0xce, 0xfd, 0x4a, +0xc9, 0x7f, 0x63, 0xa2, 0xc7, 0x57, 0x4b, 0xe1, +0xf1, 0xf9, 0xe2, 0x76, 0xff, 0x99, 0x1d, 0xbd, +0x52, 0xf7, 0xdf, 0x05, 0x71, 0xc3, 0xe3, 0x3a, +0x75, 0xff, 0xe9, 0x58, 0xf9, 0xdb, 0xdd, 0xb5, +0x4b, 0x5c, 0xf9, 0x9b, 0x38, 0x6f, 0xf2, 0xff, +0xea, 0x44, 0x32, 0x38, 0xd8, 0x7d, 0x04, 0x17, +0x5c, 0x70, 0x9e, 0x42, 0x57, 0xfe, 0xe7, 0x3f, +0x5f, 0x0a, 0x0f, 0x63, 0x11, 0xcf, 0xbb, 0xef, +0x3c, 0x06, 0xa6, 0xe8, 0xce, 0x7d, 0xbd, 0x56, +0x41, 0x4a, 0xa2, 0x39, 0xec, 0xdf, 0xeb, 0x8e, +0x57, 0xf9, 0xc2, 0x91, 0xac, 0x93, 0x35, 0xee, +0xfb, 0x57, 0x05, 0x6d, 0x92, 0x3f, 0x53, 0xf9, +0xdb, 0xe9, 0x0d, 0x7d, 0x6d, 0x5e, 0x10, 0x39, +0xd6, 0x41, 0x83, 0x7f, 0x12, 0xf2, 0x6f, 0x33, +0x58, 0xf0, 0x8f, 0x5d, 0xfb, 0xcb, 0xc8, 0x6d, +0x54, 0x38, 0xfa, 0x57, 0x2b, 0xf8, 0xa7, 0x72, +0xf4, 0x5f, 0xaa, 0xb4, 0xee, 0x37, 0x7b, 0x4e, +0x75, 0xbf, 0x89, 0x1a, 0xd7, 0xfd, 0x2a, 0xdf, +0xf9, 0x0f, 0xe4, 0xbb, 0x7f, 0x35, 0xeb, 0x7e, +0x15, 0xed, 0xfc, 0x93, 0xc6, 0xbf, 0x18, 0x9b, +0x38, 0x85, 0x75, 0xbf, 0xf6, 0x6f, 0x3a, 0x2a, +0x1c, 0xfd, 0xcb, 0xd6, 0xfd, 0x92, 0x9d, 0xff, +0x9c, 0xf8, 0x5c, 0x49, 0xf0, 0x8f, 0x1d, 0xfd, +0xe7, 0x65, 0xe4, 0x41, 0x4e, 0x66, 0x2e, 0xa4, +0x27, 0xa4, 0x83, 0xdd, 0x1b, 0x8e, 0x72, 0xa3, +0x7f, 0x33, 0xce, 0xe8, 0x9f, 0x25, 0x7f, 0xeb, +0x3b, 0x6c, 0xc1, 0x64, 0xa5, 0x23, 0x0d, 0xfe, +0xcd, 0x61, 0xf4, 0x4f, 0xb0, 0x36, 0xcd, 0x9d, +0x2f, 0x00, 0x32, 0x5c, 0x9e, 0xa7, 0x02, 0xc0, +0x90, 0xee, 0xbf, 0xa8, 0xf3, 0x39, 0x2e, 0xf9, +0xbb, 0x57, 0xf6, 0xe8, 0x3c, 0xf8, 0x57, 0x8d, +0xc5, 0x28, 0xc4, 0xfd, 0x1f, 0x1d, 0x09, 0xd3, +0x8a, 0xf3, 0xb7, 0xb1, 0x7c, 0x6f, 0xde, 0x41, +0x3d, 0xb2, 0xbf, 0x7f, 0xeb, 0x2d, 0x57, 0xc1, +0x0b, 0xcf, 0xdf, 0x0b, 0xab, 0x56, 0x3e, 0x0f, +0x76, 0x3b, 0x3e, 0x80, 0xf0, 0xb0, 0x4d, 0xcc, +0xd5, 0x3e, 0x32, 0x45, 0x38, 0x36, 0x1d, 0xa7, +0x11, 0xf9, 0x6b, 0x5b, 0x00, 0xcc, 0x8c, 0xee, +0x62, 0xdc, 0x7f, 0x59, 0x5f, 0xae, 0xde, 0x82, +0x7f, 0x41, 0x34, 0xf8, 0xa7, 0x56, 0xe3, 0xdf, +0xce, 0xfa, 0x03, 0xca, 0x83, 0x7f, 0x4a, 0x47, +0xff, 0x35, 0xbc, 0xba, 0x5f, 0xd9, 0x9d, 0xff, +0x22, 0x55, 0x3b, 0xff, 0xe6, 0xb2, 0x3b, 0xff, +0x99, 0x2a, 0x77, 0xfe, 0xe3, 0xe6, 0xb4, 0xf3, +0xbf, 0x8b, 0xbf, 0xf3, 0xaf, 0x46, 0xdd, 0xaf, +0x97, 0x3a, 0x75, 0xbf, 0x02, 0xc1, 0x3f, 0x42, +0xfe, 0xa4, 0xed, 0xcf, 0xe7, 0x0b, 0x3f, 0x85, +0x3b, 0xff, 0x89, 0x6e, 0x49, 0x12, 0xf2, 0x17, +0x74, 0xff, 0x32, 0x75, 0xbf, 0xe1, 0xf6, 0xbb, +0x79, 0xa3, 0x7f, 0x12, 0xfc, 0x73, 0xfd, 0xdc, +0x5d, 0xe1, 0xce, 0xbf, 0xec, 0xe8, 0x9f, 0x2b, +0x00, 0xac, 0xef, 0xb5, 0x83, 0xf7, 0x07, 0x68, +0xf0, 0x8f, 0x25, 0x7f, 0x75, 0xdd, 0xff, 0x2b, +0xcc, 0xb9, 0x5f, 0xe9, 0xb3, 0xff, 0x0d, 0x89, +0x9e, 0x13, 0x4b, 0x65, 0x7d, 0x7e, 0xf1, 0xba, +0xff, 0xec, 0x8e, 0x31, 0xae, 0x00, 0x48, 0x18, +0x9d, 0xd0, 0x69, 0xf0, 0x2f, 0x63, 0x76, 0x14, +0xfa, 0x3b, 0x83, 0xb0, 0xf2, 0xd7, 0x1b, 0xbe, +0xc5, 0x70, 0xdc, 0x7c, 0x05, 0x40, 0x5f, 0x67, +0x18, 0x9c, 0x75, 0xd6, 0x59, 0x5a, 0xdd, 0xd9, +0x57, 0x36, 0x45, 0x20, 0x75, 0xbe, 0xef, 0xbe, +0xfd, 0x18, 0xf3, 0x8c, 0xdf, 0xdb, 0x73, 0x15, +0x73, 0xdd, 0xaf, 0xb3, 0x35, 0x58, 0xa7, 0xe4, +0x7f, 0xe6, 0x44, 0x22, 0x56, 0xfe, 0x7a, 0x42, +0x77, 0xbb, 0x3f, 0xec, 0x19, 0xef, 0xa1, 0xc1, +0xbf, 0x05, 0x10, 0xfc, 0xe3, 0x0a, 0x00, 0xc7, +0x81, 0x7d, 0xd0, 0x10, 0xa0, 0xde, 0xe8, 0x5f, +0xe3, 0x9d, 0x7f, 0xc1, 0xd1, 0x7f, 0x81, 0xd2, +0xba, 0x5f, 0x39, 0xf7, 0x6f, 0xa4, 0x6a, 0xe7, +0x3f, 0x86, 0xef, 0xfe, 0xbf, 0x54, 0xbd, 0xf3, +0x1f, 0xa8, 0x6a, 0xe7, 0x9f, 0x90, 0xbf, 0xd8, +0xfd, 0x07, 0x7c, 0x11, 0x0c, 0xe5, 0x11, 0x95, +0xb0, 0x3f, 0xf5, 0x00, 0x24, 0x3b, 0xa4, 0x32, +0x13, 0x00, 0x55, 0x75, 0xbf, 0x36, 0x2b, 0x6c, +0xc1, 0xe6, 0x45, 0x5b, 0xf8, 0xf5, 0x97, 0x5f, +0x79, 0x75, 0xbf, 0xec, 0xce, 0xff, 0xf1, 0xd9, +0xe3, 0xd8, 0xf1, 0xef, 0xa2, 0xf6, 0xa5, 0xbf, +0xd4, 0xf0, 0x34, 0x26, 0xf8, 0xc7, 0x1d, 0xfd, +0x07, 0x60, 0x19, 0x90, 0xaa, 0xd4, 0xbf, 0xac, +0xfb, 0xb7, 0xb9, 0x03, 0xab, 0x88, 0x6f, 0xb7, +0x87, 0xcf, 0x73, 0xdd, 0x68, 0xf0, 0x4f, 0x03, +0xf7, 0xff, 0xd8, 0xc4, 0x6a, 0x4c, 0xfa, 0xbb, +0x4b, 0x05, 0x80, 0x28, 0x04, 0x78, 0x0f, 0x15, +0x00, 0x86, 0x74, 0xff, 0xf9, 0x9d, 0x6f, 0x72, +0xc9, 0xdf, 0xb3, 0xaa, 0x47, 0xe7, 0xc1, 0xbf, +0xfd, 0x43, 0x25, 0x8c, 0xfb, 0x3f, 0x3e, 0xb6, +0x5b, 0x2b, 0xee, 0x3f, 0x34, 0x78, 0x83, 0x5e, +0xc8, 0x5f, 0x15, 0xee, 0xbc, 0xf3, 0x5a, 0x7c, +0x9c, 0xe0, 0xa1, 0x81, 0x00, 0x50, 0x3f, 0xf8, +0x37, 0x35, 0xb4, 0x93, 0x71, 0xff, 0x05, 0x03, +0xa5, 0x06, 0x1b, 0xfd, 0x07, 0x1a, 0x3c, 0xf8, +0xd7, 0xb1, 0x20, 0x1b, 0xff, 0xd8, 0xba, 0xdf, +0xe2, 0xb8, 0x06, 0xcd, 0x77, 0xfe, 0x05, 0x47, +0xff, 0xca, 0x77, 0xfe, 0x73, 0xe7, 0xb4, 0xf3, +0x9f, 0xac, 0x74, 0xe7, 0x3f, 0x52, 0x66, 0xe7, +0x3f, 0x5c, 0x9d, 0x9d, 0x7f, 0x66, 0xf4, 0xaf, +0x3a, 0xf8, 0x97, 0xed, 0x9d, 0x0b, 0xff, 0xfb, +0xf9, 0x7f, 0xbc, 0x67, 0xf9, 0x13, 0x1d, 0x13, +0xe0, 0xf1, 0xbe, 0x97, 0xdc, 0xce, 0xbf, 0xc4, +0xfd, 0xaf, 0x10, 0x09, 0x00, 0xeb, 0x17, 0x76, +0xc0, 0x50, 0xcb, 0xb0, 0x24, 0xf8, 0x27, 0x5b, +0xf7, 0xdb, 0x7d, 0xb8, 0x1b, 0xec, 0xde, 0x72, +0x60, 0x82, 0x7e, 0xc6, 0x8f, 0x4b, 0x47, 0xff, +0x8c, 0xfb, 0x7f, 0xd8, 0x58, 0x52, 0xf7, 0xbb, +0xe5, 0x49, 0x0c, 0x02, 0x56, 0xd5, 0x48, 0x46, +0xff, 0x6c, 0xf0, 0x6f, 0xb7, 0xcb, 0x1e, 0x69, +0xdd, 0xaf, 0xc0, 0xce, 0x3f, 0x9f, 0xfc, 0xc5, +0x02, 0xe0, 0x76, 0x91, 0x00, 0xd8, 0x64, 0xe7, +0x42, 0x83, 0x7f, 0x1a, 0x04, 0xff, 0x44, 0xe7, +0x7e, 0x5d, 0x24, 0x02, 0x00, 0xdd, 0x7f, 0xdb, +0x52, 0xaa, 0xcf, 0x5f, 0x9c, 0xee, 0x3f, 0xa7, +0xf3, 0x28, 0x57, 0x00, 0x24, 0x4d, 0x4c, 0xea, +0x34, 0xf8, 0x97, 0x3d, 0x33, 0x88, 0x4e, 0xd6, +0x0f, 0xc6, 0x3a, 0x7d, 0x99, 0xe7, 0xec, 0x4b, +0x49, 0x00, 0xb0, 0x77, 0x02, 0x4e, 0xce, 0x26, +0x68, 0xd5, 0xfd, 0x9f, 0x3a, 0x26, 0xaa, 0xfc, +0x6d, 0xeb, 0x08, 0x81, 0x5d, 0x72, 0xa5, 0x3f, +0x34, 0xf8, 0x67, 0xa8, 0xe0, 0x9f, 0xac, 0x00, +0x88, 0x2d, 0x3d, 0xa0, 0xe6, 0xe8, 0x7f, 0x1f, +0xaf, 0xee, 0x57, 0xe5, 0xce, 0xbf, 0x5a, 0x75, +0xbf, 0xd9, 0x2a, 0xeb, 0x7e, 0x35, 0xda, 0xf9, +0x67, 0x46, 0xff, 0x9a, 0xed, 0xfc, 0xfb, 0x08, +0x04, 0xff, 0x02, 0x57, 0x06, 0x33, 0x0e, 0x5e, +0xe8, 0xc7, 0xc1, 0xec, 0x06, 0x85, 0xa3, 0x7f, +0x96, 0xfc, 0xc9, 0x5e, 0xbe, 0xf7, 0x17, 0xbe, +0xf0, 0xaf, 0x7f, 0xfe, 0x8b, 0x19, 0xfd, 0x73, +0x8f, 0xfd, 0xb0, 0x75, 0xbf, 0x23, 0x83, 0xa3, +0x10, 0x6a, 0xbe, 0x4b, 0x24, 0x00, 0x04, 0x46, +0xff, 0xa6, 0x4f, 0x9b, 0x41, 0x41, 0x6a, 0x21, +0x6f, 0xe7, 0xbf, 0xb8, 0xb8, 0x98, 0x49, 0xfd, +0xef, 0x72, 0x0a, 0x57, 0x32, 0xfa, 0xb7, 0xc6, +0xd1, 0xbf, 0xb0, 0xfb, 0xdf, 0x71, 0x9b, 0x03, +0x98, 0xe3, 0x7f, 0x37, 0x0d, 0xfe, 0xa9, 0x37, +0xfa, 0x7f, 0x7c, 0x7c, 0x0d, 0x1e, 0xfc, 0x71, +0x97, 0x0a, 0x80, 0x0c, 0x57, 0x3c, 0xf7, 0xeb, +0x7c, 0x03, 0x15, 0x00, 0x86, 0x74, 0xff, 0xb9, +0x9d, 0x9f, 0x39, 0xd4, 0x74, 0x4b, 0xc8, 0xdf, +0x7b, 0x6f, 0xaf, 0xce, 0xdd, 0x7f, 0xe3, 0x40, +0xb6, 0xa8, 0xf2, 0x77, 0x32, 0x52, 0x6b, 0x6b, +0x7f, 0xed, 0x47, 0x82, 0x14, 0xf6, 0xef, 0x93, +0x13, 0xbe, 0xc5, 0xf9, 0x76, 0x4c, 0x32, 0xdf, +0xd2, 0xfc, 0x1d, 0x78, 0xfb, 0xad, 0x47, 0xe1, +0x8e, 0xdb, 0xaf, 0xd1, 0x6a, 0xc3, 0x9f, 0x2c, +0xa6, 0xc7, 0x63, 0xb4, 0xea, 0xfe, 0x27, 0xfa, +0x83, 0x18, 0xf7, 0x9f, 0x31, 0x54, 0x4b, 0x83, +0x7f, 0x0b, 0x28, 0xf8, 0x27, 0x7b, 0xec, 0xc7, +0xbb, 0xa5, 0x56, 0x6e, 0xe7, 0x9f, 0x90, 0xbf, +0xd2, 0x9d, 0x7f, 0x47, 0x75, 0x76, 0xfe, 0x8b, +0x94, 0xee, 0xfc, 0x67, 0xcc, 0x65, 0xe7, 0x9f, +0x19, 0xfd, 0xc7, 0x69, 0x5c, 0xf7, 0x1b, 0xac, +0xb2, 0xee, 0x97, 0xef, 0xfe, 0xf3, 0xfc, 0x0b, +0x40, 0xd1, 0x8f, 0x6f, 0x8e, 0x7d, 0xc3, 0x90, +0x3f, 0xbb, 0xf3, 0x2f, 0xb9, 0xf4, 0x47, 0xdc, +0xff, 0x0b, 0x52, 0x01, 0x60, 0xf9, 0x9c, 0x0d, +0x54, 0x26, 0x54, 0x09, 0xd6, 0xfd, 0x92, 0x63, +0x3f, 0x6c, 0xdd, 0x6f, 0x4b, 0x43, 0x0b, 0xc4, +0x79, 0xc6, 0x83, 0xe7, 0x5a, 0x6f, 0xb0, 0x7b, +0xcf, 0x01, 0x1c, 0x3e, 0x72, 0x82, 0x70, 0x87, +0x3d, 0x50, 0x96, 0x5f, 0xce, 0x1b, 0xfd, 0xb3, +0x3b, 0xff, 0xb9, 0xb9, 0xb9, 0xe0, 0xf4, 0x81, +0x2b, 0x67, 0xf4, 0x2f, 0xdd, 0xf9, 0x57, 0x3c, +0xfa, 0x97, 0x0a, 0x00, 0xdb, 0xdb, 0x1c, 0xe1, +0xc3, 0x23, 0x6e, 0x34, 0xf8, 0xa7, 0x46, 0xf0, +0xef, 0xdd, 0x1a, 0x6b, 0xd8, 0x2c, 0x71, 0xff, +0x2e, 0xe8, 0xfe, 0x3d, 0x2a, 0x97, 0x12, 0xf9, +0x2f, 0x4e, 0x01, 0x90, 0xdf, 0xf9, 0x95, 0x44, +0x00, 0xe0, 0x0a, 0x60, 0xf2, 0xe4, 0xa4, 0x4e, +0x83, 0x7f, 0x79, 0xd3, 0xdd, 0x58, 0xf9, 0xeb, +0x05, 0x93, 0x3d, 0xfe, 0x5a, 0xdf, 0xf9, 0x37, +0xdf, 0xf6, 0xb6, 0x42, 0x42, 0x7e, 0xfe, 0xd9, +0x7b, 0x60, 0x76, 0x22, 0x46, 0xa6, 0xdc, 0x27, +0x91, 0x09, 0xf6, 0x65, 0xa6, 0x5a, 0x81, 0xa7, +0xdb, 0x17, 0xb0, 0xe6, 0xcb, 0x17, 0xe0, 0xa9, +0x27, 0xef, 0x80, 0x3f, 0xfd, 0xe9, 0x92, 0x79, +0x91, 0x3f, 0xb9, 0x1f, 0xa0, 0x4d, 0xf7, 0x7f, +0x72, 0x36, 0x86, 0x21, 0xff, 0x43, 0x5d, 0x7b, +0x68, 0xf0, 0x6f, 0x11, 0x9c, 0xfa, 0xad, 0x0d, +0x6a, 0x98, 0x43, 0xdd, 0x6f, 0x95, 0xca, 0xba, +0x5f, 0x6d, 0xef, 0xfc, 0x47, 0xab, 0xda, 0xf9, +0x5f, 0x29, 0xb4, 0xf3, 0xbf, 0x53, 0xa3, 0x9d, +0x7f, 0x92, 0xfa, 0xcf, 0x70, 0xcf, 0x52, 0x21, +0x00, 0x1c, 0xf9, 0xee, 0x7f, 0x05, 0xdf, 0xfd, +0x13, 0xf2, 0xb7, 0x78, 0xd6, 0x1a, 0xac, 0x5f, +0xda, 0x01, 0x47, 0x27, 0x8e, 0x49, 0x8e, 0xfd, +0x9c, 0x3e, 0x7d, 0x1a, 0x8e, 0x1f, 0x3f, 0xce, +0xab, 0xfb, 0x25, 0xc7, 0x7e, 0x84, 0xea, 0x7e, +0x85, 0x76, 0xfe, 0xf3, 0xf2, 0xf2, 0x20, 0x3d, +0x39, 0x1d, 0xb6, 0x3e, 0x20, 0x1d, 0xfd, 0x2b, +0xda, 0xf9, 0x97, 0x1d, 0xfd, 0xb3, 0xe4, 0x6f, +0x77, 0xab, 0x13, 0xac, 0x8e, 0x70, 0xa5, 0xc1, +0x3f, 0x15, 0xee, 0xff, 0x89, 0xb1, 0x35, 0x78, +0xe4, 0xc7, 0x5d, 0x2a, 0x00, 0xd2, 0xdc, 0xf0, +0xdc, 0xaf, 0xf3, 0x95, 0x54, 0x00, 0x18, 0x76, +0xf4, 0xbf, 0x49, 0x44, 0xfe, 0x22, 0x01, 0xe0, +0x5b, 0xdb, 0xa7, 0xd3, 0xe0, 0x1f, 0x41, 0x83, +0xd8, 0xfd, 0x9f, 0x9e, 0x89, 0xd1, 0xba, 0x00, +0x20, 0xae, 0xfb, 0xea, 0xab, 0xae, 0x50, 0x48, +0xcc, 0x8f, 0x3e, 0x7c, 0x2b, 0x4c, 0x0c, 0x47, +0xa8, 0xb5, 0xf3, 0xdf, 0xde, 0x12, 0xa4, 0x74, +0x9d, 0x50, 0x11, 0x48, 0x10, 0x31, 0xd0, 0x7f, +0xad, 0x56, 0xdd, 0xff, 0x18, 0x8a, 0x25, 0x22, +0x00, 0x92, 0x46, 0x1a, 0x69, 0xf0, 0x6f, 0x81, +0x05, 0xff, 0x64, 0xc9, 0x9f, 0x20, 0x23, 0xb5, +0x4e, 0xe9, 0xce, 0x7f, 0xb5, 0x56, 0x76, 0xfe, +0x73, 0xe7, 0xbf, 0xf3, 0x2f, 0x38, 0xfa, 0x8f, +0xd4, 0xb8, 0xee, 0x57, 0xf9, 0xce, 0xbf, 0x27, +0x78, 0xbd, 0xef, 0x0b, 0xff, 0xf8, 0xeb, 0x3f, +0x05, 0x05, 0x40, 0x75, 0x42, 0x8d, 0x24, 0xf8, +0xe7, 0xbb, 0x32, 0x00, 0x0e, 0x64, 0xd6, 0x43, +0x4b, 0x79, 0x2b, 0xb3, 0xfb, 0xef, 0xf8, 0x96, +0xb3, 0x88, 0xfc, 0x9f, 0xb3, 0x66, 0x04, 0x00, +0xd9, 0xf9, 0x77, 0xff, 0xc4, 0x13, 0x86, 0xf0, +0x30, 0x19, 0x3b, 0xfa, 0x27, 0xc7, 0x7e, 0xa6, +0xa6, 0xa6, 0x60, 0x6c, 0x6c, 0x8c, 0x57, 0xf7, +0xcb, 0x1e, 0xfb, 0x11, 0xaa, 0xfb, 0x65, 0x77, +0xfe, 0x73, 0x72, 0x72, 0xc0, 0x67, 0xb3, 0x9f, +0xc2, 0xe0, 0x9f, 0xc2, 0xd1, 0xff, 0xed, 0x28, +0x54, 0x90, 0xfc, 0x6d, 0x6f, 0x15, 0x09, 0x00, +0x93, 0x0d, 0x2e, 0x34, 0xf8, 0xa7, 0x22, 0xf8, +0x47, 0xce, 0xfd, 0x12, 0xf2, 0x67, 0x05, 0xc0, +0xfa, 0x24, 0xcf, 0xa4, 0xa5, 0x46, 0xfe, 0x8b, +0x4a, 0x00, 0x38, 0xd6, 0x76, 0x9f, 0xed, 0x50, +0xd8, 0xf5, 0x83, 0x44, 0x00, 0x54, 0x77, 0x41, +0x2a, 0xbe, 0x91, 0x74, 0x39, 0xfa, 0x4f, 0xc5, +0xbd, 0x7f, 0x26, 0xf9, 0x8f, 0xe7, 0x7e, 0x75, +0xd5, 0xf8, 0xd7, 0x54, 0xef, 0x03, 0x57, 0x5e, +0x79, 0xa9, 0x42, 0x82, 0xbe, 0xe7, 0xee, 0xeb, +0x61, 0xb0, 0x77, 0x97, 0xca, 0xc2, 0x1f, 0x2b, +0x8b, 0x77, 0x15, 0xfe, 0x1e, 0x1b, 0xd6, 0xbd, +0xc4, 0xac, 0x05, 0x06, 0x21, 0xd1, 0x1b, 0x6d, +0x7a, 0x15, 0x5e, 0x7a, 0xf1, 0x7e, 0x78, 0xe8, +0xc1, 0x9b, 0x99, 0x33, 0xc0, 0x31, 0x91, 0x26, +0x5a, 0x25, 0xff, 0xe3, 0x53, 0x51, 0x0c, 0xf9, +0xd7, 0x75, 0x27, 0xd0, 0xe0, 0xdf, 0x02, 0x0d, +0xfe, 0x71, 0xc9, 0x9f, 0x20, 0xb4, 0xa6, 0x96, +0xef, 0xfe, 0xe7, 0x5c, 0xf7, 0xab, 0x78, 0xe7, +0x3f, 0x6b, 0x4e, 0x3b, 0xff, 0x09, 0x3a, 0xd8, +0xf9, 0x0f, 0x50, 0x6b, 0xe7, 0x3f, 0xda, 0x22, +0x16, 0x7e, 0xfc, 0xf6, 0x47, 0x69, 0x93, 0xdf, +0xff, 0x7e, 0x85, 0xa6, 0xfc, 0x43, 0x4c, 0xf8, +0x8f, 0x90, 0x7f, 0xb8, 0x69, 0x04, 0xfc, 0xfc, +0xaf, 0x9f, 0x79, 0xe2, 0xe0, 0xdf, 0xff, 0xf8, +0x37, 0x94, 0x46, 0x95, 0x31, 0x5b, 0x00, 0x4c, +0xe1, 0x8f, 0xb8, 0xf1, 0xcf, 0x72, 0x85, 0x0d, +0xec, 0xcb, 0xdd, 0xcf, 0x1b, 0xfd, 0x93, 0x4b, +0x7f, 0xe4, 0xd8, 0x8f, 0x50, 0xdd, 0x2f, 0x77, +0xe7, 0x9f, 0x3b, 0xfa, 0xf7, 0xdf, 0x1a, 0xa8, +0xf6, 0xce, 0xbf, 0xd0, 0xe8, 0x9f, 0x90, 0xbf, +0xfd, 0xad, 0xce, 0x60, 0xfb, 0x20, 0x0a, 0x80, +0x51, 0x1a, 0xfc, 0x53, 0xe4, 0xfe, 0x9f, 0x1c, +0x59, 0x0b, 0x9b, 0xd3, 0xdc, 0xa4, 0x02, 0x20, +0xd5, 0x1d, 0xcf, 0xfd, 0xba, 0x5c, 0x4c, 0x05, +0x80, 0x21, 0x47, 0xff, 0x59, 0x9d, 0xd6, 0x0e, +0xb5, 0xac, 0xfb, 0x47, 0x07, 0x57, 0xd7, 0xaf, +0xd3, 0xe0, 0x1f, 0x53, 0xfc, 0x33, 0x3b, 0x26, +0xea, 0xfc, 0xef, 0x0f, 0xd4, 0xe9, 0xa9, 0xdf, +0x86, 0x3a, 0x6f, 0xa5, 0x63, 0xfc, 0x5b, 0x6e, +0xbe, 0x0a, 0xba, 0xdb, 0x42, 0x14, 0x0a, 0x80, +0xbe, 0xae, 0x50, 0x85, 0xee, 0x9f, 0x8c, 0xf7, +0xc7, 0x87, 0x22, 0xf4, 0xb2, 0xf3, 0x4f, 0x30, +0xd2, 0xe5, 0x03, 0xfd, 0xad, 0x1e, 0x10, 0x33, +0xda, 0x4a, 0x83, 0x7f, 0x06, 0x0c, 0xfe, 0xa9, +0x2b, 0x00, 0xb6, 0x8f, 0x54, 0x83, 0x53, 0xcf, +0x5e, 0x35, 0xea, 0x7e, 0xf7, 0xf2, 0xea, 0x7e, +0x65, 0x77, 0xfe, 0x0b, 0x55, 0xed, 0xfc, 0x0b, +0x8e, 0xfe, 0x95, 0xef, 0xfc, 0xc7, 0xca, 0xba, +0xff, 0xb5, 0xda, 0xdf, 0xf9, 0xf7, 0x54, 0xb2, +0xf3, 0x4f, 0x10, 0x65, 0x1e, 0x03, 0x31, 0x56, +0x71, 0xe0, 0xf9, 0x91, 0x0f, 0x2f, 0xf8, 0x37, +0xde, 0x31, 0x2e, 0x58, 0xf7, 0x4b, 0x76, 0xfe, +0x4f, 0x1f, 0x3d, 0x8d, 0xfb, 0xfe, 0xc9, 0x8c, +0x00, 0xe0, 0x16, 0xfe, 0x24, 0x78, 0x24, 0xc1, +0xf8, 0xd8, 0x38, 0x8c, 0x8e, 0x8e, 0xca, 0x8d, +0xfe, 0xc9, 0xb1, 0x1f, 0xa1, 0xba, 0x5f, 0x36, +0xf8, 0x17, 0x68, 0x16, 0xa4, 0x56, 0xdd, 0xaf, +0x44, 0x00, 0x08, 0x90, 0xbf, 0x1d, 0x92, 0xbf, +0xfd, 0x2d, 0xb8, 0xc2, 0x88, 0xf8, 0xb4, 0x8c, +0x06, 0xff, 0x14, 0xb9, 0xff, 0xcf, 0x8a, 0x1c, +0x24, 0xe4, 0x4f, 0xb0, 0x3e, 0xd9, 0xc3, 0x77, +0x29, 0x92, 0xff, 0xa2, 0x11, 0x00, 0xe8, 0xfe, +0xcf, 0x73, 0x2c, 0xee, 0xfa, 0xbb, 0x44, 0x00, +0x54, 0x75, 0x43, 0xda, 0x8c, 0xae, 0xdd, 0xbf, +0x08, 0x43, 0x1d, 0xbe, 0x30, 0x31, 0x8f, 0xe7, +0xff, 0xea, 0xf6, 0xfd, 0xd7, 0xef, 0xf3, 0x84, +0x3f, 0x5d, 0x71, 0xb1, 0x42, 0x11, 0x70, 0xed, +0x35, 0x7f, 0x82, 0x23, 0x8d, 0x7e, 0x82, 0xee, +0x9f, 0x54, 0xf9, 0x2a, 0xfa, 0x75, 0xee, 0x2e, +0x9f, 0xeb, 0x8d, 0xfc, 0x8f, 0x8e, 0x8b, 0x2a, +0x7f, 0xab, 0x7a, 0x33, 0x68, 0xf0, 0x6f, 0x01, +0x07, 0xff, 0xb8, 0xe4, 0xcf, 0xa2, 0x28, 0x7c, +0x3f, 0x6f, 0xf4, 0x3f, 0xff, 0x9d, 0xff, 0x7c, +0xa5, 0x3b, 0xff, 0xa9, 0x42, 0x3b, 0xff, 0x6a, +0xd5, 0xfd, 0x46, 0x6b, 0x5c, 0xf7, 0x1b, 0xa0, +0xb2, 0xee, 0x57, 0xf5, 0xb1, 0x1f, 0xd9, 0x9d, +0xff, 0xef, 0x4e, 0x7e, 0x27, 0x58, 0xf7, 0x4b, +0x76, 0xfe, 0x49, 0xea, 0x9f, 0x04, 0xff, 0x06, +0xda, 0x07, 0x21, 0x78, 0xcb, 0x4e, 0xde, 0xce, +0xbf, 0x2d, 0xae, 0xff, 0x25, 0x78, 0x27, 0x41, +0xe3, 0xbe, 0x46, 0xe8, 0xee, 0xee, 0x96, 0x1b, +0xfd, 0xcb, 0xee, 0xfc, 0x27, 0xee, 0x4a, 0x04, +0x8f, 0x55, 0x9e, 0x73, 0xda, 0xf9, 0x17, 0x8d, +0xfe, 0x39, 0xee, 0xff, 0x16, 0x67, 0x86, 0xfc, +0x1d, 0x6f, 0x76, 0x85, 0x8d, 0xee, 0xba, 0x1f, +0xfd, 0xbf, 0xb2, 0x08, 0x83, 0x7f, 0x4f, 0xe3, +0xb9, 0xdf, 0xcd, 0x99, 0x1c, 0xf7, 0x9f, 0xec, +0xf1, 0x1f, 0x74, 0xff, 0xe7, 0x52, 0x01, 0x60, +0x48, 0xf7, 0x9f, 0xd9, 0xe9, 0xee, 0x48, 0xc8, +0x5f, 0x2c, 0x00, 0x82, 0x1a, 0x06, 0xd4, 0x76, +0xff, 0x73, 0x09, 0xfe, 0x71, 0x05, 0x40, 0x6b, +0x6f, 0x3c, 0x33, 0x05, 0x38, 0x33, 0x87, 0xc3, +0x3f, 0x9a, 0x1e, 0xfb, 0xa9, 0xab, 0xf5, 0x60, +0x1c, 0xbb, 0x22, 0x32, 0x27, 0x8f, 0x0a, 0xc8, +0xf7, 0x70, 0xc9, 0xff, 0x20, 0x4e, 0x0f, 0x14, +0x15, 0x0a, 0x91, 0x03, 0x40, 0xc7, 0x95, 0x34, +0x01, 0x6a, 0xb5, 0xf2, 0xf7, 0x04, 0x56, 0xfe, +0x76, 0x78, 0x41, 0x5f, 0xbb, 0x37, 0x56, 0xfe, +0x76, 0xd2, 0xe0, 0xdf, 0x02, 0x0f, 0xfe, 0xf1, +0x05, 0x40, 0x15, 0xc4, 0xe6, 0xd6, 0x6a, 0x56, +0xf7, 0xab, 0x62, 0xe7, 0x3f, 0x47, 0xd6, 0xfd, +0x6f, 0x53, 0x67, 0xe7, 0x3f, 0x49, 0xe9, 0xce, +0x3f, 0x21, 0x7f, 0xee, 0xce, 0xff, 0x2e, 0xb5, +0x76, 0xfe, 0x83, 0xd4, 0x0a, 0xfe, 0xc9, 0xd6, +0xfd, 0x3a, 0xab, 0xa8, 0xfb, 0x25, 0xcf, 0xfd, +0x65, 0xeb, 0x7e, 0x85, 0x76, 0xfe, 0x4f, 0x9d, +0x3a, 0x05, 0x07, 0xcb, 0x1a, 0xc0, 0xe5, 0x63, +0x37, 0xde, 0xce, 0x3f, 0x59, 0xf9, 0x73, 0xf8, +0xd0, 0x19, 0xe2, 0xfd, 0x12, 0xa1, 0x38, 0xb3, +0x04, 0x8a, 0x32, 0x50, 0x40, 0xa5, 0xa3, 0x78, +0x4a, 0x45, 0xd1, 0x94, 0x94, 0x03, 0x61, 0xb6, +0xbb, 0xc0, 0xe6, 0x65, 0x5b, 0x6c, 0xfc, 0xdb, +0x26, 0xdd, 0xf9, 0x57, 0x63, 0xf4, 0xaf, 0xc8, +0xfd, 0x93, 0xd1, 0xbf, 0x03, 0xe3, 0xfe, 0x5d, +0x19, 0x01, 0x60, 0xf9, 0x8e, 0xdb, 0x82, 0x0b, +0xfe, 0xad, 0x30, 0x70, 0xf0, 0x8f, 0xb8, 0xff, +0x95, 0xb9, 0x48, 0xfc, 0xd9, 0xae, 0x12, 0x01, +0xb0, 0x31, 0xc5, 0xdd, 0x6c, 0xa9, 0x92, 0xff, +0xa2, 0x10, 0x00, 0x8e, 0xb5, 0x3d, 0x17, 0x3a, +0x96, 0x76, 0xfd, 0x9b, 0x15, 0x00, 0x8e, 0xe8, +0xfe, 0xd3, 0x67, 0xa7, 0x75, 0x1a, 0xfc, 0x4b, +0xe5, 0xa0, 0x70, 0xb2, 0x95, 0x11, 0x00, 0x63, +0x5d, 0xbe, 0xf0, 0xd5, 0xf1, 0x78, 0x9d, 0x5f, +0xfb, 0x23, 0x1d, 0xff, 0x97, 0x29, 0x11, 0x01, +0xe4, 0xdf, 0x55, 0x94, 0x3a, 0x49, 0x04, 0x00, +0x79, 0x9e, 0xaf, 0xe8, 0x7b, 0x23, 0xc2, 0x8d, +0xf4, 0xe6, 0xfe, 0x67, 0xb0, 0x1e, 0x99, 0xb8, +0xff, 0x92, 0xfe, 0x7c, 0x1a, 0xfc, 0x5b, 0x04, +0xc1, 0x3f, 0xae, 0xfb, 0xb7, 0x41, 0x01, 0xe0, +0xdb, 0xb0, 0x97, 0x4f, 0xfe, 0x9c, 0x9d, 0xff, +0x0a, 0xad, 0xec, 0xfc, 0x67, 0xa9, 0xdc, 0xf9, +0x27, 0xe4, 0x1f, 0xaf, 0x71, 0xdd, 0xaf, 0x8c, +0xfb, 0xff, 0x54, 0xf9, 0xce, 0xbf, 0xb7, 0xac, +0xfb, 0x57, 0x54, 0xf7, 0x2b, 0xe4, 0xfe, 0xc5, +0xe4, 0xef, 0xf4, 0x96, 0x2b, 0x78, 0x7d, 0xe6, +0x0b, 0xb3, 0x83, 0xb3, 0x82, 0x75, 0xbf, 0xb2, +0x3b, 0xff, 0xb3, 0xb3, 0xb3, 0x30, 0x31, 0x3e, +0x01, 0x05, 0xb1, 0x45, 0x60, 0xf5, 0xca, 0x76, +0xb9, 0x9d, 0xff, 0x8d, 0x0f, 0xe2, 0xa1, 0x99, +0x07, 0x8d, 0x61, 0xf3, 0x03, 0x58, 0x06, 0xf4, +0x80, 0x09, 0x18, 0xdd, 0x6f, 0x0a, 0xc6, 0x08, +0xf5, 0xea, 0x7e, 0x15, 0xef, 0xfc, 0xdb, 0x72, +0x82, 0x7f, 0x5c, 0xf7, 0xef, 0x74, 0x33, 0x4e, +0x37, 0x6e, 0xc1, 0xcb, 0x80, 0x5d, 0x34, 0xf8, +0xc7, 0x25, 0xff, 0x67, 0xfb, 0x37, 0x22, 0xe9, +0xbb, 0x49, 0x04, 0xc0, 0xa6, 0x24, 0xcf, 0x1f, +0xf1, 0xe7, 0xb3, 0xa8, 0x00, 0x30, 0xa4, 0xfb, +0xcf, 0xe8, 0x0c, 0x26, 0xe4, 0xcf, 0x0a, 0x80, +0x90, 0xa6, 0x41, 0x41, 0xf2, 0xcf, 0xd2, 0xf2, +0xe8, 0x9f, 0x8b, 0x9a, 0xe1, 0x0a, 0x18, 0xc1, +0x4a, 0xdb, 0x11, 0x5c, 0x07, 0x3c, 0x36, 0x1a, +0x0e, 0xdf, 0x9e, 0x4a, 0xd6, 0xe9, 0xa9, 0xdf, +0x9a, 0x4a, 0x57, 0xb8, 0xf4, 0xd2, 0x0b, 0x15, +0x12, 0xfb, 0x85, 0x17, 0x9e, 0x8f, 0xb7, 0xdc, +0xb7, 0x43, 0x5e, 0xce, 0x0e, 0x85, 0xdf, 0x73, +0xdf, 0xbd, 0x37, 0x32, 0xc7, 0x86, 0xe6, 0x2e, +0x00, 0xd4, 0x27, 0xff, 0xd3, 0x27, 0x12, 0x60, +0xb0, 0xdd, 0x03, 0x3a, 0xdb, 0x03, 0x20, 0x7c, +0xa2, 0x97, 0x06, 0xff, 0x16, 0x41, 0xf0, 0x8f, +0xeb, 0xfe, 0x89, 0x00, 0xd8, 0x31, 0x54, 0x09, +0xd5, 0x5e, 0x1a, 0x8e, 0xfe, 0x77, 0xc8, 0x8e, +0xfe, 0x0b, 0x95, 0xd6, 0xfd, 0x6a, 0xbe, 0xf3, +0x1f, 0xab, 0xf1, 0xce, 0x7f, 0x90, 0xca, 0x9d, +0x7f, 0x5f, 0x85, 0xee, 0xdf, 0xff, 0xf3, 0x20, +0x28, 0xde, 0x55, 0x0a, 0xc5, 0x61, 0x25, 0x10, +0xf8, 0x65, 0xb0, 0xe0, 0xe8, 0xbf, 0x36, 0x75, +0xbf, 0xe8, 0x79, 0x3f, 0x16, 0x05, 0x75, 0xee, +0xeb, 0x82, 0x8a, 0xd8, 0x4a, 0xf8, 0xf1, 0xfb, +0x1f, 0x25, 0xc7, 0x7e, 0x64, 0x77, 0xfe, 0x49, +0xea, 0x9f, 0x1b, 0xfc, 0xeb, 0xee, 0xec, 0x86, +0x38, 0xef, 0x04, 0xd8, 0xf2, 0xf4, 0x56, 0x49, +0xdd, 0xef, 0x46, 0x24, 0x7f, 0x56, 0x00, 0x18, +0xa1, 0x00, 0x60, 0xc9, 0x9f, 0x71, 0xff, 0x72, +0xa3, 0x7f, 0xcd, 0x76, 0xfe, 0xb9, 0xee, 0x9f, +0x90, 0xbf, 0x23, 0x21, 0xff, 0x9b, 0x70, 0xca, +0x71, 0x93, 0x07, 0xac, 0x4a, 0x74, 0xa5, 0xc1, +0x3f, 0x8e, 0x00, 0x58, 0x9d, 0x29, 0x26, 0x7f, +0xb1, 0x00, 0xd8, 0x98, 0xe6, 0xfe, 0xf1, 0x52, +0x26, 0xff, 0x05, 0x2f, 0x00, 0xd0, 0xfd, 0x5f, +0xea, 0x58, 0xde, 0xfd, 0x5f, 0x56, 0x00, 0x10, +0xf7, 0x9f, 0xa1, 0xcc, 0xfd, 0x1f, 0xd3, 0xae, +0xfb, 0x27, 0x48, 0x11, 0xa3, 0x64, 0xbc, 0x01, +0x7a, 0xbb, 0x82, 0x45, 0xd3, 0x00, 0xdc, 0x0a, +0x38, 0xa1, 0xa2, 0x14, 0x68, 0xae, 0xe4, 0xcf, +0xa2, 0xba, 0xdc, 0x05, 0x2e, 0xb9, 0xe4, 0x02, +0xc5, 0x47, 0x80, 0xce, 0x3d, 0x87, 0x19, 0xf1, +0x2b, 0xfa, 0xf7, 0x79, 0x28, 0x10, 0xf4, 0xe5, +0xfe, 0xa7, 0x86, 0x42, 0x18, 0xf7, 0x9f, 0x3b, +0x58, 0xb1, 0xac, 0x83, 0x7f, 0x9e, 0x8b, 0x28, +0xf8, 0xc7, 0x75, 0xff, 0x22, 0x54, 0x42, 0x46, +0x4c, 0x8d, 0x82, 0x9d, 0xff, 0x4a, 0x95, 0x3b, +0xff, 0x84, 0xfc, 0xf3, 0x34, 0xae, 0xfb, 0x95, +0x09, 0xfe, 0x09, 0x8c, 0xfe, 0xa3, 0x64, 0xea, +0x7e, 0x77, 0xab, 0x53, 0xf7, 0xab, 0xc1, 0xce, +0x3f, 0x21, 0x7f, 0xe2, 0xfe, 0x53, 0x9c, 0xd2, +0x98, 0xa4, 0x3f, 0x77, 0xac, 0x3f, 0x74, 0x78, +0x08, 0x82, 0xd6, 0x86, 0x48, 0x46, 0xff, 0x87, +0x8b, 0x8f, 0xc8, 0x05, 0xff, 0x5a, 0x2a, 0x5b, +0xc1, 0xfe, 0x0d, 0x27, 0xd8, 0x9b, 0x5a, 0x03, +0xdf, 0x7f, 0xf7, 0x3d, 0x33, 0xfa, 0x57, 0xb4, +0xf3, 0x4f, 0x52, 0xff, 0x6c, 0xf0, 0xef, 0xe0, +0xfe, 0x83, 0x10, 0x64, 0x11, 0xc2, 0x54, 0xff, +0x72, 0xc9, 0x5f, 0xe4, 0xfe, 0xc5, 0xe4, 0xcf, +0x71, 0xff, 0x8a, 0xeb, 0x7e, 0x95, 0xef, 0xfc, +0x4b, 0x83, 0x7f, 0xae, 0x12, 0xf7, 0xef, 0x8c, +0x02, 0xc0, 0x05, 0x05, 0x80, 0xe9, 0x56, 0x77, +0x1a, 0xfc, 0x13, 0x93, 0xff, 0x8a, 0x2e, 0x23, +0x29, 0xf9, 0x23, 0x36, 0x25, 0x7a, 0x9e, 0x59, +0xea, 0xe4, 0xbf, 0xe0, 0x05, 0x00, 0xba, 0xff, +0x18, 0x14, 0x01, 0xc0, 0x0a, 0x80, 0xd0, 0x23, +0x43, 0x7a, 0x09, 0xfe, 0xc9, 0x92, 0x7f, 0x0a, +0xae, 0x03, 0x12, 0xa4, 0xe1, 0x41, 0xa0, 0xda, +0xa1, 0x52, 0x18, 0xc4, 0x60, 0x20, 0x11, 0x02, +0x24, 0x1c, 0x78, 0x7a, 0x26, 0x56, 0xab, 0xee, +0x9f, 0x0b, 0x32, 0xea, 0xbf, 0xf8, 0xe2, 0x0b, +0x34, 0xde, 0xed, 0x27, 0x97, 0x01, 0xf5, 0x45, +0xfe, 0xa7, 0x30, 0x1b, 0x41, 0x2a, 0x7f, 0x5b, +0x3a, 0x42, 0xb1, 0xf2, 0x97, 0x06, 0xff, 0x34, +0x09, 0xfe, 0xb9, 0x1a, 0x38, 0xf8, 0xb7, 0x9d, +0x43, 0xfe, 0x04, 0x61, 0xa5, 0xd5, 0x92, 0xd1, +0x7f, 0x95, 0x3a, 0x75, 0xbf, 0xdb, 0x55, 0x8d, +0xfe, 0x73, 0xf8, 0x75, 0xbf, 0xa6, 0xfc, 0xd1, +0xbf, 0xe6, 0x3b, 0xff, 0x11, 0x1a, 0xef, 0xfc, +0x13, 0xf2, 0x57, 0xb6, 0xf3, 0x4f, 0xc8, 0x9f, +0x88, 0x80, 0xbf, 0x7f, 0xff, 0x77, 0xc1, 0xbd, +0xff, 0xdf, 0x7e, 0xfd, 0x0d, 0x0e, 0x17, 0x35, +0x43, 0xba, 0x67, 0xa6, 0xfc, 0xbf, 0xc3, 0xd1, +0xff, 0x64, 0xdf, 0x24, 0x98, 0x3f, 0x6b, 0xc5, +0xac, 0xfd, 0xb9, 0x7c, 0xe0, 0x0e, 0xf5, 0x85, +0x07, 0xe1, 0xcc, 0x69, 0xe9, 0xe8, 0x5f, 0x68, +0xe7, 0xbf, 0xad, 0xad, 0x8d, 0x49, 0xfd, 0x93, +0xe0, 0x5f, 0x69, 0x6e, 0x29, 0xb8, 0x7f, 0xe9, +0x29, 0x1e, 0xfd, 0x9b, 0xc8, 0x8d, 0xfe, 0xe7, +0xbb, 0xf3, 0x2f, 0x3b, 0xfa, 0x77, 0x16, 0xbb, +0x7f, 0x97, 0x1b, 0x3d, 0xc1, 0xfe, 0x71, 0x4f, +0x1a, 0xfc, 0x13, 0x0b, 0x80, 0x75, 0x69, 0x1e, +0x7c, 0x01, 0x90, 0xee, 0xf6, 0x3c, 0x15, 0x00, +0x86, 0x75, 0xff, 0x57, 0x3a, 0x56, 0x74, 0xff, +0xc2, 0x0a, 0x00, 0xe7, 0xca, 0x6e, 0xc8, 0x3c, +0x3a, 0xad, 0x97, 0xe0, 0x9f, 0x22, 0x01, 0x90, +0x3c, 0x2b, 0x42, 0xc6, 0xf4, 0x00, 0x1c, 0x1c, +0xc8, 0x82, 0x61, 0x14, 0x01, 0x44, 0x08, 0x4c, +0x0f, 0x04, 0xc3, 0x57, 0xc7, 0x12, 0xb4, 0x4a, +0xfe, 0x2c, 0xca, 0x8b, 0x1d, 0xe1, 0xa2, 0x8b, +0xce, 0xd7, 0xa8, 0xd8, 0xe7, 0x40, 0xad, 0xa7, +0xde, 0x04, 0xc0, 0x04, 0xae, 0x48, 0x12, 0xf7, +0x9f, 0x36, 0xb4, 0x9f, 0x47, 0xfe, 0x61, 0x34, +0xf8, 0xa7, 0xf5, 0xe0, 0x9f, 0xa3, 0x96, 0x83, +0x7f, 0x5c, 0xf2, 0xb7, 0x46, 0x38, 0xb7, 0x57, +0x6a, 0xb0, 0xf3, 0x5f, 0xcc, 0x0f, 0xfe, 0x09, +0x8c, 0xfe, 0x33, 0xe7, 0x52, 0xf7, 0xab, 0xc1, +0xce, 0x3f, 0x21, 0x7f, 0xd5, 0x3b, 0xff, 0xfe, +0x2a, 0x77, 0xfe, 0xc3, 0x36, 0x85, 0x83, 0xa6, +0x3f, 0xd8, 0xe0, 0x5f, 0x55, 0x52, 0x35, 0x6f, +0xe7, 0x9f, 0xac, 0xfd, 0x79, 0xad, 0xf2, 0x81, +0xa6, 0xaa, 0x43, 0xbc, 0xd1, 0x7f, 0x7f, 0x7f, +0xbf, 0xe0, 0xce, 0x3f, 0x49, 0xfd, 0x93, 0x9d, +0xff, 0xe4, 0x5d, 0x29, 0x60, 0xf6, 0x94, 0x25, +0x6c, 0xb9, 0x5f, 0x76, 0xf4, 0x6f, 0xce, 0xab, +0xfb, 0x35, 0x9f, 0xc3, 0xe8, 0x5f, 0xe4, 0xfe, +0xa5, 0xa3, 0x7f, 0x97, 0x1b, 0x31, 0xef, 0x80, +0x02, 0xc0, 0xed, 0x06, 0x2f, 0xf8, 0xa8, 0xce, +0x79, 0xd9, 0x07, 0xff, 0xc8, 0xb9, 0x5f, 0x2e, +0xf9, 0x6f, 0x4c, 0xf4, 0x1a, 0x5f, 0x0e, 0xe4, +0xbf, 0xa0, 0x05, 0x00, 0xba, 0xff, 0x2c, 0x11, +0xf9, 0x8b, 0x04, 0x40, 0x78, 0xfb, 0x88, 0xde, +0x82, 0x7f, 0x42, 0xe4, 0x9f, 0x32, 0x2b, 0x15, +0x00, 0x2c, 0xb2, 0x27, 0x3b, 0xe1, 0x08, 0xb3, +0x25, 0xe0, 0xc1, 0x64, 0x04, 0x66, 0x87, 0xc3, +0xe0, 0x9b, 0x93, 0x49, 0x5a, 0x15, 0x00, 0x04, +0x25, 0x05, 0xf6, 0xcc, 0x73, 0x7f, 0x75, 0x04, +0xc0, 0xa7, 0x1f, 0x3f, 0xad, 0x37, 0xf2, 0x3f, +0x31, 0x13, 0xcd, 0x90, 0x7f, 0x43, 0x57, 0x24, +0x0d, 0xfe, 0x2d, 0xc2, 0xe0, 0x1f, 0x2b, 0x00, +0xac, 0x19, 0x54, 0x30, 0x28, 0xf4, 0xaf, 0x16, +0x93, 0x7f, 0x35, 0xaf, 0xee, 0xb7, 0x54, 0x60, +0xf4, 0xaf, 0xd9, 0xce, 0x7f, 0xba, 0xca, 0x9d, +0xff, 0x18, 0x8d, 0x77, 0xfe, 0xc3, 0x54, 0xef, +0xfc, 0x0b, 0x8c, 0xfe, 0x65, 0x83, 0x7f, 0x9e, +0xef, 0x7b, 0xc3, 0x7f, 0xfe, 0xf1, 0x1f, 0x8d, +0x04, 0x00, 0xd9, 0xf9, 0x27, 0xc7, 0x7e, 0xbc, +0x56, 0xfa, 0xf2, 0xc8, 0x5f, 0xb2, 0xf2, 0x87, +0x97, 0xfe, 0x02, 0x8d, 0x83, 0xa1, 0xb9, 0xae, +0x59, 0xb0, 0xee, 0x57, 0x68, 0xe7, 0x3f, 0x35, +0x2a, 0x15, 0x4c, 0xee, 0xdf, 0xa6, 0x46, 0xf0, +0x6f, 0x7e, 0xa3, 0x7f, 0xe2, 0xfe, 0x5d, 0x6f, +0x44, 0x01, 0x74, 0x83, 0x37, 0x6c, 0x08, 0x74, +0x5b, 0x54, 0xc1, 0xbf, 0x67, 0xb5, 0x1c, 0xfc, +0x23, 0xd8, 0x90, 0xca, 0x71, 0xff, 0xa2, 0x10, +0xe0, 0xbd, 0x54, 0x00, 0x18, 0xd6, 0xfd, 0x5f, +0x8d, 0xcf, 0xfb, 0x7f, 0x63, 0x05, 0x00, 0x71, +0xff, 0x59, 0xc7, 0xf4, 0x1b, 0xfc, 0x53, 0xe4, +0xfe, 0x59, 0x24, 0x71, 0x50, 0x34, 0xd6, 0x08, +0x9d, 0x5d, 0xbb, 0x70, 0x22, 0x80, 0x42, 0xa0, +0xc3, 0x1b, 0x8e, 0x8d, 0xef, 0xc6, 0xa0, 0x60, +0x8a, 0x56, 0xc8, 0x9f, 0xdd, 0xf9, 0x27, 0x4d, +0x7e, 0xea, 0x54, 0xfd, 0xb6, 0x34, 0x05, 0xe8, +0x25, 0xf8, 0x47, 0x30, 0xda, 0xed, 0x07, 0x03, +0x58, 0xfa, 0x93, 0x38, 0xd2, 0x34, 0xef, 0xb5, +0x3f, 0x9d, 0x06, 0xff, 0x46, 0x69, 0xf0, 0x4f, +0xb9, 0xfb, 0xaf, 0x10, 0xa3, 0x1c, 0x62, 0x53, +0xaa, 0xe6, 0x51, 0xf7, 0x9b, 0xa7, 0xb4, 0xee, +0x57, 0xf3, 0x9d, 0xff, 0x28, 0x8d, 0x77, 0xfe, +0xfd, 0x55, 0xee, 0xfc, 0x7b, 0x09, 0xee, 0xfc, +0xe7, 0xf8, 0xe5, 0x31, 0xe3, 0x7e, 0x75, 0x7e, +0xb0, 0x3b, 0xff, 0x87, 0xcb, 0x9b, 0x45, 0xee, +0xff, 0x69, 0x14, 0x00, 0x4f, 0xc9, 0x08, 0x00, +0xdc, 0xf9, 0x37, 0x7e, 0xcc, 0x94, 0x59, 0xfd, +0x0b, 0xb3, 0x09, 0x87, 0x43, 0x07, 0x0f, 0x0b, +0xd6, 0xfd, 0x72, 0x77, 0xfe, 0x49, 0xdd, 0xaf, +0xc3, 0xdb, 0x4e, 0xf3, 0xd8, 0xf9, 0x77, 0x14, +0xdc, 0xf9, 0xe7, 0xbb, 0x7f, 0x4f, 0x89, 0xfb, +0x77, 0x47, 0x01, 0x60, 0x85, 0x55, 0xc5, 0x4b, +0x39, 0xf8, 0xa7, 0xca, 0xfd, 0xbf, 0xd1, 0x60, +0xce, 0x77, 0xff, 0x49, 0x5e, 0xad, 0xcb, 0x85, +0xfc, 0x17, 0xac, 0x00, 0x70, 0x48, 0xef, 0x2c, +0x93, 0xba, 0xff, 0x1e, 0xd8, 0xd3, 0x35, 0x62, +0x90, 0xe0, 0x9f, 0x32, 0xf7, 0x2f, 0x15, 0x00, +0xe3, 0x0c, 0x92, 0xb1, 0x35, 0xb0, 0x12, 0x3f, +0x54, 0xfb, 0x3b, 0x03, 0x18, 0x21, 0x40, 0xd6, +0x06, 0x4f, 0x62, 0x2d, 0xee, 0x7c, 0xc9, 0x9f, +0x5b, 0xfa, 0x43, 0x52, 0xff, 0xe7, 0x9f, 0x7f, +0xae, 0x52, 0x01, 0xf0, 0x32, 0xae, 0x05, 0x1e, +0x9d, 0x8c, 0xd5, 0xb9, 0xfb, 0x3f, 0x3e, 0x19, +0xc1, 0xb8, 0xff, 0x7d, 0x3d, 0x49, 0xcb, 0xce, +0xfd, 0x2f, 0xa5, 0xe0, 0x1f, 0xd7, 0xfd, 0x5b, +0xa1, 0x00, 0xf0, 0xdb, 0x57, 0x21, 0x3c, 0xfa, +0x57, 0xb1, 0xf3, 0x9f, 0x3d, 0xa7, 0x9d, 0xff, +0x44, 0xa5, 0x3b, 0xff, 0x42, 0xa3, 0xff, 0x30, +0xb5, 0xea, 0x7e, 0x03, 0xd5, 0xaa, 0xfb, 0x95, +0xdd, 0xf9, 0x8f, 0x32, 0x8b, 0x86, 0x53, 0x13, +0xa7, 0xd4, 0x1a, 0xfd, 0x93, 0xd4, 0x3f, 0xd9, +0xf9, 0x6f, 0xaf, 0xc3, 0xd7, 0xc1, 0x17, 0xde, +0x82, 0xe4, 0xcf, 0xdd, 0xf9, 0x37, 0x7e, 0xd2, +0x14, 0x22, 0x9c, 0xa3, 0xa0, 0xbe, 0xae, 0x9e, +0x39, 0xf6, 0x23, 0x54, 0xf7, 0x4b, 0x8e, 0xfd, +0x38, 0xbe, 0xeb, 0xac, 0x51, 0xdd, 0xaf, 0x8d, +0x3a, 0xa3, 0x7f, 0xd6, 0xfd, 0x8b, 0x47, 0xff, +0xae, 0x37, 0x88, 0xdc, 0xbf, 0xfb, 0xf5, 0x3e, +0xe0, 0x76, 0x9b, 0x2f, 0xbc, 0x3d, 0xb8, 0x58, +0x83, 0x7f, 0x9b, 0xe7, 0x15, 0xfc, 0x13, 0x9d, +0xfb, 0xf5, 0x94, 0x90, 0xbf, 0x51, 0x26, 0xbe, +0x1e, 0x32, 0x82, 0x1e, 0xa2, 0x02, 0xc0, 0xb0, +0xee, 0xff, 0x26, 0xc7, 0xea, 0x9e, 0x3f, 0x58, +0xf2, 0x77, 0xa9, 0xec, 0x11, 0x74, 0xff, 0xfa, +0x0a, 0xfe, 0x29, 0x77, 0xff, 0xe3, 0x12, 0x24, +0x8a, 0x91, 0x32, 0x33, 0x04, 0xfb, 0x06, 0x0a, +0x60, 0x08, 0x0b, 0x71, 0x88, 0x10, 0x98, 0xec, +0x0d, 0xc0, 0x6a, 0xd0, 0xd8, 0x79, 0x93, 0x3f, +0x8b, 0x9c, 0x4c, 0x1b, 0x85, 0x67, 0x84, 0x59, +0x3c, 0xf1, 0xf8, 0xed, 0x30, 0x39, 0x12, 0xa5, +0x33, 0xf2, 0xff, 0x0a, 0x1f, 0x73, 0x0c, 0x77, +0x79, 0x43, 0x3f, 0xe6, 0x1f, 0xa2, 0xc7, 0xda, +0x68, 0xf0, 0x6f, 0x11, 0x07, 0xff, 0xb8, 0xee, +0x9f, 0x08, 0x80, 0x1d, 0xfd, 0x65, 0x50, 0xe6, +0xc4, 0x0f, 0xfe, 0x15, 0xab, 0xb3, 0xf3, 0x6f, +0x2e, 0xbb, 0xf3, 0x9f, 0xa9, 0x72, 0xe7, 0x3f, +0x4e, 0xe3, 0x9d, 0xff, 0x70, 0xf9, 0x9d, 0x7f, +0x35, 0xea, 0x7e, 0x35, 0xd9, 0xf9, 0x27, 0xc8, +0xf1, 0xcf, 0x83, 0xbf, 0x7d, 0xf3, 0x37, 0xe1, +0x50, 0xa0, 0xcc, 0xce, 0x3f, 0xb9, 0xf4, 0xf7, +0xd5, 0x57, 0x5f, 0x43, 0x75, 0xc6, 0x5e, 0xb0, +0x7d, 0xd3, 0x81, 0x2f, 0x00, 0x1e, 0x35, 0x91, +0xdb, 0xf9, 0xdf, 0xf6, 0x9c, 0x39, 0xc4, 0xfa, +0xc4, 0x41, 0xcd, 0xde, 0x1a, 0x66, 0xf4, 0x4f, +0x8e, 0xfd, 0xb0, 0x75, 0xbf, 0x49, 0x51, 0xc9, +0xb0, 0xf5, 0x7e, 0x73, 0xa5, 0xa3, 0x7f, 0x4b, +0x95, 0x75, 0xbf, 0xca, 0x83, 0x7f, 0xec, 0xe8, +0x9f, 0xb8, 0x7f, 0x0f, 0x14, 0x00, 0x9e, 0xd7, +0xfb, 0xc2, 0xe7, 0x39, 0x2e, 0xcb, 0x24, 0xf8, +0xc7, 0x17, 0x00, 0xef, 0xd6, 0xda, 0x20, 0xf1, +0x4b, 0x57, 0xff, 0x5c, 0xe2, 0x77, 0x41, 0x6a, +0x6a, 0xea, 0xdf, 0x52, 0x52, 0x52, 0xb6, 0x21, +0xce, 0xa6, 0x02, 0xc0, 0x30, 0xcf, 0xfe, 0xeb, +0xb8, 0xee, 0x3f, 0xaa, 0x77, 0x6c, 0x41, 0x04, +0xff, 0x94, 0x09, 0x80, 0x44, 0x59, 0xcc, 0x8c, +0x43, 0xc6, 0x64, 0x0f, 0x34, 0xf5, 0x25, 0x33, +0x41, 0x41, 0x22, 0x04, 0xa6, 0x07, 0x43, 0xe0, +0xeb, 0x13, 0x89, 0xf3, 0x22, 0x7f, 0x16, 0x59, +0x69, 0xd6, 0xcc, 0x1a, 0xa0, 0x32, 0x11, 0x70, +0xef, 0x3d, 0x37, 0x48, 0x6e, 0x00, 0x68, 0x5b, +0x00, 0xcc, 0x8e, 0x85, 0x33, 0xee, 0xbf, 0xb2, +0x2f, 0x6b, 0xc9, 0x07, 0xff, 0xbc, 0x97, 0x64, +0xf0, 0x4f, 0xd8, 0xfd, 0x8b, 0x50, 0x06, 0xe9, +0x61, 0x15, 0x6a, 0xec, 0xfc, 0x17, 0x28, 0xdd, +0xf9, 0x4f, 0x9b, 0xd3, 0xce, 0x7f, 0x0c, 0xdf, +0xfd, 0x7f, 0xa9, 0x7a, 0xe7, 0x3f, 0x50, 0xd5, +0xce, 0x3f, 0x21, 0x7f, 0x21, 0xf7, 0xaf, 0xa2, +0xee, 0x37, 0x60, 0x4d, 0x30, 0x33, 0xea, 0x57, +0x54, 0xf7, 0x2b, 0xb4, 0xf3, 0x3f, 0x39, 0x8e, +0xf7, 0x43, 0x82, 0x33, 0xc1, 0xec, 0x39, 0x0b, +0x11, 0xf9, 0x3f, 0x2a, 0x53, 0xf8, 0xc3, 0xd9, +0xf9, 0xb7, 0x7e, 0x65, 0x07, 0x44, 0x79, 0x46, +0xe3, 0xa3, 0x3d, 0xfc, 0xb3, 0xcc, 0xcd, 0x83, +0x28, 0xdf, 0x68, 0xb0, 0x7c, 0x66, 0xbb, 0xc6, +0xa3, 0x7f, 0x75, 0x77, 0xfe, 0xb9, 0xc1, 0x3f, +0xd6, 0xfd, 0x7b, 0x20, 0xf9, 0x7b, 0x5e, 0xe7, +0x07, 0x26, 0xdb, 0x3d, 0x96, 0x40, 0xf0, 0x4f, +0x33, 0xf7, 0xcf, 0x9c, 0xfb, 0x4d, 0xf3, 0x94, +0x08, 0x00, 0xe3, 0x74, 0xec, 0x31, 0xe9, 0xc3, +0xa0, 0x79, 0x66, 0xe6, 0x1f, 0x48, 0xfe, 0x80, +0xe8, 0x41, 0x3c, 0x43, 0x05, 0x80, 0x3e, 0xdd, +0x7f, 0x45, 0xcf, 0xdd, 0x8e, 0x7b, 0xa5, 0xee, +0xdf, 0xb5, 0xb2, 0x77, 0xc1, 0x05, 0xff, 0x94, +0xb9, 0x7f, 0x96, 0xfc, 0x13, 0x24, 0x18, 0x83, +0xdc, 0xf1, 0x23, 0xd0, 0xda, 0x1d, 0xc1, 0x88, +0x80, 0x61, 0x2c, 0x12, 0x9a, 0x1d, 0xd9, 0x85, +0x41, 0xc1, 0xe4, 0x79, 0x09, 0x00, 0x42, 0xea, +0xe9, 0x29, 0x96, 0x2a, 0x45, 0xc0, 0x17, 0x9f, +0x3d, 0xab, 0x75, 0xf2, 0x3f, 0x83, 0x95, 0xbf, +0x43, 0xf8, 0xff, 0x8f, 0x9e, 0x76, 0x5f, 0xd8, +0x33, 0xde, 0x45, 0x83, 0x7f, 0x4b, 0x20, 0xf8, +0x67, 0xcd, 0x21, 0x7f, 0x82, 0xb0, 0xdc, 0x32, +0x95, 0x3b, 0xff, 0xb9, 0x1a, 0xef, 0xfc, 0xa7, +0xa8, 0xdc, 0xf9, 0x8f, 0x94, 0xd9, 0xf9, 0x0f, +0x57, 0x67, 0xe7, 0x9f, 0x19, 0xfd, 0x07, 0x6b, +0x54, 0xf7, 0xcb, 0x73, 0xff, 0x6c, 0xdd, 0xef, +0xab, 0xfc, 0xba, 0xdf, 0xf6, 0xbd, 0x9d, 0x72, +0xa3, 0x7f, 0x12, 0xfc, 0x13, 0xaa, 0xfb, 0x95, +0xdd, 0xf9, 0xef, 0x6a, 0xed, 0x82, 0xdd, 0xb6, +0x7b, 0x98, 0x29, 0x00, 0xd9, 0xf3, 0x27, 0xc4, +0x2f, 0xdb, 0xf8, 0x27, 0xbf, 0xf3, 0x6f, 0xa6, +0xc6, 0xce, 0xff, 0x0e, 0xa5, 0xc1, 0x3f, 0x7b, +0x25, 0xc1, 0x3f, 0xde, 0xe8, 0xff, 0x06, 0x29, +0xf9, 0x7b, 0x21, 0x1c, 0x9e, 0xf7, 0x31, 0x40, +0xf0, 0x6f, 0x9b, 0x41, 0x83, 0x7f, 0x1f, 0x56, +0xd8, 0x89, 0xc9, 0x5f, 0x24, 0x00, 0x62, 0x2b, +0xf3, 0x98, 0xbf, 0x67, 0xf2, 0x68, 0x87, 0x6c, +0x68, 0x88, 0x45, 0x00, 0x11, 0x03, 0xa9, 0x88, +0xab, 0xa8, 0x00, 0xd0, 0x4b, 0xe7, 0x7f, 0x57, +0x2b, 0xd7, 0xfd, 0xc7, 0x0c, 0x8c, 0x2d, 0xd8, +0xe0, 0x9f, 0x3a, 0xe4, 0xcf, 0x22, 0x1e, 0x51, +0x3c, 0xba, 0x1f, 0x7a, 0x3a, 0x43, 0x24, 0x41, +0xc1, 0xe3, 0x13, 0x11, 0x73, 0x26, 0x7f, 0x16, +0x29, 0x89, 0xe6, 0x70, 0xee, 0xb9, 0x67, 0x2b, +0x15, 0x01, 0x7d, 0x5d, 0x61, 0x5a, 0x0d, 0xfe, +0x4d, 0x0f, 0x8b, 0x2a, 0x7f, 0x8b, 0x06, 0x8a, +0x0c, 0x10, 0xfc, 0xeb, 0xa5, 0xc1, 0x3f, 0xad, +0x07, 0xff, 0xf8, 0xee, 0xdf, 0x12, 0xe1, 0x7a, +0xa8, 0x6c, 0x0e, 0x3b, 0xff, 0xd9, 0xfc, 0x9d, +0x7f, 0x81, 0xd1, 0xbf, 0xc6, 0x3b, 0xff, 0xcc, +0xe8, 0x5f, 0xb3, 0x9d, 0x7f, 0x1f, 0x15, 0x3b, +0xff, 0x22, 0xf2, 0x47, 0x57, 0xfc, 0xba, 0x9b, +0xd2, 0xba, 0xdf, 0x53, 0x53, 0xa7, 0x15, 0x8e, +0xfe, 0xc9, 0xb1, 0x1f, 0xa1, 0xba, 0xdf, 0xc9, +0xc9, 0x49, 0xde, 0xce, 0x7f, 0x5d, 0xd5, 0x01, +0xf0, 0xda, 0xe0, 0xa3, 0x76, 0xdd, 0xaf, 0xa9, +0xe0, 0xe8, 0xdf, 0x5a, 0x69, 0xdd, 0xaf, 0xba, +0x3b, 0xff, 0xb2, 0xa3, 0x7f, 0xa9, 0x00, 0x40, +0xb1, 0x74, 0x6d, 0x00, 0xbc, 0xd7, 0xe2, 0xb8, +0x6c, 0x82, 0x7f, 0xcc, 0xb9, 0xdf, 0x74, 0x0f, +0x89, 0x00, 0x30, 0x49, 0xf5, 0x82, 0xff, 0xfc, +0x8f, 0x7f, 0xda, 0x99, 0x94, 0x39, 0x91, 0xcd, +0x0c, 0xb1, 0x10, 0xf8, 0x09, 0x61, 0x89, 0x38, +0x87, 0x0a, 0x00, 0x5d, 0xb9, 0xff, 0xd2, 0x9e, +0x47, 0x1c, 0x6b, 0x7a, 0x25, 0xe4, 0xef, 0xbe, +0xa8, 0xdd, 0xff, 0x98, 0x9c, 0x00, 0x20, 0x48, +0x98, 0x1e, 0x81, 0x2a, 0x2c, 0x12, 0x1a, 0xc0, +0x22, 0x21, 0x26, 0x28, 0x88, 0x29, 0xfa, 0x93, +0x33, 0x31, 0xea, 0x0b, 0x00, 0x81, 0x64, 0x7f, +0x52, 0xdc, 0x36, 0x38, 0xe7, 0x1c, 0x61, 0x11, +0x40, 0x02, 0x83, 0xa7, 0x8e, 0x25, 0x69, 0xaf, +0xf2, 0xf7, 0x78, 0x02, 0x53, 0xfa, 0xd3, 0xd1, +0x11, 0x84, 0xa5, 0x3f, 0x7d, 0x34, 0xf8, 0xb7, +0x44, 0x82, 0x7f, 0x5c, 0xf7, 0x6f, 0x39, 0x52, +0x0a, 0x56, 0xc3, 0xa5, 0x90, 0xef, 0xaa, 0xd9, +0xce, 0x7f, 0xc6, 0x5c, 0x76, 0xfe, 0x99, 0xd1, +0x7f, 0x9c, 0x46, 0x75, 0xbf, 0x72, 0xee, 0x5f, +0x70, 0xf4, 0xaf, 0x24, 0xf8, 0xa7, 0x60, 0xf4, +0x4f, 0xdc, 0x3f, 0x5b, 0xf7, 0xbb, 0xfd, 0x45, +0x3b, 0x38, 0xcd, 0x11, 0x00, 0x64, 0xf4, 0x4f, +0x82, 0x7f, 0x7d, 0x87, 0xfa, 0x21, 0x78, 0xf3, +0x4e, 0xe8, 0x3b, 0xd2, 0x2f, 0x19, 0xfd, 0x93, +0x63, 0x3f, 0xc7, 0x8e, 0x1d, 0x93, 0xdb, 0xf9, +0x27, 0x97, 0xfe, 0xd8, 0x9d, 0xff, 0xc2, 0xd4, +0x42, 0xb0, 0x7b, 0xdf, 0x51, 0xbe, 0xee, 0x57, +0xc5, 0xce, 0xbf, 0x85, 0x96, 0x77, 0xfe, 0x65, +0x47, 0xff, 0x2c, 0xf9, 0x13, 0xac, 0xdd, 0xe3, +0x66, 0xc0, 0xe0, 0x9f, 0xa9, 0xde, 0x82, 0x7f, +0x04, 0x9f, 0x16, 0x3a, 0x72, 0xdc, 0xbf, 0x1b, +0x64, 0xd5, 0x57, 0x28, 0x0c, 0x7c, 0x92, 0xd3, +0xcd, 0x9c, 0xc7, 0x02, 0xfd, 0x88, 0xe7, 0xa9, +0x00, 0xd0, 0x85, 0xfb, 0xcf, 0xea, 0xea, 0x73, +0xac, 0x95, 0x0a, 0x80, 0xb8, 0xe1, 0x89, 0x45, +0x13, 0xfc, 0x53, 0xe5, 0xfe, 0xb9, 0x88, 0x43, +0x24, 0x4f, 0xf5, 0xc1, 0x81, 0xfe, 0x4c, 0x18, +0xc2, 0x7c, 0xc0, 0x10, 0x09, 0x0a, 0xf6, 0x05, +0xc2, 0x99, 0x63, 0xf1, 0x1a, 0xb9, 0x7f, 0x2e, +0xe2, 0x63, 0xb6, 0x0a, 0x8a, 0x80, 0x0f, 0x3f, +0x78, 0x52, 0xab, 0xee, 0x7f, 0x12, 0x0b, 0x8f, +0x06, 0xd0, 0xfd, 0x67, 0x0f, 0x56, 0xd1, 0xe0, +0xdf, 0x12, 0x0a, 0xfe, 0x49, 0xc9, 0x5f, 0x24, +0x00, 0x08, 0x62, 0x62, 0x4a, 0xe5, 0x46, 0xff, +0x1a, 0xed, 0xfc, 0x33, 0xa3, 0x7f, 0xe5, 0x3b, +0xff, 0xd1, 0xaa, 0x76, 0xfe, 0x57, 0xca, 0xee, +0xfc, 0x87, 0x6a, 0xbc, 0xf3, 0xef, 0xae, 0x28, +0xf8, 0x27, 0x37, 0xfa, 0x97, 0xba, 0xff, 0xed, +0x2b, 0xec, 0x30, 0x03, 0x10, 0x04, 0xff, 0xf9, +0xe7, 0xcf, 0x92, 0x9d, 0xff, 0x11, 0xec, 0x21, +0x71, 0x7c, 0xc7, 0x45, 0xb2, 0xf3, 0xbf, 0xc7, +0x3a, 0x12, 0x06, 0x3b, 0x07, 0x79, 0xa3, 0x7f, +0x42, 0x16, 0x42, 0x3b, 0xff, 0x24, 0xf5, 0x4f, +0x76, 0xfe, 0x13, 0x83, 0x93, 0xc0, 0x72, 0x85, +0x0d, 0x67, 0xf4, 0xbf, 0x55, 0xae, 0xee, 0x57, +0xdb, 0x3b, 0xff, 0xae, 0x3c, 0xf7, 0x2f, 0x26, +0x7f, 0x04, 0x19, 0xfd, 0x7b, 0x5d, 0x2b, 0x12, +0x00, 0x3e, 0xd7, 0x04, 0x82, 0xd5, 0x1a, 0x6f, +0x1d, 0x05, 0xff, 0xcc, 0x17, 0x54, 0xf0, 0x4f, +0x74, 0xee, 0xd7, 0x5d, 0x42, 0xfe, 0x5b, 0x53, +0xfc, 0xe0, 0xd7, 0xdf, 0x7e, 0x55, 0xba, 0xf9, +0x41, 0x1e, 0x0b, 0x90, 0xbf, 0x47, 0xce, 0x63, +0x81, 0x0c, 0xc4, 0x35, 0x54, 0x00, 0x68, 0xcb, +0xfd, 0x17, 0x75, 0xbf, 0x20, 0x22, 0x7f, 0x91, +0x00, 0xf0, 0xa8, 0xea, 0x35, 0x68, 0xf0, 0x2f, +0x65, 0x8e, 0xc1, 0x3f, 0x55, 0xe4, 0xcf, 0x0a, +0x80, 0xb8, 0x99, 0x51, 0x88, 0x9b, 0x1e, 0x85, +0xf4, 0x89, 0x76, 0x38, 0xd4, 0x13, 0xc7, 0x88, +0x00, 0x12, 0x16, 0x9c, 0x1e, 0xda, 0xc9, 0x04, +0x05, 0x35, 0x21, 0x7f, 0x16, 0xa4, 0x27, 0xe0, +0xea, 0xab, 0xae, 0x90, 0x90, 0xbf, 0x89, 0xf1, +0xeb, 0xe8, 0xd8, 0x93, 0xb4, 0x5b, 0xf9, 0x8b, +0xe4, 0xdf, 0xdc, 0x19, 0x8e, 0xc4, 0xdf, 0x4f, +0x83, 0x7f, 0x4b, 0x2c, 0xf8, 0xc7, 0x25, 0x7f, +0xcb, 0x91, 0x12, 0xf0, 0x2b, 0x2f, 0x51, 0x63, +0xf4, 0xaf, 0x78, 0xe7, 0x3f, 0x59, 0x9d, 0x9d, +0x7f, 0xc1, 0xd1, 0x7f, 0xa4, 0xc6, 0x75, 0xbf, +0xca, 0x77, 0xfe, 0x3d, 0xf9, 0xee, 0xff, 0x75, +0xc5, 0xc1, 0x3f, 0xe2, 0xfe, 0x77, 0xbc, 0x6c, +0x0f, 0x89, 0x4e, 0xc9, 0x50, 0x9f, 0xd3, 0x00, +0x65, 0x51, 0xe5, 0x90, 0x1d, 0x98, 0x0b, 0xe9, +0xbe, 0x99, 0x60, 0xf5, 0xfc, 0x76, 0xb9, 0x9d, +0xff, 0x6d, 0xcf, 0x58, 0x40, 0x9c, 0x6b, 0x02, +0x0c, 0xf4, 0x0c, 0xc8, 0xd5, 0xfd, 0x0a, 0xed, +0xfc, 0x57, 0x57, 0x57, 0x43, 0x71, 0x41, 0x31, +0xb8, 0x7c, 0xe2, 0xa6, 0xd3, 0xba, 0x5f, 0x27, +0xb9, 0xd1, 0xbf, 0x97, 0xc2, 0xd1, 0xbf, 0xcf, +0xb5, 0x28, 0x9e, 0x50, 0x00, 0x78, 0xdc, 0x1d, +0x00, 0xaf, 0x8f, 0x6a, 0xd7, 0xfd, 0xcf, 0x2d, +0xf8, 0xb7, 0x45, 0x67, 0xc1, 0x3f, 0xe9, 0xb9, +0x5f, 0xa9, 0xfb, 0xaf, 0x68, 0xad, 0x57, 0xbb, +0xfc, 0x89, 0x3c, 0xf2, 0x21, 0x5b, 0x1b, 0x69, +0x69, 0x69, 0x64, 0x5b, 0xe0, 0xef, 0x28, 0x02, +0x6c, 0x16, 0xfb, 0x63, 0x81, 0x05, 0xf1, 0x1f, +0x61, 0xbb, 0xf2, 0x90, 0x9f, 0x7d, 0x48, 0x3b, +0xb0, 0x8f, 0x00, 0x12, 0xc7, 0x26, 0x16, 0x75, +0xf0, 0x4f, 0x99, 0xfb, 0x67, 0xc8, 0x5f, 0x2c, +0x00, 0x62, 0xc5, 0xc8, 0x1b, 0x6d, 0x84, 0x8e, +0xce, 0x30, 0x91, 0x10, 0xc0, 0x80, 0xdd, 0x51, +0xbc, 0x38, 0xf8, 0x0d, 0x92, 0xae, 0x26, 0x02, +0x80, 0xe0, 0x0c, 0x12, 0x7e, 0x43, 0x9d, 0x37, +0xf4, 0x60, 0x2f, 0xbf, 0xb6, 0x4b, 0x7f, 0xc6, +0xfb, 0x02, 0x18, 0xf7, 0x9f, 0x32, 0x5c, 0xbf, +0x00, 0x47, 0xff, 0x3d, 0x4b, 0x30, 0xf8, 0x57, +0xaf, 0xd7, 0xe0, 0x1f, 0x97, 0xfc, 0x2d, 0x10, +0x3b, 0xba, 0x4a, 0x94, 0xee, 0xfc, 0x67, 0xa9, +0xda, 0xf9, 0x57, 0x34, 0xfa, 0xd7, 0x60, 0xe7, +0x3f, 0x54, 0xad, 0x9d, 0xff, 0x00, 0x8d, 0x76, +0xfe, 0x9d, 0xb8, 0xee, 0x9f, 0x33, 0xfa, 0x27, +0xee, 0x3f, 0xc5, 0x25, 0x0d, 0x7e, 0xf8, 0xea, +0xaf, 0xbc, 0x11, 0xf0, 0x4f, 0x3f, 0xfc, 0x04, +0x3e, 0xab, 0xfc, 0xe4, 0xea, 0x7e, 0xb9, 0x3b, +0xff, 0x66, 0xcf, 0x59, 0x42, 0x4a, 0x60, 0x1a, +0xf4, 0x74, 0xf5, 0x08, 0xd6, 0xfd, 0xca, 0xee, +0xfc, 0xe7, 0x66, 0xe5, 0x82, 0xd9, 0x13, 0x56, +0xe2, 0xe0, 0x9f, 0xfa, 0x3b, 0xff, 0xea, 0x8f, +0xfe, 0xdd, 0x55, 0x8c, 0xfe, 0x51, 0x28, 0x71, +0xdc, 0xbf, 0xef, 0x35, 0x28, 0xa4, 0xae, 0x0e, +0x86, 0x4f, 0x2a, 0x9c, 0x96, 0x74, 0xf0, 0x4f, +0x74, 0xee, 0x57, 0xea, 0xfe, 0x2d, 0x92, 0x83, +0xe0, 0x0f, 0xfc, 0x7f, 0xea, 0xfe, 0x20, 0x8f, +0x82, 0xc8, 0x0d, 0x07, 0xb2, 0xb6, 0x99, 0x95, +0x95, 0xc5, 0x3e, 0x16, 0x18, 0x46, 0xbc, 0x48, +0x05, 0xc0, 0x5c, 0xc9, 0xff, 0xf1, 0xc6, 0x4b, +0x77, 0x3c, 0xde, 0xf0, 0xf7, 0x1d, 0x4f, 0x1c, +0x04, 0xdb, 0x77, 0x9b, 0xc0, 0x27, 0xbd, 0x67, +0x41, 0x05, 0xff, 0x92, 0xe7, 0x11, 0xfc, 0x53, +0x46, 0xfe, 0x5c, 0x01, 0x10, 0xcb, 0xfc, 0xef, +0x11, 0x28, 0x19, 0xaa, 0x82, 0xde, 0x8e, 0x00, +0x46, 0x08, 0x8c, 0x74, 0xf9, 0x60, 0xd9, 0x4e, +0xa4, 0xda, 0xe4, 0xaf, 0xcb, 0xc6, 0xbf, 0x13, +0xd3, 0xa2, 0xca, 0xdf, 0x83, 0xdd, 0x31, 0x34, +0xf8, 0xb7, 0x44, 0x83, 0x7f, 0xac, 0x00, 0xb0, +0x10, 0x0b, 0x00, 0x8b, 0x91, 0x62, 0x48, 0xf5, +0xd1, 0xb4, 0xee, 0x37, 0x43, 0x65, 0xdd, 0x6f, +0xac, 0xc6, 0x75, 0xbf, 0x9a, 0xed, 0xfc, 0x7b, +0xaa, 0xda, 0xf9, 0x27, 0xe4, 0x2f, 0x10, 0xfc, +0xdb, 0x9b, 0x54, 0xcb, 0x10, 0xbe, 0x6c, 0xdd, +0x2f, 0x09, 0xfe, 0xf5, 0x37, 0x0f, 0xc8, 0x91, +0xbf, 0x5c, 0xe9, 0x0f, 0xae, 0xfd, 0x59, 0xbe, +0x6c, 0x03, 0x19, 0xe1, 0x99, 0xd0, 0xda, 0xd2, +0xca, 0x10, 0x85, 0x50, 0xdd, 0x2f, 0xbb, 0xf3, +0xef, 0xf4, 0x81, 0x8b, 0x5a, 0x75, 0xbf, 0xca, +0x77, 0xfe, 0x9d, 0x35, 0xde, 0xf9, 0xf7, 0xe2, +0xba, 0x7f, 0x0e, 0xf9, 0xfb, 0x5d, 0x1d, 0x02, +0x46, 0xae, 0x1e, 0x32, 0xe4, 0xbf, 0x63, 0xc9, +0x04, 0xff, 0x98, 0x73, 0xbf, 0x19, 0xee, 0x3c, +0xf7, 0xdf, 0x34, 0xd0, 0xa1, 0x11, 0xf9, 0x93, +0xc7, 0x00, 0x64, 0x02, 0x40, 0xfa, 0x1f, 0xc8, +0x36, 0x08, 0x99, 0xf0, 0x88, 0x45, 0x00, 0x41, +0x0e, 0xe2, 0x3a, 0x2a, 0x00, 0x34, 0x84, 0xfd, +0x23, 0x87, 0xb3, 0x09, 0xf9, 0x73, 0xe1, 0x69, +0xd4, 0x0a, 0x89, 0x4d, 0x63, 0x4b, 0x22, 0xf8, +0x27, 0x34, 0xfa, 0x97, 0x25, 0x7f, 0x16, 0x31, +0x88, 0xf8, 0xa9, 0x01, 0xa8, 0x19, 0xc8, 0x83, +0x81, 0x36, 0x6f, 0x46, 0x08, 0x8c, 0xe3, 0xc5, +0xc1, 0x53, 0x33, 0xb1, 0x5a, 0x24, 0xff, 0xb9, +0x54, 0xfe, 0xfa, 0x32, 0xee, 0x3f, 0x6e, 0xb4, +0x99, 0x06, 0xff, 0x0c, 0x12, 0xfc, 0xab, 0xd3, +0x79, 0xf0, 0x8f, 0xeb, 0xfe, 0x09, 0xf9, 0x13, +0x84, 0xa5, 0xca, 0x90, 0xbf, 0x92, 0x9d, 0xff, +0x54, 0x59, 0xf7, 0x6f, 0xa4, 0xce, 0xce, 0x7f, +0xb4, 0xc6, 0x3b, 0xff, 0x01, 0xaa, 0x76, 0xfe, +0x99, 0xd1, 0xbf, 0x66, 0x3b, 0xff, 0xf5, 0xd9, +0x07, 0x15, 0xd6, 0xfd, 0x92, 0x9d, 0xff, 0x96, +0xbd, 0xad, 0x4a, 0xeb, 0x7e, 0x65, 0x77, 0xfe, +0x6d, 0xde, 0xb2, 0x85, 0xec, 0xd8, 0x1c, 0x66, +0xf4, 0x4f, 0x8e, 0xfd, 0xc8, 0xd6, 0xfd, 0xe6, +0xe4, 0xe4, 0x80, 0xcd, 0x0b, 0xb6, 0x73, 0xac, +0xfb, 0x75, 0x50, 0xa3, 0xee, 0xd7, 0x83, 0x57, +0xf7, 0xeb, 0xae, 0x64, 0xf4, 0xcf, 0x0a, 0x00, +0x7f, 0x14, 0x00, 0x0e, 0xaf, 0xfb, 0x2f, 0xd9, +0xe0, 0x9f, 0xe8, 0xdc, 0xaf, 0x54, 0x00, 0x6c, +0x4f, 0x09, 0x55, 0x9b, 0xfc, 0xc9, 0x06, 0x08, +0x79, 0x94, 0x43, 0xc8, 0x9f, 0x6c, 0x80, 0x70, +0x7f, 0x90, 0x30, 0x28, 0xf9, 0xbb, 0x15, 0x8b, +0x80, 0x7f, 0x22, 0xec, 0x10, 0xe7, 0x52, 0x01, +0xa0, 0x06, 0x90, 0xec, 0xff, 0x64, 0xfb, 0x78, +0xc3, 0xaf, 0x2c, 0xf1, 0x3b, 0xdf, 0xdf, 0x01, +0x4e, 0xcf, 0x1f, 0x11, 0x09, 0x81, 0x27, 0x0f, +0x82, 0x9f, 0x5d, 0x3b, 0x24, 0xf7, 0x8c, 0x2f, +0x89, 0xe0, 0x9f, 0xd0, 0xe8, 0x5f, 0x96, 0xfc, +0x63, 0x70, 0x0a, 0xc0, 0x22, 0x69, 0xb2, 0x0b, +0xea, 0xfb, 0x52, 0x60, 0x08, 0xbb, 0xf6, 0x99, +0xa0, 0x20, 0x06, 0xf0, 0xce, 0x60, 0x0a, 0x5f, +0xdf, 0xe4, 0x7f, 0x6c, 0x62, 0x0f, 0x43, 0xfe, +0x35, 0xbd, 0x29, 0x34, 0xf8, 0xb7, 0xc4, 0x83, +0x7f, 0x5c, 0xf7, 0x6f, 0x8e, 0x70, 0xad, 0xe3, +0x8f, 0xfe, 0x73, 0x34, 0xae, 0xfb, 0x55, 0xbe, +0xf3, 0x4f, 0xc8, 0x9f, 0xbb, 0xf3, 0xbf, 0x4b, +0xad, 0x9d, 0xff, 0x20, 0x8d, 0x76, 0xfe, 0x5d, +0x54, 0xec, 0xfc, 0xa7, 0x7b, 0x64, 0x2a, 0xac, +0xfb, 0x25, 0x2e, 0xef, 0xaf, 0xdf, 0xff, 0x15, +0x22, 0x6c, 0xa2, 0x04, 0x8f, 0xfd, 0x90, 0x9e, +0x7f, 0x6e, 0xdd, 0xaf, 0xec, 0xce, 0xbf, 0xd3, +0x27, 0xae, 0x90, 0x93, 0x98, 0x2b, 0x19, 0xfd, +0x17, 0x15, 0x15, 0x31, 0x75, 0xbf, 0xa1, 0xf6, +0x61, 0x22, 0xf2, 0xbf, 0x57, 0xf5, 0xe8, 0x5f, +0xd9, 0xce, 0xbf, 0x83, 0x50, 0xf0, 0x4f, 0xa0, +0xee, 0x57, 0xd5, 0xe8, 0x9f, 0x90, 0x7f, 0xc0, +0x55, 0x3b, 0xc1, 0xff, 0xda, 0x50, 0x78, 0xab, +0xc7, 0x56, 0x01, 0xf9, 0xdb, 0x2c, 0xda, 0xe0, +0x9f, 0xe8, 0xdc, 0xaf, 0x27, 0x4f, 0x00, 0xf4, +0x4d, 0x0f, 0xab, 0x4d, 0xfe, 0x64, 0x92, 0x43, +0x48, 0x9e, 0x94, 0x3f, 0x29, 0xda, 0x16, 0x20, +0x1b, 0x20, 0xd9, 0xd9, 0xd9, 0xec, 0x63, 0x81, +0x51, 0xc4, 0xab, 0x54, 0x00, 0xa8, 0x80, 0xdd, +0xa3, 0x4d, 0x59, 0x2c, 0xf9, 0xe3, 0x24, 0x00, +0x3c, 0xee, 0xea, 0x67, 0xe0, 0x7a, 0x6f, 0x37, +0x38, 0xad, 0x68, 0x66, 0xfe, 0xb9, 0xdd, 0xb3, +0x0d, 0x10, 0xec, 0xdf, 0x05, 0x69, 0x23, 0x93, +0x4b, 0x22, 0xf8, 0x17, 0xa7, 0x90, 0xfc, 0xf9, +0x02, 0x20, 0x9a, 0x60, 0x6a, 0x04, 0x32, 0xc6, +0x9a, 0xe1, 0x08, 0x5e, 0xdb, 0x23, 0x22, 0x80, +0x6c, 0x0d, 0xcc, 0x0c, 0x87, 0x32, 0x55, 0xbc, +0xfa, 0x10, 0x00, 0x4c, 0xe5, 0x6f, 0xa7, 0x37, +0xf4, 0xb5, 0x79, 0x41, 0xd4, 0x58, 0x07, 0x0d, +0xfe, 0x69, 0xd9, 0xfd, 0xcf, 0x25, 0xf8, 0xa7, +0x9e, 0x00, 0x98, 0x5b, 0xf0, 0x8f, 0xeb, 0xfe, +0xcd, 0x47, 0x8a, 0xc0, 0x72, 0xb0, 0x08, 0x72, +0x76, 0x28, 0xda, 0xf9, 0xcf, 0x52, 0xba, 0xf3, +0x9f, 0x30, 0xa7, 0x9d, 0xff, 0xdd, 0x1a, 0xef, +0xfc, 0x7b, 0xcb, 0xba, 0x7f, 0xc1, 0xd1, 0xbf, +0xb0, 0xfb, 0x77, 0x7a, 0xd3, 0x15, 0xfe, 0xfd, +0xf7, 0x7f, 0x2b, 0xac, 0xfb, 0x3d, 0x36, 0x71, +0x1c, 0xbc, 0x57, 0xf9, 0x32, 0xe4, 0xcf, 0xb8, +0xff, 0x27, 0xa5, 0x02, 0x80, 0xc0, 0x63, 0x95, +0x17, 0x04, 0x9a, 0x04, 0x43, 0xf0, 0xb6, 0x9d, +0x60, 0xb6, 0xc2, 0x52, 0xda, 0xf8, 0xc7, 0xdd, +0xf9, 0x7f, 0xd0, 0x04, 0x9c, 0x3e, 0x76, 0x85, +0x70, 0xc7, 0xdd, 0x10, 0xee, 0xbc, 0x1b, 0xdc, +0xbe, 0xf0, 0x00, 0xd3, 0xfb, 0x94, 0x8d, 0xfe, +0x15, 0xef, 0xfc, 0xdb, 0x6a, 0x69, 0xe7, 0x5f, +0xe4, 0xfe, 0xa5, 0xa3, 0x7f, 0xff, 0xab, 0x44, +0x02, 0x20, 0xf0, 0x2f, 0xa1, 0xf0, 0x65, 0x92, +0xcb, 0x92, 0x0b, 0xfe, 0xbd, 0xd5, 0xb4, 0x5d, +0x4c, 0xfe, 0x22, 0x01, 0xe0, 0x9c, 0x16, 0xa1, +0xf6, 0xc5, 0x47, 0xb2, 0xc1, 0x41, 0x04, 0x1c, +0xe9, 0x7f, 0x50, 0xf5, 0x83, 0xbc, 0x66, 0x48, +0xf6, 0x03, 0x03, 0x82, 0xec, 0x44, 0x20, 0x1f, +0x71, 0x03, 0x15, 0x00, 0xc2, 0xee, 0xff, 0x2a, +0x7c, 0xf6, 0xff, 0x1b, 0x2b, 0x00, 0x08, 0xe9, +0xb3, 0x02, 0x80, 0x85, 0xcb, 0xfd, 0x9d, 0xe0, +0xb0, 0xe2, 0x90, 0x48, 0x20, 0xbc, 0xdc, 0x08, +0x61, 0xd1, 0xbd, 0x90, 0x3e, 0x3d, 0xa5, 0x7d, +0xf7, 0x3f, 0xbb, 0xb0, 0xdc, 0x7f, 0x34, 0x47, +0x00, 0xb0, 0xc8, 0x1f, 0xde, 0x07, 0x5d, 0x1d, +0xc1, 0xa2, 0xa0, 0x20, 0x16, 0x09, 0x1d, 0xc5, +0x8b, 0x83, 0x4c, 0x50, 0x50, 0x87, 0xee, 0x7f, +0x66, 0x6c, 0x17, 0xe3, 0xfe, 0xcb, 0xfb, 0x72, +0x69, 0xf0, 0x6f, 0x91, 0x06, 0xff, 0x6c, 0x34, +0x08, 0xfe, 0x71, 0xdd, 0x3f, 0x11, 0x00, 0x04, +0xd1, 0x3b, 0x15, 0xd7, 0xfd, 0xa6, 0xcf, 0xa9, +0xee, 0x57, 0xfd, 0x9d, 0xff, 0x60, 0xb5, 0x76, +0xfe, 0x7d, 0x35, 0xde, 0xf9, 0x67, 0x47, 0xff, +0x05, 0xa1, 0x45, 0x0a, 0x47, 0xff, 0x43, 0xad, +0xc3, 0x60, 0xf7, 0xba, 0x83, 0xdc, 0xe8, 0xdf, +0xf4, 0x29, 0x33, 0xd8, 0x6d, 0x13, 0x01, 0xad, +0x0d, 0xad, 0xbc, 0x9d, 0xff, 0xb6, 0xd6, 0x36, +0x28, 0x48, 0x2e, 0x04, 0xcb, 0x57, 0x6d, 0x24, +0x75, 0xbf, 0xbc, 0x9d, 0xff, 0xfb, 0x64, 0x77, +0xfe, 0x2d, 0xe6, 0xbd, 0xf3, 0xaf, 0x49, 0xdd, +0x2f, 0x97, 0xfc, 0x85, 0xdc, 0x7f, 0xe0, 0x55, +0x28, 0xb4, 0xfe, 0x12, 0x06, 0x16, 0x5b, 0x7c, +0x55, 0x92, 0xbf, 0x7a, 0x7d, 0xff, 0x0b, 0x23, +0xf8, 0x47, 0xb0, 0x29, 0xc5, 0x57, 0x2a, 0x00, +0x30, 0x04, 0x38, 0x7d, 0xe6, 0x98, 0x4a, 0x32, +0x27, 0x13, 0x20, 0xf2, 0x08, 0x87, 0x64, 0x37, +0xd4, 0x21, 0x7f, 0xee, 0x0f, 0xd2, 0x10, 0x49, +0x44, 0x83, 0x58, 0x04, 0xfc, 0x0b, 0xe1, 0x88, +0x38, 0x8f, 0x0a, 0x00, 0x6e, 0xf8, 0xef, 0xb1, +0x46, 0xc9, 0xb3, 0x7f, 0xfb, 0x87, 0x0f, 0x83, +0xfb, 0x5d, 0xbd, 0x88, 0x3e, 0x39, 0x11, 0xc0, +0x08, 0x81, 0x47, 0xda, 0xc1, 0xfe, 0xf9, 0x46, +0xe6, 0x7b, 0x9d, 0xde, 0x3d, 0x04, 0x7b, 0x72, +0x06, 0x20, 0xe3, 0xe8, 0xe2, 0x0f, 0xfe, 0xa9, +0x4b, 0xfe, 0x51, 0x0c, 0x86, 0xf1, 0xeb, 0x41, +0x28, 0x1b, 0x2c, 0x81, 0x3e, 0xac, 0xe1, 0x25, +0x42, 0x60, 0x14, 0x2f, 0x0e, 0x9e, 0x98, 0x8e, +0xd2, 0x89, 0x00, 0x38, 0x83, 0xeb, 0x88, 0x43, +0xed, 0x9e, 0xd0, 0xdd, 0xee, 0x87, 0x95, 0xbf, +0x3d, 0x34, 0xf8, 0x27, 0x38, 0xfa, 0x6f, 0x31, +0x70, 0xf0, 0xaf, 0x46, 0xeb, 0xc1, 0x3f, 0x2e, +0xf9, 0x13, 0xf8, 0xe5, 0x17, 0x68, 0x50, 0xf7, +0xab, 0x7c, 0xe7, 0x3f, 0x4a, 0x26, 0xf8, 0xb7, +0x5b, 0x76, 0xe7, 0x5f, 0x70, 0xf4, 0xaf, 0xd9, +0xce, 0x3f, 0x21, 0x7f, 0xd5, 0x3b, 0xff, 0xa2, +0xd4, 0xff, 0x99, 0xe9, 0x33, 0x82, 0xae, 0xaf, +0xb9, 0xfc, 0x08, 0x58, 0xad, 0xd8, 0x2e, 0x17, +0xfc, 0x8b, 0xb0, 0x8d, 0x82, 0xae, 0x23, 0x5d, +0xcc, 0xce, 0xff, 0xc8, 0xc8, 0x88, 0xe0, 0xce, +0x7f, 0x6d, 0x55, 0x2d, 0x38, 0x7c, 0xe8, 0xa4, +0xa0, 0xee, 0x57, 0xc5, 0xce, 0xff, 0x9d, 0x5a, +0xd8, 0xf9, 0x57, 0x50, 0xf7, 0xeb, 0xa5, 0x64, +0xf4, 0xcf, 0xba, 0x7f, 0x22, 0x00, 0xbc, 0x1e, +0x0c, 0xd1, 0x7a, 0xf0, 0xef, 0x05, 0x03, 0x06, +0xff, 0xde, 0x68, 0x30, 0xe3, 0xb8, 0x7f, 0x77, +0xf0, 0xce, 0x8e, 0x53, 0x8b, 0xfc, 0x49, 0x78, +0x93, 0xac, 0x6d, 0x92, 0x0c, 0xc8, 0x5c, 0x7f, +0x90, 0x66, 0x48, 0xcc, 0x7b, 0xb0, 0x8f, 0x05, +0x26, 0x10, 0x6f, 0x50, 0x01, 0x20, 0x72, 0xff, +0x37, 0x20, 0x24, 0xee, 0xdf, 0xf9, 0x9e, 0x76, +0x70, 0xbd, 0xb3, 0x1b, 0xdc, 0xee, 0xec, 0x51, +0x28, 0x04, 0xdc, 0xef, 0xee, 0x03, 0xe7, 0x27, +0xda, 0xc0, 0xf6, 0x99, 0x06, 0xe6, 0xd7, 0xb8, +0x7d, 0xd9, 0x0c, 0xd1, 0x35, 0xc3, 0x4b, 0x22, +0xf8, 0x27, 0x34, 0xfa, 0xe7, 0x0b, 0x80, 0x61, +0x1e, 0xe2, 0x26, 0x7a, 0xa0, 0xb6, 0x2f, 0x13, +0x5b, 0xf9, 0x44, 0x45, 0x42, 0xe3, 0xe2, 0x8b, +0x83, 0x5a, 0xad, 0xfc, 0xc5, 0x4e, 0x02, 0xe2, +0xfe, 0x0b, 0x06, 0x4a, 0x69, 0xf0, 0x6f, 0x19, +0x05, 0xff, 0xb8, 0xe4, 0x6f, 0x36, 0x52, 0x08, +0xb6, 0x2d, 0x85, 0x9c, 0xd1, 0x7f, 0x0e, 0xbf, +0xee, 0xd7, 0x94, 0x3f, 0xfa, 0x4f, 0x9a, 0x4b, +0xdd, 0xaf, 0x86, 0x3b, 0xff, 0x84, 0xfc, 0x7d, +0x55, 0xd6, 0xfd, 0x7a, 0xa8, 0xac, 0xfb, 0xf5, +0xff, 0x32, 0x50, 0x70, 0xf4, 0x7f, 0x72, 0xfa, +0x14, 0x98, 0x3f, 0x6b, 0xc5, 0xdb, 0xf9, 0xdf, +0xf1, 0xba, 0x3d, 0x34, 0x94, 0x35, 0xc0, 0xd1, +0xa3, 0x47, 0x61, 0x6a, 0x6a, 0x4a, 0x6e, 0xe7, +0xbf, 0xad, 0xad, 0x8d, 0xb7, 0xf3, 0x5f, 0x53, +0x8d, 0x7f, 0x37, 0x6f, 0xda, 0x23, 0xf9, 0x9b, +0xa8, 0x51, 0xf7, 0xab, 0xed, 0x9d, 0x7f, 0xd5, +0xa3, 0x7f, 0x89, 0x00, 0xe0, 0x8c, 0xfe, 0x09, +0xf9, 0x07, 0xff, 0xdf, 0x2e, 0x44, 0x38, 0xbc, +0x7f, 0xc0, 0x7e, 0x49, 0x04, 0xff, 0x44, 0xe7, +0x7e, 0xbd, 0x24, 0xe4, 0x6f, 0x94, 0xe1, 0x09, +0x67, 0xfe, 0xfa, 0x8d, 0x52, 0xd2, 0x26, 0xd3, +0x1f, 0xb2, 0xb6, 0x49, 0x82, 0x9b, 0xa4, 0x00, +0x68, 0xbe, 0x3f, 0xc8, 0x63, 0x01, 0x22, 0x0e, +0x39, 0x8f, 0x05, 0x8a, 0x11, 0x37, 0x2d, 0x6f, +0x01, 0xf0, 0x78, 0x43, 0x1e, 0x4b, 0xfe, 0x76, +0x0f, 0xe1, 0x07, 0xe4, 0x9d, 0x1d, 0xe0, 0x72, +0x67, 0x27, 0x8a, 0x80, 0x2e, 0x14, 0x01, 0x52, +0x21, 0xe0, 0x21, 0x28, 0x04, 0x7a, 0xc1, 0xf9, +0xd9, 0x16, 0x26, 0x24, 0x48, 0x7e, 0xbd, 0xd7, +0xd6, 0x56, 0x88, 0x3f, 0x32, 0xba, 0x24, 0x82, +0x7f, 0xca, 0xdc, 0x3f, 0x8b, 0x48, 0x0e, 0x92, +0xc7, 0x5b, 0xa1, 0xa1, 0x47, 0x54, 0xd0, 0x43, +0x30, 0x85, 0x17, 0x07, 0x49, 0x50, 0x70, 0xbe, +0xe4, 0x7f, 0x0a, 0x5b, 0x09, 0x49, 0xe5, 0x6f, +0x5b, 0x47, 0x08, 0x56, 0xfe, 0xf6, 0xd3, 0xe0, +0x9f, 0x5a, 0xc1, 0xbf, 0xe6, 0x25, 0x11, 0xfc, +0xe3, 0x92, 0x3f, 0x8b, 0x64, 0x27, 0xd1, 0xe8, +0x5f, 0xd7, 0x3b, 0xff, 0x84, 0xfc, 0x55, 0xef, +0xfc, 0xfb, 0x6b, 0xb4, 0xf3, 0xef, 0x28, 0xb0, +0xf3, 0x4f, 0x0a, 0x7f, 0x76, 0x6e, 0x0c, 0x13, +0x0c, 0xfe, 0xb5, 0xd7, 0x76, 0xf0, 0x76, 0xfe, +0x77, 0x6e, 0xdd, 0x05, 0xe3, 0xc3, 0xe3, 0x72, +0x75, 0xbf, 0x03, 0x03, 0x03, 0x82, 0x3b, 0xff, +0x24, 0xf5, 0x4f, 0x76, 0xfe, 0xa3, 0xbd, 0x63, +0xd4, 0xaa, 0xfb, 0xd5, 0xfd, 0xce, 0xbf, 0xbf, +0xd2, 0xe0, 0x1f, 0x19, 0xfd, 0x07, 0x22, 0xf9, +0x07, 0xfd, 0x65, 0x17, 0x23, 0x00, 0x42, 0xfe, +0x1c, 0x0e, 0x9b, 0x02, 0x3c, 0x96, 0x44, 0xf0, +0xef, 0xdd, 0x5a, 0x6b, 0x9e, 0xfb, 0xdf, 0x59, +0x98, 0xa6, 0x92, 0xfc, 0xd9, 0xbf, 0x3f, 0x12, +0x00, 0xd5, 0xe6, 0x0f, 0x72, 0x36, 0x9a, 0x3c, +0x4e, 0x10, 0x8b, 0x80, 0x7f, 0x23, 0x5c, 0x11, +0xe7, 0x13, 0x3e, 0x8c, 0x8f, 0x8f, 0x3f, 0x67, +0xd9, 0x08, 0x00, 0x24, 0xed, 0x3b, 0x10, 0xbf, +0xb3, 0x02, 0xc0, 0xf1, 0xae, 0x23, 0xe0, 0x74, +0x47, 0x2b, 0x38, 0xdf, 0xd1, 0x8e, 0x22, 0x40, +0x91, 0x10, 0x90, 0x7f, 0x2c, 0xe0, 0x76, 0x4f, +0x0f, 0x38, 0xbd, 0x20, 0xda, 0x18, 0xb0, 0x7d, +0x0a, 0x37, 0x06, 0x9c, 0x3b, 0x20, 0xb1, 0x77, +0x5c, 0xeb, 0xee, 0xdf, 0x10, 0xc1, 0x3f, 0x45, +0xe4, 0x2f, 0x2b, 0x00, 0x08, 0x22, 0xa6, 0x86, +0x20, 0x13, 0x89, 0xa4, 0xad, 0x53, 0x74, 0xa4, +0x87, 0x8c, 0xed, 0x67, 0xf0, 0xe2, 0x20, 0x09, +0xf0, 0xcd, 0x55, 0x00, 0x4c, 0xf4, 0x07, 0x31, +0xee, 0x3f, 0x73, 0xa8, 0x46, 0x03, 0xf7, 0xaf, +0xbb, 0xe0, 0x5f, 0x00, 0x0d, 0xfe, 0xe9, 0x2d, +0xf8, 0x27, 0x2f, 0x00, 0x0a, 0x20, 0x34, 0x3a, +0x4f, 0x78, 0xf4, 0xaf, 0xf5, 0x9d, 0xff, 0x30, +0xd5, 0x3b, 0xff, 0x02, 0xa3, 0x7f, 0x0f, 0x95, +0x75, 0xbf, 0xf2, 0xc7, 0x7e, 0x76, 0x99, 0xee, +0x91, 0x1b, 0xfd, 0x93, 0x0f, 0x7d, 0x92, 0xf4, +0x8e, 0x77, 0x4e, 0x84, 0xc0, 0x4d, 0xc1, 0x50, +0x97, 0x7f, 0x00, 0x4e, 0x9f, 0x12, 0x5d, 0xfa, +0x63, 0x8f, 0xfd, 0x08, 0xd5, 0xfd, 0x0a, 0xed, +0xfc, 0x97, 0x14, 0x95, 0x80, 0xd9, 0x93, 0x16, +0x72, 0x75, 0xbf, 0x5b, 0xe7, 0x5d, 0xf7, 0xeb, +0x22, 0x37, 0xfa, 0x77, 0x91, 0xab, 0xfb, 0xf5, +0x11, 0xac, 0xfb, 0x55, 0x14, 0xfc, 0x63, 0xdd, +0x7f, 0x08, 0xba, 0xff, 0x9d, 0x7f, 0xde, 0x0d, +0xf6, 0xf8, 0x67, 0xbd, 0xd8, 0x83, 0x7f, 0xa2, +0x73, 0xbf, 0x52, 0xf7, 0x6f, 0x9c, 0xee, 0x05, +0x3f, 0xfe, 0xeb, 0xef, 0x4a, 0x9d, 0x3a, 0xf9, +0xbb, 0x23, 0x20, 0x5f, 0xeb, 0xea, 0x07, 0x99, +0x20, 0x71, 0x1e, 0x0b, 0x4c, 0x25, 0x27, 0x27, +0xaf, 0x41, 0x01, 0x60, 0xb9, 0x7c, 0x04, 0xc0, +0xe3, 0x07, 0x8b, 0x25, 0xee, 0xff, 0xc1, 0x46, +0x70, 0xb8, 0xa3, 0x19, 0x1c, 0xef, 0x10, 0x89, +0x00, 0xa7, 0x3b, 0xda, 0x04, 0x85, 0x80, 0xb2, +0x7c, 0x80, 0xeb, 0xbd, 0x5d, 0xe0, 0xf8, 0xe2, +0x61, 0xd1, 0xef, 0xf7, 0x3c, 0x6e, 0x0c, 0x04, +0x77, 0x41, 0x0a, 0x36, 0x09, 0x2e, 0x85, 0xe0, +0x9f, 0x6a, 0xf2, 0x47, 0x4c, 0x0e, 0x31, 0x88, +0x9c, 0x1c, 0x84, 0xc2, 0xc1, 0x4a, 0x7c, 0x66, +0x1f, 0xc0, 0x08, 0x01, 0x12, 0x14, 0x3c, 0x86, +0x17, 0x07, 0x35, 0x25, 0xff, 0x93, 0xb3, 0xb1, +0x0c, 0xf9, 0x1f, 0xee, 0xda, 0x43, 0x83, 0x7f, +0x73, 0x24, 0x7f, 0xf5, 0xdc, 0xff, 0xc2, 0x0d, +0xfe, 0x71, 0xc9, 0x7f, 0x1b, 0xc2, 0x0d, 0x4f, +0xa5, 0x0a, 0xd5, 0xfd, 0xa6, 0xa8, 0x53, 0xf7, +0xbb, 0x5e, 0x76, 0xf4, 0x1f, 0xa5, 0x51, 0xdd, +0xaf, 0xea, 0x9d, 0x7f, 0x2f, 0x8d, 0x82, 0x7f, +0xec, 0xb1, 0x1f, 0xaf, 0xcf, 0x7c, 0x99, 0xc0, +0x9f, 0xec, 0xce, 0x3f, 0xf7, 0xd2, 0x1f, 0x39, +0xf6, 0x73, 0xf2, 0xe4, 0x49, 0xb9, 0xd1, 0x3f, +0x09, 0xfe, 0x1d, 0x69, 0x3a, 0x02, 0x31, 0x1e, +0xb1, 0xb0, 0xc7, 0x39, 0x12, 0x1a, 0x0e, 0x36, +0x48, 0xea, 0x7e, 0xb9, 0x3b, 0xff, 0x8e, 0xef, +0x3a, 0xab, 0x1c, 0xfd, 0x5b, 0xa8, 0x1a, 0xfd, +0xab, 0xdc, 0xf9, 0xf7, 0xe4, 0xed, 0xfc, 0x7b, +0xa8, 0xb9, 0xf3, 0xcf, 0x25, 0xff, 0x20, 0xf1, +0xe8, 0x3f, 0x04, 0xc9, 0x7f, 0xe7, 0x9f, 0xf7, +0x40, 0xf0, 0xf5, 0xbb, 0xe1, 0xb5, 0x21, 0x9b, +0x45, 0x1d, 0xfc, 0x13, 0x9d, 0xfb, 0x95, 0xba, +0xff, 0xd8, 0xca, 0x7c, 0x85, 0xa4, 0x4c, 0x84, +0x1f, 0x71, 0xfd, 0xe4, 0xef, 0x4f, 0x97, 0xe4, +0xcf, 0x9d, 0x34, 0x90, 0xc7, 0x46, 0xe4, 0xb1, +0x40, 0x42, 0x42, 0x02, 0xc1, 0x81, 0x65, 0x21, +0x00, 0x90, 0xa4, 0x1f, 0x40, 0xfc, 0x21, 0x11, +0x00, 0x77, 0x36, 0x81, 0xfd, 0xed, 0x87, 0xc0, +0xe1, 0xf6, 0xc3, 0x28, 0x04, 0x8e, 0xa0, 0x10, +0x68, 0x11, 0x4f, 0x03, 0xa4, 0x42, 0xc0, 0x95, +0x11, 0x02, 0xca, 0xf3, 0x01, 0x8c, 0x10, 0x78, +0xb0, 0x03, 0xec, 0x5f, 0x68, 0x62, 0x7e, 0x5f, +0x87, 0xd7, 0x9a, 0x20, 0x2c, 0xa1, 0x17, 0x52, +0xa6, 0x17, 0x7f, 0xf0, 0x4f, 0x11, 0xf9, 0xb3, +0xee, 0x9f, 0x15, 0x00, 0x04, 0x7b, 0x10, 0x51, +0x78, 0xa5, 0xaf, 0xb2, 0x3f, 0x0f, 0xfa, 0xb1, +0x48, 0x88, 0x08, 0x01, 0x52, 0xe2, 0x43, 0x2e, +0x0e, 0xaa, 0x2b, 0x00, 0xc6, 0x7a, 0xfd, 0x19, +0x01, 0x90, 0x8c, 0x64, 0xb5, 0x10, 0x83, 0x7f, +0xfe, 0x4b, 0x30, 0xf8, 0xe7, 0x60, 0xe0, 0xe0, +0x9f, 0x32, 0xf7, 0x4f, 0x04, 0x80, 0x45, 0x5f, +0x3e, 0xa4, 0x9b, 0xa9, 0xda, 0xf9, 0x4f, 0x52, +0xb9, 0xf3, 0x2f, 0x34, 0xfa, 0xd7, 0x78, 0xe7, +0x5f, 0x8d, 0xd1, 0xbf, 0xb3, 0x40, 0xdd, 0x2f, +0x1b, 0xfc, 0x63, 0x8f, 0xfd, 0xd8, 0xac, 0xb0, +0x85, 0xfe, 0xa6, 0x01, 0xc9, 0xe8, 0x9f, 0x3c, +0xef, 0xfd, 0xe7, 0x3f, 0xff, 0x09, 0x3f, 0xfe, +0xf8, 0x23, 0x93, 0xe2, 0xfe, 0xfa, 0xeb, 0xaf, +0x25, 0x97, 0xfe, 0xd8, 0x63, 0x3f, 0x24, 0xf8, +0x47, 0x46, 0xff, 0xb9, 0x38, 0x11, 0x31, 0x79, +0x7a, 0x9b, 0x64, 0xe7, 0x3f, 0xdc, 0x61, 0xb7, +0x5c, 0xdd, 0x6f, 0x61, 0x21, 0x5e, 0x00, 0x7c, +0xd3, 0x51, 0xe3, 0xba, 0x5f, 0x7d, 0xed, 0xfc, +0x07, 0xc8, 0x8e, 0xfe, 0xc5, 0xee, 0x3f, 0xf4, +0x4a, 0xfc, 0x7b, 0xb9, 0x32, 0x02, 0x3e, 0xcf, +0x71, 0x5a, 0xb4, 0xc1, 0xbf, 0x27, 0x47, 0xd6, +0xe0, 0xb9, 0x5f, 0xa9, 0xfb, 0x37, 0x49, 0xf5, +0x81, 0x7f, 0xff, 0xf7, 0x3f, 0x0a, 0x0f, 0xfd, +0x10, 0xd1, 0x46, 0x46, 0xff, 0x84, 0x98, 0xf5, +0xf9, 0x83, 0x94, 0x42, 0x45, 0x47, 0x47, 0x13, +0x01, 0xd0, 0xb7, 0x5c, 0x04, 0x40, 0x95, 0xa4, +0xf1, 0xef, 0x01, 0x1c, 0xdd, 0xdf, 0xde, 0x00, +0x76, 0xb7, 0x37, 0x22, 0x58, 0x21, 0x20, 0x9a, +0x06, 0xf0, 0x84, 0xc0, 0x9d, 0xac, 0x10, 0xe8, +0x52, 0x4b, 0x08, 0xb8, 0x3c, 0xd6, 0x0e, 0x76, +0xcf, 0x89, 0x36, 0x06, 0x9c, 0x3f, 0xc4, 0x8d, +0x81, 0x82, 0x81, 0x25, 0x11, 0xfc, 0x53, 0xe6, +0xfe, 0xb9, 0x02, 0x80, 0x45, 0xdc, 0x78, 0x27, +0xec, 0xef, 0x49, 0x46, 0x11, 0xe0, 0xc1, 0x08, +0x81, 0x89, 0xfe, 0x40, 0x38, 0x8d, 0xcf, 0xf6, +0x95, 0x91, 0xff, 0xf1, 0xa9, 0x28, 0x86, 0xfc, +0x0f, 0x60, 0xae, 0x80, 0x06, 0xff, 0xb4, 0x35, +0xfa, 0x6f, 0x5c, 0x74, 0xc1, 0x3f, 0x2e, 0xf9, +0x6f, 0x1b, 0xc9, 0x67, 0x10, 0xe5, 0xad, 0x7c, +0xe7, 0x9f, 0x90, 0xbf, 0xe6, 0x3b, 0xff, 0xe1, +0x7c, 0xf7, 0xff, 0xa9, 0xea, 0x9d, 0x7f, 0x2f, +0x95, 0x3b, 0xff, 0xae, 0x0a, 0x83, 0x7f, 0x0c, +0xf9, 0xbf, 0x28, 0x22, 0x7f, 0xeb, 0x17, 0x76, +0x40, 0xf8, 0xd6, 0x3d, 0x92, 0xba, 0x5f, 0xb2, +0xea, 0x45, 0x2a, 0x5e, 0xc9, 0xb3, 0x5a, 0x72, +0x0b, 0xfe, 0xcc, 0x99, 0x33, 0x70, 0xe2, 0xc4, +0x09, 0xde, 0xe8, 0xbf, 0xbb, 0xa3, 0x1b, 0x82, +0xcd, 0x76, 0x4a, 0x1a, 0xff, 0xd8, 0x9d, 0xff, +0xa4, 0x90, 0x64, 0xc9, 0xe8, 0x9f, 0xb4, 0xc5, +0xb1, 0x75, 0xbf, 0x3b, 0x5e, 0xb5, 0x57, 0x39, +0xfa, 0xb7, 0x54, 0x59, 0xf7, 0xeb, 0xa4, 0x71, +0xdd, 0xaf, 0xa7, 0x92, 0xba, 0x5f, 0x45, 0xa3, +0x7f, 0xd6, 0xfd, 0x87, 0x22, 0xf9, 0x87, 0x5d, +0x19, 0x09, 0x66, 0xd6, 0x3e, 0x7a, 0x0d, 0xfe, +0x3d, 0xa3, 0xa5, 0xe0, 0x9f, 0xe8, 0xdc, 0x2f, +0x6e, 0x61, 0x64, 0x7b, 0x48, 0x04, 0x40, 0xe6, +0x01, 0xe1, 0x73, 0xbf, 0x64, 0xe2, 0x43, 0x92, +0xfe, 0x44, 0xbc, 0x11, 0x11, 0xa8, 0xcf, 0x1f, +0x44, 0x48, 0x46, 0x45, 0x45, 0x31, 0x02, 0x20, +0x31, 0x31, 0x71, 0x64, 0xc9, 0x0b, 0x00, 0x24, +0xe4, 0x27, 0x25, 0xe4, 0xff, 0xf8, 0x41, 0xd8, +0x7e, 0xc7, 0x01, 0x7c, 0xa1, 0xd7, 0x23, 0xa4, +0x42, 0xc0, 0x9e, 0x11, 0x02, 0x87, 0x15, 0x08, +0x01, 0x4d, 0x82, 0x82, 0xb8, 0x31, 0xf0, 0x74, +0x2b, 0xd8, 0x3e, 0x2d, 0xde, 0x18, 0x58, 0x77, +0x04, 0xa2, 0xf6, 0x0f, 0x2f, 0x89, 0xe0, 0x9f, +0x3a, 0xe4, 0x4f, 0xb0, 0x1b, 0x1f, 0x09, 0x10, +0xa4, 0x8c, 0x1e, 0x82, 0xc3, 0xdd, 0x11, 0xa2, +0xa0, 0x20, 0x06, 0xfb, 0xa6, 0x30, 0xdd, 0x4f, +0x56, 0xfc, 0x64, 0xc9, 0xff, 0xf4, 0xf1, 0x78, +0xcc, 0x0f, 0x78, 0x41, 0x3f, 0x0a, 0x86, 0xd8, +0xd1, 0x96, 0x65, 0x1c, 0xfc, 0x6b, 0xa7, 0xc1, +0x3f, 0x01, 0x01, 0xe0, 0x9b, 0x96, 0x33, 0x87, +0x9d, 0xff, 0x18, 0xbe, 0xfb, 0x57, 0xa3, 0xee, +0x57, 0xe5, 0xce, 0x3f, 0x21, 0xff, 0x39, 0xec, +0xfc, 0xb3, 0xa3, 0x7f, 0x96, 0xfc, 0x09, 0xc8, +0x85, 0xbf, 0x14, 0xf7, 0x34, 0xf8, 0xfb, 0x4f, +0x7f, 0x67, 0x9e, 0xfd, 0xff, 0xed, 0x6f, 0x7f, +0x63, 0xaa, 0x5d, 0xb9, 0xa3, 0x7f, 0x36, 0xf8, +0x57, 0x91, 0x59, 0x09, 0xdb, 0xdf, 0xb4, 0xe5, +0x93, 0x3f, 0x4e, 0x00, 0x2c, 0xb0, 0xff, 0x9f, +0xa4, 0xfe, 0x65, 0xeb, 0x7e, 0xb3, 0x32, 0xb2, +0xc1, 0xec, 0x51, 0x2b, 0x99, 0xd1, 0xbf, 0xa5, +0xca, 0xd1, 0xbf, 0xb6, 0x77, 0xfe, 0x7d, 0x95, +0xec, 0xfc, 0xf3, 0x47, 0xff, 0x52, 0xf7, 0xbf, +0xeb, 0x4f, 0x91, 0xe0, 0xf5, 0x54, 0xd8, 0x82, +0x0e, 0xfe, 0x29, 0x12, 0x00, 0x4f, 0x0f, 0xad, +0x83, 0xcd, 0x19, 0x9e, 0x12, 0x01, 0xb0, 0x35, +0xc5, 0x5f, 0xf0, 0xdc, 0x2f, 0x21, 0x7f, 0x22, +0xd8, 0xc8, 0xa3, 0x1b, 0x7d, 0x93, 0x3f, 0x79, +0x9d, 0xc5, 0xc4, 0xc4, 0x30, 0x02, 0x20, 0x2e, +0x2e, 0x8e, 0x08, 0x80, 0xb1, 0xe5, 0x20, 0x00, +0x0e, 0xb0, 0x02, 0x60, 0xfb, 0xfd, 0x75, 0x60, +0x73, 0xdb, 0x7e, 0xd8, 0x7e, 0x5b, 0x1d, 0x42, +0x24, 0x04, 0x6c, 0x79, 0x42, 0xe0, 0x90, 0x48, +0x08, 0x48, 0xf2, 0x01, 0x2d, 0x73, 0x0a, 0x0a, +0xba, 0xdf, 0x83, 0x1b, 0x03, 0xcf, 0xb7, 0x48, +0x6e, 0x0c, 0x78, 0x59, 0xb6, 0x42, 0x5c, 0xeb, +0xc8, 0x92, 0x08, 0xfe, 0xa9, 0x2b, 0x00, 0x58, +0x64, 0x0d, 0xd5, 0x42, 0x3b, 0x16, 0x09, 0x71, +0x83, 0x82, 0xa7, 0x70, 0x75, 0x90, 0x9c, 0xf9, +0x3d, 0x3a, 0xbe, 0x87, 0x69, 0xfc, 0x13, 0xad, +0xfd, 0x95, 0xd0, 0xe0, 0x1f, 0x0d, 0xfe, 0xf1, +0xc8, 0x7f, 0xeb, 0x48, 0x1e, 0xd8, 0x1d, 0xcc, +0x15, 0x18, 0xfd, 0xa7, 0xa8, 0xac, 0xfb, 0xe5, +0xee, 0xfc, 0x87, 0xab, 0xdc, 0xf9, 0x0f, 0xd1, +0x78, 0xe7, 0x9f, 0x90, 0xbf, 0x3a, 0x3b, 0xff, +0xdc, 0xd1, 0x3f, 0x4b, 0xfe, 0x96, 0xcf, 0xd9, +0x80, 0xc5, 0xb3, 0xd6, 0xb0, 0x73, 0x0b, 0x79, +0x2f, 0x9c, 0x92, 0x8c, 0xfe, 0x4f, 0x9f, 0x16, +0x05, 0xff, 0x66, 0xa6, 0x67, 0xa0, 0x2a, 0xbb, +0x1a, 0x9c, 0xb1, 0xd2, 0x97, 0xe9, 0xfb, 0x7f, +0x64, 0x0b, 0xaf, 0xee, 0x77, 0xeb, 0xb3, 0xe6, +0x50, 0x92, 0x53, 0x22, 0x19, 0xfd, 0x93, 0x63, +0x3f, 0x6c, 0xdd, 0xef, 0x4e, 0xbb, 0x30, 0xde, +0xce, 0xbf, 0x64, 0xf4, 0x7f, 0xb7, 0x2c, 0xf9, +0xef, 0x50, 0x5a, 0xf7, 0xab, 0xfd, 0x9d, 0xff, +0x50, 0xc1, 0xe0, 0x9f, 0xc4, 0xfd, 0x23, 0xf9, +0xef, 0xfa, 0x53, 0x14, 0x84, 0x5f, 0x19, 0x05, +0x6f, 0xb5, 0xee, 0x58, 0x54, 0xc1, 0x3f, 0xe6, +0xdc, 0x6f, 0x8e, 0xab, 0x98, 0xfc, 0x45, 0x02, +0xa0, 0x5c, 0xe0, 0xdc, 0x2f, 0x99, 0xf6, 0x90, +0xbf, 0x2f, 0xb2, 0xb5, 0x41, 0x26, 0x40, 0xfa, +0xfc, 0x41, 0x1e, 0x39, 0x61, 0xf0, 0x8f, 0x21, +0xff, 0xac, 0xcc, 0x4c, 0xc0, 0x00, 0x20, 0x11, +0x00, 0xd3, 0x4b, 0x5a, 0x00, 0x20, 0xf9, 0xbe, +0x28, 0x75, 0xff, 0xf5, 0x60, 0x75, 0x5b, 0x0d, +0x58, 0xdf, 0x5a, 0x8b, 0xd8, 0xa7, 0x40, 0x08, +0x70, 0x1f, 0x0b, 0xc8, 0x0a, 0x01, 0xe1, 0xa0, +0xa0, 0x9b, 0x92, 0xc7, 0x02, 0x6e, 0xa4, 0x5a, +0xf8, 0x45, 0x51, 0xb5, 0x30, 0x99, 0x0a, 0xf8, +0x79, 0x74, 0x40, 0xc2, 0xc0, 0xd8, 0xa2, 0x0f, +0xfe, 0xa9, 0x4b, 0xfe, 0x04, 0xe1, 0x13, 0xf8, +0x33, 0xae, 0xf4, 0x15, 0xf7, 0x17, 0x43, 0x6f, +0x9b, 0xaf, 0x64, 0x75, 0x90, 0x45, 0x3f, 0x76, +0x0a, 0x94, 0x62, 0x76, 0x60, 0xce, 0xa3, 0xff, +0x71, 0x1a, 0xfc, 0x5b, 0x4a, 0xc1, 0x3f, 0x96, +0xfc, 0x59, 0x01, 0xb0, 0x75, 0x38, 0x0f, 0x12, +0xac, 0xf8, 0xa3, 0xff, 0xc4, 0x39, 0xd5, 0xfd, +0xee, 0xd1, 0xb8, 0xee, 0x57, 0xf9, 0xce, 0xbf, +0xbb, 0xca, 0x9d, 0x7f, 0xd9, 0xd1, 0xbf, 0x84, +0xfc, 0x9f, 0xb3, 0x66, 0x76, 0xfe, 0xc9, 0xca, +0x1f, 0xf9, 0x7a, 0xa7, 0x49, 0x18, 0x94, 0xc6, +0xe3, 0xc5, 0xbe, 0xb8, 0x12, 0xc8, 0x08, 0xce, +0x04, 0x97, 0x4f, 0xdc, 0xa4, 0xc7, 0x7e, 0x1e, +0xd9, 0xc2, 0x73, 0xff, 0x3e, 0x9b, 0xfc, 0xa0, +0xaa, 0xac, 0x9a, 0x09, 0x8e, 0x91, 0x31, 0x32, +0x77, 0xf4, 0x4f, 0x8e, 0xfd, 0x90, 0xff, 0x7b, +0x1a, 0xef, 0xfc, 0xdf, 0xa6, 0x7c, 0xe7, 0x7f, +0xee, 0x75, 0xbf, 0x8a, 0x77, 0xfe, 0xa5, 0xa3, +0x7f, 0xa9, 0xfb, 0x0f, 0x27, 0x02, 0xe0, 0x8a, +0x68, 0x58, 0xbf, 0xdb, 0x7d, 0x51, 0x05, 0xff, +0x9e, 0xed, 0xdf, 0x00, 0x46, 0x59, 0x9e, 0x12, +0x01, 0x60, 0x9e, 0x14, 0xc8, 0x84, 0x37, 0xb9, +0x57, 0x1e, 0xc9, 0xa4, 0x87, 0x4c, 0x6a, 0x48, +0xc5, 0x2f, 0xe9, 0x7d, 0xd0, 0xf7, 0x0f, 0x22, +0x3c, 0x08, 0xf9, 0x27, 0x25, 0x26, 0x42, 0x39, +0x8a, 0x45, 0xb1, 0x00, 0x38, 0xb1, 0xd4, 0x05, +0xc0, 0x11, 0x56, 0x00, 0x58, 0xdf, 0x57, 0x0b, +0x96, 0xb7, 0x56, 0x21, 0xf6, 0x82, 0xd5, 0xad, +0x8a, 0x84, 0x80, 0x50, 0x3e, 0x80, 0x1f, 0x14, +0x74, 0x9a, 0x4b, 0x50, 0xf0, 0xfe, 0x2e, 0x70, +0x78, 0x51, 0x54, 0x2d, 0x6c, 0xb7, 0xa2, 0x11, +0x82, 0x77, 0x75, 0x43, 0xe2, 0xf8, 0xf8, 0xa2, +0x0f, 0xfe, 0xa9, 0x12, 0x00, 0x84, 0xfc, 0xb9, +0x20, 0xcd, 0x7e, 0xd9, 0x43, 0xd5, 0x50, 0x8b, +0x07, 0x7e, 0x6a, 0x7a, 0xd3, 0xa0, 0xa4, 0xbf, +0x40, 0xda, 0xf5, 0xaf, 0xaf, 0xe0, 0xdf, 0x98, +0xa1, 0x83, 0x7f, 0x9d, 0x34, 0xf8, 0xa7, 0xa6, +0xfb, 0x17, 0x21, 0x17, 0x76, 0x86, 0x66, 0x28, +0x1f, 0xfd, 0x6b, 0xb8, 0xf3, 0x1f, 0xa2, 0xd6, +0xce, 0xbf, 0x9f, 0xf2, 0xe0, 0x9f, 0xc0, 0xe8, +0x5f, 0x76, 0xe7, 0x9f, 0x90, 0x31, 0xe3, 0xfe, +0x5f, 0x90, 0x77, 0xff, 0x92, 0xc2, 0x9f, 0xa7, +0x15, 0x5c, 0xfa, 0x7b, 0x8c, 0x7f, 0xe9, 0xcf, +0xe2, 0x65, 0x2b, 0xc8, 0x4f, 0x2e, 0x90, 0xec, +0xfc, 0xb3, 0xa3, 0x7f, 0x36, 0xf8, 0x97, 0x9b, +0x9b, 0x0b, 0x7b, 0xbc, 0x22, 0x74, 0xb4, 0xf3, +0xaf, 0xde, 0xe8, 0x5f, 0xd9, 0xce, 0x7f, 0x90, +0xcc, 0xce, 0x3f, 0x77, 0xf4, 0x2f, 0x71, 0xff, +0x48, 0xfe, 0xbb, 0xaf, 0x88, 0x01, 0xbb, 0x55, +0x41, 0x8b, 0x26, 0xf8, 0xf7, 0xd8, 0xc4, 0x97, +0xb0, 0x26, 0xc3, 0x03, 0x8c, 0x24, 0xee, 0xdf, +0x03, 0x8a, 0xea, 0xab, 0x19, 0x51, 0x46, 0xf2, +0x19, 0x64, 0xab, 0x83, 0x6c, 0x78, 0x10, 0xa1, +0x46, 0x0a, 0x9b, 0x0c, 0x41, 0xfe, 0x64, 0x83, +0x84, 0x90, 0x3f, 0x19, 0xff, 0xd7, 0xa2, 0x10, +0xc8, 0x4d, 0x4f, 0x67, 0x05, 0xc0, 0x99, 0x25, +0x2b, 0x00, 0x90, 0x6c, 0xdf, 0x91, 0x8c, 0xfe, +0x1f, 0xab, 0x07, 0xf3, 0x5b, 0x2b, 0xc0, 0xfc, +0x96, 0x0a, 0xb0, 0xb8, 0xa5, 0x12, 0x45, 0x40, +0x35, 0x4f, 0x08, 0xd8, 0x70, 0x84, 0x80, 0x6c, +0x3e, 0x40, 0xab, 0x41, 0xc1, 0x87, 0xa5, 0x1b, +0x03, 0x8e, 0x6f, 0x35, 0x41, 0x68, 0x6a, 0x2f, +0x24, 0xcd, 0x2c, 0xfe, 0xe0, 0x9f, 0x32, 0xf7, +0xcf, 0xc5, 0x2e, 0x24, 0x79, 0x2e, 0xc2, 0x64, +0x41, 0x83, 0x7f, 0x34, 0xf8, 0x27, 0x43, 0xfe, +0x04, 0x6e, 0x85, 0x59, 0x4a, 0xeb, 0x7e, 0x55, +0xee, 0xfc, 0xaf, 0x94, 0xdd, 0xf9, 0x0f, 0xd5, +0x78, 0xe7, 0xdf, 0x5d, 0xe5, 0xce, 0xbf, 0x93, +0xbc, 0xfb, 0x47, 0xf2, 0x77, 0xfb, 0xc0, 0x13, +0xca, 0xa2, 0xca, 0xe1, 0xf8, 0xd8, 0x09, 0xf8, +0xe6, 0xc4, 0x37, 0xf0, 0xf5, 0x89, 0xaf, 0xe1, +0xab, 0x13, 0x5f, 0x61, 0x5f, 0xc6, 0x57, 0x30, +0xd8, 0x31, 0x04, 0x39, 0xa1, 0xb9, 0xe0, 0xfc, +0x91, 0x9b, 0xe4, 0xd2, 0x1f, 0xef, 0xd4, 0xaf, +0x78, 0xf4, 0x6f, 0xfe, 0x92, 0x15, 0xec, 0x2d, +0xab, 0x91, 0xdb, 0xf9, 0xe7, 0x8e, 0xfe, 0x93, +0xa2, 0x92, 0xc1, 0x1c, 0x9f, 0xfd, 0x6b, 0x67, +0xe7, 0xdf, 0x55, 0x8d, 0x9d, 0x7f, 0x5f, 0xa5, +0x3b, 0xff, 0xfe, 0x2a, 0x76, 0xfe, 0xb9, 0xc1, +0x3f, 0x86, 0xfc, 0x11, 0xbb, 0xc5, 0x02, 0x20, +0xe4, 0x96, 0x28, 0x78, 0x69, 0x6c, 0x71, 0x04, +0xff, 0x56, 0x74, 0x6d, 0x66, 0xc8, 0x9f, 0x15, +0x00, 0xdb, 0x53, 0xc2, 0x24, 0x29, 0xff, 0xf6, +0xf6, 0x76, 0x66, 0x32, 0x43, 0xfe, 0x8e, 0x48, +0x61, 0x13, 0xbb, 0xfe, 0xa9, 0xcf, 0x1f, 0x64, +0xbb, 0x84, 0x7d, 0xee, 0x5f, 0x81, 0x62, 0x31, +0x03, 0xd7, 0xff, 0x9a, 0xf0, 0x35, 0x24, 0x16, +0x00, 0xdf, 0x2d, 0x65, 0x01, 0xd0, 0xc3, 0x0a, +0x00, 0xcb, 0x7b, 0xaa, 0x61, 0xdb, 0x2d, 0xa5, +0x60, 0x76, 0x4b, 0x19, 0x8a, 0x80, 0x72, 0x14, +0x01, 0x44, 0x08, 0x54, 0x31, 0x42, 0xc0, 0x8a, +0x2b, 0x04, 0x6e, 0x23, 0x42, 0x40, 0xfa, 0x58, +0x40, 0x17, 0x41, 0x41, 0xf2, 0xcf, 0x9c, 0x9f, +0x68, 0x67, 0xae, 0x0d, 0x92, 0xff, 0x36, 0x97, +0xcf, 0x0e, 0x43, 0x78, 0x69, 0xff, 0x92, 0x08, +0xfe, 0xcd, 0x8f, 0xfc, 0x69, 0xf0, 0x8f, 0x06, +0xff, 0xe4, 0x05, 0x80, 0x29, 0xc2, 0xb2, 0x33, +0x5b, 0xc3, 0x9d, 0xff, 0x48, 0x8d, 0x76, 0xfe, +0xfd, 0xd5, 0xda, 0xf9, 0xf7, 0xe4, 0xbb, 0xff, +0xd7, 0x95, 0x07, 0xff, 0xe2, 0xed, 0x13, 0x61, +0xe0, 0xd0, 0x20, 0xfc, 0xf6, 0xeb, 0x6f, 0x92, +0xba, 0x5f, 0xa1, 0x9d, 0x7f, 0x92, 0xfa, 0x27, +0xc1, 0xbf, 0x8e, 0x43, 0x9d, 0xe0, 0xb7, 0x21, +0x40, 0x4a, 0xfe, 0x1c, 0xf7, 0x1f, 0xed, 0x11, +0x23, 0xa9, 0xfb, 0xe5, 0x8e, 0xfe, 0xd9, 0xe0, +0x5f, 0x7a, 0x72, 0x06, 0x33, 0x65, 0xd0, 0x66, +0xdd, 0xef, 0xbc, 0x77, 0xfe, 0x35, 0x18, 0xfd, +0x73, 0xdd, 0xff, 0x9e, 0xcb, 0x63, 0x21, 0xe2, +0xf2, 0x38, 0xf8, 0xa8, 0xdc, 0x7e, 0xc1, 0x07, +0xff, 0x88, 0xfb, 0x5f, 0x87, 0xa5, 0x3f, 0x5c, +0x01, 0xd0, 0x23, 0x73, 0xee, 0x97, 0xe4, 0x3b, +0x48, 0x79, 0x93, 0x21, 0xc8, 0x9f, 0x3c, 0x82, +0x20, 0xc5, 0x3f, 0x84, 0xfc, 0x73, 0xb2, 0xb2, +0x20, 0x2f, 0x2d, 0x0d, 0x1a, 0xf0, 0xf5, 0x33, +0x89, 0xbd, 0x12, 0x62, 0x01, 0xf0, 0xe3, 0x92, +0x14, 0x00, 0x48, 0xac, 0x9f, 0x49, 0xdd, 0xff, +0x01, 0x30, 0xbd, 0xa5, 0x18, 0xb6, 0xde, 0x5c, +0x0c, 0xdb, 0x6e, 0xc6, 0x96, 0x2c, 0x9e, 0x10, +0xa8, 0x54, 0x20, 0x04, 0xf4, 0x10, 0x14, 0x24, +0x1b, 0x03, 0xcf, 0xb5, 0x32, 0x6d, 0x82, 0xe4, +0xbf, 0xd3, 0x7d, 0xf3, 0x11, 0x88, 0x3c, 0x38, +0xa4, 0xb5, 0xe0, 0x5f, 0xac, 0x01, 0x83, 0x7f, +0xb2, 0xe4, 0xaf, 0x1d, 0xf7, 0x4f, 0x83, 0x7f, +0xcb, 0x25, 0xf8, 0xc7, 0x25, 0x7f, 0xd3, 0xd1, +0x1c, 0x06, 0x11, 0x8e, 0x29, 0x1c, 0xf2, 0x4f, +0xd4, 0xb8, 0xee, 0x57, 0xf9, 0xce, 0x7f, 0xa0, +0xc6, 0x3b, 0xff, 0x4e, 0x0a, 0x76, 0xfe, 0x1d, +0xdf, 0x70, 0x81, 0x8e, 0xbd, 0x9d, 0x82, 0x75, +0xbf, 0xc4, 0x15, 0x92, 0x67, 0xc1, 0x42, 0x3b, +0xff, 0x24, 0xf5, 0x3f, 0x34, 0x30, 0x0c, 0x9e, +0x6b, 0x7c, 0x78, 0xe4, 0x4f, 0x9e, 0xfb, 0xc7, +0xf9, 0xc6, 0x33, 0xcf, 0x8e, 0x85, 0x76, 0xfe, +0x13, 0x77, 0x27, 0x81, 0xd5, 0x73, 0x3b, 0x34, +0xda, 0xf9, 0x57, 0x6b, 0xf4, 0x2f, 0xb3, 0xf3, +0xef, 0xa6, 0x83, 0x9d, 0xff, 0x30, 0x41, 0xf2, +0x47, 0x5c, 0x16, 0x07, 0xa6, 0xce, 0xde, 0x0b, +0x3e, 0xf8, 0xf7, 0x72, 0x8b, 0xa9, 0x84, 0xfc, +0x09, 0x9c, 0xd2, 0x22, 0x61, 0x21, 0xfd, 0x20, +0x42, 0x91, 0x90, 0x3f, 0x29, 0xfd, 0x29, 0xc5, +0x29, 0x51, 0x0d, 0x8a, 0x46, 0x42, 0xfe, 0xa4, +0x77, 0x42, 0x2c, 0x00, 0xfe, 0xb9, 0xe4, 0x04, +0x00, 0x92, 0xe9, 0xd9, 0x88, 0x51, 0x56, 0x00, +0x98, 0xdf, 0x5d, 0x01, 0x26, 0x37, 0x17, 0x80, +0xe9, 0xcd, 0x85, 0x28, 0x02, 0x8a, 0x38, 0x42, +0xa0, 0x0c, 0x51, 0xce, 0x79, 0x2c, 0x20, 0x15, +0x02, 0x7a, 0x0d, 0x0a, 0x92, 0x6a, 0xe1, 0x15, +0xa2, 0x6a, 0x61, 0x72, 0x67, 0xc0, 0xdb, 0xb6, +0x0d, 0xa2, 0x3b, 0x46, 0x16, 0x7d, 0xf0, 0x4f, +0xa7, 0xa3, 0x7f, 0x1a, 0xfc, 0x5b, 0xda, 0xc1, +0x3f, 0x01, 0x01, 0xe0, 0x1b, 0x9b, 0x2e, 0x19, +0xfd, 0xc7, 0xcd, 0xa9, 0xee, 0x77, 0x97, 0xea, +0xba, 0xdf, 0x0f, 0xf8, 0xa3, 0x7f, 0x4f, 0x55, +0x75, 0xbf, 0x32, 0xee, 0xdf, 0xf1, 0x75, 0x17, +0x38, 0x3a, 0x7c, 0x4c, 0xf0, 0xd2, 0x9f, 0xd0, +0xce, 0x3f, 0x49, 0xfd, 0xcb, 0xee, 0xfc, 0x27, +0xf9, 0x26, 0xcb, 0x05, 0xff, 0xac, 0x5f, 0xdb, +0x0e, 0x7b, 0x2b, 0xf7, 0xf2, 0x47, 0xff, 0x05, +0x45, 0xb0, 0xcb, 0x31, 0x1c, 0xb6, 0x3e, 0x6c, +0xae, 0x56, 0xdd, 0xaf, 0xf2, 0x9d, 0x7f, 0x67, +0x8d, 0x77, 0xfe, 0xbd, 0xb4, 0xb0, 0xf3, 0x2f, +0x3b, 0xfa, 0x67, 0xdd, 0x7f, 0xe4, 0x65, 0xf1, +0xe0, 0xf9, 0x52, 0xf8, 0x82, 0x0e, 0xfe, 0x11, +0xf7, 0xbf, 0x11, 0x8b, 0x7e, 0x24, 0x02, 0x00, +0x43, 0x80, 0x93, 0xa7, 0x8f, 0x2e, 0x18, 0xf2, +0x27, 0xaf, 0x25, 0x76, 0xdf, 0xbf, 0x02, 0x1f, +0x41, 0x94, 0xe2, 0xa3, 0x88, 0x21, 0x3c, 0x22, +0xf5, 0x1f, 0x9c, 0x40, 0xcd, 0xa2, 0xd8, 0x14, +0x0b, 0x80, 0x9f, 0x97, 0xa2, 0x00, 0xd8, 0xc0, +0x92, 0xbf, 0xcd, 0xa3, 0x75, 0x60, 0x7c, 0x53, +0x2e, 0x6c, 0xb9, 0x09, 0x1b, 0xb4, 0x6e, 0xca, +0x17, 0x10, 0x02, 0xa5, 0x0a, 0x84, 0xc0, 0x5c, +0x82, 0x82, 0xcd, 0x4a, 0x82, 0x82, 0x5d, 0xaa, +0x83, 0x82, 0xb8, 0x31, 0xe0, 0xf8, 0x92, 0xa8, +0x5a, 0xd8, 0x16, 0x1f, 0x0f, 0xf8, 0xf9, 0x76, +0x40, 0xec, 0xe0, 0x88, 0x56, 0x82, 0x7f, 0x31, +0x06, 0x0c, 0xfe, 0xc9, 0x92, 0xff, 0x2e, 0x35, +0x46, 0xff, 0x34, 0xf8, 0x47, 0x83, 0x7f, 0x5c, +0xf2, 0x37, 0x19, 0xcd, 0x06, 0xbb, 0x9a, 0x4c, +0x15, 0xa3, 0x7f, 0xf5, 0x77, 0xfe, 0x03, 0xd5, +0xd9, 0xf9, 0x67, 0x46, 0xff, 0x9a, 0xed, 0xfc, +0x77, 0xd6, 0x76, 0xc9, 0x7d, 0x10, 0xcb, 0xd6, +0xfd, 0x0a, 0xed, 0xfc, 0xb3, 0x75, 0xbf, 0xe4, +0xd8, 0x8f, 0xd7, 0x5a, 0x1f, 0xb9, 0x9d, 0xff, +0x8d, 0x0f, 0x1a, 0x33, 0xa7, 0x7e, 0x23, 0xdc, +0x70, 0x7f, 0x3b, 0x20, 0x1e, 0x82, 0x2c, 0x42, +0xc0, 0xfc, 0x29, 0xab, 0x79, 0xd6, 0xfd, 0x3a, +0xa8, 0x51, 0xf7, 0xeb, 0xc1, 0x1b, 0xfd, 0xbb, +0x6b, 0xa1, 0xee, 0x57, 0xd5, 0xe8, 0x3f, 0xf2, +0x32, 0x91, 0x00, 0x88, 0xf8, 0x53, 0x3c, 0xbc, +0xda, 0x6b, 0xb9, 0x60, 0x83, 0x7f, 0x6f, 0x34, +0x98, 0x23, 0xf1, 0x7b, 0x4a, 0x04, 0x80, 0x77, +0x76, 0xfc, 0x82, 0x21, 0x7f, 0xf2, 0x3a, 0x63, +0x9f, 0xfb, 0x17, 0xe3, 0x23, 0xa2, 0x3c, 0x0c, +0xfd, 0x75, 0x61, 0x05, 0xf0, 0xdf, 0xf0, 0xb1, +0xd3, 0x0f, 0xf8, 0xda, 0x3b, 0x82, 0x8f, 0x93, +0xc4, 0x02, 0xe0, 0xd7, 0x25, 0x25, 0x00, 0x90, +0x3c, 0xcf, 0x43, 0xcc, 0xb2, 0x02, 0x60, 0xeb, +0x9d, 0xc5, 0x60, 0x74, 0x53, 0x16, 0x8a, 0x80, +0x1c, 0x85, 0x42, 0x80, 0x4c, 0x03, 0x58, 0x21, +0x60, 0xce, 0x13, 0x02, 0x86, 0x09, 0x0a, 0xba, +0x3e, 0xd8, 0x89, 0x1b, 0x03, 0xa2, 0xa0, 0xa0, +0xfd, 0xcb, 0x8d, 0x10, 0x14, 0xd9, 0x85, 0x67, +0x78, 0x47, 0x69, 0xf0, 0x8f, 0x06, 0xff, 0x96, +0x55, 0xf0, 0x4f, 0x56, 0x00, 0x6c, 0x1d, 0xcc, +0x86, 0x18, 0x63, 0xc5, 0xa3, 0x7f, 0xee, 0xce, +0xff, 0x2e, 0x55, 0x3b, 0xff, 0xcc, 0xe8, 0x5f, +0xb3, 0x9d, 0x7f, 0x17, 0x15, 0x3b, 0xff, 0x69, +0xee, 0x19, 0x82, 0xcf, 0x60, 0xc9, 0xe8, 0xff, +0x1f, 0x3f, 0xfd, 0x03, 0x1a, 0x8a, 0x9a, 0xa0, +0x28, 0xa2, 0x18, 0xf2, 0x76, 0xe5, 0x43, 0x53, +0x79, 0x13, 0x4c, 0x4f, 0x4c, 0x8b, 0x76, 0xfe, +0x39, 0x75, 0xbf, 0x8d, 0xb5, 0x8d, 0x18, 0x04, +0x34, 0x65, 0x82, 0x7f, 0x36, 0x6f, 0xec, 0x80, +0xf4, 0x3d, 0x19, 0x90, 0x14, 0x9c, 0x0c, 0xfe, +0x26, 0x01, 0xb0, 0xf9, 0x81, 0x2d, 0x60, 0xf4, +0x80, 0xe8, 0xcc, 0xaf, 0x31, 0x7b, 0xe9, 0x8f, +0xad, 0xfb, 0x55, 0xb9, 0xf3, 0x6f, 0xab, 0x74, +0xe7, 0xdf, 0x41, 0x9d, 0x9d, 0xff, 0x39, 0x8d, +0xfe, 0xc3, 0xe4, 0x46, 0xff, 0xa1, 0x72, 0xa3, +0x7f, 0x14, 0x6e, 0x97, 0xc7, 0x48, 0x46, 0xff, +0x84, 0xfc, 0xa3, 0x2e, 0x4d, 0x80, 0xe8, 0x4b, +0x13, 0x61, 0x75, 0xa2, 0x8b, 0xfe, 0x83, 0x7f, +0xea, 0xb8, 0xff, 0xf1, 0xd5, 0xb0, 0x89, 0x71, +0xff, 0x22, 0x01, 0x60, 0x9c, 0xe9, 0xa5, 0xf2, +0xdc, 0xaf, 0x3e, 0x9f, 0xfb, 0x93, 0xae, 0x7f, +0x42, 0xfe, 0x99, 0x48, 0xfc, 0x24, 0xf4, 0x77, +0x04, 0xc3, 0xa3, 0x5f, 0x63, 0xd6, 0xe4, 0x9f, +0xf8, 0xf8, 0xa9, 0xbf, 0xbb, 0x1b, 0x8a, 0xb2, +0xb3, 0x59, 0x01, 0xf0, 0xc7, 0x52, 0x13, 0x00, +0xdb, 0x24, 0x6b, 0x7f, 0x8f, 0xec, 0x83, 0x4d, +0x37, 0xa6, 0xc3, 0xe6, 0x1b, 0x33, 0x10, 0x99, +0x28, 0x04, 0xb2, 0x19, 0x21, 0xb0, 0x85, 0x23, +0x04, 0x4c, 0x19, 0x21, 0x20, 0x7d, 0x2c, 0xb0, +0x70, 0x82, 0x82, 0xe2, 0x6a, 0xe1, 0xe7, 0x45, +0xd5, 0xc2, 0x8e, 0xef, 0xe2, 0xc6, 0x40, 0x56, +0x2f, 0x12, 0x3e, 0x0d, 0xfe, 0xd1, 0xe0, 0x9f, +0x66, 0xee, 0x7f, 0xb1, 0x06, 0xff, 0xb8, 0xe4, +0x2f, 0x42, 0x16, 0x84, 0xf8, 0x24, 0x6b, 0x50, +0xf7, 0xab, 0xd9, 0xce, 0xbf, 0xb7, 0xac, 0xfb, +0x17, 0x1c, 0xfd, 0x2b, 0xde, 0xf9, 0x3f, 0x35, +0x79, 0x5a, 0xee, 0xc3, 0x98, 0x04, 0xff, 0x06, +0x8e, 0x0c, 0x82, 0xc3, 0xdb, 0xce, 0x92, 0x33, +0xbf, 0xdb, 0x9e, 0xb2, 0x60, 0xbe, 0xee, 0x6e, +0xee, 0xe1, 0x8d, 0xfe, 0x87, 0x06, 0x87, 0xc0, +0xf5, 0x0b, 0x0f, 0xc6, 0xfd, 0x3b, 0x7d, 0xea, +0x02, 0x4d, 0x8d, 0x4d, 0x4c, 0xea, 0x9f, 0x0d, +0xfe, 0xb9, 0x7c, 0x8e, 0x77, 0xe5, 0x19, 0xf2, +0x37, 0x55, 0xe3, 0xd2, 0x9f, 0xf2, 0x9d, 0x7f, +0x5b, 0x9d, 0xec, 0xfc, 0x87, 0xa8, 0x11, 0xfc, +0x8b, 0xe0, 0xed, 0xfc, 0x0b, 0x8d, 0xfe, 0xa3, +0x2e, 0x23, 0xe4, 0x8f, 0xb8, 0x24, 0x11, 0xb6, +0x6f, 0x0e, 0x5a, 0x90, 0xc1, 0xbf, 0x77, 0xf6, +0xd9, 0x88, 0xc9, 0x5f, 0x24, 0x00, 0x54, 0x9d, +0xfb, 0xd5, 0xe7, 0x0f, 0x92, 0x11, 0x21, 0xe4, +0x4f, 0x08, 0x3e, 0x3f, 0x23, 0x03, 0xea, 0xf1, +0x7f, 0x1f, 0xc3, 0xd7, 0xd9, 0xaf, 0x28, 0x44, +0xc7, 0x70, 0xc2, 0x54, 0x85, 0xc1, 0xd1, 0x32, +0x9c, 0x0a, 0x88, 0x05, 0x00, 0x09, 0x09, 0x5e, +0xb8, 0x24, 0x04, 0x00, 0x12, 0xe5, 0x85, 0x88, +0xd3, 0xac, 0x00, 0xd8, 0x72, 0x47, 0x1e, 0x6c, +0xbc, 0x31, 0x15, 0x91, 0x26, 0x16, 0x02, 0x28, +0x02, 0x6e, 0xcc, 0x52, 0x20, 0x04, 0x0a, 0x79, +0x42, 0x40, 0xdb, 0x41, 0x41, 0xc7, 0xf9, 0x04, +0x05, 0x9f, 0x6e, 0x03, 0xdb, 0x67, 0xc4, 0x1b, +0x03, 0x2b, 0x0f, 0xc3, 0xae, 0xaa, 0xfe, 0x65, +0x15, 0xfc, 0xdb, 0x49, 0x83, 0x7f, 0xcb, 0x36, +0xf8, 0x27, 0x25, 0x7f, 0x91, 0x00, 0x70, 0xcd, +0x48, 0x15, 0x8f, 0xfe, 0x35, 0xdb, 0xf9, 0x0f, +0x96, 0x75, 0xff, 0x8a, 0x46, 0xff, 0x1a, 0xec, +0xfc, 0xdb, 0x73, 0x76, 0xfe, 0x23, 0xcc, 0xa3, +0x04, 0x47, 0xff, 0x53, 0xfd, 0x53, 0xb0, 0xfd, +0x65, 0x3b, 0xe9, 0xce, 0xff, 0x53, 0xa2, 0x9d, +0xff, 0x8c, 0xa0, 0x4c, 0x49, 0xf0, 0x8f, 0xd4, +0xfd, 0x92, 0xd1, 0x7f, 0xd6, 0x9e, 0x6c, 0xc9, +0xe8, 0x3f, 0xc6, 0x33, 0x96, 0x59, 0x1b, 0xe3, +0xee, 0xfc, 0xe7, 0xa4, 0xe4, 0x48, 0xc8, 0x9f, +0x71, 0xff, 0xbc, 0xd1, 0xbf, 0x85, 0x1a, 0x75, +0xbf, 0x76, 0x5a, 0xaf, 0xfb, 0xf5, 0x51, 0x59, +0xf7, 0xab, 0x7a, 0xe7, 0x9f, 0x0d, 0xfe, 0x45, +0xca, 0xb8, 0xff, 0x98, 0x4b, 0x92, 0x60, 0xe7, +0x3d, 0x31, 0x0b, 0x2e, 0xf8, 0xf7, 0xf8, 0xd8, +0x6a, 0x3c, 0xf8, 0xe3, 0x23, 0x11, 0x00, 0x5b, +0xd2, 0xbd, 0xe1, 0x6f, 0xff, 0xfc, 0x69, 0x41, +0x90, 0x3f, 0x79, 0x2d, 0xb1, 0xcf, 0xfd, 0x8b, +0xb0, 0x17, 0x62, 0x2f, 0x06, 0x45, 0x27, 0x70, +0xb2, 0x44, 0x84, 0xe8, 0x51, 0x7c, 0xad, 0x1d, +0xc0, 0xd7, 0x51, 0x01, 0xb6, 0x00, 0x76, 0xe1, +0x29, 0x69, 0x8e, 0x00, 0xf8, 0xf3, 0x52, 0x11, +0x00, 0x76, 0x2c, 0xf9, 0x5b, 0x3d, 0x5c, 0x03, +0xeb, 0x6f, 0x48, 0x82, 0x0d, 0x37, 0x24, 0x23, +0x52, 0x18, 0x21, 0x40, 0x44, 0xc0, 0x26, 0x76, +0x1a, 0x20, 0x23, 0x04, 0x84, 0xf3, 0x01, 0xac, +0x10, 0x90, 0x3e, 0x16, 0xe0, 0x0a, 0x01, 0x6b, +0x46, 0x08, 0xe8, 0x27, 0x28, 0xe8, 0x7e, 0xb7, +0xb8, 0x5a, 0xf8, 0x49, 0xf1, 0xc6, 0x80, 0xe9, +0x11, 0xd8, 0xd3, 0x34, 0x48, 0x83, 0x7f, 0x34, +0xf8, 0xb7, 0xa4, 0x83, 0x7f, 0x5c, 0xf2, 0xdf, +0x82, 0xb0, 0x6c, 0x4e, 0x67, 0xc8, 0x5f, 0x36, +0xf8, 0xb7, 0x5b, 0x76, 0xe7, 0x5f, 0x70, 0xf4, +0xbf, 0x53, 0xe3, 0xba, 0x5f, 0xe5, 0x3b, 0xff, +0x8e, 0x12, 0xf7, 0x5f, 0x19, 0x5b, 0x2d, 0x18, +0xfc, 0xdb, 0x63, 0x11, 0x29, 0x69, 0xfc, 0x63, +0x0b, 0x7f, 0x9c, 0xde, 0x77, 0x85, 0x99, 0xa9, +0x19, 0xde, 0xe8, 0xbf, 0xed, 0x70, 0x1b, 0x53, +0xef, 0xcb, 0xd6, 0xfd, 0xa6, 0x84, 0xa6, 0x32, +0xa9, 0x7f, 0xee, 0xce, 0x7f, 0x51, 0x7e, 0x11, +0x67, 0xf4, 0xbf, 0x8d, 0x57, 0xf7, 0xab, 0xed, +0x9d, 0x7f, 0x57, 0xa1, 0x9d, 0x7f, 0xb5, 0xea, +0x7e, 0x77, 0xaa, 0x57, 0xf7, 0x2b, 0x76, 0xff, +0x64, 0xf4, 0xbf, 0x47, 0x60, 0xf4, 0x4f, 0xc8, +0x3f, 0xf6, 0x12, 0x9c, 0xf6, 0x5c, 0x9c, 0x02, +0xef, 0xd4, 0xdb, 0x2c, 0xa8, 0xe0, 0x1f, 0x39, +0xf7, 0x6b, 0x94, 0xe3, 0x29, 0x11, 0x00, 0x31, +0x15, 0xf9, 0x0b, 0x82, 0xfc, 0xc9, 0x76, 0x09, +0xfb, 0xdc, 0x3f, 0x1f, 0x1b, 0x21, 0x4b, 0x50, +0x00, 0x0c, 0xf4, 0xf4, 0xc0, 0xbf, 0x30, 0xf1, +0x7f, 0x06, 0x37, 0x4d, 0x0e, 0xa3, 0x98, 0xcc, +0x44, 0xc2, 0x6f, 0x45, 0x61, 0x49, 0xfe, 0x37, +0x47, 0x00, 0xdc, 0xb8, 0xe8, 0x05, 0x00, 0x92, +0xe2, 0xa5, 0x88, 0xef, 0x58, 0x01, 0xb0, 0xf9, +0xb6, 0x2c, 0x58, 0x77, 0x7d, 0x02, 0xac, 0xbb, +0x21, 0x51, 0x46, 0x08, 0xa4, 0xc9, 0x09, 0x01, +0x63, 0x46, 0x08, 0xcc, 0x25, 0x28, 0x58, 0xad, +0x24, 0x28, 0x58, 0xaf, 0x24, 0x28, 0x78, 0x64, +0xce, 0x41, 0x41, 0x66, 0x63, 0x40, 0x5c, 0x2d, +0xbc, 0x03, 0xd7, 0x07, 0xbd, 0x9d, 0xda, 0x20, +0xb2, 0x7b, 0x78, 0xd9, 0x04, 0xff, 0x42, 0x96, +0x60, 0xf0, 0xcf, 0xdd, 0xc0, 0xc1, 0x3f, 0xdb, +0x05, 0x1c, 0xfc, 0xe3, 0x92, 0xff, 0x96, 0xd1, +0x4c, 0x06, 0xbb, 0xcd, 0xe3, 0x84, 0x47, 0xff, +0x1a, 0xec, 0xfc, 0x13, 0xf2, 0x57, 0xbd, 0xf3, +0xef, 0xa1, 0xf6, 0xce, 0x7f, 0xd7, 0xbe, 0x6e, +0xb9, 0xd1, 0xff, 0x0f, 0xdf, 0xfc, 0x55, 0x54, +0xf9, 0xcb, 0x75, 0xff, 0x4f, 0x9a, 0x43, 0x53, +0xd5, 0x21, 0x5e, 0xf0, 0x8f, 0xb4, 0xb4, 0x05, +0x98, 0x04, 0xf1, 0x82, 0x7f, 0x99, 0x51, 0x59, +0x72, 0x3b, 0xff, 0xa4, 0x59, 0xce, 0xf4, 0x41, +0x33, 0x95, 0xc1, 0xbf, 0xb9, 0xec, 0xfc, 0x3b, +0xc9, 0xed, 0xfc, 0x7b, 0xa9, 0xb1, 0xf3, 0x1f, +0xa4, 0xb5, 0x9d, 0x7f, 0xde, 0xe8, 0x9f, 0x15, +0x00, 0x17, 0x27, 0x43, 0x1c, 0x0a, 0x00, 0x23, +0x5f, 0xcf, 0x05, 0x12, 0xfc, 0x5b, 0x0d, 0x4f, +0x8c, 0xae, 0x01, 0xa3, 0x0c, 0x6f, 0x89, 0x00, +0x30, 0x49, 0xf5, 0x53, 0x78, 0xee, 0x57, 0xdf, +0x3f, 0xd2, 0x70, 0xc7, 0x9f, 0x90, 0x7f, 0x1a, +0x3e, 0xff, 0xcf, 0x45, 0x74, 0xb6, 0xb4, 0xc0, +0x5f, 0x71, 0xd5, 0x94, 0x80, 0x7c, 0x4d, 0xfe, +0x59, 0x03, 0x4e, 0x93, 0x4e, 0xe2, 0xe4, 0x89, +0x04, 0x52, 0x39, 0x02, 0xe0, 0xee, 0xa5, 0x20, +0x00, 0x3c, 0x58, 0xf2, 0xb7, 0x78, 0xa8, 0x1a, +0xd6, 0x5c, 0x1f, 0x8b, 0x88, 0x83, 0xb5, 0xd7, +0xc7, 0xa3, 0x08, 0xe0, 0x0a, 0x81, 0x14, 0x04, +0xf7, 0xb1, 0x00, 0x9b, 0x0f, 0xd0, 0x67, 0x50, +0xf0, 0xb0, 0x92, 0xa0, 0xa0, 0x9a, 0xd5, 0xc2, +0xf7, 0x61, 0xb5, 0xf0, 0x4b, 0xe2, 0x6a, 0xe1, +0xe7, 0x71, 0x63, 0x20, 0xa8, 0x03, 0xa2, 0x86, +0x47, 0x68, 0xf0, 0x8f, 0x06, 0xff, 0x74, 0x1e, +0xfc, 0xb3, 0xd6, 0x63, 0xf0, 0x4f, 0x48, 0x00, +0x78, 0x87, 0x25, 0xa9, 0x35, 0xfa, 0xdf, 0xa9, +0xb2, 0xee, 0x57, 0xb3, 0x9d, 0x7f, 0x47, 0x99, +0x9d, 0x7f, 0x5b, 0xce, 0xb1, 0x9f, 0xa6, 0xc2, +0xc3, 0x72, 0xc1, 0xbf, 0xef, 0xbf, 0xfe, 0x5e, +0x44, 0xfe, 0x1c, 0xf7, 0x1f, 0x69, 0x17, 0x2d, +0x37, 0xfa, 0x2f, 0xcb, 0x28, 0x97, 0x4b, 0xfd, +0x17, 0xa4, 0x15, 0xca, 0xed, 0xfc, 0x17, 0xe4, +0x17, 0x88, 0x04, 0x80, 0x84, 0xfc, 0xb5, 0xb8, +0xf3, 0xcf, 0x90, 0xbf, 0xbb, 0x1a, 0xa3, 0x7f, +0x7f, 0xa5, 0x75, 0xbf, 0x81, 0x1a, 0xd4, 0xfd, +0x72, 0x77, 0xfe, 0x85, 0xdc, 0x3f, 0x21, 0xff, +0xb8, 0x8b, 0x53, 0xc1, 0xfd, 0x9d, 0x5d, 0x0b, +0x22, 0xf8, 0xf7, 0x28, 0xba, 0xff, 0x4f, 0x8b, +0x9c, 0x44, 0xe4, 0x2f, 0x16, 0x00, 0x99, 0x07, +0x2a, 0x17, 0x04, 0xf9, 0x13, 0xa1, 0xc8, 0x3c, +0xf7, 0xc7, 0x0b, 0x7f, 0xc4, 0xe5, 0x13, 0xb7, +0x4f, 0x5c, 0xfe, 0xbf, 0x71, 0xed, 0x94, 0x4c, +0x01, 0xc8, 0x34, 0xa0, 0x16, 0x6b, 0xa3, 0xa7, +0xf0, 0x35, 0x47, 0x5e, 0x9f, 0xe4, 0x67, 0x22, +0x00, 0x48, 0x3f, 0x40, 0x40, 0x4e, 0xd6, 0xc6, +0x45, 0x2d, 0x00, 0x90, 0x04, 0xaf, 0x44, 0xfc, +0xc4, 0x0a, 0x80, 0x0d, 0xb7, 0xa4, 0xc0, 0x97, +0xd7, 0x45, 0xc1, 0xea, 0xeb, 0x63, 0xe4, 0x84, +0xc0, 0x7a, 0x46, 0x08, 0x88, 0xa7, 0x01, 0x82, +0x42, 0x40, 0x4b, 0x41, 0xc1, 0x5b, 0xe7, 0x1a, +0x14, 0x6c, 0x97, 0x3c, 0x16, 0x70, 0x55, 0x27, +0x28, 0x48, 0xaa, 0x85, 0x57, 0x88, 0x37, 0x06, +0x5e, 0x6b, 0x84, 0xc0, 0xb8, 0x2e, 0x88, 0x9e, +0xa0, 0xc1, 0x3f, 0x1a, 0xfc, 0x5b, 0x3a, 0xc1, +0x3f, 0x2e, 0xf9, 0x1b, 0x23, 0xec, 0x4a, 0x52, +0xd4, 0xd8, 0xf9, 0x0f, 0xd3, 0x78, 0xe7, 0xdf, +0x43, 0xd5, 0xce, 0x3f, 0x33, 0xfa, 0x17, 0x3e, +0xf6, 0x53, 0x1a, 0x51, 0xc6, 0x1b, 0xfd, 0xff, +0xfc, 0xf3, 0xcf, 0x4c, 0xd9, 0x8a, 0xe3, 0x3b, +0x2e, 0x12, 0xf2, 0xb7, 0x7e, 0x65, 0x07, 0x8c, +0x0e, 0x8e, 0xf1, 0x82, 0x7f, 0x3d, 0x9d, 0x3d, +0x60, 0xf5, 0xea, 0x76, 0x9e, 0x00, 0x20, 0x8f, +0x01, 0xaa, 0xcb, 0xab, 0xe5, 0xea, 0x7e, 0x93, +0x22, 0x92, 0x55, 0x04, 0xff, 0x34, 0x1d, 0xfd, +0xab, 0x0a, 0xfe, 0xf9, 0xf0, 0x77, 0xfe, 0xaf, +0xd5, 0x6c, 0xe7, 0x7f, 0xa7, 0x3a, 0x3b, 0xff, +0x02, 0xe4, 0xcf, 0x75, 0xff, 0xf1, 0x17, 0xa5, +0x42, 0xf4, 0x5f, 0x92, 0xe1, 0xc5, 0xe1, 0x6d, +0xbc, 0xd1, 0xff, 0xf3, 0x06, 0x08, 0xfe, 0x3d, +0x35, 0xbc, 0x0e, 0x8c, 0x30, 0xed, 0xcf, 0x0a, +0x80, 0x6d, 0x29, 0x01, 0x82, 0xe7, 0x7e, 0xf5, +0xfd, 0x83, 0xbc, 0x96, 0xd8, 0xe7, 0xfe, 0x64, +0xdd, 0x8f, 0x3c, 0xe7, 0x27, 0xcf, 0xfb, 0xc9, +0x14, 0x6a, 0x02, 0x5f, 0x63, 0x24, 0x07, 0x40, +0x42, 0x7f, 0xc3, 0xfd, 0xfd, 0xf0, 0x33, 0x16, +0x51, 0x9d, 0xc2, 0xde, 0x89, 0x46, 0x14, 0x97, +0xac, 0x00, 0x70, 0x2e, 0xcc, 0xfd, 0xc3, 0xb2, +0x34, 0x3f, 0x19, 0xf1, 0xe7, 0xc5, 0x2a, 0x00, +0x82, 0x25, 0xa5, 0x3f, 0x0f, 0x96, 0xc3, 0xca, +0xeb, 0xf6, 0xc0, 0xaa, 0xeb, 0x22, 0xc4, 0x22, +0x20, 0x5a, 0x22, 0x04, 0xd6, 0xf2, 0x84, 0x40, +0x92, 0x42, 0x21, 0xa0, 0x6e, 0x50, 0x70, 0x9b, +0x9a, 0x41, 0x41, 0x1b, 0x1d, 0x07, 0x05, 0x19, +0x21, 0x40, 0xaa, 0x85, 0x9f, 0x13, 0x6d, 0x0c, +0x38, 0x7d, 0x78, 0x08, 0x42, 0xf2, 0x7a, 0x68, +0xf0, 0x8f, 0x06, 0xff, 0x96, 0x44, 0xf0, 0x8f, +0x2f, 0x00, 0x32, 0xc0, 0xb4, 0x37, 0x1d, 0xf6, +0xac, 0x8d, 0x52, 0xbe, 0xf3, 0x2f, 0x30, 0xfa, +0x0f, 0x50, 0xab, 0xee, 0x57, 0xfd, 0x9d, 0x7f, +0xf6, 0xd8, 0x0f, 0xb9, 0xf4, 0x97, 0xe4, 0x92, +0x22, 0xb8, 0xf3, 0x5f, 0x9d, 0xba, 0x57, 0x12, +0xfc, 0xab, 0x4c, 0xab, 0x96, 0x1b, 0xfd, 0x47, +0x38, 0x46, 0xc9, 0xb9, 0x7f, 0xb7, 0x55, 0x1e, +0xbc, 0x63, 0x3f, 0x6c, 0xdd, 0x2f, 0x29, 0xfd, +0x99, 0xfb, 0xce, 0xbf, 0xa3, 0xc6, 0x3b, 0xff, +0x1e, 0x7a, 0xd9, 0xf9, 0x8f, 0x57, 0xe8, 0xfe, +0x09, 0xf9, 0x27, 0x5c, 0x94, 0x06, 0x09, 0x17, +0xa6, 0xc3, 0x67, 0x39, 0x0e, 0x06, 0x0d, 0xfe, +0x11, 0xf7, 0xbf, 0x32, 0xd7, 0x4d, 0xea, 0xfe, +0x11, 0xe5, 0xad, 0x07, 0x0d, 0x4e, 0xfe, 0x44, +0x64, 0xc6, 0xc6, 0xc6, 0x32, 0x02, 0x20, 0x1b, +0x13, 0xff, 0x24, 0xe1, 0x4f, 0x92, 0xfe, 0x64, +0x02, 0x45, 0x92, 0xff, 0xf5, 0x28, 0x22, 0xc9, +0x26, 0x40, 0x37, 0xde, 0x24, 0xf8, 0x11, 0xfb, +0x27, 0xbe, 0xc7, 0xea, 0xe9, 0xf6, 0xe6, 0x66, +0xc8, 0xc2, 0xb3, 0xc0, 0xac, 0x00, 0x70, 0x29, +0xc8, 0x01, 0x24, 0x7f, 0x82, 0xef, 0x11, 0x46, +0x96, 0xa5, 0x79, 0x67, 0x2d, 0x1a, 0x01, 0x80, +0x84, 0x77, 0x0d, 0xe2, 0x5f, 0xac, 0x00, 0x58, +0x73, 0x73, 0x1c, 0x7c, 0x71, 0x6d, 0x38, 0x8a, +0x80, 0xdd, 0x8c, 0x08, 0x58, 0x75, 0x5d, 0xa4, +0x02, 0x21, 0x20, 0x7d, 0x2c, 0xb0, 0x9e, 0x17, +0x14, 0x4c, 0x53, 0x18, 0x14, 0x64, 0x84, 0xc0, +0x82, 0x0e, 0x0a, 0x8a, 0xab, 0x85, 0x9f, 0x16, +0x6f, 0x0c, 0xac, 0x6d, 0x86, 0xb0, 0x9a, 0x7e, +0x1a, 0xfc, 0x33, 0xb8, 0xfb, 0xa7, 0xc1, 0x3f, +0x29, 0xf9, 0xcf, 0xcf, 0xfd, 0x13, 0x01, 0x40, +0x10, 0xe8, 0x10, 0x2b, 0x37, 0xfa, 0x0f, 0x53, +0x59, 0xf7, 0xab, 0x6e, 0xf0, 0xcf, 0x13, 0xa2, +0xcc, 0x31, 0x95, 0x6e, 0x16, 0xc3, 0x4c, 0x00, +0x84, 0xea, 0x7e, 0xb9, 0xc7, 0x7e, 0x88, 0x00, +0x08, 0xde, 0x18, 0xca, 0xab, 0xfb, 0x25, 0x1f, +0xcc, 0xa4, 0xee, 0x97, 0x74, 0xfd, 0xc7, 0x3a, +0xc6, 0x41, 0xc0, 0xa6, 0x20, 0x38, 0x76, 0xf4, +0x18, 0x2f, 0xf8, 0x57, 0x57, 0x5e, 0x27, 0xaa, +0xfc, 0x15, 0x07, 0xff, 0x18, 0x01, 0xf0, 0xa0, +0x11, 0x64, 0x44, 0x65, 0xca, 0xd5, 0xfd, 0x92, +0x63, 0x3f, 0x1e, 0xab, 0xbd, 0x35, 0x1a, 0xfd, +0x6b, 0xb4, 0xf3, 0x7f, 0xa3, 0x36, 0x76, 0xfe, +0xd5, 0xad, 0xfb, 0x8d, 0x51, 0x3a, 0xfa, 0x8f, +0x65, 0x46, 0xff, 0x52, 0x01, 0x90, 0x88, 0x02, +0xc0, 0xca, 0x22, 0xc0, 0xa0, 0xc1, 0xbf, 0x67, +0x07, 0x36, 0xe2, 0xc8, 0xdf, 0x5b, 0x42, 0xfe, +0x16, 0x29, 0x21, 0xf0, 0x07, 0xfc, 0x61, 0x70, +0x01, 0x90, 0x81, 0xe4, 0x4e, 0xc8, 0x3f, 0x05, +0x09, 0xbd, 0x18, 0x83, 0x7f, 0x64, 0xc7, 0x9f, +0xec, 0xfa, 0x93, 0x9d, 0x7f, 0xb2, 0xfb, 0x9f, +0x8e, 0x24, 0xdf, 0x82, 0xa5, 0x3f, 0xdf, 0x60, +0xe9, 0xd4, 0x3f, 0x50, 0x90, 0xf6, 0x75, 0x75, +0x31, 0x1d, 0x00, 0xfb, 0x71, 0xb2, 0xc4, 0x0a, +0x00, 0x37, 0xa9, 0x00, 0x40, 0xe4, 0x11, 0xb4, +0x20, 0x1e, 0x5a, 0x2c, 0x02, 0x20, 0x92, 0x25, +0xff, 0x6d, 0x0f, 0x94, 0xc0, 0x67, 0xd7, 0x86, +0xc2, 0xe7, 0xd7, 0x86, 0xa1, 0x08, 0xd8, 0x05, +0x5f, 0x5c, 0x17, 0x2e, 0x99, 0x06, 0xc8, 0x0b, +0x01, 0xf1, 0x34, 0x40, 0xa3, 0xa0, 0x60, 0x8e, +0x92, 0xa0, 0xe0, 0x5c, 0xab, 0x85, 0xb5, 0x1f, +0x14, 0x74, 0xbf, 0xa7, 0x57, 0x5a, 0x2d, 0x4c, +0x36, 0x06, 0x2c, 0x5a, 0x20, 0xbc, 0x79, 0x80, +0x06, 0xff, 0x68, 0xf0, 0x6f, 0xd1, 0x06, 0xff, +0xb6, 0x70, 0xc8, 0xdf, 0x78, 0x34, 0x1d, 0x5c, +0xe2, 0x13, 0x04, 0x46, 0xff, 0xe1, 0xfc, 0xba, +0xdf, 0x4f, 0x55, 0x8f, 0xfe, 0x65, 0x77, 0xfe, +0xfd, 0x3e, 0x0b, 0x80, 0xf1, 0xf6, 0x71, 0xc9, +0x07, 0xec, 0xdf, 0xbe, 0xfe, 0x1b, 0x04, 0xad, +0x09, 0x51, 0x38, 0xfa, 0x27, 0xe4, 0xcf, 0x9e, +0xf9, 0x9d, 0xec, 0x9d, 0x52, 0x58, 0xf7, 0x3b, +0x26, 0x33, 0xfa, 0xef, 0xef, 0xeb, 0x07, 0x87, +0x0f, 0x9c, 0xf9, 0xee, 0x1f, 0xc9, 0x3f, 0xdc, +0x7e, 0xb7, 0x5c, 0xf0, 0x8f, 0x5c, 0x93, 0x4b, +0x4b, 0x4a, 0x87, 0x6d, 0x0f, 0x59, 0x28, 0x19, +0xfd, 0xcb, 0x08, 0x00, 0xc1, 0xd1, 0xbf, 0x93, +0xc6, 0x75, 0xbf, 0x9e, 0x1a, 0xd6, 0xfd, 0x06, +0x0b, 0xd6, 0xfd, 0x2a, 0xd9, 0xf9, 0xbf, 0x54, +0xba, 0xf3, 0x2f, 0x3b, 0xfa, 0x67, 0xc9, 0x3f, +0xf1, 0xc2, 0x0c, 0x08, 0x7e, 0x34, 0x56, 0x8b, +0xa3, 0x7f, 0xcd, 0xdd, 0xff, 0x9a, 0x4c, 0x42, +0xfc, 0xd2, 0xf1, 0x7f, 0x43, 0x7f, 0xbb, 0xc1, +0xc9, 0x9f, 0x6c, 0x88, 0x10, 0xf2, 0x8f, 0xc3, +0xe7, 0xfe, 0xd9, 0x28, 0x00, 0xda, 0x8f, 0x1c, +0x81, 0xef, 0xb1, 0xe5, 0x8f, 0xb4, 0xfd, 0x91, +0xd6, 0x3f, 0xf2, 0x38, 0xe0, 0x20, 0x4e, 0x00, +0x8e, 0xe3, 0xd4, 0xe9, 0x17, 0x9c, 0x4a, 0x8d, +0xe1, 0xc4, 0xa9, 0x12, 0x5f, 0x4f, 0x95, 0xf8, +0x38, 0x69, 0x74, 0x70, 0x90, 0x21, 0x7f, 0x82, +0xa0, 0x7a, 0x7c, 0xff, 0xd7, 0x96, 0xb1, 0xe4, +0xcf, 0xe2, 0x57, 0xc4, 0x2e, 0xcb, 0xd2, 0xdc, +0x4b, 0x17, 0xac, 0x00, 0x40, 0x72, 0xbb, 0x19, +0xf1, 0x5f, 0x96, 0xe8, 0x56, 0xdd, 0x18, 0x01, +0x9f, 0x5e, 0x13, 0x82, 0x22, 0x60, 0x27, 0x47, +0x08, 0x84, 0xa3, 0x10, 0xd8, 0xcd, 0x79, 0x2c, +0x20, 0x15, 0x02, 0xfa, 0x0b, 0x0a, 0x56, 0x19, +0x24, 0x28, 0xe8, 0xc6, 0x54, 0x0b, 0x8b, 0x36, +0x06, 0x6c, 0x9f, 0xc6, 0x8d, 0x01, 0xb7, 0x36, +0xd8, 0xd3, 0x3b, 0x48, 0x83, 0x7f, 0x8b, 0x30, +0xf8, 0xe7, 0xbc, 0x24, 0x83, 0x7f, 0x73, 0x73, +0xff, 0x46, 0x28, 0x00, 0x2c, 0xeb, 0x52, 0x54, +0xd6, 0xfd, 0x06, 0xa9, 0x53, 0xf7, 0xcb, 0x3b, +0xf5, 0xeb, 0x05, 0xdf, 0x9f, 0xfa, 0x5e, 0xee, +0x83, 0xf6, 0xdb, 0xe3, 0xdf, 0x82, 0xdb, 0x7b, +0x9e, 0x82, 0xa3, 0x7f, 0x72, 0x81, 0x8f, 0x15, +0x00, 0x41, 0x1b, 0x77, 0x32, 0xe4, 0x4f, 0xd6, +0xb1, 0x84, 0xea, 0x7e, 0xb9, 0xc1, 0xbf, 0x94, +0xc0, 0x54, 0x1e, 0xf9, 0x1b, 0x3d, 0x6e, 0x02, +0x91, 0x6e, 0xd1, 0x82, 0xa3, 0xff, 0x5c, 0x0c, +0x70, 0xf9, 0x9b, 0x06, 0xca, 0x8c, 0xfe, 0x2d, +0x55, 0x8e, 0xfe, 0xb5, 0xbd, 0xf3, 0xef, 0xab, +0x72, 0xe7, 0x3f, 0x5c, 0x2e, 0xf8, 0xb7, 0x4b, +0x83, 0x9d, 0x7f, 0x6e, 0xf0, 0x2f, 0x5e, 0x3c, +0xfa, 0x27, 0x02, 0x20, 0xe9, 0x82, 0x0c, 0x48, +0xbe, 0x30, 0x13, 0x5e, 0x6b, 0xb3, 0x50, 0x23, +0xf8, 0x67, 0xa4, 0xf5, 0xe0, 0xdf, 0x0b, 0xe4, +0xdc, 0x2f, 0x43, 0xfe, 0x22, 0x01, 0xb0, 0x23, +0x75, 0x97, 0xc1, 0xc9, 0x9f, 0xbc, 0x96, 0xd8, +0xe7, 0xfe, 0xe9, 0x18, 0xfa, 0x3b, 0x84, 0x62, +0xe0, 0x34, 0xbe, 0xce, 0x48, 0xcf, 0x3f, 0xe9, +0xfb, 0x2f, 0x43, 0xd1, 0xb8, 0x17, 0xb3, 0x23, +0x93, 0x28, 0x36, 0xc9, 0x63, 0xa9, 0x59, 0x7c, +0xec, 0x54, 0x87, 0xa2, 0xb2, 0x10, 0x2f, 0x02, +0xf6, 0x76, 0x76, 0x62, 0x33, 0xe5, 0x4f, 0x12, +0x01, 0x10, 0xd2, 0x58, 0xc3, 0x7c, 0xfe, 0xd8, +0xb7, 0xd4, 0x82, 0x55, 0x45, 0x01, 0x47, 0x04, +0xe4, 0x12, 0x9c, 0x42, 0x7c, 0xb6, 0x50, 0x05, +0x40, 0x0a, 0x4b, 0xfe, 0x26, 0xf7, 0x15, 0xc0, +0xc7, 0xf8, 0x02, 0xfd, 0x04, 0x5f, 0xa0, 0x9f, +0x5c, 0x13, 0x0c, 0x9f, 0x5e, 0xcb, 0x15, 0x02, +0xbb, 0x24, 0x8f, 0x05, 0xe4, 0x85, 0xc0, 0xd2, +0x0f, 0x0a, 0xba, 0x3e, 0xc0, 0xd9, 0x18, 0x58, +0xd1, 0x00, 0xbe, 0x61, 0x1d, 0x10, 0x31, 0x32, +0x24, 0x25, 0xff, 0x29, 0x1a, 0xfc, 0xa3, 0xc1, +0x3f, 0xed, 0x06, 0xff, 0xb4, 0xe9, 0xfe, 0x8d, +0x65, 0xdc, 0x3f, 0x11, 0x00, 0xc6, 0x23, 0x69, +0x10, 0xba, 0x31, 0x42, 0x79, 0xdd, 0xaf, 0x86, +0x3b, 0xff, 0x51, 0xdb, 0x62, 0x14, 0x5f, 0x55, +0x4b, 0xd8, 0x2b, 0x38, 0xfa, 0x67, 0xc9, 0xdf, +0xf2, 0x39, 0x1b, 0xb0, 0x78, 0xd6, 0x1a, 0x0e, +0x16, 0x36, 0xf2, 0x2e, 0xfd, 0x11, 0xf7, 0x2f, +0x5b, 0xf7, 0x3b, 0x30, 0x30, 0x00, 0x85, 0x09, +0x78, 0xc8, 0x67, 0xc7, 0x6e, 0xf0, 0x33, 0x0e, +0x80, 0x58, 0x9f, 0x38, 0x74, 0x65, 0x95, 0x4c, +0xea, 0x5f, 0x36, 0xf8, 0x47, 0x46, 0xff, 0xe9, +0xc9, 0xe9, 0x60, 0xfe, 0x98, 0x95, 0x8a, 0xba, +0x5f, 0xe5, 0xc1, 0x3f, 0x7b, 0x55, 0x3b, 0xff, +0x37, 0xcc, 0x65, 0xe7, 0x3f, 0x54, 0xe3, 0x9d, +0x7f, 0x4d, 0x47, 0xff, 0x49, 0xe8, 0xfe, 0x93, +0x2f, 0xc8, 0x44, 0x64, 0xc1, 0x86, 0x5d, 0x6e, +0x3a, 0x08, 0xfe, 0x29, 0xef, 0xfb, 0x27, 0x02, +0x60, 0x5d, 0xba, 0x37, 0x4f, 0x00, 0xc8, 0x9e, +0xfb, 0xd5, 0xf7, 0x0f, 0x92, 0x2f, 0x61, 0x9f, +0xfb, 0xa7, 0xe3, 0xa9, 0x5f, 0x32, 0xce, 0x9f, +0xc1, 0xc9, 0x12, 0x21, 0x7a, 0x72, 0xe9, 0x8f, +0x5c, 0xfc, 0x23, 0x97, 0xff, 0x06, 0xf1, 0x04, +0x31, 0xd9, 0x02, 0x38, 0x83, 0xc2, 0xe0, 0x10, +0xae, 0x94, 0x66, 0x25, 0x25, 0x61, 0xdf, 0xc4, +0x61, 0xf8, 0x0e, 0xa7, 0x52, 0x3f, 0xe1, 0x6b, +0x34, 0x51, 0x2c, 0x00, 0x76, 0xd6, 0x57, 0x31, +0x9f, 0x37, 0xe4, 0xb3, 0xc5, 0x7e, 0xb0, 0x0e, +0x6c, 0x0e, 0x96, 0xb2, 0xe4, 0xcf, 0x41, 0x4e, +0x2d, 0xe2, 0xf6, 0x05, 0x23, 0x00, 0xc4, 0xc9, +0xff, 0x5f, 0x99, 0x73, 0xbf, 0x4f, 0xd4, 0xc3, +0x67, 0xd7, 0xef, 0x84, 0x8f, 0xae, 0xf6, 0x87, +0x8f, 0xae, 0x09, 0x90, 0x08, 0x81, 0x4f, 0x39, +0x42, 0x80, 0x4c, 0x03, 0x84, 0x85, 0xc0, 0x22, +0x09, 0x0a, 0xde, 0xae, 0x85, 0xa0, 0xe0, 0xa3, +0x1d, 0x60, 0xf7, 0x82, 0x28, 0x28, 0xe8, 0xf0, +0x66, 0x13, 0x04, 0x24, 0x75, 0xc9, 0x39, 0x7f, +0x1a, 0xfc, 0x53, 0x27, 0xf8, 0xd7, 0xb5, 0x04, +0x83, 0x7f, 0xd5, 0x06, 0x0d, 0xfe, 0x29, 0x17, +0x00, 0x7c, 0xf2, 0x17, 0x21, 0x0d, 0x3c, 0x7d, +0x62, 0x34, 0xaa, 0xfb, 0x55, 0xb5, 0xf3, 0x1f, +0xb9, 0x2d, 0x5a, 0xe1, 0x87, 0xee, 0x4f, 0xdf, +0xff, 0x04, 0x0e, 0xaf, 0x39, 0xf3, 0xdc, 0x3f, +0x8f, 0xfc, 0xc9, 0xbe, 0x3f, 0x16, 0xfe, 0xd8, +0xbf, 0xe5, 0x04, 0x27, 0x67, 0x4f, 0x32, 0xcf, +0xfe, 0xcf, 0xe0, 0x73, 0x58, 0xf6, 0xd2, 0x1f, +0x37, 0xf8, 0xd7, 0x87, 0x0e, 0xad, 0x0b, 0x9f, +0xc5, 0xb6, 0xe1, 0x98, 0xb6, 0x19, 0x03, 0x59, +0x4d, 0xf8, 0x8c, 0x56, 0x68, 0xe7, 0x9f, 0x8c, +0xfe, 0xb3, 0x32, 0xb2, 0xc0, 0x01, 0x7f, 0x4f, +0x8d, 0x77, 0xfe, 0x6f, 0x53, 0xbe, 0xf3, 0x3f, +0xf7, 0xba, 0x5f, 0xcd, 0x76, 0xfe, 0xc3, 0x55, +0xed, 0xfc, 0x2b, 0x18, 0xfd, 0x27, 0x88, 0x47, +0xff, 0x49, 0x62, 0xf2, 0x4f, 0x39, 0x1f, 0x5b, +0x20, 0x3f, 0xdb, 0xa5, 0x51, 0xf0, 0x4f, 0xa9, +0x00, 0x50, 0x73, 0xf4, 0xff, 0x72, 0xab, 0x29, +0x87, 0xfc, 0xbd, 0xc0, 0x29, 0xdd, 0xf0, 0xe7, +0x7e, 0x33, 0xb1, 0xc9, 0x8f, 0x90, 0x7f, 0x12, +0x3a, 0x7f, 0x76, 0x9c, 0xff, 0x3f, 0x7c, 0xf4, +0x74, 0x02, 0xa7, 0x4c, 0x0d, 0xf8, 0x1a, 0xca, +0xc5, 0x3e, 0x00, 0xd2, 0xf4, 0xf7, 0x37, 0x7c, +0x04, 0xf5, 0x03, 0x0a, 0xd1, 0x0e, 0x7c, 0x34, +0x90, 0x83, 0x42, 0x81, 0x24, 0xff, 0x4f, 0xa1, +0x18, 0x25, 0x1b, 0x2a, 0xc3, 0x28, 0x42, 0xd9, +0x09, 0xc0, 0xce, 0xba, 0x72, 0xe6, 0xb3, 0x85, +0x7c, 0x96, 0x90, 0xcf, 0x0e, 0xf2, 0x19, 0x61, +0xd3, 0x5d, 0x01, 0x96, 0x7b, 0xf3, 0x59, 0xf2, +0x67, 0xf1, 0xb3, 0x65, 0x49, 0x8e, 0x27, 0xe2, +0x82, 0x85, 0x20, 0x00, 0x1e, 0x90, 0x3c, 0xfb, +0x7f, 0xb0, 0x14, 0x3e, 0xb8, 0xda, 0x1b, 0x3e, +0xbc, 0xda, 0x17, 0xe1, 0x87, 0x22, 0xc0, 0x1f, +0x45, 0x80, 0xac, 0x10, 0x90, 0x3e, 0x16, 0x90, +0x17, 0x02, 0x91, 0x4a, 0x84, 0xc0, 0xd2, 0x0a, +0x0a, 0x92, 0x29, 0x01, 0x53, 0x2d, 0xfc, 0xac, +0x28, 0x28, 0xe8, 0xf4, 0xc9, 0x21, 0x08, 0x2e, +0xea, 0xa1, 0xc1, 0x3f, 0x1a, 0xfc, 0x5b, 0xf0, +0xc1, 0x3f, 0x2e, 0xf9, 0x6f, 0x46, 0xd8, 0xe2, +0xf5, 0x35, 0xee, 0xe8, 0x5f, 0xf9, 0xce, 0xbf, +0xbf, 0xca, 0x9d, 0x7f, 0x82, 0x7f, 0xfe, 0xf8, +0x2f, 0x85, 0x1f, 0xbc, 0xb9, 0x41, 0xf9, 0x52, +0xf7, 0xff, 0x82, 0xbc, 0xfb, 0x67, 0x0b, 0x7f, +0x9c, 0xde, 0x73, 0x85, 0xee, 0xc3, 0x3d, 0x70, +0x0a, 0xf7, 0xb0, 0x65, 0x77, 0xfe, 0xfb, 0x71, +0x15, 0xab, 0x07, 0xf7, 0xb2, 0x3b, 0x3a, 0x3a, +0xa0, 0x05, 0xcb, 0x59, 0xb8, 0x75, 0xbf, 0xb2, +0xc1, 0xbf, 0x9c, 0xec, 0x1c, 0x70, 0xfa, 0xc0, +0x55, 0x2e, 0xf8, 0x67, 0xae, 0x95, 0x9d, 0x7f, +0xf5, 0x46, 0xff, 0xca, 0x76, 0xfe, 0x83, 0xe6, +0xb0, 0xf3, 0xaf, 0xd6, 0xe8, 0x9f, 0x75, 0xff, +0x17, 0x88, 0xdc, 0x3f, 0x21, 0xff, 0x94, 0xf3, +0xf1, 0x10, 0xd4, 0xb5, 0x69, 0xf0, 0xdc, 0x98, +0xee, 0x82, 0x7f, 0x42, 0xee, 0x7f, 0x43, 0x9a, +0x8f, 0x54, 0x00, 0x64, 0x7b, 0xe1, 0xb9, 0xdf, +0x59, 0x83, 0x92, 0x3f, 0x79, 0xad, 0x10, 0xf2, +0x27, 0x13, 0x80, 0x02, 0xf1, 0x38, 0xff, 0xef, +0x38, 0xce, 0x27, 0x21, 0x3f, 0x12, 0xf6, 0x23, +0x87, 0x7f, 0x9a, 0xb1, 0x41, 0xf2, 0x2b, 0x9c, +0x3c, 0x91, 0x06, 0x40, 0x12, 0x0a, 0x24, 0xe1, +0xc0, 0x7d, 0xf8, 0xba, 0x9a, 0xc6, 0x09, 0x14, +0xf3, 0xf8, 0x00, 0x7f, 0x26, 0x9d, 0x00, 0x12, +0x01, 0xb0, 0xaf, 0x94, 0xf9, 0x3c, 0x11, 0x91, +0x7f, 0x2d, 0xf3, 0x79, 0x40, 0xde, 0xfb, 0x96, +0xc3, 0x38, 0xe1, 0x3b, 0x82, 0x8f, 0x04, 0xca, +0xc5, 0x02, 0xa0, 0x44, 0x04, 0x8b, 0x92, 0xec, +0x49, 0xc4, 0x1b, 0x86, 0x16, 0x00, 0x8f, 0x49, +0x8a, 0x7f, 0x1e, 0xae, 0xfc, 0xef, 0x7b, 0x57, +0x79, 0xc2, 0xfb, 0x57, 0x7b, 0xa1, 0x10, 0xf0, +0x51, 0x20, 0x04, 0x82, 0x99, 0x7c, 0xc0, 0xa7, +0xbc, 0x7c, 0x80, 0xaa, 0xa0, 0x60, 0xac, 0x92, +0xa0, 0x60, 0xea, 0x82, 0x0c, 0x0a, 0xba, 0xa8, +0x1b, 0x14, 0x24, 0xd5, 0xc2, 0x2f, 0xb4, 0x80, +0xed, 0x53, 0xa2, 0x3f, 0x43, 0xd7, 0x4d, 0xcd, +0xa8, 0x04, 0xfb, 0xb4, 0xef, 0xfe, 0x69, 0xf0, +0x6f, 0x11, 0x06, 0xff, 0x2a, 0x0d, 0x1c, 0xfc, +0x53, 0xe6, 0xfe, 0xd3, 0xc4, 0x02, 0x20, 0x15, +0x4c, 0xdb, 0x92, 0x65, 0x46, 0xff, 0xa1, 0x1a, +0xd7, 0xfd, 0xca, 0xee, 0xfc, 0xef, 0x4f, 0xad, +0x53, 0xf8, 0xe1, 0xfb, 0xd5, 0xd1, 0xaf, 0x85, +0xdd, 0xff, 0xb3, 0xd6, 0x72, 0x75, 0xbf, 0x66, +0xcf, 0x59, 0x42, 0x45, 0x6a, 0xa5, 0x64, 0xf4, +0x4f, 0x82, 0x7f, 0x83, 0xe8, 0xd4, 0x7a, 0x71, +0x2c, 0xdb, 0x89, 0x1f, 0xda, 0xad, 0xe8, 0xd0, +0x0e, 0xe3, 0x38, 0x96, 0x1c, 0xfb, 0xe1, 0xd6, +0xfd, 0x72, 0x47, 0xff, 0x6e, 0x9f, 0x7b, 0x68, +0x71, 0xe7, 0x5f, 0x7e, 0xf4, 0xaf, 0xe9, 0xce, +0xbf, 0xbf, 0x0e, 0x76, 0xfe, 0x45, 0xa3, 0xff, +0x64, 0xc1, 0xd1, 0xbf, 0xd4, 0xfd, 0x67, 0x43, +0x2a, 0x22, 0xed, 0xbc, 0x1c, 0xf8, 0xa0, 0x7c, +0xbb, 0xde, 0x82, 0x7f, 0x6f, 0x34, 0x5a, 0xf0, +0xdc, 0xbf, 0x77, 0x76, 0x82, 0x41, 0xc9, 0x9f, +0x4c, 0x92, 0xb8, 0xcf, 0xfd, 0xb9, 0xe3, 0xfc, +0x1e, 0x5c, 0xf3, 0x2b, 0xc0, 0x8d, 0x80, 0x03, +0xe4, 0xf0, 0x0f, 0xbe, 0xe6, 0x48, 0x17, 0xc5, +0x38, 0x3e, 0x6e, 0xaa, 0xc6, 0x1c, 0x49, 0x39, +0x8a, 0x49, 0xe2, 0xf8, 0xff, 0x8b, 0xce, 0xff, +0x24, 0x4e, 0x00, 0xc8, 0x24, 0x20, 0x07, 0x5b, +0x01, 0x93, 0xf0, 0x91, 0x00, 0x11, 0x00, 0xa1, +0x35, 0xc5, 0xcc, 0x67, 0x87, 0x94, 0xfc, 0x2b, +0x99, 0xf7, 0x3b, 0x79, 0x5f, 0x33, 0xef, 0xe1, +0x81, 0x3c, 0x30, 0x3f, 0x40, 0xc8, 0x3f, 0x9b, +0x90, 0x3f, 0x17, 0x45, 0x16, 0x25, 0x59, 0xe7, +0x19, 0x4a, 0x00, 0x3c, 0xc3, 0x0a, 0x00, 0xd1, +0xe5, 0xbf, 0xda, 0x1f, 0xbe, 0xb8, 0x31, 0xfc, +0x27, 0x22, 0x02, 0xde, 0xc7, 0x69, 0x80, 0x90, +0x10, 0x90, 0xe4, 0x03, 0x16, 0x41, 0x50, 0xd0, +0x9a, 0x17, 0x14, 0x3c, 0xa0, 0x30, 0x28, 0xe8, +0x20, 0x9b, 0x0f, 0xb8, 0x43, 0xc3, 0xa0, 0x20, +0xa9, 0x16, 0x7e, 0x49, 0xbc, 0x31, 0x80, 0x77, +0x06, 0xdc, 0xb7, 0xb7, 0x40, 0x58, 0x6b, 0x3f, +0x0d, 0xfe, 0xd1, 0xe0, 0xdf, 0x82, 0x0b, 0xfe, +0x71, 0xdd, 0x3f, 0x11, 0x00, 0x04, 0x7e, 0x66, +0x7b, 0x14, 0x8e, 0xfe, 0x55, 0xef, 0xfc, 0x7b, +0xf2, 0x77, 0xfe, 0xb1, 0xee, 0xd7, 0xeb, 0x43, +0x1f, 0xf8, 0xcf, 0x3f, 0x7f, 0x56, 0xf8, 0x21, +0x9c, 0xe0, 0x90, 0x24, 0x37, 0xfa, 0xe7, 0xba, +0x7f, 0x76, 0xe7, 0xdf, 0xf4, 0x49, 0x6c, 0xec, +0x7b, 0x62, 0x1b, 0x44, 0x39, 0x44, 0x63, 0x0d, +0x6b, 0x97, 0x64, 0xf4, 0xdf, 0x8d, 0x8e, 0xac, +0x1d, 0x3f, 0xac, 0x8f, 0xe0, 0x58, 0x96, 0x3b, +0xfa, 0xe7, 0x06, 0xff, 0x92, 0xf6, 0x24, 0x83, +0xcb, 0xc7, 0x6e, 0xf3, 0xdb, 0xf9, 0xbf, 0x55, +0xd5, 0xce, 0xbf, 0xa7, 0xe6, 0x3b, 0xff, 0x5a, +0xaa, 0xfb, 0x8d, 0x12, 0xa8, 0xfb, 0xe5, 0x8f, +0xfe, 0xf9, 0xee, 0x9f, 0x90, 0x7f, 0x2a, 0x92, +0x7f, 0xda, 0x79, 0xb9, 0x60, 0xe6, 0xe8, 0xa7, +0x97, 0xe0, 0xdf, 0x63, 0xe3, 0x5f, 0xc2, 0xa6, +0x34, 0x5f, 0x09, 0xf9, 0x1b, 0x67, 0x79, 0xc3, +0xe9, 0x1f, 0x0c, 0x77, 0xee, 0x97, 0xac, 0x96, +0xb2, 0xcf, 0xfd, 0x53, 0x90, 0xb4, 0x09, 0x89, +0x9f, 0xe4, 0x8c, 0xf3, 0xcb, 0x31, 0x2c, 0x5a, +0x8d, 0x93, 0x23, 0x42, 0xfa, 0x84, 0xfc, 0x89, +0x08, 0x20, 0x62, 0x80, 0x1c, 0xfe, 0xe9, 0xc1, +0x69, 0x13, 0x11, 0x09, 0x44, 0x2c, 0x10, 0xd1, +0x90, 0x89, 0xc4, 0x4f, 0x9a, 0x02, 0xb1, 0x02, +0x98, 0x11, 0x00, 0x61, 0xd5, 0x05, 0xcc, 0x67, +0x04, 0xf9, 0x5c, 0xb0, 0xe1, 0x91, 0x7f, 0x21, +0xf3, 0x7e, 0x25, 0xef, 0x4d, 0xf2, 0x5e, 0x34, +0x6d, 0xc9, 0x90, 0x11, 0x00, 0x59, 0x11, 0x86, +0x9c, 0x00, 0xbc, 0xc8, 0x92, 0xff, 0xf6, 0x47, +0x0f, 0x80, 0xb4, 0x06, 0xb8, 0xea, 0xcc, 0x27, +0xd7, 0x07, 0xff, 0x57, 0x56, 0x08, 0x7c, 0x24, +0x11, 0x02, 0xfa, 0x0d, 0x0a, 0x1a, 0xab, 0x19, +0x14, 0x34, 0x57, 0x1a, 0x14, 0xdc, 0xaf, 0x24, +0x28, 0x78, 0x48, 0x49, 0x50, 0xb0, 0x43, 0xfd, +0xa0, 0xe0, 0x7d, 0xdd, 0xe0, 0xf0, 0xf2, 0x61, +0xd1, 0xc6, 0x00, 0x3e, 0x1e, 0xf0, 0xf2, 0x6e, +0x83, 0x5d, 0xfd, 0x03, 0x5a, 0x5f, 0xfb, 0xa3, +0xc1, 0xbf, 0xc5, 0x16, 0xfc, 0x2b, 0x5f, 0x30, +0xc1, 0x3f, 0xae, 0xfb, 0x17, 0x21, 0x05, 0x9c, +0xc2, 0xa3, 0x95, 0x8c, 0xfe, 0x03, 0x35, 0xae, +0xfb, 0x25, 0x3b, 0xff, 0xf5, 0x59, 0x8a, 0x0b, +0x5e, 0xa6, 0x7a, 0xa7, 0x85, 0x47, 0xff, 0x1c, +0xf7, 0xcf, 0x92, 0xff, 0x96, 0xc7, 0xb7, 0x82, +0xf1, 0x63, 0xa6, 0x4c, 0xc2, 0xdf, 0x63, 0xb5, +0x17, 0x64, 0x84, 0x67, 0xc1, 0xe1, 0x86, 0xc3, +0x92, 0xd1, 0x3f, 0x39, 0xf6, 0xc3, 0xd6, 0xfd, +0x12, 0xf2, 0x8f, 0x0d, 0x88, 0x03, 0x87, 0x77, +0x9d, 0xc4, 0xc7, 0x7e, 0x74, 0x50, 0xf7, 0x6b, +0x90, 0x9d, 0x7f, 0x75, 0xea, 0x7e, 0x15, 0x04, +0xff, 0xc4, 0xa3, 0x7f, 0x96, 0xfc, 0xd3, 0xcf, +0xcd, 0x85, 0xc0, 0xe7, 0x63, 0xf5, 0x12, 0xfc, +0x63, 0xce, 0xfd, 0x72, 0xdc, 0xff, 0xce, 0xc2, +0x74, 0x83, 0xba, 0xff, 0x2c, 0x1c, 0xf7, 0x13, +0xf2, 0x4f, 0xc4, 0xdd, 0x7d, 0xd9, 0x71, 0x3e, +0xf9, 0xdf, 0xc5, 0x9c, 0xc3, 0x3f, 0x64, 0xfc, +0x4f, 0x1e, 0x03, 0x90, 0xc7, 0x01, 0x2d, 0xf8, +0x3a, 0xfb, 0x16, 0xc3, 0xa8, 0xe4, 0x31, 0x01, +0x79, 0x5c, 0x40, 0xb6, 0x00, 0xc8, 0x36, 0xc0, +0x2c, 0x3e, 0x96, 0x4a, 0xc7, 0x35, 0x41, 0x22, +0x00, 0x76, 0x55, 0xe6, 0x71, 0xc8, 0xbf, 0x9c, +0x79, 0x6f, 0xb3, 0xe4, 0x4f, 0xde, 0xa3, 0xe4, +0xfd, 0x68, 0x84, 0xa1, 0x5b, 0xb3, 0xbd, 0x99, +0x5c, 0xf2, 0xef, 0x9c, 0x8f, 0xfb, 0xd7, 0x86, +0x00, 0x78, 0x83, 0x25, 0x7d, 0xcb, 0x07, 0xf6, +0xc2, 0xd6, 0xdb, 0x8a, 0xc0, 0xfa, 0xa1, 0x7d, +0xac, 0x10, 0xf8, 0x63, 0xeb, 0xfd, 0xc5, 0x27, +0x3e, 0xbc, 0xd6, 0xef, 0x0f, 0xd1, 0x63, 0x01, +0xae, 0x10, 0x98, 0x5b, 0x50, 0xf0, 0xcb, 0x45, +0x19, 0x14, 0x6c, 0x53, 0x12, 0x14, 0x54, 0x20, +0x04, 0x1e, 0xee, 0x04, 0xfb, 0x17, 0x45, 0xd5, +0xc2, 0x76, 0x2f, 0xe3, 0xc6, 0xc0, 0x9e, 0x0e, +0x08, 0x1f, 0xd5, 0x95, 0xfb, 0x37, 0x6c, 0xf0, +0xcf, 0x8f, 0x06, 0xff, 0x16, 0x5d, 0xf0, 0x8f, +0xeb, 0xfe, 0x37, 0xa1, 0x00, 0xb0, 0xa8, 0x8c, +0x57, 0xbb, 0xee, 0x57, 0x76, 0xe7, 0x5f, 0xb0, +0xee, 0x17, 0xe1, 0xf5, 0xb1, 0x2f, 0xfc, 0xf7, +0x3f, 0xff, 0x53, 0xf8, 0x61, 0x1c, 0x6a, 0xbc, +0x4b, 0xe1, 0xe8, 0x9f, 0x90, 0xbf, 0x9c, 0x00, +0x78, 0xd4, 0x04, 0x36, 0x3f, 0xb2, 0x85, 0x59, +0xfb, 0xdb, 0xfc, 0xf8, 0x16, 0x70, 0x5d, 0xe5, +0x0e, 0x1e, 0x6b, 0xbd, 0x99, 0xc6, 0x3f, 0xe7, +0x4f, 0x5c, 0xc1, 0xe1, 0x7d, 0x67, 0xb0, 0x78, +0xde, 0x46, 0x72, 0xea, 0x57, 0x9d, 0xba, 0x5f, +0xd5, 0x3b, 0xff, 0xce, 0x1a, 0xef, 0xfc, 0x7b, +0x69, 0xb8, 0xf3, 0x1f, 0x32, 0xa7, 0x9d, 0xff, +0x44, 0xa5, 0x3b, 0xff, 0x49, 0x32, 0xc1, 0x3f, +0x76, 0xf4, 0x9f, 0xce, 0x08, 0x80, 0x3c, 0x48, +0xbb, 0x28, 0x17, 0x5e, 0xec, 0x33, 0xd5, 0x69, +0xf0, 0x8f, 0x39, 0xf7, 0x9b, 0xe6, 0x27, 0x21, +0xff, 0x2d, 0x19, 0xbe, 0xf0, 0xd7, 0x7f, 0xfc, +0x68, 0x30, 0xf2, 0x27, 0x8f, 0x89, 0x98, 0xe7, +0xfe, 0x78, 0xe9, 0x8f, 0xac, 0xf7, 0x11, 0xc7, +0xff, 0x33, 0x77, 0x9c, 0x8f, 0x4e, 0xbe, 0x03, +0x45, 0x25, 0x09, 0xfc, 0x91, 0xe0, 0x5f, 0x27, +0x3e, 0x5e, 0x22, 0x41, 0x40, 0x12, 0x08, 0x3c, +0x81, 0x19, 0x14, 0x12, 0x10, 0x24, 0x41, 0xc1, +0x0a, 0x7c, 0xb4, 0x54, 0x85, 0xe1, 0x52, 0xd2, +0x07, 0x40, 0x0a, 0xab, 0x52, 0xf1, 0x31, 0x00, +0x11, 0x00, 0xe1, 0xf8, 0x8c, 0x9f, 0x7c, 0x06, +0xb0, 0xe4, 0x4f, 0xde, 0xcb, 0xe4, 0x7d, 0x2b, +0x21, 0x7f, 0x7c, 0xef, 0x99, 0x36, 0xb0, 0xee, +0x3f, 0x8b, 0xe0, 0x6f, 0x88, 0x5b, 0x0c, 0x9d, +0x01, 0x78, 0x4f, 0x2a, 0x00, 0xaa, 0x25, 0x04, +0xbb, 0xed, 0x8e, 0x12, 0xb0, 0x79, 0x64, 0xbf, +0x68, 0x32, 0xf0, 0x78, 0xfd, 0x6f, 0x46, 0x77, +0x67, 0x9f, 0x20, 0x93, 0x00, 0xbe, 0x10, 0x50, +0x14, 0x14, 0x0c, 0x59, 0x3e, 0x41, 0x41, 0x46, +0x08, 0xf4, 0x29, 0xde, 0x18, 0x78, 0xbc, 0x5d, +0xba, 0x31, 0xf0, 0x4e, 0x13, 0xf8, 0xa7, 0x77, +0x41, 0xf8, 0x38, 0x5d, 0xfb, 0x33, 0x6c, 0xf0, +0xef, 0xa0, 0x81, 0x83, 0x7f, 0xa5, 0x06, 0x0d, +0xfe, 0xc9, 0xba, 0x7f, 0x22, 0x00, 0x36, 0x0f, +0x24, 0x41, 0xe0, 0xca, 0x50, 0x86, 0xfc, 0x35, +0xd9, 0xf9, 0x57, 0x55, 0xf7, 0xdb, 0x54, 0x70, +0x48, 0xe1, 0x07, 0x72, 0x4f, 0x7d, 0xaf, 0x5c, +0xf0, 0x4f, 0x76, 0xf4, 0xcf, 0x23, 0xff, 0x47, +0xb7, 0xc8, 0xd5, 0xfd, 0x6e, 0x7c, 0xd0, 0x18, +0x36, 0x21, 0x36, 0x3f, 0xb0, 0x05, 0x8c, 0xee, +0x37, 0x91, 0x23, 0xff, 0xb9, 0x8d, 0xfe, 0x1d, +0x34, 0xaa, 0xfb, 0xd5, 0x78, 0xe7, 0x5f, 0xb0, +0xee, 0x77, 0xb7, 0x1a, 0xa3, 0xff, 0x38, 0xa5, +0x75, 0xbf, 0xf1, 0x6a, 0x8c, 0xfe, 0x09, 0xf9, +0x67, 0x9c, 0x9b, 0x0f, 0x99, 0xe7, 0x14, 0xc0, +0xea, 0x04, 0x27, 0x9d, 0x06, 0xff, 0x3e, 0xac, +0xb0, 0x47, 0xe2, 0x97, 0xae, 0xfe, 0xc5, 0x54, +0x1a, 0xee, 0xdc, 0x2f, 0x09, 0x91, 0xb2, 0xcf, +0xfd, 0xc9, 0x73, 0x7b, 0xf2, 0xac, 0x9f, 0x3b, +0xce, 0x27, 0xab, 0x7d, 0x87, 0xf1, 0x31, 0x12, +0x7b, 0xf8, 0x87, 0xac, 0xfe, 0x91, 0x15, 0x40, +0xb2, 0x0a, 0x38, 0x85, 0x5b, 0x27, 0xa4, 0x9d, +0x92, 0xac, 0x08, 0x92, 0x55, 0x41, 0xd2, 0x00, +0x48, 0x9a, 0x00, 0xff, 0x89, 0x8d, 0x80, 0xc7, +0x70, 0x63, 0x80, 0x5c, 0x02, 0x24, 0x02, 0x60, +0x77, 0x69, 0x36, 0xf3, 0x9e, 0x27, 0xef, 0x6f, +0x3e, 0xf9, 0x67, 0x31, 0xef, 0xbd, 0x2d, 0xed, +0x69, 0x5c, 0xf2, 0xff, 0x03, 0xf1, 0xe1, 0x42, +0xd8, 0x02, 0xf8, 0x44, 0x32, 0xf6, 0xbf, 0xbf, +0x8a, 0x33, 0x6e, 0x17, 0x11, 0xac, 0xd9, 0xdd, +0xe5, 0xb0, 0xfd, 0x31, 0xd1, 0xa3, 0x01, 0xfc, +0xf9, 0xe7, 0xf5, 0xb7, 0x27, 0x7d, 0xf5, 0xde, +0x55, 0x5e, 0x0b, 0x28, 0x28, 0x98, 0xab, 0xf5, +0xa0, 0xa0, 0xad, 0xd6, 0x83, 0x82, 0xb8, 0x31, +0xf0, 0x2c, 0x56, 0x0b, 0x3f, 0x23, 0xde, 0x18, +0x58, 0x79, 0x08, 0x82, 0xca, 0x7b, 0x96, 0x64, +0xf0, 0xcf, 0x97, 0x06, 0xff, 0x16, 0x45, 0xf0, +0x8f, 0xeb, 0xfe, 0x45, 0x48, 0x06, 0x77, 0xec, +0xc8, 0x17, 0x8d, 0xfe, 0xd5, 0xdf, 0xf9, 0x67, +0x47, 0xff, 0xf2, 0xc7, 0x7e, 0x44, 0x75, 0xbf, +0xde, 0x9f, 0xfa, 0xc2, 0xaf, 0xff, 0x93, 0x3f, +0xf4, 0x42, 0x3e, 0x50, 0x49, 0xd7, 0xbf, 0xc7, +0xa7, 0xde, 0x8a, 0x47, 0xff, 0x4f, 0x20, 0xf9, +0x3f, 0x8e, 0xe4, 0xff, 0x98, 0x88, 0xfc, 0x19, +0xf7, 0xcf, 0xa9, 0xfb, 0x35, 0x7d, 0xc6, 0x0c, +0x05, 0x82, 0xa9, 0x88, 0xfc, 0x1f, 0x10, 0x91, +0xbf, 0xf1, 0xfd, 0x5b, 0xf9, 0xa3, 0x7f, 0xa5, +0x3b, 0xff, 0x3b, 0x54, 0xee, 0xfc, 0x3b, 0xcc, +0x61, 0xe7, 0x5f, 0xbd, 0xd1, 0xbf, 0x8a, 0x9d, +0x7f, 0x86, 0xfc, 0xe7, 0xbf, 0xf3, 0x2f, 0x3b, +0xfa, 0xcf, 0x20, 0x02, 0xe0, 0x1c, 0x91, 0x00, +0x70, 0x5c, 0x1f, 0xa6, 0xb3, 0xe0, 0xdf, 0x13, +0xa3, 0x6b, 0xc1, 0x28, 0xdd, 0x57, 0x22, 0x00, +0x4c, 0xd2, 0xfd, 0x0d, 0x76, 0xee, 0x97, 0xb8, +0x7c, 0xd2, 0xf2, 0xc7, 0xac, 0xfc, 0xb1, 0x95, +0xbe, 0x42, 0xe3, 0x7c, 0x5c, 0x31, 0xfd, 0x9d, +0x3d, 0xfc, 0x83, 0x21, 0x52, 0x32, 0x25, 0x20, +0x65, 0x40, 0xa4, 0x14, 0xe8, 0x34, 0xae, 0xa1, +0x36, 0x61, 0xc8, 0x94, 0x69, 0x0a, 0xc4, 0x95, +0x53, 0x72, 0x0b, 0x80, 0x34, 0x05, 0xe6, 0xa0, +0x18, 0x20, 0x55, 0xc0, 0x24, 0x08, 0x18, 0xb8, +0x2f, 0x8f, 0x43, 0xfe, 0x05, 0xcc, 0xfb, 0x94, +0xbc, 0x1f, 0x99, 0xf7, 0x5f, 0x7f, 0x1a, 0x98, +0x97, 0x49, 0xc8, 0x9f, 0x20, 0x74, 0xa1, 0xf4, +0x00, 0xac, 0x92, 0x08, 0x80, 0xfb, 0x2a, 0x19, +0x87, 0x2d, 0x7d, 0xee, 0x2e, 0x26, 0xd8, 0x9b, +0x31, 0xbd, 0x78, 0x6f, 0x25, 0x99, 0x04, 0x30, +0xdf, 0x67, 0xf3, 0xe8, 0xfe, 0xbf, 0x7f, 0x79, +0x73, 0xd4, 0x5f, 0xf5, 0x17, 0x14, 0x4c, 0x56, +0x12, 0x14, 0xcc, 0x56, 0x18, 0x14, 0x14, 0x09, +0x81, 0x85, 0x13, 0x14, 0x24, 0x1b, 0x03, 0x4e, +0x2f, 0x1e, 0x61, 0x42, 0x82, 0xcc, 0x8d, 0x01, +0x93, 0x66, 0x08, 0x6e, 0xe8, 0xa5, 0xc1, 0x3f, +0x83, 0x06, 0xff, 0x0e, 0x18, 0x38, 0xf8, 0x57, +0x6c, 0xb0, 0xe0, 0x1f, 0x97, 0xfc, 0x09, 0xb6, +0x27, 0x45, 0x09, 0x8e, 0xfe, 0xe5, 0x82, 0x7f, +0x82, 0xa3, 0x7f, 0x05, 0xc7, 0x7e, 0xb0, 0xf0, +0xe7, 0x48, 0x59, 0x8b, 0xdc, 0x87, 0x32, 0xb9, +0xb0, 0x46, 0xea, 0x7e, 0xeb, 0x72, 0x0e, 0x48, +0xc8, 0x9f, 0x71, 0xff, 0x4f, 0x9a, 0x83, 0xcd, +0xab, 0xb6, 0xe0, 0xfa, 0xa9, 0x07, 0xf8, 0x6f, +0x0e, 0x82, 0xf0, 0xed, 0x7b, 0x20, 0xde, 0x33, +0x01, 0xd2, 0xc3, 0x32, 0x21, 0x3f, 0xa1, 0x00, +0xca, 0x73, 0xca, 0xd1, 0x95, 0xd5, 0x42, 0xfd, +0x81, 0x7a, 0x26, 0xf8, 0x57, 0x5b, 0x53, 0x0b, +0xb9, 0x29, 0x79, 0xb0, 0xd3, 0x26, 0x0c, 0xb6, +0x3c, 0xb0, 0x55, 0x8d, 0xd1, 0xbf, 0xf2, 0x9d, +0x7f, 0x5b, 0x9d, 0xec, 0xfc, 0x87, 0x68, 0xbc, +0xf3, 0xbf, 0x5b, 0x4b, 0x3b, 0xff, 0xb2, 0xa3, +0x7f, 0xd6, 0xfd, 0x67, 0x9d, 0x53, 0x08, 0xd1, +0xb7, 0xa5, 0xeb, 0x24, 0xf8, 0x27, 0x3a, 0xf7, +0xeb, 0x2c, 0x26, 0x7f, 0x91, 0x00, 0xc8, 0x3c, +0x50, 0x61, 0x30, 0xf7, 0x9f, 0x8d, 0x24, 0xcd, +0x9e, 0xf8, 0x65, 0xc6, 0xf9, 0xe8, 0xda, 0xd9, +0x71, 0x7e, 0x25, 0x77, 0x9c, 0x8f, 0x82, 0xf4, +0x38, 0x6e, 0x08, 0x90, 0xda, 0x5f, 0x52, 0xff, +0xdb, 0x8d, 0xfd, 0x12, 0x3f, 0x22, 0xc9, 0x93, +0x5a, 0x60, 0x42, 0xfa, 0x84, 0xfc, 0x89, 0x08, +0x20, 0x62, 0x80, 0x84, 0x09, 0xf7, 0x8a, 0xef, +0x00, 0x90, 0x09, 0x40, 0x64, 0x61, 0x26, 0x58, +0x0d, 0x97, 0x32, 0xef, 0x67, 0xf2, 0xde, 0x25, +0xef, 0x53, 0x13, 0x86, 0xfc, 0x91, 0xab, 0x46, +0x52, 0xc5, 0xcf, 0xfd, 0x25, 0xe4, 0xdf, 0x82, +0x38, 0x77, 0xa1, 0x08, 0x80, 0xf5, 0x92, 0x0b, +0x80, 0xf7, 0x55, 0x70, 0x46, 0xed, 0x59, 0x3c, +0x21, 0x40, 0x48, 0xd6, 0xe4, 0x16, 0x2c, 0x34, +0xb8, 0xbf, 0x5a, 0x12, 0x14, 0xb4, 0x7c, 0x78, +0xef, 0x77, 0x9f, 0xdd, 0x10, 0xfa, 0xef, 0xb9, +0x06, 0x05, 0xbf, 0x50, 0x33, 0x28, 0xb8, 0x6e, +0xce, 0x41, 0xc1, 0x42, 0x25, 0x41, 0xc1, 0x4a, +0x25, 0x41, 0xc1, 0x3a, 0x9d, 0x06, 0x05, 0xc9, +0xc6, 0x80, 0xe3, 0x2b, 0xa2, 0x6a, 0xe1, 0x1d, +0xb8, 0x3e, 0xe8, 0xee, 0xd0, 0x02, 0x3b, 0x3b, +0xfa, 0x96, 0xdc, 0xe8, 0xdf, 0x87, 0x06, 0xff, +0x16, 0x74, 0xf0, 0x8f, 0x4b, 0xfe, 0x1b, 0x11, +0xa6, 0x8d, 0xf1, 0x0a, 0x46, 0xff, 0x4a, 0xdc, +0xbf, 0x82, 0xd1, 0x3f, 0x71, 0xff, 0x6c, 0xdd, +0x6f, 0xf0, 0x86, 0x9d, 0xf0, 0xc7, 0xef, 0xd2, +0x83, 0x2f, 0xa4, 0x69, 0x8d, 0x3d, 0xf6, 0xf3, +0xd7, 0xef, 0xff, 0x0a, 0x47, 0xaa, 0x5b, 0xa0, +0xb7, 0xb9, 0x17, 0xc6, 0x06, 0xc6, 0x99, 0x43, +0x3f, 0x42, 0x3b, 0xff, 0x24, 0xf5, 0x2f, 0xb4, +0xf3, 0xcf, 0xa6, 0xfe, 0xc9, 0xce, 0x7f, 0x88, +0xd5, 0x4e, 0x91, 0xfb, 0xe7, 0x8d, 0xfe, 0x2d, +0xd4, 0xa8, 0xfb, 0xb5, 0xd3, 0x7a, 0xdd, 0xaf, +0x8f, 0xca, 0xba, 0x5f, 0x2d, 0xef, 0xfc, 0xab, +0x3d, 0xfa, 0xc7, 0x52, 0x24, 0x22, 0x00, 0xce, +0x2e, 0x84, 0xec, 0xb3, 0x8b, 0xe0, 0xcd, 0x7a, +0x0b, 0xad, 0x07, 0xff, 0x9e, 0x1a, 0x46, 0xf7, +0x9f, 0xe9, 0x23, 0x11, 0x00, 0xdb, 0x52, 0x03, +0xe1, 0x17, 0x03, 0x9d, 0xfb, 0x25, 0xaf, 0x15, +0x42, 0xfe, 0x31, 0xf8, 0xdc, 0x9f, 0xa4, 0xfb, +0x49, 0xc3, 0xdf, 0x1f, 0xf8, 0xfa, 0x93, 0x1d, +0xe7, 0x93, 0x03, 0x3f, 0xdc, 0xc3, 0x3f, 0xe4, +0x67, 0xf2, 0xbf, 0xc9, 0x41, 0x20, 0xd2, 0x01, +0xc0, 0x1e, 0xfe, 0x21, 0xbf, 0x8e, 0x4c, 0xaf, +0xda, 0x31, 0x1f, 0xc0, 0x1e, 0x01, 0x4a, 0xcc, +0x48, 0x83, 0x1d, 0x7d, 0x25, 0x92, 0x75, 0x3f, +0x69, 0xe2, 0x3f, 0x43, 0xb4, 0x66, 0x7b, 0x30, +0x9d, 0x4b, 0xfe, 0xdf, 0x23, 0x6e, 0x5c, 0x48, +0x4d, 0x80, 0xc6, 0x2c, 0xa1, 0x9b, 0xdd, 0x5b, +0x2e, 0x21, 0x55, 0x79, 0x21, 0x20, 0x25, 0x59, +0xd3, 0x5b, 0x0b, 0xc0, 0xea, 0xc1, 0x1a, 0x89, +0x10, 0x30, 0x7b, 0xb0, 0xfc, 0xf4, 0xc7, 0xd7, +0x05, 0xfe, 0xa6, 0x2a, 0x28, 0xf8, 0xc9, 0xa2, +0x09, 0x0a, 0xee, 0x53, 0x12, 0x14, 0x6c, 0xd2, +0x5e, 0x50, 0x90, 0x54, 0x0b, 0xbf, 0x2c, 0xaa, +0x16, 0xb6, 0x7d, 0xae, 0x01, 0x3c, 0x03, 0xda, +0x20, 0x74, 0xa0, 0x5f, 0x8b, 0xee, 0x9f, 0x06, +0xff, 0x34, 0x0b, 0xfe, 0xed, 0x5f, 0x56, 0xc1, +0x3f, 0x56, 0x00, 0x6c, 0x64, 0x90, 0xc4, 0xc0, +0x7b, 0x7d, 0x88, 0x9a, 0x97, 0xfe, 0x3c, 0x20, +0x64, 0x6d, 0x28, 0xe4, 0x07, 0x16, 0x40, 0x55, +0x6c, 0x35, 0x1c, 0xcc, 0x6a, 0x80, 0xb6, 0xca, +0x76, 0x18, 0x3c, 0x34, 0x08, 0xd3, 0x7d, 0xd3, +0xf0, 0xd5, 0xcc, 0x57, 0x4c, 0xeb, 0xdf, 0xaf, +0xbf, 0xc8, 0x7f, 0xf0, 0x93, 0xf5, 0x2a, 0x32, +0x96, 0x65, 0x2f, 0xfd, 0x91, 0xba, 0x5f, 0xf6, +0xd8, 0x8f, 0x6c, 0xdd, 0xaf, 0xd0, 0xce, 0x3f, +0x49, 0xfd, 0x0b, 0xed, 0xfc, 0x27, 0xee, 0x4e, +0xe2, 0xb9, 0xff, 0x6d, 0x3a, 0xd8, 0xf9, 0x77, +0x95, 0xdb, 0xf9, 0xf7, 0x55, 0xb9, 0xf3, 0x2f, +0x1a, 0xfd, 0x6b, 0xb6, 0xf3, 0x4f, 0x46, 0xff, +0x7b, 0xe6, 0x30, 0xfa, 0x4f, 0x92, 0x1b, 0xfd, +0x8b, 0xdc, 0x3f, 0x77, 0xf4, 0xcf, 0x92, 0x7f, +0xce, 0x59, 0xc5, 0xb0, 0x39, 0xc8, 0x43, 0xab, +0xc1, 0x3f, 0xd1, 0xb9, 0x5f, 0x77, 0x8e, 0xfb, +0xf7, 0x86, 0xb2, 0x96, 0x7a, 0x83, 0x90, 0x3f, +0x69, 0x8f, 0x64, 0x9f, 0xfb, 0xe7, 0xe3, 0x98, +0x5f, 0x32, 0xce, 0x27, 0x95, 0xbe, 0xf8, 0xfa, +0xc9, 0xe2, 0x8c, 0xf3, 0xc9, 0x89, 0x5f, 0xe2, +0xf8, 0xf3, 0xd1, 0xf9, 0x93, 0xd3, 0xbf, 0x64, +0x12, 0x40, 0x44, 0x2a, 0x39, 0x09, 0x4c, 0x26, +0x04, 0x24, 0xf8, 0x37, 0x22, 0x6e, 0x0a, 0x9c, +0x44, 0x61, 0xca, 0xee, 0xfe, 0x27, 0xe3, 0xef, +0xe1, 0xd6, 0x52, 0x28, 0xb8, 0xee, 0x47, 0xde, +0x6f, 0x5b, 0xda, 0xd2, 0xb8, 0xe4, 0x4f, 0x9e, +0xfb, 0xbf, 0xb3, 0xa0, 0x6e, 0x01, 0x20, 0xf9, +0x98, 0x49, 0x9a, 0x00, 0xef, 0x2d, 0x15, 0x3f, +0x6b, 0x67, 0xdd, 0x35, 0x27, 0x7c, 0x77, 0xa3, +0xac, 0x10, 0xc8, 0x81, 0xad, 0xb7, 0xe3, 0xc6, +0xc0, 0xc3, 0x92, 0x8d, 0x81, 0xdf, 0x4d, 0xee, +0xcd, 0x3f, 0xf9, 0xe1, 0x35, 0xbe, 0xcb, 0x26, +0x28, 0x68, 0xaf, 0xad, 0xa0, 0x20, 0x56, 0x0b, +0x4b, 0x36, 0x06, 0x5e, 0x6d, 0x04, 0x9f, 0xe8, +0x0e, 0x08, 0x1d, 0xa1, 0xc1, 0x3f, 0x1a, 0xfc, +0xd3, 0x6d, 0xf0, 0x4f, 0xea, 0xfe, 0x93, 0xc4, +0x48, 0x04, 0x07, 0xdf, 0x70, 0x95, 0x3b, 0xff, +0xbe, 0x9f, 0xf8, 0xc3, 0x44, 0xc7, 0xc4, 0x9c, +0x3e, 0x94, 0xc9, 0xe8, 0x9f, 0x3c, 0xfb, 0x27, +0x3d, 0xec, 0x7f, 0x47, 0xd7, 0xf5, 0x57, 0x1c, +0xb1, 0x72, 0xeb, 0x7e, 0xc9, 0xb1, 0x1f, 0xa1, +0xba, 0x5f, 0xa1, 0x9d, 0x7f, 0xb6, 0xee, 0x97, +0x3d, 0xf6, 0x13, 0x86, 0x19, 0x06, 0x65, 0xc1, +0x3f, 0xcb, 0x39, 0xec, 0xfc, 0x3b, 0xc9, 0xed, +0xfc, 0x7b, 0xa9, 0xb1, 0xf3, 0x1f, 0xa4, 0xf5, +0x9d, 0xff, 0x68, 0x95, 0x3b, 0xff, 0x19, 0x72, +0xee, 0x3f, 0x4d, 0x20, 0xf8, 0x47, 0xdc, 0x7f, +0x36, 0x0a, 0x80, 0x1c, 0xb1, 0x00, 0x30, 0x77, +0xf4, 0xd7, 0x6a, 0xf0, 0xef, 0xd9, 0x81, 0x0d, +0xd8, 0xf4, 0x27, 0x75, 0xff, 0x16, 0x29, 0x3b, +0x19, 0xc7, 0x6c, 0xc8, 0xe7, 0xfe, 0x29, 0x38, +0xa2, 0x27, 0x57, 0xfd, 0xfe, 0xc6, 0x8e, 0xf3, +0xf1, 0x75, 0xc4, 0x8e, 0xf3, 0x4f, 0xe1, 0x6b, +0xee, 0x67, 0x9c, 0x44, 0x0d, 0xe1, 0x94, 0x89, +0x3d, 0xfc, 0x43, 0x32, 0x00, 0xe4, 0x75, 0x7a, +0x14, 0xa7, 0x50, 0x75, 0x38, 0x61, 0x2a, 0x94, +0x69, 0x0a, 0xcc, 0xc2, 0xa2, 0x20, 0xc9, 0x73, +0xff, 0xda, 0x1c, 0xde, 0xba, 0x1f, 0x79, 0x4f, +0x8a, 0x12, 0xff, 0xf8, 0x9e, 0xeb, 0x4b, 0xc1, +0xe7, 0xfe, 0x59, 0x5c, 0x01, 0x10, 0xb8, 0xe0, +0x8e, 0x01, 0x21, 0xe9, 0xd8, 0x48, 0x04, 0xc0, +0xdd, 0x25, 0x8c, 0xab, 0x96, 0x9e, 0xf1, 0x65, +0x83, 0x77, 0xb2, 0x53, 0x01, 0x7e, 0x4e, 0x60, +0xdb, 0x9d, 0xb8, 0x31, 0xf0, 0x68, 0x1d, 0xbb, +0x31, 0xf0, 0xcb, 0xa6, 0xbb, 0xd2, 0xcf, 0x48, +0x37, 0x06, 0x7c, 0x94, 0x54, 0x0b, 0x2b, 0x0a, +0x0a, 0xee, 0x5e, 0x76, 0x41, 0x41, 0x32, 0x25, +0x70, 0x79, 0xba, 0x9d, 0x99, 0x04, 0x30, 0x1b, +0x03, 0x1f, 0x34, 0x81, 0x5f, 0x4e, 0xe7, 0x32, +0x0e, 0xfe, 0xb5, 0x1a, 0x38, 0xf8, 0x57, 0xbb, +0x2c, 0x82, 0x7f, 0x5c, 0xf7, 0xbf, 0x01, 0x05, +0x80, 0x79, 0x7e, 0x94, 0xca, 0x9d, 0xff, 0xc9, +0xae, 0xa9, 0x39, 0x7d, 0x28, 0x13, 0x22, 0x60, +0x47, 0xff, 0xdc, 0x4b, 0x7f, 0xe4, 0xd8, 0x8f, +0x50, 0xdd, 0x2f, 0x39, 0xf6, 0x23, 0x54, 0xf7, +0xcb, 0xee, 0xfc, 0x73, 0xeb, 0x7e, 0xc9, 0xa5, +0x3f, 0x51, 0xe3, 0x9f, 0x96, 0x77, 0xfe, 0x19, +0xf2, 0x77, 0x57, 0x31, 0xfa, 0x57, 0x1e, 0xfc, +0x0b, 0x94, 0xdd, 0xf9, 0xff, 0xb3, 0x36, 0x76, +0xfe, 0x53, 0xf9, 0xee, 0xff, 0x02, 0xc5, 0x3b, +0xff, 0xc4, 0xfd, 0xcb, 0x8e, 0xfe, 0x09, 0xf9, +0xe7, 0x9e, 0x55, 0x02, 0xa6, 0x5e, 0xde, 0x5a, +0x0b, 0xfe, 0x11, 0xac, 0xce, 0xf4, 0xe2, 0xb9, +0xff, 0x83, 0x7d, 0x6d, 0x06, 0x71, 0xff, 0xe4, +0xf5, 0xc0, 0x9c, 0xf8, 0xc5, 0xd2, 0x1f, 0xd9, +0x71, 0x3e, 0xa9, 0xf4, 0xe5, 0x8e, 0xf3, 0xa7, +0xf0, 0xf5, 0x46, 0x2a, 0x7d, 0x4b, 0xb8, 0x87, +0x7f, 0xf0, 0xf5, 0x48, 0x4a, 0x7e, 0x32, 0x51, +0x3c, 0xb4, 0x72, 0x9a, 0x02, 0xcb, 0xf1, 0xf5, +0xc6, 0x7d, 0xee, 0x6f, 0x39, 0x2c, 0x22, 0x7f, +0xfe, 0xba, 0x1f, 0xf2, 0xe7, 0x70, 0x0a, 0x98, +0x55, 0x67, 0x70, 0xc9, 0xff, 0x90, 0x45, 0x49, +0xe6, 0x39, 0x0b, 0x51, 0x00, 0x38, 0xb0, 0x02, +0x60, 0xeb, 0xdd, 0x45, 0x9c, 0xf1, 0x7a, 0xaa, +0x1a, 0x42, 0x80, 0x9f, 0x13, 0xe0, 0x6e, 0x0c, +0xd8, 0x3c, 0x56, 0xf7, 0xef, 0x35, 0xb7, 0xc5, +0x7d, 0x3f, 0xb7, 0xa0, 0xe0, 0x2e, 0x25, 0x41, +0xc1, 0x18, 0x25, 0x41, 0xc1, 0x94, 0x25, 0x10, +0x14, 0xec, 0x03, 0xa7, 0x17, 0x70, 0x63, 0xe0, +0x69, 0xf1, 0xc6, 0xc0, 0xda, 0x43, 0x10, 0x50, +0xdd, 0xbd, 0xa4, 0x82, 0x7f, 0x5e, 0x34, 0xf8, +0xb7, 0x60, 0x82, 0x7f, 0x5c, 0xf7, 0x4f, 0x04, +0xc0, 0xe6, 0xee, 0x78, 0xf0, 0xf9, 0x90, 0x3f, +0xfa, 0xe7, 0x06, 0xff, 0x02, 0x56, 0x06, 0xcd, +0xd9, 0xd1, 0x91, 0xd1, 0x3f, 0x09, 0xfe, 0x91, +0x53, 0xbf, 0x3f, 0xa1, 0x9b, 0xfa, 0x01, 0x77, +0xad, 0xb9, 0xa3, 0x7f, 0x52, 0xd1, 0x3a, 0x89, +0x1f, 0xca, 0x42, 0x75, 0xbf, 0xe4, 0xd8, 0x8f, +0x50, 0xdd, 0x2f, 0x39, 0xf6, 0x93, 0x9d, 0x91, +0x0d, 0xbe, 0xc6, 0xfe, 0x6a, 0xd5, 0xfd, 0xaa, +0xde, 0xf9, 0x77, 0xd1, 0xf9, 0xce, 0xff, 0x5c, +0xeb, 0x7e, 0xe7, 0xba, 0xf3, 0x2f, 0x71, 0xff, +0x3c, 0xf2, 0xc7, 0x3f, 0xb7, 0x73, 0x8b, 0x99, +0x23, 0x3d, 0xda, 0x0a, 0xfe, 0xbd, 0xd0, 0x65, +0xc4, 0x23, 0xff, 0xed, 0xa9, 0xe1, 0x06, 0x21, +0x7f, 0xf2, 0x5a, 0x61, 0x9f, 0xfb, 0xef, 0xc7, +0x29, 0xd1, 0x31, 0xee, 0x38, 0x1f, 0xa7, 0x45, +0xec, 0x38, 0x9f, 0xbc, 0x16, 0xc9, 0x7e, 0x7f, +0x03, 0x66, 0x49, 0x72, 0x71, 0x35, 0x90, 0xec, +0xfd, 0xff, 0x15, 0x5f, 0x93, 0x7f, 0x25, 0x87, +0x7f, 0x50, 0x70, 0x92, 0x75, 0xc1, 0x46, 0xfc, +0x77, 0xa4, 0x27, 0x80, 0xd4, 0xff, 0x1e, 0xc6, +0xe9, 0x93, 0xe4, 0xb9, 0x7f, 0x26, 0x79, 0xee, +0x5f, 0x24, 0xb8, 0xeb, 0x4f, 0xde, 0x5f, 0xa6, +0xf5, 0xbc, 0xe7, 0xfe, 0xdf, 0x20, 0xf9, 0x5f, +0xa7, 0x0b, 0xf2, 0xd7, 0x86, 0x00, 0x70, 0x63, +0x05, 0x80, 0xe9, 0x5d, 0x85, 0x92, 0xd1, 0xba, +0xbc, 0x10, 0x48, 0x53, 0x43, 0x08, 0xe0, 0xf8, +0xe3, 0xe6, 0x5c, 0x66, 0x63, 0x60, 0x87, 0x78, +0x63, 0xc0, 0xfa, 0xd1, 0xda, 0xbf, 0x7d, 0x71, +0xd3, 0xee, 0x7f, 0xea, 0x27, 0x28, 0x98, 0xa4, +0x24, 0x28, 0x98, 0xa5, 0x24, 0x28, 0x58, 0x64, +0xb0, 0xa0, 0xa0, 0x42, 0x21, 0x70, 0x0f, 0x6e, +0x0c, 0xbc, 0xcc, 0xd9, 0x18, 0x30, 0x6f, 0x86, +0xc0, 0x43, 0x3d, 0xcb, 0x32, 0xf8, 0xa7, 0x4d, +0xf7, 0x3f, 0x17, 0xf2, 0x57, 0xee, 0xfe, 0x17, +0x77, 0xf0, 0x8f, 0xeb, 0xfe, 0x45, 0x48, 0xc0, +0xd7, 0x5a, 0xb0, 0xcc, 0xe8, 0x5f, 0xea, 0xfe, +0xfd, 0x3e, 0x0d, 0x9c, 0x93, 0x00, 0x20, 0xc1, +0x3f, 0xa1, 0xd1, 0xff, 0x57, 0x38, 0x52, 0x3d, +0x89, 0xcf, 0x64, 0x65, 0x47, 0xff, 0x24, 0xf8, +0xd7, 0xd1, 0xde, 0x81, 0xcf, 0x63, 0x0f, 0x42, +0x79, 0x5e, 0x05, 0xe4, 0xc4, 0xe5, 0x40, 0x62, +0x50, 0x12, 0x44, 0xb8, 0x44, 0x42, 0xb0, 0x45, +0x08, 0x78, 0xad, 0xf7, 0x01, 0xe7, 0x8f, 0x5d, +0x61, 0xc7, 0xab, 0x76, 0x60, 0x7a, 0xbf, 0xd9, +0xfc, 0xea, 0x7e, 0x35, 0xd8, 0xf9, 0x77, 0xd7, +0xca, 0xce, 0xbf, 0x7a, 0xa3, 0x7f, 0x65, 0x3b, +0xff, 0x09, 0x1a, 0xee, 0xfc, 0xb3, 0xa3, 0x7f, +0xae, 0xfb, 0x37, 0x51, 0xe8, 0xfe, 0x35, 0x0f, +0xfe, 0x3d, 0x3a, 0xb1, 0x0a, 0xcf, 0xfd, 0xfa, +0xf2, 0x04, 0x80, 0x21, 0xce, 0xfd, 0x92, 0xd7, +0x12, 0xfb, 0xdc, 0x9f, 0xb4, 0xfa, 0x71, 0xc7, +0xf9, 0x07, 0xc8, 0x38, 0x1f, 0x2b, 0x7d, 0xd9, +0x71, 0x3e, 0x69, 0xf6, 0x6b, 0xc5, 0xa9, 0x12, +0x71, 0xf9, 0xcd, 0xe8, 0xf6, 0xd9, 0xc3, 0x3f, +0xa4, 0x09, 0xb0, 0x04, 0x7f, 0x2d, 0x99, 0x0a, +0x90, 0xe9, 0x00, 0xf9, 0x31, 0x84, 0xd3, 0x28, +0x76, 0xdf, 0x9f, 0x3c, 0xf7, 0x77, 0x6d, 0x29, +0x90, 0x92, 0xbf, 0x78, 0xdd, 0x8f, 0xbc, 0xe7, +0xc8, 0x7b, 0x6c, 0x4b, 0x6b, 0x2a, 0x87, 0xfc, +0x33, 0x7f, 0x47, 0xbc, 0xae, 0x2b, 0xf2, 0xd7, +0x86, 0x00, 0xf0, 0x61, 0x05, 0xc0, 0x96, 0xbb, +0xf2, 0xc5, 0xcf, 0xd7, 0xd9, 0x67, 0xec, 0xc9, +0x9c, 0xae, 0xfe, 0x54, 0xb9, 0xc7, 0x03, 0xca, +0x72, 0x02, 0x5b, 0xc8, 0xc6, 0xc0, 0x03, 0xd5, +0xdc, 0x6a, 0xe1, 0x6f, 0x3e, 0xbd, 0x3e, 0xe4, +0x97, 0xa5, 0x1a, 0x14, 0xdc, 0xa1, 0x66, 0x50, +0xd0, 0x59, 0xc3, 0xa0, 0xa0, 0x1b, 0xa9, 0x16, +0x7e, 0x45, 0x54, 0x2d, 0xbc, 0xe3, 0x69, 0xdc, +0x18, 0x70, 0x6d, 0x81, 0xa0, 0xae, 0x5e, 0x1a, +0xfc, 0x53, 0x42, 0xfe, 0xea, 0xf5, 0xfd, 0xeb, +0x2e, 0xf8, 0x67, 0xb5, 0xc8, 0x82, 0x7f, 0x1b, +0x39, 0xe4, 0x4f, 0x60, 0xb3, 0x67, 0x97, 0xd2, +0x9d, 0xff, 0xde, 0xfa, 0x3e, 0x8d, 0x47, 0xff, +0x3f, 0xff, 0xe7, 0x67, 0xf8, 0xe6, 0xe4, 0x37, +0x30, 0xde, 0x3b, 0x2e, 0x09, 0xfe, 0x71, 0x47, +0xff, 0x24, 0xf8, 0x47, 0x46, 0xff, 0xfe, 0xc6, +0x81, 0xb0, 0xe3, 0x6d, 0x7b, 0x30, 0x7d, 0xd6, +0x8c, 0xb7, 0xf3, 0xbf, 0xf1, 0x41, 0x23, 0x69, +0xe1, 0x8f, 0x78, 0xe7, 0x7f, 0x8b, 0xec, 0xce, +0xbf, 0x1a, 0xa3, 0x7f, 0x8d, 0x77, 0xfe, 0x75, +0x54, 0xf7, 0xab, 0xf5, 0x9d, 0xff, 0xf3, 0x95, +0xef, 0xfc, 0x73, 0xdd, 0x7f, 0xcc, 0x6d, 0x99, +0xb0, 0x31, 0xd4, 0x5d, 0xab, 0xc1, 0xbf, 0x97, +0x5b, 0x4d, 0x90, 0xf4, 0xa5, 0xcf, 0xfe, 0x9d, +0xd2, 0xa3, 0x0c, 0xf2, 0xdc, 0x9f, 0x38, 0x74, +0x22, 0x00, 0xd2, 0x90, 0xa4, 0x09, 0x91, 0xcb, +0x8d, 0xf3, 0x49, 0xa5, 0x2f, 0x7b, 0xf8, 0x07, +0x1f, 0x2d, 0x91, 0x8e, 0x7f, 0x22, 0x0c, 0x88, +0x40, 0xf8, 0x8d, 0x3d, 0xfc, 0x83, 0x63, 0x7e, +0x72, 0x13, 0x60, 0x18, 0x45, 0x28, 0xc9, 0x07, +0x90, 0xb5, 0xc1, 0x74, 0x6c, 0x04, 0x64, 0x9f, +0xfb, 0x07, 0xec, 0xcb, 0xe1, 0xed, 0xfa, 0x4b, +0xd6, 0xfd, 0xc8, 0xfb, 0xac, 0x2f, 0x19, 0x2c, +0x4a, 0x25, 0xe4, 0x4f, 0xe0, 0xad, 0x4b, 0xf2, +0xd7, 0x86, 0x00, 0x08, 0x92, 0x08, 0x80, 0x3b, +0xf3, 0x78, 0x6e, 0x5a, 0x5e, 0x08, 0x48, 0x49, +0x55, 0xdd, 0x9c, 0x80, 0xc9, 0x6d, 0xb8, 0x31, +0xf0, 0x90, 0x74, 0x63, 0x60, 0xeb, 0xfd, 0x25, +0xa7, 0x3f, 0xc2, 0x37, 0xcc, 0x42, 0x0d, 0x0a, +0x9a, 0xaa, 0x19, 0x14, 0xb4, 0x52, 0x1a, 0x14, +0x6c, 0x50, 0x12, 0x14, 0x6c, 0x55, 0x12, 0x14, +0xec, 0x55, 0x18, 0x14, 0x74, 0x7d, 0xa8, 0x0b, +0xec, 0x5f, 0x16, 0x05, 0x05, 0x6d, 0x57, 0xe0, +0xc6, 0xc0, 0xce, 0x56, 0x08, 0x1e, 0xe8, 0x5d, +0x86, 0xc1, 0xbf, 0xc3, 0x4b, 0x2e, 0xf8, 0x67, +0x66, 0xe0, 0xe0, 0x1f, 0xd7, 0xfd, 0xaf, 0x47, +0x98, 0xd4, 0x44, 0x29, 0xdd, 0xf9, 0x77, 0x7b, +0xdb, 0x03, 0x1a, 0x72, 0x9b, 0xe0, 0xd8, 0xf0, +0x31, 0xf8, 0xfb, 0x0f, 0xff, 0x80, 0xef, 0x4e, +0x7d, 0x0f, 0x33, 0x03, 0xb3, 0xd0, 0xdf, 0x30, +0x00, 0x87, 0x8a, 0x9a, 0xa1, 0x2a, 0xbe, 0x1a, +0xb2, 0x03, 0x72, 0x21, 0x76, 0x47, 0x3c, 0x04, +0x6d, 0x08, 0x01, 0xa7, 0x77, 0x5c, 0xc1, 0x12, +0x2b, 0x7a, 0xd9, 0xba, 0xdf, 0xb6, 0xba, 0x76, +0x66, 0xf4, 0xcf, 0x06, 0xff, 0xb8, 0xa3, 0xff, +0x78, 0xaf, 0x44, 0x49, 0xdd, 0xaf, 0xa4, 0xf1, +0x8f, 0x43, 0xfe, 0x9b, 0x91, 0xfc, 0x8d, 0x98, +0xc2, 0x1f, 0x75, 0xeb, 0x7e, 0x95, 0xef, 0xfc, +0x8b, 0x46, 0xff, 0xf3, 0xdc, 0xf9, 0xbf, 0x46, +0xd3, 0x9d, 0xff, 0x08, 0xd5, 0x3b, 0xff, 0x97, +0x2a, 0xdf, 0xf9, 0x4f, 0xd4, 0x60, 0xe7, 0x3f, +0xf5, 0x72, 0xec, 0xfe, 0x7f, 0x31, 0x0e, 0xac, +0x76, 0x04, 0xc2, 0xa7, 0xb9, 0x76, 0xf0, 0xcc, +0xa8, 0x91, 0x56, 0x83, 0x7f, 0xc4, 0xfd, 0x6f, +0x48, 0xf5, 0x93, 0x0a, 0x80, 0x6c, 0x6f, 0x98, +0x30, 0xc0, 0xb9, 0x5f, 0x72, 0xf9, 0x91, 0x7d, +0xee, 0xdf, 0x81, 0x41, 0x3f, 0x76, 0x9c, 0xdf, +0xc9, 0x1d, 0xe7, 0xa3, 0xd8, 0x24, 0xe3, 0xfc, +0x11, 0x74, 0xf4, 0x15, 0x98, 0x1d, 0x21, 0x57, +0xfe, 0xc6, 0xf1, 0xd1, 0xc0, 0xaf, 0xf8, 0x88, +0x80, 0x1c, 0xfe, 0xa9, 0xc7, 0x6c, 0x49, 0x3e, +0x86, 0xfc, 0xba, 0x49, 0x53, 0x20, 0xc9, 0xa8, +0xe0, 0x94, 0xaa, 0x18, 0xbf, 0x8f, 0x7d, 0xee, +0x1f, 0x51, 0x84, 0xcf, 0xf5, 0x87, 0xd9, 0x75, +0xbf, 0x5c, 0xde, 0xba, 0xdf, 0xa6, 0xe1, 0x24, +0x30, 0xab, 0xca, 0xe0, 0x92, 0x7f, 0x3d, 0xe2, +0xec, 0x85, 0x2e, 0x00, 0x76, 0xb1, 0xe4, 0x6c, +0x7c, 0x47, 0x0e, 0x27, 0x64, 0xc7, 0x0a, 0x81, +0x44, 0x25, 0x42, 0x40, 0xfd, 0x9c, 0xc0, 0xd6, +0x3b, 0x70, 0x63, 0xe0, 0x11, 0xf1, 0xc6, 0x00, +0xa9, 0x16, 0xbe, 0x27, 0xfb, 0xcc, 0x07, 0xd7, +0xf8, 0x48, 0x84, 0x80, 0xb6, 0x83, 0x82, 0x6b, +0xd5, 0x0c, 0x0a, 0x1a, 0x2d, 0xa8, 0xa0, 0x60, +0xb7, 0x8a, 0xa0, 0x20, 0xa9, 0x16, 0xee, 0x00, +0xbb, 0x15, 0xa2, 0x6a, 0x61, 0xfb, 0x37, 0x1a, +0xc1, 0x2b, 0xa1, 0x1d, 0x82, 0x47, 0x69, 0xf0, +0x8f, 0x06, 0xff, 0xe6, 0x1e, 0xfc, 0xe3, 0xba, +0xff, 0xf5, 0xa3, 0xf1, 0xb0, 0x7e, 0x38, 0x1e, +0xdc, 0xb1, 0xc1, 0x4f, 0xdd, 0x9d, 0x7f, 0xa6, +0xf0, 0x47, 0xbc, 0xf3, 0xcf, 0x9e, 0xf9, 0xb5, +0x79, 0xc1, 0x56, 0xf8, 0xd8, 0x0f, 0xd6, 0xfd, +0xee, 0x34, 0xdd, 0xc5, 0x1b, 0xfd, 0x73, 0x83, +0x7f, 0x6d, 0x47, 0xda, 0x61, 0xcb, 0x53, 0x5b, +0x15, 0xd7, 0xfd, 0x3e, 0xc0, 0xaf, 0xfb, 0x35, +0x91, 0x1b, 0xfd, 0xeb, 0x7f, 0xe7, 0xdf, 0x57, +0xe5, 0xce, 0x7f, 0xb8, 0x5e, 0x77, 0xfe, 0xe3, +0xff, 0x92, 0x09, 0x3e, 0x6f, 0x46, 0xc1, 0x36, +0x17, 0x9c, 0xb0, 0x96, 0xec, 0x80, 0x67, 0x47, +0x8c, 0x55, 0x16, 0xfe, 0xcc, 0xc7, 0xfd, 0x8b, +0xce, 0xfd, 0xfa, 0x48, 0x04, 0x80, 0x97, 0x01, +0xce, 0xfd, 0x92, 0x90, 0x28, 0xfb, 0xdc, 0x9f, +0x3c, 0xd3, 0x27, 0xae, 0x5f, 0x68, 0x9c, 0x4f, +0xa6, 0x51, 0x92, 0xc3, 0x3f, 0x18, 0x06, 0x24, +0xa1, 0x40, 0x12, 0x0e, 0x24, 0x21, 0x41, 0xc9, +0xe1, 0x1f, 0xd2, 0x14, 0x88, 0xaf, 0x4f, 0xd2, +0x0d, 0x70, 0x10, 0x03, 0xa7, 0xdc, 0xe7, 0xfe, +0xdb, 0xfb, 0x8b, 0x64, 0xd6, 0xfd, 0x32, 0x98, +0x29, 0x1b, 0xd3, 0xa3, 0x71, 0x20, 0x9d, 0x4b, +0xfe, 0x5f, 0x21, 0xae, 0xd6, 0x35, 0xf9, 0x6b, +0x43, 0x00, 0x44, 0xb1, 0x02, 0xc0, 0xe8, 0xf6, +0x2c, 0xc9, 0x73, 0x75, 0x29, 0x89, 0x8a, 0x88, +0x54, 0x7e, 0x2a, 0x90, 0x22, 0xf7, 0x78, 0x40, +0x9d, 0x9c, 0xc0, 0xb6, 0xbb, 0xb8, 0x1b, 0x03, +0x07, 0xfe, 0xbb, 0xfe, 0x8e, 0xe4, 0xef, 0x3e, +0x50, 0x12, 0x14, 0xe4, 0x56, 0x0b, 0x7f, 0xa6, +0x66, 0xb5, 0xf0, 0x52, 0x0f, 0x0a, 0x7a, 0x30, +0xd5, 0xc2, 0x6d, 0xcc, 0xb5, 0x41, 0x66, 0x63, +0xe0, 0x93, 0x26, 0xf0, 0x2d, 0xe8, 0x5c, 0x86, +0xc1, 0xbf, 0x26, 0x1a, 0xfc, 0xd3, 0x42, 0xf0, +0x8f, 0x47, 0xfe, 0x62, 0xd8, 0x3a, 0x05, 0xf1, +0xc8, 0xdf, 0x55, 0x49, 0xdd, 0xaf, 0x1d, 0x92, +0x3f, 0x69, 0xfc, 0xdb, 0xf1, 0x22, 0x0a, 0x80, +0x15, 0x22, 0x01, 0xa0, 0xea, 0xd2, 0x5f, 0xcf, +0x91, 0x5e, 0xb9, 0x9d, 0x7f, 0x92, 0xfa, 0x27, +0xc1, 0xbf, 0x70, 0xdb, 0xdd, 0x0a, 0x47, 0xff, +0x46, 0x72, 0x75, 0xbf, 0x66, 0x2a, 0xea, 0x7e, +0xb7, 0xab, 0xac, 0xfb, 0xb5, 0x9f, 0x43, 0xdd, +0xaf, 0x97, 0xca, 0xd1, 0x7f, 0xa8, 0xea, 0xba, +0x5f, 0xce, 0xce, 0x7f, 0xc4, 0x3c, 0x76, 0xfe, +0xa3, 0xf0, 0x33, 0xd8, 0xed, 0xc3, 0xdd, 0xb0, +0xc5, 0xd7, 0x1b, 0xde, 0xdb, 0x6b, 0x03, 0xcf, +0x8e, 0x6d, 0xd1, 0xcb, 0xa9, 0x5f, 0xd1, 0xb9, +0xdf, 0x55, 0xb0, 0x39, 0xd5, 0x5f, 0x22, 0x00, +0x8c, 0xb3, 0x7c, 0xe0, 0xd4, 0xf7, 0x5f, 0xeb, +0x95, 0xfc, 0x49, 0x88, 0x94, 0x7d, 0xee, 0x5f, +0x86, 0x01, 0x3f, 0x66, 0x9c, 0x4f, 0x2a, 0x7d, +0xf1, 0x35, 0xb5, 0x57, 0x66, 0x9c, 0x4f, 0xd6, +0xfe, 0x9a, 0x90, 0xd4, 0xb3, 0xc9, 0xe1, 0x1f, +0x9c, 0x12, 0xfc, 0x80, 0x5b, 0x28, 0x64, 0x3d, +0xb0, 0x0b, 0x03, 0x80, 0x79, 0x38, 0xe6, 0x3f, +0xc8, 0x36, 0x05, 0x62, 0x5e, 0xa5, 0x07, 0xd7, +0x4f, 0x13, 0x91, 0xf8, 0x99, 0xe7, 0xfe, 0x29, +0x78, 0x5a, 0xba, 0x35, 0x5f, 0x6e, 0xd7, 0x9f, +0x49, 0xfc, 0xe3, 0x7b, 0xca, 0xb8, 0x25, 0x85, +0x4b, 0xfe, 0xbf, 0x21, 0x5e, 0xd2, 0x07, 0xf9, +0x6b, 0x43, 0x00, 0x24, 0xb0, 0x02, 0x60, 0xd3, +0xed, 0x19, 0xe2, 0x70, 0x1d, 0x1b, 0xb0, 0x93, +0x8a, 0x01, 0xc5, 0x42, 0x40, 0xf9, 0xe3, 0x01, +0xc1, 0x9c, 0xc0, 0xcd, 0xb8, 0x31, 0x70, 0x4f, +0x19, 0x11, 0x00, 0x6c, 0xb5, 0xf0, 0x3f, 0xbf, +0xbc, 0x25, 0xfa, 0xa7, 0xe5, 0x10, 0x14, 0xb4, +0xd3, 0x66, 0x50, 0x90, 0xa9, 0x16, 0x6e, 0x61, +0xda, 0x04, 0x99, 0x8d, 0x81, 0x8d, 0x87, 0xc0, +0x6f, 0x5f, 0xd7, 0x02, 0x0e, 0xfe, 0x75, 0xd0, +0xe0, 0xdf, 0x02, 0x0d, 0xfe, 0xad, 0xe7, 0x08, +0x80, 0x75, 0xa3, 0x71, 0x60, 0x96, 0xba, 0x4b, +0x66, 0xf4, 0xef, 0xae, 0xb4, 0xee, 0x97, 0xeb, +0xfe, 0x79, 0xe4, 0xff, 0x9c, 0xf4, 0xd2, 0x9f, +0xe4, 0xd8, 0x0f, 0xd6, 0xfd, 0x46, 0xd9, 0xc5, +0x30, 0xa3, 0x7f, 0xa1, 0x9d, 0xff, 0x03, 0x7b, +0x0f, 0xc0, 0xa6, 0x47, 0x45, 0xcf, 0xff, 0xf9, +0xa3, 0x7f, 0xf5, 0x8f, 0xfd, 0xcc, 0x75, 0xe7, +0x7f, 0xee, 0x75, 0xbf, 0x5a, 0xde, 0xf9, 0x57, +0x52, 0xf7, 0xbb, 0xeb, 0xce, 0x04, 0x70, 0x5c, +0x15, 0x06, 0x9b, 0x42, 0x3c, 0xe0, 0xed, 0x03, +0xd6, 0xf0, 0xfc, 0xb8, 0x09, 0x3c, 0xc7, 0x60, +0x0b, 0x03, 0x96, 0xfc, 0x75, 0x7d, 0xea, 0x97, +0x8c, 0xfe, 0xc9, 0xb9, 0x5f, 0x63, 0x89, 0xfb, +0xf7, 0x81, 0x10, 0x3d, 0x9f, 0xfb, 0xe5, 0x3e, +0xf7, 0x4f, 0xc7, 0x31, 0xff, 0x18, 0x3b, 0xce, +0xc7, 0xd7, 0x16, 0x77, 0x9c, 0xff, 0xa3, 0x78, +0x9c, 0xcf, 0x1e, 0xfe, 0x39, 0x84, 0x5d, 0x12, +0xa4, 0x10, 0x88, 0x14, 0x03, 0x0d, 0xe2, 0xeb, +0x8e, 0x3d, 0xfc, 0x43, 0x9a, 0x02, 0x49, 0x60, +0x95, 0x4c, 0x09, 0xd2, 0x50, 0x24, 0xb0, 0xcf, +0xfd, 0xfd, 0xf1, 0xb9, 0xbf, 0xdc, 0x69, 0x5f, +0x31, 0xf9, 0x6f, 0xea, 0x25, 0xcf, 0xfd, 0x33, +0x59, 0xf2, 0x27, 0x70, 0xd5, 0x17, 0xf9, 0x6b, +0x43, 0x00, 0xa4, 0x49, 0x04, 0x00, 0x76, 0x43, +0x73, 0x47, 0xe9, 0x8a, 0x85, 0x80, 0x3a, 0x39, +0x01, 0xd5, 0x8f, 0x07, 0x8c, 0x6f, 0xc1, 0x8d, +0x81, 0xfb, 0xa4, 0x1b, 0x03, 0x56, 0x8f, 0xd4, +0xfc, 0xf0, 0xf9, 0x8d, 0xbb, 0xfe, 0xbb, 0x30, +0x83, 0x82, 0x05, 0x4a, 0x82, 0x82, 0x15, 0x86, +0x0d, 0x0a, 0x92, 0x6a, 0xe1, 0x57, 0xc5, 0xd5, +0xc2, 0xb8, 0x35, 0xe0, 0x62, 0xd3, 0x0c, 0xfe, +0x47, 0xba, 0x69, 0xf0, 0x8f, 0x06, 0xff, 0xd4, +0x0e, 0xfe, 0x71, 0xdd, 0x3f, 0x11, 0x00, 0x9b, +0x5a, 0xa2, 0x95, 0x8e, 0xfe, 0x1d, 0x64, 0xea, +0x7e, 0x25, 0xee, 0x5f, 0xc9, 0xe8, 0x9f, 0x7b, +0xec, 0x67, 0xeb, 0xd3, 0xe6, 0xd0, 0x87, 0xf5, +0xd7, 0xdc, 0xba, 0x5f, 0xee, 0xce, 0xbf, 0xbf, +0x49, 0x80, 0xf2, 0xe0, 0xdf, 0xbd, 0xf2, 0xc1, +0x3f, 0x73, 0xad, 0xec, 0xfc, 0xab, 0x33, 0xfa, +0x57, 0xbe, 0xf3, 0x1f, 0x34, 0x87, 0x9d, 0x7f, +0x85, 0xa3, 0xff, 0x4b, 0x52, 0x20, 0xf8, 0xa1, +0x18, 0xb0, 0xdb, 0x18, 0x0c, 0xeb, 0x22, 0xdc, +0xe0, 0xcd, 0x66, 0x2b, 0x78, 0x61, 0x7c, 0x2b, +0x92, 0xbe, 0xa9, 0x18, 0x2c, 0xf9, 0x9b, 0x88, +0xc9, 0x5f, 0xc8, 0xfd, 0x6b, 0xff, 0xd4, 0xaf, +0xe8, 0xdc, 0xef, 0x97, 0x60, 0x94, 0xe6, 0x2f, +0x11, 0x00, 0x5b, 0x32, 0xfc, 0xe1, 0x07, 0x3d, +0x9f, 0xfb, 0xcd, 0xc7, 0xf2, 0x1e, 0xb6, 0xe7, +0x9f, 0xb9, 0xd0, 0x27, 0x1e, 0xe7, 0x93, 0xdd, +0x7f, 0xd9, 0x71, 0x3e, 0xf9, 0xf7, 0x45, 0xdc, +0xc3, 0x3f, 0x48, 0xf4, 0x84, 0xf0, 0x09, 0xf1, +0x97, 0xe2, 0xef, 0x33, 0xc8, 0x69, 0x0a, 0xcc, +0xc7, 0xc7, 0x06, 0xec, 0x73, 0xff, 0x3d, 0xf8, +0xdc, 0x5f, 0xd1, 0xba, 0xdf, 0xc6, 0xe1, 0x44, +0x7c, 0xee, 0x9f, 0xce, 0x25, 0xff, 0x5a, 0xc4, +0x59, 0x8b, 0x49, 0x00, 0xe4, 0xb2, 0x02, 0x60, +0xc3, 0xad, 0xa9, 0x1c, 0xe2, 0x64, 0xc9, 0x33, +0x46, 0x58, 0x08, 0x68, 0x9c, 0x13, 0x50, 0xfc, +0x78, 0x60, 0xcb, 0xad, 0xb9, 0xbc, 0x8d, 0x01, +0xac, 0x16, 0xfe, 0xfa, 0x93, 0xeb, 0x83, 0x7e, +0x97, 0x0b, 0x0a, 0x5e, 0xad, 0xdb, 0xa0, 0xe0, +0xc6, 0x39, 0x07, 0x05, 0xcb, 0x94, 0x04, 0x05, +0x6b, 0x95, 0x04, 0x05, 0x1b, 0xb5, 0x1b, 0x14, +0x7c, 0x80, 0x6c, 0x0c, 0x88, 0xab, 0x85, 0x9f, +0x39, 0x08, 0x6e, 0x5e, 0x2d, 0x10, 0xd0, 0xdd, +0xb3, 0x40, 0x83, 0x7f, 0x6d, 0x34, 0xf8, 0xb7, +0x80, 0x82, 0x7f, 0x5c, 0xf2, 0x17, 0x21, 0x16, +0xaf, 0xc5, 0xf9, 0x28, 0x19, 0xfd, 0x73, 0xdc, +0xff, 0x8b, 0x0a, 0xdc, 0xff, 0xb3, 0x52, 0xf7, +0x2f, 0x74, 0xe9, 0x2f, 0xc1, 0x2b, 0x49, 0x70, +0xe7, 0x9f, 0xd4, 0xfd, 0x96, 0xe7, 0x97, 0xc3, +0xa6, 0x87, 0x84, 0x46, 0xff, 0xea, 0x04, 0xff, +0xe6, 0x57, 0xf7, 0xeb, 0x22, 0x57, 0xf7, 0xeb, +0xa3, 0xb2, 0xee, 0x57, 0x5b, 0x3b, 0xff, 0x51, +0x97, 0x27, 0x80, 0xdf, 0x53, 0x11, 0x60, 0xb3, +0x35, 0x10, 0x56, 0xc7, 0xbb, 0xc0, 0xeb, 0x1d, +0x56, 0xb0, 0x62, 0xdc, 0x0c, 0x49, 0x7f, 0x9b, +0x18, 0x84, 0xfc, 0xa5, 0x02, 0xe0, 0x39, 0x9d, +0xb8, 0x7f, 0xf5, 0x82, 0x7f, 0xe4, 0xdc, 0x2f, +0x21, 0x7f, 0x56, 0x00, 0x44, 0x57, 0x16, 0xe8, +0x95, 0xfc, 0xc9, 0x6b, 0x85, 0x7d, 0xee, 0x7f, +0x18, 0x09, 0x5f, 0x32, 0xce, 0xc7, 0xd6, 0x3f, +0x72, 0xcc, 0x87, 0x8c, 0xf3, 0x8f, 0x8b, 0xc7, +0xf9, 0xa3, 0x38, 0x61, 0xaa, 0xc4, 0xce, 0x08, +0x02, 0xf2, 0x35, 0xf9, 0x67, 0x64, 0xd4, 0x4f, +0xbe, 0x87, 0x8c, 0xfe, 0xd9, 0xa6, 0x40, 0xf2, +0x7b, 0xec, 0x43, 0x81, 0xc0, 0x3c, 0xf7, 0x4f, +0xc4, 0xf1, 0x3f, 0x3e, 0xf7, 0xb7, 0xe9, 0x2f, +0x94, 0x3b, 0xed, 0xcb, 0x90, 0x3f, 0xbe, 0x7f, +0x4c, 0x0f, 0xa4, 0x71, 0xc9, 0xff, 0x24, 0xe2, +0xff, 0xf4, 0x49, 0xfe, 0xda, 0x10, 0x00, 0xc5, +0x2c, 0xf1, 0xae, 0xbf, 0x25, 0x49, 0x4c, 0x9a, +0x22, 0xe2, 0xe4, 0x92, 0xa7, 0xfc, 0x54, 0x60, +0x6e, 0x39, 0x81, 0x8d, 0x4a, 0x84, 0x80, 0xc9, +0x6d, 0xf9, 0xb8, 0x31, 0x50, 0xcb, 0x0a, 0x81, +0x3f, 0x4c, 0xee, 0x2b, 0xf8, 0xea, 0xc3, 0x6b, +0xfd, 0x34, 0x0e, 0x0a, 0x7e, 0xbe, 0x68, 0x82, +0x82, 0x07, 0x95, 0x04, 0x05, 0x95, 0x54, 0x0b, +0xab, 0x08, 0x0a, 0xba, 0x3e, 0xda, 0x09, 0xf6, +0x2f, 0x89, 0x37, 0x06, 0x5e, 0x6a, 0x00, 0x8f, +0xf0, 0x56, 0x08, 0x18, 0xa4, 0xc1, 0xbf, 0xc5, +0x1c, 0xfc, 0x33, 0xd1, 0x75, 0xf0, 0x4f, 0x40, +0x00, 0x58, 0x05, 0x04, 0x2b, 0x1f, 0xfd, 0xbf, +0xac, 0x78, 0xf4, 0x2f, 0xe7, 0xfe, 0x9f, 0x92, +0x11, 0x00, 0x8f, 0x6f, 0x05, 0xf3, 0x17, 0xac, +0xf0, 0x39, 0x6b, 0x0f, 0x33, 0xfa, 0x27, 0xc7, +0x7e, 0x64, 0xeb, 0x7e, 0xdd, 0x57, 0x7b, 0x8a, +0x04, 0x80, 0x06, 0xa3, 0x7f, 0x8b, 0x39, 0x8c, +0xfe, 0x1d, 0xe5, 0xea, 0x7e, 0x3d, 0xd5, 0xa8, +0xfb, 0x0d, 0xd4, 0x4a, 0xdd, 0xef, 0xee, 0xbf, +0xc4, 0x82, 0xe7, 0x8b, 0xbb, 0xc0, 0xdc, 0xc6, +0x0f, 0xbe, 0x48, 0x77, 0x86, 0x57, 0x7b, 0xad, +0xe0, 0xc5, 0x71, 0x73, 0x24, 0x7d, 0x73, 0x86, +0xf8, 0x65, 0xc9, 0x5f, 0xd8, 0xfd, 0xcb, 0x92, +0xbf, 0xb1, 0x5a, 0xe4, 0x3f, 0x1f, 0xf7, 0xff, +0xc4, 0xe8, 0x1a, 0x30, 0x4e, 0xf7, 0x93, 0x08, +0x00, 0x93, 0xb4, 0x00, 0xbd, 0x9e, 0xfb, 0x25, +0x1b, 0x24, 0xec, 0x73, 0xff, 0x0a, 0x2c, 0x84, +0x62, 0xc7, 0xf9, 0xa4, 0xef, 0x9f, 0xb8, 0xf9, +0x1a, 0xfc, 0x67, 0xec, 0x38, 0x9f, 0xb8, 0x7d, +0xe2, 0xfa, 0x89, 0xfb, 0x67, 0x0f, 0xff, 0x90, +0xa9, 0x00, 0x99, 0x0e, 0x90, 0x29, 0x01, 0x09, +0xff, 0xb1, 0x4d, 0x81, 0x6d, 0xf8, 0xfa, 0x4b, +0xe0, 0x3c, 0xf7, 0x77, 0x6a, 0xcb, 0x93, 0x3b, +0xed, 0x4b, 0xde, 0x5b, 0xe4, 0x7d, 0x64, 0x7c, +0x24, 0x99, 0x4b, 0xfe, 0xbf, 0x5a, 0x94, 0x64, +0x3c, 0xaf, 0x6f, 0xf2, 0xd7, 0x86, 0x00, 0xa8, +0x64, 0x05, 0xc0, 0xba, 0x9b, 0x13, 0xc4, 0x84, +0x19, 0xa1, 0x40, 0x08, 0xa8, 0xf3, 0x78, 0x60, +0xfe, 0x39, 0x01, 0x53, 0x66, 0x63, 0x60, 0x3f, +0x5b, 0x2d, 0xfc, 0x2b, 0x56, 0x0b, 0x7f, 0xfb, +0x01, 0x53, 0x2d, 0x6c, 0xc0, 0xa0, 0xe0, 0x8d, +0xda, 0x0f, 0x0a, 0x6e, 0x57, 0x33, 0x28, 0xe8, +0x34, 0x97, 0xa0, 0x20, 0xd9, 0x18, 0x78, 0x0a, +0xab, 0x85, 0x5f, 0x10, 0x05, 0x05, 0xed, 0xdf, +0x69, 0x04, 0xcf, 0x94, 0x36, 0x08, 0x18, 0xa1, +0xc1, 0xbf, 0xe5, 0x10, 0xfc, 0xdb, 0x3c, 0x87, +0xe0, 0x1f, 0x97, 0xfc, 0x09, 0xb6, 0x94, 0x84, +0x4b, 0x46, 0xff, 0x12, 0xf7, 0xff, 0xca, 0xdc, +0x83, 0x7f, 0x5c, 0xf2, 0x37, 0x7e, 0xcc, 0x14, +0x8c, 0x1e, 0x33, 0x81, 0xb4, 0x90, 0x74, 0xb9, +0xba, 0x5f, 0x72, 0xec, 0x87, 0xd4, 0xfd, 0x66, +0x27, 0xe4, 0xcc, 0x6b, 0xe7, 0x9f, 0x90, 0xbf, +0x8d, 0x3a, 0xa3, 0x7f, 0x1d, 0xef, 0xfc, 0x73, +0x47, 0xff, 0x3b, 0xaf, 0x8d, 0x04, 0x97, 0xb7, +0x76, 0xc2, 0x56, 0x47, 0x6f, 0xf8, 0x2c, 0xcf, +0x11, 0x5e, 0x19, 0xb4, 0x82, 0x97, 0xc6, 0x2d, +0x11, 0x16, 0x48, 0xfc, 0x16, 0x0c, 0xf9, 0xbf, +0xc8, 0x21, 0xff, 0x15, 0x72, 0xe4, 0x2f, 0xec, +0xfe, 0x85, 0x47, 0xff, 0xda, 0x0d, 0xfe, 0x71, +0xdd, 0xff, 0xa7, 0x45, 0x2e, 0x12, 0xf2, 0x27, +0xc8, 0x38, 0x50, 0xa9, 0x37, 0xf2, 0x27, 0x0d, +0x7e, 0x84, 0xa0, 0x89, 0x00, 0xc8, 0x40, 0xf7, +0x2e, 0x37, 0xce, 0x17, 0x57, 0xfa, 0x4a, 0x0e, +0xff, 0xa0, 0x98, 0x24, 0xcf, 0xfd, 0xc9, 0xf3, +0x7f, 0x92, 0x03, 0x20, 0xeb, 0x7d, 0x24, 0x17, +0x40, 0xf2, 0x01, 0x24, 0x27, 0x40, 0xd6, 0xff, +0x48, 0x6e, 0x80, 0xb4, 0x03, 0xa6, 0x60, 0x7f, +0x00, 0xfb, 0xdc, 0xdf, 0x6f, 0x7f, 0x8e, 0xfc, +0x69, 0x5f, 0x31, 0xf9, 0x6f, 0xea, 0x49, 0x94, +0x79, 0xee, 0x9f, 0x61, 0x6f, 0x08, 0xf2, 0xd7, +0x86, 0x00, 0xd8, 0xc7, 0x0a, 0x80, 0x35, 0x37, +0xc7, 0x49, 0xc6, 0xe7, 0x7c, 0xd2, 0x54, 0x24, +0x04, 0x62, 0x74, 0x9a, 0x13, 0x20, 0x1b, 0x03, +0x9c, 0x6a, 0xe1, 0xff, 0xac, 0xbd, 0x2d, 0xe1, +0xc7, 0xf7, 0x65, 0x84, 0x80, 0x60, 0x50, 0x50, +0x4e, 0x08, 0x84, 0x2b, 0xa9, 0x16, 0xd6, 0x5f, +0x50, 0xd0, 0xd2, 0x20, 0x41, 0x41, 0x71, 0xb5, +0xf0, 0x33, 0xe2, 0x8d, 0x81, 0x2f, 0x9a, 0xc0, +0xab, 0xa4, 0x83, 0x06, 0xff, 0x68, 0xf0, 0x4f, +0xc1, 0xe8, 0x5f, 0x24, 0x00, 0xd6, 0x12, 0x11, +0xd0, 0x1f, 0x0d, 0x4e, 0x6f, 0xbb, 0x89, 0xc8, +0x5f, 0x28, 0xf8, 0xa7, 0xe1, 0xe8, 0x5f, 0x4e, +0x00, 0x3c, 0x6a, 0x02, 0xd6, 0xaf, 0x6d, 0x67, +0xc8, 0xbf, 0x0d, 0x47, 0xb0, 0x42, 0x75, 0xbf, +0x8e, 0x1f, 0xb8, 0x68, 0xb0, 0xf3, 0xbf, 0x9d, +0x2f, 0x00, 0x14, 0x8e, 0xfe, 0x9d, 0x35, 0xaa, +0xfb, 0xf5, 0x9c, 0x43, 0xdd, 0x2f, 0xeb, 0xfe, +0x03, 0x6f, 0xd9, 0x0d, 0x0e, 0x78, 0x62, 0xd9, +0xd8, 0xd3, 0x0b, 0x3e, 0x29, 0x43, 0xc2, 0x1f, +0xb1, 0x81, 0x97, 0xc7, 0xad, 0x18, 0x88, 0x88, +0x9f, 0x4b, 0xfe, 0x16, 0x4a, 0xdd, 0xff, 0xf3, +0x6a, 0xb9, 0x7f, 0xdd, 0x07, 0xff, 0xc8, 0xb9, +0x5f, 0xe3, 0x4c, 0xa9, 0xfb, 0xdf, 0x96, 0x1a, +0xac, 0xd7, 0x73, 0xbf, 0xe4, 0xf6, 0x03, 0xf3, +0xdc, 0x1f, 0x89, 0x7a, 0x18, 0x37, 0x47, 0xe4, +0xc6, 0xf9, 0xf8, 0x68, 0xe0, 0x6f, 0xd8, 0x01, +0x40, 0xc6, 0xf9, 0x24, 0xe9, 0x9f, 0x83, 0x61, +0x3e, 0x92, 0xfc, 0x3f, 0x85, 0x5b, 0x27, 0x64, +0x13, 0x80, 0x6c, 0x04, 0x90, 0xcd, 0x00, 0x52, +0xf8, 0x43, 0x36, 0x05, 0x48, 0x01, 0x10, 0xd9, +0x1c, 0xc8, 0xc1, 0x09, 0x81, 0xe4, 0xb9, 0x7f, +0x71, 0x86, 0xe0, 0x69, 0x5f, 0xe6, 0xbd, 0x34, +0x84, 0xcf, 0xfd, 0x2b, 0xb9, 0xcf, 0xfd, 0x33, +0x2a, 0x0d, 0x45, 0xfe, 0xda, 0x10, 0x00, 0x8d, +0x12, 0x01, 0x70, 0x63, 0x2c, 0x87, 0x2c, 0x65, +0x85, 0x80, 0xd4, 0x41, 0xcb, 0xe6, 0x04, 0x56, +0xeb, 0x30, 0x27, 0x40, 0x08, 0xd7, 0xec, 0x9e, +0x72, 0x32, 0x09, 0x10, 0x57, 0x0b, 0xef, 0xfb, +0x69, 0xe5, 0xcd, 0x11, 0xff, 0xd1, 0x4e, 0x50, +0x30, 0x52, 0x49, 0x50, 0x30, 0x51, 0x61, 0x50, +0x50, 0xf4, 0xdf, 0xb5, 0xb8, 0x82, 0x82, 0x64, +0x63, 0xc0, 0x91, 0x53, 0x2d, 0xec, 0xb4, 0xe5, +0x30, 0xf8, 0x1c, 0xe8, 0xa4, 0xc1, 0x3f, 0x1a, +0xfc, 0x13, 0x74, 0xff, 0x6b, 0x47, 0x63, 0x18, +0x6c, 0xb7, 0xf0, 0x51, 0x6b, 0xf4, 0xaf, 0x30, +0xf8, 0xf7, 0x94, 0x02, 0xf7, 0x8f, 0xe4, 0xbf, +0xf9, 0x51, 0x51, 0xe1, 0x4f, 0x56, 0x54, 0xb6, +0x64, 0xf4, 0x4f, 0x8e, 0xfd, 0xec, 0xc7, 0x3d, +0xee, 0xbd, 0xd8, 0xce, 0x56, 0x81, 0xbb, 0xdb, +0x09, 0x3b, 0x13, 0xe7, 0x35, 0xfa, 0x97, 0x73, +0xff, 0xb7, 0xe8, 0x60, 0xe7, 0x9f, 0x53, 0xf7, +0xeb, 0x73, 0x77, 0x28, 0xec, 0x58, 0x19, 0x00, +0x9b, 0x02, 0x3d, 0xe0, 0xa3, 0x1a, 0x24, 0xfc, +0x31, 0x1b, 0x78, 0x65, 0x9c, 0xc0, 0x1a, 0x49, +0xdf, 0x5a, 0x25, 0xf9, 0x2b, 0x77, 0xff, 0x86, +0x0f, 0xfe, 0x11, 0x01, 0xb0, 0x32, 0xd7, 0x03, +0x89, 0xdf, 0x57, 0x22, 0x00, 0x4a, 0x8f, 0x1c, +0xd0, 0x1b, 0xf9, 0x93, 0xc7, 0x44, 0xec, 0x73, +0xff, 0x56, 0x14, 0x8c, 0x42, 0xe3, 0x7c, 0x52, +0xe9, 0xcb, 0x3d, 0xfc, 0x43, 0x76, 0xfe, 0x49, +0xaa, 0x9f, 0xfc, 0x90, 0x1c, 0xfe, 0xc1, 0x90, +0x1f, 0xe9, 0x08, 0x20, 0x5d, 0x01, 0xe4, 0xfb, +0x2b, 0xf1, 0x91, 0x01, 0x4b, 0xfe, 0xe4, 0xb9, +0xbf, 0x75, 0x7f, 0x81, 0xe0, 0xba, 0x1f, 0x79, +0xdf, 0x98, 0xd6, 0x71, 0x9f, 0xfb, 0x67, 0x1c, +0x43, 0x5c, 0xb9, 0x98, 0x05, 0x40, 0x2b, 0x2b, +0x00, 0xbe, 0xbc, 0x31, 0x4a, 0x4c, 0x94, 0xec, +0x7a, 0x5d, 0xb8, 0x12, 0x21, 0xa0, 0x8f, 0x9c, +0x80, 0xf4, 0xf1, 0x80, 0xd1, 0xcd, 0xd9, 0x60, +0x71, 0x7f, 0xa5, 0xb4, 0x5a, 0xf8, 0xe1, 0xaa, +0xef, 0x3f, 0xbb, 0x21, 0xf4, 0x37, 0xc3, 0x04, +0x05, 0xd3, 0x15, 0x07, 0x05, 0x05, 0xaa, 0x85, +0xcd, 0xd4, 0xaa, 0x16, 0xd6, 0x4f, 0x50, 0xd0, +0xed, 0xde, 0x1e, 0xfc, 0x30, 0x17, 0x57, 0x0b, +0xe3, 0xfa, 0xa0, 0xb3, 0x7d, 0x33, 0xf8, 0xb4, +0x74, 0xd1, 0xe0, 0x1f, 0x0d, 0xfe, 0xc9, 0x91, +0x3f, 0xc1, 0xd6, 0xa8, 0xe0, 0x79, 0xef, 0xfc, +0x73, 0x83, 0x7f, 0xc6, 0x8f, 0x8b, 0x46, 0xff, +0x84, 0xfc, 0x99, 0xc6, 0x3f, 0xac, 0xfb, 0xb5, +0x7b, 0xdf, 0x91, 0x09, 0xfe, 0xb1, 0xa3, 0x7f, +0xf6, 0xd2, 0x1f, 0x39, 0xf6, 0x53, 0x84, 0x7b, +0xdd, 0x56, 0xcf, 0x6d, 0x97, 0x8e, 0xfe, 0x95, +0xee, 0xfc, 0xef, 0x50, 0xb9, 0xf3, 0xef, 0xa0, +0xe5, 0x9d, 0x7f, 0xf7, 0x47, 0x82, 0xc1, 0x6a, +0x83, 0x2f, 0xac, 0xdf, 0xe5, 0x0e, 0x1f, 0xd4, +0x3b, 0xc0, 0xab, 0xe3, 0x3b, 0x10, 0xdb, 0x19, +0x88, 0x88, 0x9f, 0x4b, 0xfe, 0xca, 0x04, 0x80, +0x2c, 0xf9, 0x2f, 0xcc, 0xe0, 0x1f, 0x39, 0xf7, +0x6b, 0x9c, 0xe5, 0x27, 0x11, 0x00, 0x96, 0xa9, +0xfa, 0x3b, 0xf7, 0x4b, 0xca, 0xa3, 0xc8, 0x33, +0x7f, 0x82, 0x2a, 0x1c, 0xf5, 0x33, 0x17, 0xfa, +0x70, 0x9c, 0xdf, 0x23, 0x3b, 0xce, 0x27, 0x95, +0xbe, 0xb8, 0x59, 0x42, 0x5a, 0xfe, 0x48, 0xdb, +0x1f, 0x69, 0xfd, 0x23, 0xed, 0x7f, 0xe4, 0xa8, +0x0f, 0x69, 0x03, 0x24, 0xad, 0x80, 0xe4, 0xd8, +0x0f, 0x69, 0x09, 0x24, 0x6d, 0x81, 0x87, 0xf0, +0x75, 0xc7, 0x7d, 0xee, 0xef, 0xd8, 0x96, 0x27, +0xb8, 0xee, 0x47, 0xde, 0x3b, 0xd2, 0xe7, 0xfe, +0xa4, 0xf1, 0x2f, 0xe3, 0x7f, 0x88, 0xa7, 0x0c, +0x49, 0xfe, 0x5a, 0x10, 0x00, 0xf5, 0x3d, 0x2c, +0xa9, 0xae, 0xbc, 0x61, 0x8f, 0x0c, 0x51, 0xca, +0x0a, 0x81, 0xdd, 0x82, 0x42, 0x60, 0xeb, 0xad, +0x19, 0x10, 0xf2, 0x68, 0x33, 0x78, 0x3d, 0xb8, +0x1f, 0xcc, 0x6f, 0xcf, 0xd1, 0x49, 0x4e, 0x80, +0x9d, 0x0a, 0x18, 0x93, 0x8d, 0x81, 0x07, 0xf7, +0x4a, 0x84, 0xc0, 0xb6, 0x07, 0x4a, 0xbe, 0xfe, +0xf8, 0xba, 0xc0, 0xb9, 0x05, 0x05, 0xaf, 0x5d, +0xc6, 0x41, 0x41, 0x52, 0x2d, 0xfc, 0x8a, 0x38, +0x28, 0x88, 0x27, 0x88, 0x5d, 0xfd, 0x8e, 0x80, +0x6f, 0x4f, 0x17, 0x0d, 0xfe, 0x2d, 0xf3, 0xe0, +0xdf, 0x5a, 0x9e, 0x00, 0x88, 0x86, 0x8d, 0xf5, +0xbb, 0xd5, 0x1f, 0xfd, 0x2b, 0xd8, 0xf9, 0x17, +0x74, 0xff, 0x32, 0x75, 0xbf, 0x79, 0x89, 0x79, +0x4c, 0xf0, 0x6f, 0x1f, 0x8e, 0x71, 0xab, 0x31, +0xb0, 0x55, 0x8e, 0x1f, 0xf0, 0xe4, 0xd2, 0x1f, +0x59, 0xf3, 0x12, 0x9d, 0xf9, 0x55, 0x34, 0xfa, +0xb7, 0x56, 0x5a, 0xf7, 0xab, 0xd5, 0x9d, 0xff, +0x6b, 0x83, 0xf0, 0x64, 0x77, 0x00, 0x98, 0x99, +0x7a, 0xc3, 0x9a, 0x68, 0x37, 0x78, 0xaf, 0xd9, +0x01, 0x5e, 0x1b, 0xb7, 0xe5, 0x60, 0x87, 0x0a, +0x01, 0x30, 0xb7, 0xd1, 0xff, 0x42, 0x09, 0xfe, +0x11, 0x01, 0xb0, 0x06, 0xab, 0xed, 0x45, 0xe4, +0x2f, 0x12, 0x00, 0xfa, 0x3a, 0xf7, 0xcb, 0x7d, +0xee, 0x9f, 0x89, 0x64, 0xcf, 0x8c, 0xf3, 0x91, +0xd4, 0xb9, 0xe3, 0xfc, 0x71, 0x76, 0x9c, 0x8f, +0x22, 0x80, 0xf4, 0xfb, 0x93, 0x9e, 0x7f, 0xd2, +0xf7, 0x4f, 0x7a, 0xff, 0x89, 0x58, 0x60, 0x0f, +0xff, 0x90, 0xbb, 0x00, 0xa4, 0x29, 0x90, 0xdc, +0x09, 0x20, 0xa1, 0xc0, 0x24, 0xfc, 0x67, 0xc4, +0xfd, 0x93, 0x23, 0x3f, 0x7e, 0x75, 0xd9, 0x82, +0xeb, 0x7e, 0xe4, 0xbd, 0xb3, 0xb1, 0x27, 0x41, +0xfc, 0xdc, 0x3f, 0x83, 0x85, 0x8d, 0xa1, 0xc9, +0x5f, 0x1b, 0x02, 0x60, 0x88, 0x25, 0xd3, 0x2f, +0xae, 0x0f, 0x97, 0x3c, 0x3b, 0xe7, 0x12, 0xa5, +0xa4, 0x70, 0x47, 0xe0, 0xf1, 0xc0, 0xfa, 0x1b, +0xe3, 0x20, 0xee, 0x99, 0x01, 0x48, 0x78, 0x76, +0x48, 0x02, 0x67, 0xbc, 0x06, 0xa8, 0xeb, 0x9c, +0x00, 0xb3, 0x31, 0xf0, 0x30, 0xbb, 0x31, 0x50, +0xff, 0xbb, 0xf1, 0x3d, 0x39, 0xdf, 0x7c, 0x78, +0x8d, 0xaf, 0x58, 0x08, 0x2c, 0xfc, 0xa0, 0xa0, +0x99, 0x56, 0x82, 0x82, 0xcd, 0x4a, 0x82, 0x82, +0x5d, 0xea, 0x05, 0x05, 0x49, 0xb5, 0xf0, 0x8b, +0xa2, 0x6a, 0x61, 0xbb, 0x57, 0x1b, 0xc0, 0x2d, +0xaa, 0x15, 0x7c, 0x07, 0x69, 0xf0, 0x6f, 0xb9, +0x06, 0xff, 0xb8, 0xe4, 0xbf, 0x46, 0x8c, 0x1d, +0x78, 0x75, 0x8f, 0xbb, 0xf3, 0x4f, 0xc8, 0x5f, +0xe5, 0xce, 0xff, 0x53, 0x8a, 0x83, 0x7f, 0xec, +0xe8, 0x9f, 0x5b, 0xf7, 0xeb, 0xf2, 0x85, 0x3b, +0x6f, 0xf4, 0x5f, 0x8a, 0x1f, 0xe8, 0xe4, 0x59, +0x2f, 0xb9, 0xeb, 0x4e, 0xfe, 0xef, 0x48, 0x47, +0xff, 0x16, 0x7a, 0xab, 0xfb, 0xf5, 0xbc, 0xc1, +0x1f, 0xb7, 0x69, 0x7c, 0xc1, 0xd4, 0xca, 0x13, +0xbe, 0x4c, 0x72, 0x85, 0x77, 0x3b, 0x1c, 0xe0, +0xf5, 0x71, 0x7b, 0x31, 0xec, 0x18, 0xcc, 0x9d, +0xfc, 0x17, 0x5f, 0xf0, 0x8f, 0x9c, 0xfb, 0x95, +0x92, 0xbf, 0x2f, 0xec, 0xd0, 0xe3, 0xb9, 0x5f, +0x32, 0x09, 0x22, 0xe4, 0x9f, 0x80, 0x44, 0x4d, +0xc2, 0x7e, 0xe4, 0x07, 0x19, 0xeb, 0x0b, 0x8d, +0xf3, 0xc9, 0x63, 0x00, 0xc9, 0xe1, 0x1f, 0x3c, +0x38, 0x45, 0x2e, 0xff, 0x91, 0x0b, 0x80, 0xe4, +0x12, 0x60, 0x1d, 0x7b, 0xf8, 0x87, 0x34, 0x05, +0xe2, 0x0a, 0x6a, 0x26, 0xae, 0x0b, 0xb2, 0xa3, +0xff, 0xdd, 0xf8, 0xdc, 0x5f, 0x70, 0xd7, 0x9f, +0xbc, 0x77, 0x86, 0x12, 0xf0, 0xb9, 0x7f, 0x06, +0x97, 0xfc, 0x4b, 0x16, 0x02, 0xf9, 0xcf, 0x5b, +0x00, 0x6c, 0x7f, 0xa2, 0x7e, 0x82, 0x15, 0x00, +0x9f, 0x5f, 0x17, 0x2a, 0x76, 0xca, 0x21, 0x02, +0x42, 0x20, 0x4c, 0x50, 0x08, 0xb8, 0xdc, 0x57, +0xc5, 0x23, 0x7f, 0x16, 0x1e, 0x0f, 0xec, 0x53, +0x90, 0x13, 0xe0, 0x3f, 0x1e, 0x98, 0x6f, 0x4e, +0xc0, 0xf4, 0xce, 0x22, 0xd2, 0x24, 0xc8, 0x56, +0x0b, 0xff, 0x6f, 0xc3, 0x9d, 0x29, 0x7f, 0x15, +0xdd, 0x18, 0x10, 0x0a, 0x0a, 0x06, 0x68, 0x3d, +0x28, 0xb8, 0x41, 0xcd, 0xa0, 0xa0, 0x89, 0x6c, +0x50, 0xf0, 0xe6, 0x85, 0x13, 0x14, 0x24, 0xb9, +0x01, 0xa6, 0x5a, 0xf8, 0x79, 0xf1, 0xc6, 0xc0, +0x07, 0x8d, 0xe0, 0x91, 0xd9, 0x46, 0x83, 0x7f, +0x4b, 0x3c, 0xf8, 0xa7, 0xcc, 0xfd, 0xaf, 0x91, +0x08, 0x80, 0x28, 0x30, 0x77, 0xf1, 0xe1, 0xbb, +0xff, 0x15, 0x9a, 0xef, 0xfc, 0x93, 0xd1, 0x3f, +0xcf, 0xfd, 0x3f, 0x2c, 0x7f, 0xec, 0x27, 0xc4, +0x2a, 0x94, 0x09, 0xfe, 0xb1, 0xa3, 0x7f, 0x72, +0xdc, 0x25, 0xc8, 0x22, 0x98, 0x57, 0xf7, 0xab, +0xed, 0x9d, 0x7f, 0x57, 0x8e, 0xfb, 0x77, 0xbb, +0xc5, 0x07, 0xb6, 0xbf, 0xe5, 0x05, 0xc6, 0x0e, +0x1e, 0xb0, 0x12, 0xcb, 0xdc, 0xde, 0xe9, 0x71, +0x82, 0x37, 0xc6, 0x1c, 0xa4, 0x50, 0x93, 0xfc, +0xb5, 0xe9, 0xfe, 0x17, 0x4a, 0xf0, 0x8f, 0x60, +0x7d, 0xba, 0x1f, 0x4f, 0x00, 0x74, 0x4f, 0x0d, +0xe9, 0x85, 0xfc, 0x49, 0x3f, 0x04, 0xfb, 0xdc, +0x9f, 0xec, 0xeb, 0x4b, 0xc6, 0xf9, 0xf8, 0xb8, +0x48, 0x76, 0x9c, 0xdf, 0x89, 0x01, 0xc0, 0x5c, +0x0c, 0x02, 0x92, 0x7b, 0x00, 0x27, 0xf0, 0xf0, +0xcf, 0xff, 0x70, 0x72, 0x40, 0xd2, 0xfd, 0x15, +0xf8, 0x7a, 0xaa, 0xc2, 0x47, 0x02, 0xa4, 0x29, +0xf0, 0x17, 0x4c, 0xfc, 0x1f, 0xc7, 0xa6, 0xc0, +0x12, 0xce, 0x91, 0x9f, 0x84, 0xac, 0x34, 0xb0, +0xec, 0xcf, 0x93, 0x59, 0xf7, 0x4b, 0x61, 0xde, +0x3f, 0xe4, 0x7d, 0x62, 0xba, 0x3f, 0x95, 0x4b, +0xfe, 0x33, 0x88, 0xcb, 0x97, 0x8a, 0x00, 0x38, +0xc6, 0x0a, 0x00, 0x42, 0xfc, 0x22, 0x72, 0x0c, +0x96, 0x11, 0x02, 0x3b, 0x05, 0x84, 0xc0, 0x2e, +0x24, 0xc8, 0x08, 0x88, 0x7e, 0xba, 0x57, 0x50, +0x00, 0x10, 0x90, 0x47, 0x03, 0xaa, 0x73, 0x02, +0x71, 0x5a, 0xc8, 0x09, 0xe0, 0xc6, 0xc0, 0xdd, +0xbc, 0x8d, 0x81, 0x7f, 0xad, 0xbe, 0x35, 0xf6, +0x9f, 0xf2, 0x41, 0x41, 0x3f, 0x85, 0x41, 0x41, +0x6e, 0xb5, 0xf0, 0x4a, 0x35, 0xab, 0x85, 0x97, +0x5e, 0x50, 0xb0, 0x4f, 0x54, 0x2d, 0xfc, 0xb4, +0xe8, 0xf5, 0xe0, 0xb0, 0xba, 0x09, 0x3c, 0x2a, +0xdb, 0xe7, 0x14, 0xfc, 0xf3, 0x34, 0x70, 0xf0, +0xcf, 0x9e, 0x06, 0xff, 0xb4, 0xe0, 0xfe, 0xa3, +0x18, 0x18, 0x65, 0x06, 0x2b, 0xdd, 0xf9, 0x27, +0xa3, 0x7f, 0x39, 0xf7, 0xff, 0xa4, 0xf2, 0xe0, +0x1f, 0xd7, 0xfd, 0x4b, 0xeb, 0x7e, 0xb7, 0x80, +0xaf, 0x91, 0x3f, 0xa4, 0x46, 0xa6, 0x41, 0x72, +0x44, 0x0a, 0xb8, 0x7e, 0xea, 0xae, 0x93, 0xba, +0x5f, 0xd6, 0xfd, 0x3b, 0xdd, 0xe9, 0x09, 0x56, +0x1f, 0x79, 0xc0, 0x66, 0x37, 0x77, 0xf8, 0xbc, +0x00, 0x09, 0x7f, 0xc0, 0x19, 0xde, 0x1a, 0x73, +0x82, 0x37, 0x19, 0x38, 0x32, 0x90, 0x27, 0x7f, +0x6d, 0xb8, 0xff, 0xc5, 0x17, 0xfc, 0x7b, 0xa9, +0x15, 0x05, 0x5c, 0xae, 0x94, 0xfc, 0x9d, 0xd2, +0xa3, 0xf5, 0x42, 0xfe, 0xe4, 0x64, 0x34, 0xfb, +0xdc, 0x7f, 0x2f, 0x8a, 0x43, 0xc9, 0x38, 0x1f, +0x33, 0x23, 0x99, 0xb8, 0xaa, 0xc7, 0x1d, 0xe7, +0x93, 0xd5, 0x3f, 0xb2, 0x02, 0xc8, 0x3d, 0xfc, +0x33, 0x83, 0x57, 0x26, 0xf7, 0xe3, 0xaf, 0x2b, +0xca, 0xce, 0xe6, 0x1d, 0xfe, 0x39, 0x80, 0x5b, +0x26, 0x09, 0x62, 0xf2, 0x4f, 0xc1, 0x2d, 0x01, +0x87, 0xb6, 0x5c, 0xc1, 0x75, 0x3f, 0xf2, 0x3e, +0x31, 0x6e, 0x4e, 0xe2, 0x92, 0xff, 0x7f, 0x11, +0x8f, 0x2d, 0x14, 0xf2, 0xd7, 0x86, 0x00, 0x38, +0xcd, 0x0a, 0x00, 0x42, 0x8a, 0x5c, 0x72, 0xfc, +0x84, 0x23, 0x04, 0x3e, 0xe5, 0x08, 0x01, 0x56, +0x0c, 0xd8, 0xde, 0x5d, 0xa4, 0x90, 0xfc, 0x09, +0xc2, 0x1e, 0x6f, 0xd5, 0x6f, 0x9f, 0x00, 0xd9, +0x18, 0xb8, 0x57, 0xba, 0x31, 0x80, 0xd5, 0xc2, +0x7f, 0xfb, 0xe2, 0xa6, 0xdd, 0xbf, 0x08, 0x05, +0x05, 0x3f, 0xd2, 0x28, 0x28, 0x18, 0xb1, 0xe8, +0x82, 0x82, 0x8e, 0xf3, 0x09, 0x0a, 0xde, 0xd3, +0x2b, 0xaa, 0x16, 0x16, 0x6f, 0x0c, 0x38, 0x9a, +0x1d, 0x06, 0xcf, 0x86, 0x8e, 0x25, 0x1d, 0xfc, +0xdb, 0xbe, 0xec, 0x83, 0x7f, 0xc2, 0xee, 0x7f, +0x35, 0x62, 0x6d, 0xe7, 0x1e, 0x91, 0x00, 0x50, +0x55, 0xf7, 0xab, 0x62, 0xe7, 0x5f, 0x96, 0xfc, +0x85, 0x8e, 0xfd, 0xa8, 0xaa, 0xfb, 0x35, 0x9b, +0x47, 0xdd, 0xaf, 0xdd, 0xfd, 0x6e, 0x60, 0xb6, +0xd2, 0x1d, 0x36, 0xf8, 0xb9, 0xc1, 0xa7, 0xe5, +0x6e, 0xf0, 0xce, 0xb0, 0x0b, 0xbc, 0x3d, 0xe6, +0x82, 0xa4, 0xef, 0x2c, 0x86, 0x76, 0xc9, 0xff, +0x95, 0x25, 0x12, 0xfc, 0x23, 0xd8, 0x48, 0x2a, +0x7f, 0x59, 0x01, 0x90, 0xed, 0x0b, 0x13, 0xa7, +0x66, 0xf5, 0xf2, 0xdc, 0x9f, 0x10, 0x34, 0x71, +0xff, 0x59, 0xf8, 0xdc, 0x9f, 0x37, 0xce, 0x67, +0x2b, 0x7d, 0x39, 0xe3, 0xfc, 0xbd, 0x38, 0x39, +0x2a, 0xc3, 0xcc, 0xc8, 0x10, 0xe6, 0x02, 0xfe, +0xc3, 0x1e, 0xfe, 0xc1, 0x95, 0xd2, 0x6c, 0x7c, +0xb6, 0xdf, 0x8e, 0x1b, 0x03, 0xdf, 0xe3, 0x5a, +0xe0, 0x8f, 0xd8, 0xf6, 0xd7, 0x8e, 0x1b, 0x27, +0xe4, 0xc8, 0x0f, 0xfb, 0xdc, 0xdf, 0xb7, 0x2e, +0x4b, 0xee, 0xb4, 0xaf, 0x88, 0xfc, 0x13, 0x60, +0x53, 0x77, 0x02, 0x97, 0xfc, 0x09, 0xcc, 0x16, +0x12, 0xf9, 0x6b, 0x23, 0x03, 0xf0, 0x1d, 0x2b, +0x00, 0x44, 0xa4, 0x28, 0x22, 0x46, 0xa9, 0x10, +0x08, 0x12, 0x14, 0x02, 0x84, 0x28, 0xf7, 0x3c, +0xd9, 0x29, 0x47, 0xfa, 0x9e, 0x38, 0xfa, 0xe7, +0x4d, 0x01, 0x6e, 0xcb, 0xd0, 0x7b, 0x9f, 0x80, +0xec, 0xc6, 0x80, 0xf9, 0x43, 0x15, 0xdf, 0x7d, +0x7a, 0x7d, 0xc8, 0x1f, 0x8b, 0x23, 0x28, 0x58, +0xca, 0xcb, 0x07, 0x70, 0x85, 0x80, 0x35, 0x23, +0x04, 0xf4, 0x17, 0x14, 0x74, 0xbb, 0x1f, 0xab, +0x85, 0x5f, 0x13, 0x55, 0x0b, 0x93, 0xa9, 0x80, +0x93, 0x33, 0x06, 0x3d, 0xdb, 0x3a, 0x68, 0xf0, +0x6f, 0x41, 0x04, 0xff, 0xd2, 0x74, 0x16, 0xfc, +0xe3, 0xba, 0xff, 0xd5, 0xa3, 0x91, 0x0c, 0x2c, +0x37, 0xb8, 0x6a, 0x5c, 0xf7, 0xab, 0x2a, 0xf8, +0x27, 0x7c, 0xe9, 0xcf, 0x54, 0xa3, 0xba, 0x5f, +0x65, 0x3b, 0xff, 0x36, 0x8f, 0x39, 0x83, 0x29, +0xfe, 0x77, 0xaf, 0xdb, 0xe9, 0x06, 0x9f, 0xd4, +0x22, 0xe1, 0x8f, 0x22, 0xc6, 0x5c, 0x91, 0xf4, +0x5d, 0x19, 0xe2, 0x17, 0x26, 0x7f, 0x65, 0x02, +0x40, 0x96, 0xfc, 0xb5, 0x1b, 0xfc, 0x5b, 0xb1, +0x40, 0x83, 0x7f, 0xaf, 0xe3, 0xb9, 0x5f, 0x86, +0xfc, 0xc5, 0x02, 0xc0, 0x2b, 0x3b, 0x51, 0x2f, +0xee, 0xbf, 0x04, 0x47, 0xf6, 0xec, 0x73, 0x7f, +0x42, 0xf4, 0x64, 0x9c, 0x3f, 0xca, 0x8e, 0xf3, +0x31, 0x20, 0x3a, 0x86, 0x95, 0xbe, 0xec, 0x38, +0xff, 0x20, 0x3a, 0xfa, 0x7c, 0x7c, 0x9e, 0xdf, +0x8d, 0x8f, 0x08, 0xc8, 0xe1, 0x9f, 0xef, 0xb1, +0xf0, 0x87, 0x90, 0x3e, 0x21, 0xff, 0x43, 0x28, +0x02, 0x4e, 0xa3, 0x18, 0x60, 0x9b, 0x02, 0xb9, +0x47, 0x7e, 0xc2, 0x91, 0xd4, 0x65, 0x4f, 0xfb, +0xb2, 0xeb, 0x7e, 0xeb, 0x07, 0xf1, 0x28, 0x56, +0x45, 0x3a, 0x97, 0xfc, 0xf3, 0x16, 0x1a, 0xf9, +0x6b, 0x43, 0x00, 0xfc, 0x24, 0x7e, 0x7e, 0x2e, +0x79, 0x56, 0xce, 0x25, 0x46, 0x79, 0x21, 0x20, +0x12, 0x03, 0xe6, 0x77, 0x64, 0xca, 0x91, 0x7f, +0xfc, 0x33, 0x83, 0xb0, 0xe6, 0x86, 0x28, 0x08, +0x7d, 0xec, 0x88, 0xe4, 0x9f, 0xf9, 0x3c, 0x74, +0x60, 0x0e, 0x7d, 0x02, 0x8a, 0xd7, 0x08, 0x35, +0xc9, 0x09, 0x30, 0x1b, 0x03, 0x0f, 0x49, 0x36, +0x06, 0xfe, 0x30, 0xbd, 0xbf, 0xf0, 0xdb, 0x8f, +0x71, 0xa5, 0x47, 0x67, 0x41, 0xc1, 0xeb, 0x15, +0x07, 0x05, 0x37, 0x69, 0x25, 0x28, 0x58, 0xad, +0x24, 0x28, 0x58, 0xaf, 0x24, 0x28, 0x78, 0x64, +0x5e, 0x41, 0x41, 0xd7, 0x47, 0x3a, 0xc1, 0x8e, +0xdd, 0x18, 0x58, 0xd1, 0x00, 0x2e, 0x41, 0x47, +0xc0, 0xab, 0x97, 0x06, 0xff, 0x96, 0x72, 0xf0, +0x8f, 0x75, 0xff, 0xac, 0x00, 0xd8, 0x12, 0xec, +0xcb, 0x23, 0xff, 0xb9, 0xee, 0xfc, 0x73, 0x47, +0xff, 0x1b, 0x91, 0xfc, 0x25, 0x02, 0x40, 0x0b, +0x75, 0xbf, 0x96, 0xcf, 0x39, 0x82, 0xb1, 0x89, +0x33, 0xac, 0x89, 0x70, 0x85, 0x8f, 0x0f, 0xba, +0xc3, 0xbb, 0x63, 0x22, 0xbc, 0x33, 0xe6, 0xc6, +0x81, 0x2a, 0x01, 0xa0, 0xcb, 0xd1, 0xff, 0xe2, +0x0b, 0xfe, 0x3d, 0x36, 0xfe, 0x25, 0x6c, 0xc6, +0x9a, 0x5f, 0x56, 0x00, 0x6c, 0xc1, 0x15, 0xc0, +0x53, 0xdf, 0x7f, 0xa5, 0x73, 0xf2, 0x27, 0x57, +0x21, 0xd9, 0xe7, 0xfe, 0xbd, 0x38, 0xba, 0x97, +0x1d, 0xe7, 0xcb, 0x1e, 0xfe, 0x49, 0x47, 0x42, +0x27, 0x3f, 0x93, 0xff, 0x2d, 0x39, 0xfc, 0x83, +0xdf, 0x47, 0xbe, 0x9f, 0xfc, 0x3a, 0xf2, 0xeb, +0xa7, 0x30, 0x3c, 0x58, 0x80, 0xbd, 0x00, 0xec, +0x73, 0xff, 0x78, 0x7c, 0xee, 0x6f, 0x31, 0x20, +0x72, 0xfe, 0x5b, 0x64, 0x76, 0xfd, 0xc9, 0xfb, +0xc3, 0x74, 0x5f, 0x8a, 0x84, 0xfc, 0xcd, 0x8b, +0xd3, 0x27, 0x10, 0x97, 0x2e, 0x41, 0x01, 0x70, +0xf0, 0xdf, 0xe2, 0xe7, 0xe6, 0x52, 0x42, 0x94, +0x13, 0x02, 0x01, 0x72, 0x42, 0x80, 0x4b, 0xf2, +0x2c, 0xfc, 0x1e, 0xae, 0x97, 0x7b, 0x34, 0x40, +0x36, 0x04, 0x56, 0xdf, 0x10, 0x39, 0xcf, 0x3e, +0x01, 0x75, 0x1e, 0x0f, 0x28, 0xce, 0x09, 0x6c, +0xb9, 0x3d, 0x1f, 0xab, 0x85, 0xf7, 0xb1, 0xd5, +0xc2, 0xbf, 0x6d, 0xbe, 0x3b, 0xf3, 0x07, 0xd1, +0xc6, 0xc0, 0x72, 0x09, 0x0a, 0x1e, 0x56, 0x12, +0x14, 0x54, 0xbf, 0x5a, 0xd8, 0x99, 0x54, 0x0b, +0xaf, 0x10, 0x6d, 0x0c, 0xd8, 0xbe, 0x81, 0xab, +0x83, 0x71, 0x2d, 0xe0, 0x35, 0x44, 0x83, 0x7f, +0x86, 0x0f, 0xfe, 0xa5, 0x68, 0x3d, 0xf8, 0xc7, +0x25, 0xff, 0xd5, 0xa3, 0x11, 0xb0, 0xa1, 0x72, +0xa7, 0xe6, 0x75, 0xbf, 0x8f, 0xf3, 0x47, 0xff, +0x4c, 0xf0, 0xef, 0x21, 0x23, 0x85, 0xa3, 0x7f, +0x63, 0x0d, 0xeb, 0x7e, 0xcd, 0x5e, 0xb1, 0x87, +0x4d, 0x96, 0x4e, 0xf0, 0x65, 0x9c, 0x1b, 0x7c, +0xdc, 0xec, 0x01, 0xef, 0x8d, 0x79, 0x22, 0x3c, +0x18, 0xbc, 0xcb, 0x40, 0x56, 0x00, 0x68, 0x48, +0xfe, 0xcb, 0x3a, 0xf8, 0x27, 0x12, 0x00, 0x6f, +0xef, 0xdf, 0x8e, 0xc4, 0xef, 0x27, 0x11, 0x00, +0x21, 0x85, 0x19, 0x3a, 0x27, 0xff, 0x6f, 0xf0, +0x19, 0x3f, 0x79, 0xe6, 0x4f, 0x04, 0x40, 0x2d, +0xa6, 0xf6, 0xc9, 0x38, 0xff, 0xb4, 0xec, 0x38, +0x1f, 0x1d, 0x3e, 0x19, 0xe7, 0x13, 0xc7, 0x4f, +0x9c, 0x3f, 0x99, 0x00, 0x90, 0x49, 0x00, 0x99, +0x08, 0x90, 0xc9, 0x00, 0x99, 0x10, 0x90, 0x49, +0x01, 0x99, 0x18, 0x90, 0xc9, 0x01, 0x09, 0x04, +0xd6, 0x90, 0x62, 0x29, 0xf6, 0xb9, 0x7f, 0x6a, +0x0a, 0xd8, 0xb7, 0xe7, 0xc8, 0xec, 0xfa, 0x8b, +0xd6, 0xfd, 0xc8, 0x7b, 0xc3, 0xf8, 0x70, 0x22, +0x97, 0xfc, 0xff, 0x83, 0x78, 0x68, 0x21, 0x92, +0xbf, 0x36, 0x04, 0xc0, 0x2f, 0x4c, 0xc3, 0xde, +0x63, 0xfb, 0x18, 0x32, 0x94, 0x3a, 0x63, 0x5f, +0xce, 0xf3, 0x72, 0x7f, 0xde, 0xe3, 0x01, 0xa3, +0x5b, 0x12, 0x84, 0x43, 0x7f, 0xb7, 0xa7, 0x33, +0x84, 0xb9, 0xfa, 0x86, 0x08, 0x88, 0x7f, 0x76, +0x50, 0xf2, 0xcf, 0x77, 0xdc, 0x55, 0x28, 0xd9, +0x1e, 0x50, 0xd6, 0x27, 0xa0, 0x79, 0x4e, 0x20, +0x41, 0xa3, 0x9c, 0x80, 0xe9, 0x9d, 0x85, 0xb8, +0x31, 0x50, 0xc7, 0x6e, 0x0c, 0xfc, 0x77, 0xdd, +0xed, 0x89, 0xff, 0xf8, 0x40, 0xb0, 0x5a, 0x78, +0x11, 0x06, 0x05, 0x6f, 0x9d, 0x6b, 0x50, 0xb0, +0x5d, 0xf2, 0x58, 0xc0, 0x55, 0x8d, 0xa0, 0xa0, +0x07, 0x5b, 0x2d, 0xfc, 0x9c, 0x68, 0x63, 0xc0, +0xee, 0xe3, 0x46, 0x70, 0xcd, 0x6b, 0xa5, 0xc1, +0x3f, 0x9d, 0x05, 0xff, 0x32, 0x0c, 0x12, 0xfc, +0x93, 0x92, 0x3f, 0xbe, 0xb6, 0x51, 0x00, 0x7c, +0x39, 0x1c, 0x01, 0x56, 0xaf, 0xdb, 0x09, 0xee, +0xfc, 0x13, 0xf2, 0xd7, 0x64, 0xe7, 0x9f, 0x4b, +0xfe, 0x9b, 0xd5, 0x1d, 0xfd, 0xdf, 0x6b, 0x0d, +0x26, 0xef, 0xd8, 0xc1, 0x06, 0x7b, 0x27, 0x58, +0x95, 0x8a, 0x84, 0xdf, 0xe1, 0x05, 0xef, 0x8f, +0xb1, 0xf0, 0x14, 0x93, 0xbf, 0xa7, 0xda, 0xe4, +0xaf, 0x7f, 0xf7, 0xbf, 0xf8, 0x82, 0x7f, 0x8f, +0xa2, 0xfb, 0x37, 0x4a, 0x0f, 0x90, 0x08, 0x00, +0x93, 0x2c, 0x7f, 0xf8, 0xab, 0x8e, 0xcf, 0xfd, +0x92, 0xe7, 0xfe, 0x64, 0x34, 0x4f, 0xc8, 0x3f, +0x1b, 0xd7, 0xf6, 0x08, 0xc9, 0x73, 0xc7, 0xf9, +0x4d, 0xec, 0x38, 0x1f, 0x45, 0x01, 0x19, 0xe7, +0x93, 0x67, 0xfe, 0xe4, 0xd9, 0x3f, 0xc9, 0x00, +0x90, 0x2c, 0x00, 0x79, 0x54, 0x40, 0xb2, 0x01, +0x24, 0x23, 0x40, 0xb2, 0x02, 0x24, 0x33, 0x40, +0xb2, 0x03, 0x87, 0x71, 0x35, 0x30, 0x91, 0x2d, +0xfb, 0xc1, 0xdf, 0xc7, 0xe7, 0x40, 0x96, 0xe0, +0xae, 0x3f, 0x79, 0x8f, 0x6c, 0xec, 0x8a, 0xe7, +0x92, 0x3f, 0x81, 0xf1, 0x42, 0x25, 0x7f, 0x6d, +0x08, 0x00, 0x51, 0x60, 0xee, 0xd1, 0x1a, 0xe0, +0x86, 0xe5, 0xe4, 0x85, 0x80, 0x9f, 0x44, 0x08, +0xf8, 0xa3, 0xd3, 0x97, 0x25, 0xff, 0xc8, 0xa7, +0xba, 0x19, 0x92, 0x64, 0x73, 0x02, 0x81, 0x8f, +0x34, 0x4a, 0xfe, 0x5d, 0xe8, 0xe3, 0x2d, 0x0a, +0xd7, 0x08, 0xe7, 0x7d, 0x77, 0xe0, 0x7a, 0x0d, +0x73, 0x02, 0x37, 0xe1, 0xae, 0xe7, 0x3d, 0x25, +0xcc, 0x23, 0x0f, 0x71, 0xb5, 0xf0, 0x3f, 0xbe, +0xbc, 0x25, 0xea, 0xbf, 0xba, 0x0d, 0x0a, 0x26, +0xf0, 0x83, 0x82, 0x32, 0x42, 0x40, 0xdd, 0xa0, +0xe0, 0x36, 0x35, 0x83, 0x82, 0x36, 0x7a, 0x08, +0x0a, 0x32, 0xd5, 0xc2, 0xaf, 0x1c, 0x61, 0xda, +0x04, 0x99, 0xd5, 0xc1, 0x0d, 0x4d, 0xe0, 0xb6, +0xb7, 0x45, 0xa3, 0xe0, 0x9f, 0xeb, 0x92, 0x0c, +0xfe, 0x15, 0x1a, 0x38, 0xf8, 0x97, 0xa4, 0x95, +0xe0, 0x1f, 0x8f, 0xfc, 0x19, 0xec, 0x81, 0xad, +0x56, 0x6e, 0x5a, 0xd9, 0xf9, 0xe7, 0x8d, 0xfe, +0x1f, 0x90, 0x8e, 0xfe, 0xb9, 0xc1, 0x3f, 0xd3, +0x07, 0x2c, 0xc1, 0xe8, 0xe3, 0x1d, 0xb0, 0xce, +0xcd, 0x11, 0x56, 0xe6, 0xb8, 0xc3, 0xc7, 0x3d, +0xf8, 0x99, 0x34, 0xc6, 0x02, 0x45, 0x3b, 0x03, +0x91, 0x00, 0xe0, 0x92, 0xbf, 0xd6, 0xdc, 0x3f, +0x0d, 0xfe, 0xc1, 0x07, 0x95, 0x0e, 0x62, 0xf2, +0x17, 0x09, 0x80, 0xe8, 0xca, 0x7c, 0x9d, 0xbb, +0x7f, 0xd2, 0xff, 0xc0, 0x3e, 0xf7, 0x27, 0xab, +0x7e, 0x64, 0xcc, 0x2f, 0x38, 0xce, 0x27, 0x95, +0xbe, 0x9c, 0xc3, 0x3f, 0x64, 0x0b, 0x80, 0x6c, +0x03, 0x1c, 0xc6, 0x32, 0xa9, 0x4c, 0xf6, 0xf0, +0x0f, 0x69, 0x0a, 0xc4, 0xad, 0x01, 0x52, 0x06, +0x94, 0x82, 0xff, 0x4c, 0xfa, 0xdc, 0x3f, 0x9d, +0x77, 0xda, 0x77, 0xb3, 0x78, 0xd7, 0x9f, 0x79, +0x9f, 0x0c, 0xc6, 0x4a, 0x9e, 0xfb, 0x8b, 0xc9, +0x3f, 0x73, 0x21, 0x93, 0xff, 0xbc, 0x04, 0x00, +0x7e, 0x70, 0x9f, 0xc7, 0x0a, 0x00, 0xcb, 0x47, +0xf6, 0xc2, 0x7b, 0x57, 0x79, 0x32, 0x22, 0x40, +0x04, 0x6f, 0xde, 0x0a, 0x1d, 0x2b, 0x04, 0xd6, +0x62, 0x5b, 0xa0, 0x90, 0xfb, 0x77, 0xba, 0xaf, +0x9c, 0x97, 0x13, 0xb0, 0xbc, 0x23, 0x9b, 0xf7, +0xef, 0x37, 0xe1, 0xa5, 0x41, 0xd9, 0x35, 0x42, +0xd5, 0x75, 0xc3, 0x73, 0xcb, 0x09, 0xac, 0x53, +0x23, 0x27, 0xb0, 0xf9, 0x66, 0x3c, 0xf6, 0x80, +0xff, 0xcd, 0x3b, 0xc4, 0x1b, 0x03, 0x96, 0x0f, +0x57, 0xff, 0xf5, 0xf3, 0x1b, 0xc3, 0x7e, 0xd7, +0x4d, 0x50, 0x30, 0x8e, 0x17, 0x14, 0x5c, 0xcf, +0x0b, 0x0a, 0xa6, 0x29, 0x0c, 0x0a, 0x32, 0x42, +0x60, 0xa1, 0x07, 0x05, 0x49, 0xb5, 0xf0, 0x6b, +0xe2, 0x6a, 0x61, 0xdc, 0x1a, 0x70, 0xb0, 0x3e, +0x04, 0x6e, 0x87, 0x5a, 0x74, 0x12, 0xfc, 0x73, +0x34, 0x70, 0xf0, 0xcf, 0x72, 0x99, 0x05, 0xff, +0x56, 0x73, 0xc8, 0x9f, 0x60, 0x53, 0x9c, 0x9f, +0xda, 0x3b, 0xff, 0x84, 0xfc, 0x79, 0x3b, 0xff, +0x0f, 0x29, 0x0b, 0xfe, 0xe1, 0xaf, 0x79, 0xd4, +0x0c, 0x36, 0xae, 0xda, 0x0e, 0x6b, 0x7c, 0x9c, +0xe0, 0x8b, 0x22, 0x0f, 0xf8, 0x78, 0x00, 0xdf, +0x7f, 0x63, 0x7e, 0x08, 0x5f, 0x06, 0x5c, 0xf2, +0xff, 0x80, 0x43, 0xfe, 0xef, 0xcf, 0x93, 0xfc, +0xdf, 0x5a, 0x92, 0xc1, 0xbf, 0xf9, 0xbb, 0xff, +0xc7, 0x47, 0x57, 0x83, 0x71, 0x46, 0x80, 0x44, +0x00, 0x98, 0x66, 0x04, 0xc2, 0xbf, 0x74, 0x7c, +0xee, 0x97, 0x9c, 0x84, 0x66, 0x9f, 0xfb, 0x0f, +0xa0, 0xbb, 0x67, 0xc6, 0xf9, 0xb8, 0xb7, 0xcf, +0x8e, 0xf3, 0x47, 0x38, 0xe3, 0x7c, 0xb2, 0xe7, +0x4f, 0xf6, 0xfd, 0xc9, 0xde, 0x3f, 0xd9, 0xff, +0xff, 0x01, 0x7b, 0x00, 0x48, 0x1f, 0x00, 0x39, +0xfc, 0x43, 0xfa, 0x01, 0x88, 0x78, 0x20, 0x7d, +0x01, 0xe4, 0x58, 0x50, 0x0e, 0x4e, 0x12, 0x24, +0xcf, 0xfd, 0xb3, 0xd3, 0xc0, 0x7c, 0x20, 0x47, +0xbc, 0xee, 0x97, 0xce, 0x5b, 0xf7, 0x23, 0xef, +0x05, 0xd3, 0xda, 0x14, 0x2e, 0xf9, 0x8f, 0x20, +0x2e, 0x5e, 0xca, 0x02, 0xe0, 0x52, 0x4e, 0xb7, +0x3e, 0x0a, 0x00, 0x0f, 0x46, 0x04, 0x28, 0x12, +0x02, 0x04, 0xee, 0x0f, 0x54, 0x0b, 0x8f, 0xff, +0x6f, 0x4b, 0xe1, 0xe5, 0x04, 0x3e, 0xbf, 0x2e, +0x0c, 0x62, 0x9f, 0xe9, 0x97, 0xfc, 0x7b, 0xb7, +0xfb, 0xab, 0x15, 0xf6, 0x09, 0xa8, 0x53, 0x37, +0xac, 0xab, 0x9c, 0xc0, 0xe6, 0x5b, 0xb2, 0xc0, +0xe2, 0x81, 0x2a, 0x4e, 0xb5, 0x70, 0xe9, 0x77, +0x9f, 0x5c, 0x17, 0xa4, 0xd5, 0xa0, 0xe0, 0xea, +0x39, 0x07, 0x05, 0x73, 0x94, 0x04, 0x05, 0xe7, +0x5a, 0x2d, 0xac, 0xa3, 0xa0, 0xe0, 0x83, 0xdd, +0x60, 0xff, 0x9a, 0x28, 0x28, 0xb8, 0xe3, 0x19, +0x24, 0x6b, 0x0f, 0x14, 0x02, 0x9d, 0x47, 0x96, +0x75, 0xf0, 0x4f, 0x9b, 0xee, 0x7f, 0x6e, 0xc1, +0xbf, 0x84, 0x79, 0x05, 0xff, 0xb8, 0xee, 0x7f, +0x15, 0x62, 0xf5, 0x91, 0x50, 0xb0, 0x78, 0x5e, +0x44, 0xfe, 0xf3, 0xdd, 0xf9, 0xdf, 0xf4, 0xf4, +0x56, 0x58, 0xbf, 0xc1, 0x06, 0x56, 0x07, 0x3b, +0xc1, 0xe7, 0x95, 0x5e, 0xf0, 0xf1, 0x30, 0xbe, +0xb7, 0xc6, 0x70, 0xea, 0xc6, 0xc0, 0x8f, 0x01, +0x4b, 0xfe, 0x1f, 0xca, 0x91, 0xbf, 0xb0, 0xfb, +0x17, 0x26, 0xff, 0xa5, 0x15, 0xfc, 0x7b, 0x56, +0x0f, 0xc1, 0x3f, 0xe6, 0xdc, 0x6f, 0xb1, 0x0b, +0xc7, 0xfd, 0xfb, 0x41, 0x46, 0x5d, 0x85, 0x4e, +0xc9, 0xff, 0x5b, 0x1c, 0xf3, 0xb3, 0xcf, 0xfd, +0xf7, 0xe1, 0xf3, 0x7c, 0xc9, 0x38, 0x1f, 0x33, +0x00, 0xb2, 0xe3, 0x7c, 0xd2, 0xf0, 0x97, 0x81, +0x64, 0xce, 0x1e, 0xfe, 0x21, 0x0d, 0x80, 0xa4, +0x09, 0x90, 0x34, 0x02, 0x72, 0x0f, 0xff, 0x90, +0x9f, 0xcb, 0x51, 0x3c, 0xc4, 0x73, 0x9e, 0xfb, +0xdb, 0xb5, 0x67, 0x0b, 0xee, 0xfa, 0x93, 0xf7, +0x84, 0xf1, 0xa1, 0x44, 0x96, 0xf8, 0x09, 0xfe, +0x85, 0xb8, 0x6f, 0xa1, 0x93, 0xff, 0x7c, 0x05, +0xc0, 0x9f, 0x25, 0xab, 0x72, 0x0f, 0x57, 0xc0, +0xbb, 0x57, 0xb9, 0x33, 0x10, 0x09, 0x01, 0x0f, +0x39, 0x21, 0xf0, 0xf9, 0x75, 0xc1, 0x72, 0xb5, +0xbf, 0x92, 0x0d, 0x00, 0x7c, 0xe6, 0xef, 0xf9, +0x60, 0x0d, 0x3e, 0xff, 0x0f, 0x97, 0x6c, 0x0f, +0x78, 0x3f, 0x28, 0x5d, 0x09, 0x24, 0x85, 0x41, +0x4c, 0xd3, 0xa0, 0x40, 0x9f, 0x80, 0xb2, 0xba, +0x61, 0xae, 0x10, 0xb0, 0xc3, 0xb2, 0x1f, 0xef, +0x07, 0xeb, 0x60, 0xdb, 0x6d, 0x59, 0x5a, 0xcf, +0x09, 0x18, 0xdf, 0x96, 0x03, 0x56, 0x0f, 0xd5, +0x48, 0x36, 0x06, 0xb6, 0xdc, 0x9b, 0xfb, 0xc3, +0x47, 0xcc, 0xc6, 0x80, 0xb7, 0xa0, 0x10, 0x58, +0xd8, 0x41, 0xc1, 0x2a, 0x83, 0x05, 0x05, 0x99, +0x6a, 0xe1, 0x97, 0xc5, 0x41, 0xc1, 0x97, 0x90, +0xc4, 0xc3, 0x50, 0x08, 0xf4, 0xd3, 0xe0, 0xdf, +0x62, 0x08, 0xfe, 0x29, 0x73, 0xff, 0xab, 0x46, +0x77, 0x33, 0xd8, 0x62, 0xe7, 0x3a, 0xb7, 0x9d, +0xff, 0x15, 0x26, 0xb0, 0xd6, 0xd4, 0x06, 0xbe, +0xdc, 0xed, 0x0c, 0x9f, 0xd7, 0xfa, 0xc0, 0x27, +0xa3, 0x28, 0xa4, 0xc7, 0xf0, 0x73, 0x62, 0x2c, +0x40, 0x0c, 0x96, 0xfc, 0xfd, 0xc5, 0xe4, 0x2f, +0xec, 0xfe, 0xdf, 0xd7, 0xa2, 0xfb, 0x5f, 0x0e, +0xc1, 0x3f, 0xf5, 0xdc, 0x3f, 0x3f, 0xf8, 0xf7, +0x24, 0x39, 0xf7, 0x9b, 0x25, 0x75, 0xff, 0xdb, +0xd2, 0x42, 0xe0, 0x7f, 0xbf, 0xfe, 0xa2, 0x33, +0xf2, 0x27, 0xe7, 0x7c, 0xd9, 0xe7, 0xfe, 0x59, +0x48, 0xf6, 0x92, 0x71, 0x3e, 0x96, 0xfc, 0xfc, +0xff, 0xf6, 0xce, 0x02, 0xba, 0xaa, 0x3b, 0xeb, +0xe2, 0x6b, 0xec, 0x1b, 0xab, 0xe2, 0xee, 0xee, +0xd4, 0x05, 0x28, 0xee, 0x92, 0x20, 0x11, 0x88, +0xbb, 0x0b, 0x81, 0xe0, 0x0e, 0x11, 0x24, 0x09, +0x81, 0x04, 0x42, 0x5c, 0xb0, 0x60, 0x49, 0xb0, +0x40, 0x70, 0x0a, 0xb4, 0x68, 0xf1, 0xb6, 0xd3, +0xe9, 0xb4, 0x9d, 0xce, 0x4c, 0xa7, 0x53, 0x99, +0xb6, 0xd3, 0x52, 0x8a, 0x9c, 0x6f, 0x9f, 0xfb, +0xde, 0xbd, 0xef, 0x3e, 0xc9, 0xcb, 0x4b, 0xf2, +0xa2, 0xfc, 0xbb, 0xd6, 0x59, 0xd0, 0x24, 0x40, +0x1b, 0x5e, 0x72, 0xf6, 0x3d, 0xe7, 0x77, 0xf6, +0x96, 0x2c, 0x7d, 0x0d, 0xc6, 0xf9, 0xec, 0xf1, +0xcf, 0x5e, 0xff, 0x1f, 0xcb, 0xc1, 0x3f, 0xc8, +0x00, 0xe0, 0x2c, 0x00, 0xce, 0x04, 0xe0, 0x27, +0xfe, 0x7b, 0x5a, 0xa7, 0xc0, 0x12, 0x08, 0x09, +0xf5, 0xde, 0x7f, 0xc9, 0xd1, 0x6c, 0xa3, 0x68, +0x5f, 0x0d, 0xf1, 0x9f, 0x84, 0xbd, 0x7f, 0xb2, +0xba, 0xf9, 0x73, 0x39, 0xd5, 0x85, 0xe6, 0x5f, +0x59, 0x01, 0xd0, 0x4c, 0x16, 0x00, 0x7e, 0xbd, +0xf7, 0xd1, 0xe8, 0xc6, 0xf0, 0xbb, 0x6e, 0x3c, +0xdf, 0xb4, 0x10, 0x40, 0x05, 0x77, 0xce, 0x35, +0x6b, 0xfc, 0x23, 0x53, 0xff, 0x73, 0x7b, 0x14, +0xd0, 0xb4, 0x16, 0xab, 0xe1, 0xd7, 0x9f, 0xa6, +0xf7, 0x3e, 0x3e, 0x1d, 0x34, 0x67, 0x2c, 0x54, +0x16, 0x27, 0x90, 0xf8, 0xf2, 0x65, 0xe5, 0xcf, +0x08, 0xee, 0xb8, 0xa3, 0x82, 0x9c, 0x80, 0xf9, +0xf5, 0x80, 0x67, 0x47, 0xbd, 0x8b, 0x81, 0x5f, +0x5c, 0x3a, 0x65, 0x7c, 0x57, 0xba, 0xb5, 0xb0, +0x00, 0x05, 0x4b, 0xbd, 0x18, 0x60, 0x6b, 0xe1, +0x37, 0x35, 0xa0, 0x60, 0xf8, 0x68, 0x34, 0xf4, +0xd4, 0x53, 0x34, 0xef, 0xc6, 0x13, 0x0c, 0xfe, +0x59, 0x24, 0x00, 0x6a, 0x19, 0xf8, 0xa7, 0x7a, +0xfa, 0x97, 0x05, 0x80, 0xfd, 0xb9, 0xd5, 0xe4, +0x3d, 0x39, 0xdc, 0xe4, 0xe8, 0x5f, 0xfd, 0xf4, +0xef, 0x32, 0xdc, 0x8f, 0xa6, 0x07, 0x85, 0x91, +0xfd, 0xc6, 0x79, 0x34, 0xe5, 0xf8, 0x32, 0xb2, +0xbd, 0x83, 0xaf, 0x91, 0x3b, 0xf8, 0x5a, 0x91, +0x4a, 0x6e, 0xfe, 0x3a, 0x01, 0x30, 0xd1, 0xe2, +0xa7, 0x7f, 0x01, 0xfe, 0xe9, 0x9a, 0xbf, 0x9b, +0xd5, 0xc1, 0xbf, 0xbe, 0x52, 0xdc, 0xef, 0x22, +0xbd, 0xa7, 0xff, 0x3d, 0x67, 0x4b, 0xaa, 0xf4, +0xe9, 0x9f, 0xad, 0x9f, 0xe5, 0xbd, 0xff, 0x3f, +0x71, 0xc6, 0xf7, 0xb5, 0x3c, 0xce, 0x87, 0xcd, +0x2f, 0xa7, 0xf7, 0xc9, 0xe3, 0x7c, 0x4e, 0xf5, +0xdb, 0x07, 0xfb, 0x5e, 0x4e, 0xf9, 0xe3, 0xb4, +0x3f, 0x6e, 0xfe, 0x9c, 0xfe, 0xc7, 0x29, 0x80, +0x3b, 0x60, 0x14, 0xc4, 0xa9, 0x80, 0xb2, 0x53, +0x20, 0x33, 0x00, 0x5b, 0xb4, 0x66, 0x3f, 0x2c, +0x2e, 0xd6, 0xee, 0xc9, 0x34, 0x19, 0xed, 0x2b, +0x7d, 0x5d, 0x5c, 0xdf, 0x48, 0x7e, 0x7b, 0x33, +0xd4, 0xcd, 0x3f, 0xb5, 0xae, 0x34, 0xff, 0xca, +0x0a, 0x80, 0x36, 0xca, 0xe8, 0xbb, 0xd7, 0x1e, +0x1a, 0xd5, 0x68, 0xae, 0x24, 0x02, 0x34, 0x35, +0x5f, 0x25, 0x06, 0x34, 0x42, 0xc0, 0xa3, 0xdd, +0x26, 0x93, 0x4f, 0xfe, 0xa6, 0xa6, 0x02, 0x1b, +0x5f, 0xb9, 0x4a, 0xb3, 0xba, 0xed, 0xd6, 0x5b, +0x03, 0x30, 0x18, 0x68, 0xe8, 0x27, 0xc0, 0x8d, +0xd3, 0xbe, 0x45, 0x9c, 0xc4, 0x0c, 0x2c, 0xea, +0x89, 0x70, 0x9f, 0x2e, 0x3b, 0xc1, 0x19, 0x6c, +0x30, 0xb9, 0x1e, 0x50, 0xdb, 0x0e, 0xf3, 0x9f, +0xeb, 0xd4, 0x6a, 0x93, 0x15, 0x38, 0x01, 0xfd, +0xf5, 0x80, 0x2c, 0x04, 0xbc, 0x3b, 0xe7, 0x4b, +0xa7, 0x91, 0xda, 0x13, 0xc9, 0x9f, 0x1c, 0xdb, +0x27, 0xff, 0x64, 0x6c, 0x2d, 0x5c, 0x1a, 0x28, +0x18, 0x5b, 0xf7, 0x41, 0xc1, 0x0e, 0xd6, 0x00, +0x05, 0x71, 0x31, 0x30, 0xe8, 0x6d, 0x69, 0x25, +0x20, 0x5d, 0x0c, 0x4c, 0x3d, 0x4e, 0x73, 0x76, +0x9d, 0x12, 0xe0, 0x5f, 0x1d, 0x02, 0xff, 0xd4, +0x4f, 0xff, 0x5c, 0xd3, 0x6e, 0xaf, 0x23, 0xbb, +0xab, 0x6b, 0xc8, 0x75, 0xd1, 0x3c, 0xf2, 0x1a, +0x15, 0xac, 0x11, 0x00, 0x2f, 0xf9, 0x92, 0xdb, +0xf8, 0x20, 0x72, 0x8a, 0x98, 0x45, 0x0e, 0xa9, +0x0b, 0x69, 0xea, 0xd9, 0x55, 0x34, 0xf9, 0x4e, +0x8c, 0x54, 0x9a, 0xc6, 0xaf, 0x6e, 0xfe, 0x6a, +0x01, 0x60, 0xf8, 0xf4, 0x6f, 0xd8, 0xfc, 0x97, +0xd5, 0x33, 0xf0, 0xcf, 0xbf, 0x86, 0xc1, 0xbf, +0xb2, 0xfd, 0xfe, 0x5f, 0x7d, 0xcf, 0x09, 0x4e, +0x7f, 0x2b, 0x94, 0xe6, 0x1f, 0x98, 0xb1, 0xa6, +0x4a, 0xe3, 0x7e, 0xaf, 0x00, 0xe0, 0x93, 0xf7, +0xfe, 0xd7, 0xb1, 0xe3, 0x57, 0x8f, 0xf3, 0x65, +0x4b, 0x5f, 0x79, 0x9c, 0xcf, 0xe3, 0xfd, 0x5d, +0xb8, 0xe3, 0x97, 0x2d, 0x7d, 0xe5, 0xe0, 0x9f, +0x2c, 0x34, 0xfa, 0xb7, 0x4f, 0x9e, 0xa4, 0x2f, +0x10, 0x17, 0xfc, 0xbd, 0xd6, 0x29, 0x30, 0x0b, +0xe2, 0x41, 0x1e, 0xfd, 0x27, 0xf3, 0xde, 0xff, +0x7a, 0xae, 0x51, 0xb4, 0x2f, 0x7f, 0x5d, 0x38, +0xde, 0xda, 0x40, 0xde, 0x07, 0xd3, 0xd4, 0xcd, +0xff, 0x3d, 0xff, 0x5d, 0x19, 0x7f, 0x78, 0x52, +0x04, 0x40, 0x27, 0x59, 0x00, 0x78, 0xf7, 0xcc, +0x87, 0x00, 0x98, 0xa3, 0xad, 0xd2, 0x84, 0xc0, +0x02, 0xd8, 0xfb, 0x9e, 0x35, 0xb8, 0xfd, 0x3f, +0x8a, 0x14, 0xc1, 0x58, 0x89, 0x0d, 0x50, 0x9f, +0xfe, 0x95, 0x56, 0x0e, 0x80, 0x08, 0xd5, 0x7e, +0x02, 0x53, 0xf1, 0xc4, 0x1c, 0xff, 0xd2, 0x3b, +0x46, 0x1f, 0x17, 0x0b, 0x9f, 0x01, 0xaf, 0x76, +0xe9, 0x7a, 0x42, 0x20, 0xce, 0xe0, 0xe3, 0x66, +0x75, 0xdd, 0x5b, 0x05, 0x9c, 0x40, 0xaa, 0x32, +0x92, 0x77, 0x6d, 0x9d, 0x81, 0x8b, 0x81, 0x3d, +0x3a, 0x6b, 0xe1, 0x7e, 0x87, 0xbe, 0x9b, 0xd6, +0x26, 0xe1, 0x41, 0xd9, 0xa0, 0x60, 0x74, 0xa9, +0xa0, 0xa0, 0x46, 0x08, 0xac, 0x2f, 0x97, 0xb5, +0x70, 0x5d, 0x07, 0x05, 0xf9, 0x62, 0x60, 0xd6, +0x50, 0x9d, 0xb5, 0xf0, 0x4c, 0x0f, 0x08, 0x81, +0xe2, 0x93, 0x35, 0x08, 0xfe, 0x15, 0xd5, 0x30, +0xf8, 0x97, 0x5b, 0x67, 0xc0, 0x3f, 0xf5, 0xd3, +0x3f, 0x37, 0x7f, 0x4d, 0xe1, 0xf5, 0x7c, 0x07, +0x75, 0x7b, 0x0d, 0x4d, 0x7b, 0x0f, 0xaf, 0xf1, +0x3b, 0xea, 0xc2, 0xeb, 0x5e, 0xaa, 0xd2, 0x04, +0x80, 0xf9, 0xa7, 0x7f, 0x01, 0xfe, 0xd5, 0x1c, +0xf8, 0xc7, 0x4f, 0xff, 0x0e, 0xd9, 0x4b, 0xf5, +0x9e, 0xfe, 0x4b, 0xae, 0x9d, 0xaf, 0xbe, 0xbd, +0xbf, 0xe1, 0x38, 0x1f, 0x96, 0xbe, 0x3c, 0xce, +0xe7, 0xe8, 0xdf, 0x93, 0x1c, 0xfc, 0x03, 0xc0, +0xef, 0x1d, 0xd8, 0xf8, 0x7e, 0x05, 0x4b, 0xdf, +0x6f, 0x00, 0xfe, 0x5d, 0x04, 0x00, 0xb8, 0x8d, +0x83, 0x7f, 0x10, 0x21, 0xfd, 0xe9, 0xc7, 0x1f, +0x4b, 0xab, 0x04, 0xbe, 0xfb, 0xcf, 0x87, 0x78, +0x90, 0x9b, 0x7f, 0x2a, 0xf6, 0xfe, 0xe1, 0xef, +0xe4, 0x18, 0x9d, 0xfb, 0xf1, 0xd7, 0x04, 0x7f, +0x1d, 0xb8, 0x9f, 0xd0, 0xdb, 0xfb, 0x7f, 0x8f, +0xe6, 0xdf, 0xb9, 0x2e, 0x35, 0xff, 0xca, 0x0a, +0x80, 0x1e, 0xb2, 0x00, 0xf0, 0xea, 0xb1, 0x93, +0x46, 0x36, 0x8a, 0x94, 0x4a, 0x5f, 0x08, 0xe8, +0xc4, 0x00, 0x0b, 0x01, 0x1b, 0xec, 0xc5, 0x63, +0xfa, 0x9f, 0x52, 0x9a, 0xb0, 0x57, 0xfb, 0x14, +0x85, 0x13, 0x70, 0x68, 0xb5, 0x0e, 0xce, 0x7f, +0xc5, 0x66, 0x05, 0x00, 0x4f, 0x05, 0xd4, 0x2e, +0x83, 0x73, 0x61, 0xd9, 0x5b, 0xda, 0xc7, 0xb2, +0xa0, 0x98, 0xdb, 0xbd, 0x10, 0x4d, 0x73, 0x9d, +0xd4, 0x44, 0x57, 0xf7, 0x7f, 0x5b, 0xef, 0xfd, +0x2b, 0xfa, 0x1c, 0x2b, 0xc7, 0x19, 0x61, 0xc5, +0x39, 0x01, 0x37, 0x9c, 0x0e, 0xfa, 0x63, 0xad, +0xa1, 0xb3, 0x16, 0x2e, 0xfc, 0xda, 0xb6, 0x65, +0xac, 0x45, 0xa0, 0xa0, 0x6d, 0xb9, 0x40, 0xc1, +0x24, 0x33, 0xa0, 0x60, 0x7a, 0xad, 0x04, 0x05, +0xe7, 0x96, 0x03, 0x14, 0x9c, 0xdf, 0xfd, 0x32, +0x45, 0x0c, 0xd3, 0x5a, 0x0b, 0xe3, 0x7c, 0x30, +0x62, 0x26, 0x1a, 0xfe, 0x59, 0x01, 0xfe, 0xd5, +0x66, 0xf0, 0xcf, 0xf0, 0xe9, 0x5f, 0x4f, 0x00, +0xdc, 0x59, 0x23, 0x55, 0x65, 0x9a, 0xff, 0x93, +0x0b, 0xfe, 0xf9, 0xd6, 0x3a, 0xf0, 0xef, 0x8d, +0x4b, 0x6e, 0x68, 0xfa, 0xba, 0xa7, 0xff, 0xd0, +0x8c, 0xb8, 0x2a, 0xdd, 0xfb, 0xf3, 0x5e, 0x5e, +0xde, 0xfb, 0x33, 0xf1, 0x2f, 0x8f, 0xf3, 0xb7, +0x63, 0x9c, 0x7f, 0x89, 0xc7, 0xf9, 0xb0, 0xf4, +0x95, 0xc7, 0xf9, 0x39, 0x18, 0xe3, 0x9f, 0xc2, +0x89, 0xdf, 0xe7, 0x9f, 0x7d, 0x46, 0x3f, 0xc2, +0xd2, 0x57, 0x0e, 0xfe, 0x39, 0x88, 0x53, 0x40, +0x8e, 0x07, 0x7e, 0xf4, 0xe8, 0x11, 0x7d, 0xf4, +0xe1, 0x87, 0xd2, 0xbf, 0xab, 0xf7, 0xfe, 0x8b, +0x8f, 0x65, 0x29, 0xe7, 0x7e, 0xae, 0xaa, 0x73, +0x3f, 0xfe, 0x3a, 0x70, 0x7e, 0x27, 0xc9, 0x60, +0xef, 0x9f, 0x61, 0x5f, 0xd7, 0x9a, 0x7f, 0x65, +0x05, 0x40, 0x3f, 0xb9, 0xa9, 0x79, 0xf6, 0xd8, +0x4e, 0x23, 0x1a, 0xcd, 0x42, 0xcd, 0x86, 0x08, +0x98, 0xad, 0x15, 0x03, 0x3a, 0x21, 0x30, 0x4a, +0x25, 0x04, 0xc6, 0x35, 0x59, 0x04, 0xd3, 0x9f, +0x2d, 0x12, 0x13, 0x60, 0xc8, 0x09, 0x70, 0x53, +0x74, 0x6a, 0x9d, 0x80, 0x71, 0xff, 0x71, 0x93, +0x4d, 0x3d, 0x01, 0xf9, 0x01, 0xdc, 0x24, 0xe5, +0x66, 0xb9, 0xf6, 0xc5, 0x73, 0x65, 0x4e, 0x0d, +0x56, 0xf5, 0x3d, 0x89, 0xc6, 0xb9, 0x96, 0xa2, +0xf0, 0xa3, 0xfa, 0xed, 0xd1, 0xfd, 0x4e, 0x95, +0xe2, 0x27, 0xa0, 0x7f, 0x46, 0x68, 0x2d, 0x4e, +0xc0, 0x9d, 0x2f, 0x06, 0x7a, 0xe9, 0x2e, 0x06, +0x60, 0x2d, 0xfc, 0xd5, 0xa4, 0x16, 0x51, 0xf5, +0x02, 0x14, 0x0c, 0xd6, 0x03, 0x05, 0x8f, 0x96, +0x0a, 0x0a, 0xce, 0x32, 0xe4, 0x03, 0x3a, 0x96, +0x1f, 0x14, 0x94, 0xac, 0x85, 0x87, 0x6a, 0x40, +0xc1, 0xb0, 0xd7, 0x21, 0x04, 0x96, 0xa1, 0xf1, +0x5f, 0xaa, 0x29, 0xf0, 0xaf, 0xa0, 0x46, 0xc1, +0x3f, 0xcf, 0x3a, 0x00, 0xfe, 0x55, 0xa4, 0xf9, +0x9b, 0x17, 0x00, 0x02, 0xfc, 0xab, 0x6d, 0xe0, +0x5f, 0x5f, 0x29, 0xee, 0x77, 0x85, 0x9e, 0x00, +0xb8, 0x58, 0x85, 0x71, 0xbf, 0x05, 0x18, 0xef, +0x73, 0xf3, 0xe7, 0x27, 0xf5, 0x2f, 0x31, 0x09, +0xf8, 0x97, 0xa9, 0x71, 0x3e, 0x5b, 0xfa, 0xaa, +0x83, 0x7f, 0xd0, 0xe0, 0xb9, 0xd1, 0x73, 0xc3, +0x3f, 0x28, 0x07, 0xff, 0xe0, 0x5c, 0x90, 0x3d, +0xfe, 0x59, 0x18, 0xb0, 0xe7, 0xbf, 0x7a, 0xef, +0xbf, 0x06, 0x7b, 0x7f, 0xcf, 0x52, 0xce, 0xfd, +0xa6, 0xbf, 0x67, 0xb8, 0xf7, 0xcf, 0x48, 0xaa, +0x8b, 0xcd, 0xbf, 0xb2, 0x02, 0xe0, 0x15, 0xb9, +0x99, 0x79, 0x74, 0xdf, 0x4a, 0xc3, 0x1b, 0x45, +0x68, 0x45, 0x80, 0xa1, 0x10, 0x88, 0xd4, 0x09, +0x81, 0x32, 0x38, 0x01, 0xf5, 0x19, 0xa1, 0x5b, +0xdb, 0x24, 0x8c, 0xf2, 0xcf, 0x18, 0x35, 0x74, +0x8f, 0x76, 0x29, 0x0a, 0x48, 0x67, 0x2e, 0x4e, +0x58, 0x5f, 0x04, 0x9c, 0xc0, 0x13, 0xff, 0x71, +0xa3, 0xb4, 0x41, 0xcb, 0xfc, 0x04, 0xd6, 0x5b, +0x95, 0x13, 0x70, 0xe7, 0x8b, 0x81, 0x3e, 0xf2, +0xc5, 0x40, 0xc9, 0x23, 0xf7, 0xae, 0x39, 0xdf, +0x4e, 0x68, 0xb6, 0xbc, 0x56, 0x80, 0x82, 0x1e, +0x16, 0x82, 0x82, 0xfe, 0x66, 0x41, 0xc1, 0x62, +0x33, 0xa0, 0xe0, 0x29, 0x33, 0xa0, 0xe0, 0x3b, +0xe5, 0x02, 0x05, 0xe7, 0xb2, 0xb5, 0xf0, 0x20, +0x2d, 0x28, 0x38, 0x04, 0x0d, 0x7f, 0x3d, 0x04, +0xc0, 0x75, 0x01, 0xfe, 0x99, 0x1b, 0xfd, 0xbb, +0xd6, 0x00, 0xf8, 0xa7, 0x6e, 0xfe, 0xd6, 0x7c, +0xfa, 0x17, 0xe0, 0x9f, 0x77, 0x39, 0xfc, 0xfe, +0xab, 0x0e, 0xfc, 0xd3, 0xc5, 0xfd, 0xea, 0x04, +0x40, 0x64, 0x56, 0xd5, 0xc5, 0xfd, 0x5e, 0xc3, +0x68, 0x9f, 0x9b, 0x3f, 0x8f, 0xff, 0x6f, 0xc1, +0xb6, 0xf7, 0x1b, 0xb8, 0xfd, 0xc9, 0xe3, 0xfc, +0x63, 0xea, 0x71, 0x3e, 0xde, 0x57, 0x88, 0xfb, +0xff, 0x42, 0x9c, 0xf2, 0xf1, 0xcf, 0x7f, 0xc1, +0xdb, 0x3e, 0xc1, 0xfb, 0xf8, 0x63, 0xb6, 0xc1, +0xfe, 0xf7, 0x22, 0x6c, 0x80, 0xf9, 0xd7, 0x72, +0xca, 0x1f, 0x27, 0xfc, 0xa5, 0xf3, 0x9d, 0xbf, +0x6a, 0xef, 0xef, 0x77, 0xdd, 0xf8, 0xdc, 0x8f, +0x85, 0xb0, 0xe3, 0xad, 0x44, 0xf2, 0x3e, 0x20, +0xef, 0xfd, 0x59, 0x04, 0x64, 0x5c, 0x46, 0xfd, +0xfe, 0x49, 0x14, 0x00, 0x03, 0x64, 0x01, 0xe0, +0xd6, 0x2d, 0x87, 0x86, 0x37, 0x9c, 0xa9, 0xa9, +0x32, 0x85, 0x80, 0x79, 0x4e, 0xc0, 0x50, 0x08, +0xf8, 0x74, 0x48, 0xd5, 0x6b, 0xdc, 0x4b, 0x7a, +0x1f, 0x56, 0x20, 0x3a, 0x53, 0xdc, 0x40, 0x70, +0xa7, 0x3c, 0x72, 0x6c, 0x05, 0xeb, 0x51, 0xfc, +0x98, 0x60, 0x22, 0x71, 0x50, 0x2e, 0x4e, 0x23, +0xac, 0x19, 0x3f, 0x01, 0x4d, 0x23, 0x96, 0x2e, +0x06, 0xfa, 0x15, 0xcb, 0xd6, 0xc2, 0xf7, 0x9d, +0x3a, 0xa6, 0xfe, 0xc8, 0x17, 0x03, 0xd6, 0x00, +0x05, 0xed, 0xeb, 0x24, 0x28, 0x78, 0xde, 0x0c, +0x28, 0x58, 0x9a, 0x10, 0xd0, 0x5a, 0x0b, 0xbf, +0xa1, 0x79, 0x1d, 0x86, 0x8f, 0xc3, 0x44, 0x20, +0xbb, 0xa6, 0xc0, 0xbf, 0xbd, 0x02, 0xfc, 0xb3, +0xc2, 0xd3, 0xbf, 0xba, 0xf9, 0xdb, 0x0a, 0xf0, +0xaf, 0xd6, 0x83, 0x7f, 0x7d, 0xdf, 0x9f, 0x86, +0xb8, 0xdf, 0x55, 0x3a, 0x01, 0x90, 0xb7, 0x9c, +0xee, 0x7c, 0xf6, 0x51, 0x95, 0x34, 0xff, 0x2f, +0xd1, 0xac, 0xe5, 0xbd, 0x7f, 0x31, 0x1a, 0x39, +0x3f, 0xbd, 0x5f, 0xc7, 0x53, 0xbc, 0xe1, 0x38, +0x9f, 0x9f, 0xf6, 0x8b, 0xf1, 0xd4, 0x2f, 0x07, +0xff, 0xf0, 0x34, 0x80, 0xa7, 0x02, 0x3c, 0x1d, +0xc8, 0xc4, 0x53, 0xbe, 0x1c, 0xfc, 0xc3, 0x30, +0x20, 0x43, 0x81, 0x5b, 0xb1, 0x36, 0x90, 0x9f, +0xfc, 0x79, 0xef, 0x1f, 0xf6, 0x6e, 0x8e, 0x51, +0xb4, 0x2f, 0x7f, 0x2d, 0xf0, 0xeb, 0xde, 0xfd, +0xf8, 0x66, 0x75, 0xf3, 0xff, 0x2f, 0xaa, 0x43, +0x5d, 0x6d, 0xfe, 0x95, 0x15, 0x00, 0x43, 0x65, +0x01, 0xe0, 0xda, 0x35, 0x8b, 0x86, 0x35, 0x0c, +0x43, 0x85, 0xeb, 0x84, 0x40, 0x43, 0x16, 0x02, +0x3a, 0x31, 0x50, 0xba, 0x10, 0xd0, 0xe7, 0x04, +0x4c, 0x9d, 0x11, 0xae, 0xea, 0x77, 0x42, 0x95, +0x1a, 0xf8, 0x1e, 0x4d, 0x86, 0xa7, 0x00, 0x37, +0xc9, 0xd5, 0x06, 0x50, 0xe1, 0x8a, 0xbe, 0xfa, +0xb1, 0xc4, 0x53, 0xe1, 0x1d, 0xb0, 0xb2, 0x94, +0x75, 0x02, 0x5f, 0x1a, 0x58, 0xea, 0x27, 0x50, +0x75, 0x9c, 0x80, 0xe6, 0x62, 0x20, 0xb4, 0xbf, +0xd6, 0x5a, 0xb8, 0x7f, 0xf1, 0xff, 0x1c, 0xda, +0x6d, 0xfc, 0xc5, 0xc8, 0x5a, 0xd8, 0x24, 0x28, +0x18, 0xf3, 0xe4, 0x80, 0x82, 0x92, 0x10, 0xb8, +0x6a, 0xf6, 0x62, 0x60, 0xd6, 0x90, 0x33, 0x52, +0xec, 0xb0, 0x24, 0x04, 0x1c, 0x20, 0x04, 0x0a, +0x04, 0xf8, 0x57, 0xeb, 0xc0, 0x3f, 0xa3, 0xe6, +0x5f, 0xbf, 0xc0, 0x3f, 0x6b, 0x3e, 0xfd, 0x57, +0x0c, 0xfc, 0xf3, 0xac, 0x76, 0xf0, 0x6f, 0xd8, +0x49, 0x7f, 0xd5, 0xd3, 0xff, 0x0a, 0x5a, 0x9c, +0x97, 0x52, 0x65, 0x7b, 0xff, 0x34, 0x80, 0x7c, +0xf2, 0xde, 0x9f, 0xcf, 0xf8, 0xa4, 0x71, 0x3e, +0x5b, 0xfa, 0x1a, 0x8e, 0xf3, 0xb1, 0xef, 0xe7, +0xbd, 0xff, 0x79, 0x39, 0xf8, 0x07, 0x3c, 0x00, +0x73, 0x01, 0xcc, 0x07, 0x30, 0x27, 0xf0, 0x37, +0x39, 0xf8, 0x07, 0xe7, 0x80, 0xfb, 0x30, 0x25, +0xe0, 0xa7, 0x7e, 0x79, 0xef, 0xbf, 0xf0, 0x58, +0x96, 0x51, 0xb4, 0xaf, 0xa6, 0xf9, 0x6f, 0x20, +0xe7, 0x0b, 0x49, 0xea, 0xe6, 0xcf, 0x65, 0x5b, +0x97, 0x9b, 0x7f, 0x65, 0x05, 0xc0, 0x68, 0x59, +0x00, 0xb8, 0x74, 0xc9, 0xa0, 0xa1, 0x0d, 0x43, +0x51, 0x61, 0x8a, 0x10, 0x18, 0xa6, 0x12, 0x02, +0xa5, 0x4f, 0x05, 0x4c, 0x73, 0x02, 0x86, 0xeb, +0x01, 0xff, 0x8e, 0x19, 0xfa, 0x4f, 0xf9, 0x9d, +0xf3, 0xa4, 0x06, 0x39, 0xcf, 0x00, 0x02, 0xe4, +0x7f, 0x37, 0x4c, 0x23, 0x9c, 0x8c, 0x46, 0xc9, +0xe3, 0x7e, 0x53, 0x22, 0x40, 0x23, 0x00, 0xca, +0xe7, 0x27, 0x50, 0x96, 0xdd, 0x70, 0x45, 0x38, +0x01, 0x7e, 0x12, 0xf7, 0xed, 0xa6, 0xbb, 0x18, +0x80, 0xb5, 0xf2, 0x7f, 0xa7, 0xb6, 0x5e, 0xf7, +0xb8, 0xf6, 0x80, 0x82, 0x5b, 0xad, 0x0e, 0x0a, +0x86, 0x57, 0x05, 0x28, 0xd8, 0xed, 0x0a, 0x45, +0x0c, 0x3f, 0xa5, 0x5c, 0x0c, 0x84, 0xfb, 0x96, +0x50, 0xc4, 0xf1, 0x9a, 0x00, 0xff, 0x76, 0x0b, +0xf0, 0x4f, 0x80, 0x7f, 0xf5, 0x1e, 0xfc, 0xe3, +0xa7, 0x7f, 0x37, 0xd5, 0xd3, 0xbf, 0x67, 0xee, +0x4a, 0xfa, 0xac, 0x8a, 0xe2, 0x7e, 0x0b, 0x71, +0xc6, 0x27, 0xef, 0xfd, 0xbf, 0x41, 0x43, 0x57, +0xc6, 0xf9, 0x18, 0xfd, 0xcb, 0xe3, 0xfc, 0xaf, +0xb4, 0xe3, 0xfc, 0x5c, 0x08, 0x05, 0x26, 0xff, +0xff, 0x8e, 0xe0, 0x9f, 0x7b, 0x08, 0xfe, 0xe1, +0x8b, 0x00, 0xbe, 0x0c, 0x38, 0x80, 0x0b, 0x01, +0x39, 0xf8, 0xe7, 0x63, 0x6d, 0xf0, 0x4f, 0xaa, +0x76, 0xf4, 0xcf, 0x4f, 0xff, 0xab, 0xb1, 0xd7, +0x37, 0x15, 0xed, 0x2b, 0xbd, 0xee, 0xaf, 0x25, +0x92, 0xdf, 0x9e, 0x0c, 0x75, 0xf3, 0x8f, 0xaf, +0xeb, 0xcd, 0xbf, 0xb2, 0x02, 0x60, 0xa2, 0x2c, +0x00, 0x9c, 0x3a, 0xa7, 0xd2, 0x90, 0x86, 0x21, +0x5a, 0x11, 0x60, 0x28, 0x04, 0xc2, 0x2d, 0x10, +0x02, 0xe6, 0x39, 0x81, 0x49, 0x88, 0xdf, 0x55, +0xfb, 0x05, 0xac, 0x41, 0x40, 0x90, 0xa9, 0xf5, +0x40, 0x6c, 0xff, 0xd3, 0x26, 0x63, 0x89, 0x5d, +0xdb, 0x24, 0x99, 0x14, 0x00, 0xd3, 0x00, 0x07, +0xca, 0x7e, 0x02, 0xa5, 0x0b, 0x01, 0xfd, 0xf5, +0x80, 0x7b, 0xdb, 0x54, 0x89, 0x3d, 0x88, 0x02, +0x44, 0xe8, 0x0c, 0x2f, 0x01, 0xcb, 0xd7, 0x03, +0x65, 0x73, 0x02, 0xae, 0x6d, 0x32, 0xf5, 0x2e, +0x06, 0xfc, 0x7a, 0xed, 0xfd, 0xc6, 0xb6, 0x65, +0x4c, 0x35, 0x81, 0x82, 0xa9, 0x66, 0x40, 0xc1, +0xdc, 0x52, 0x41, 0x41, 0x8d, 0x10, 0xa8, 0x5d, +0xa0, 0xe0, 0xfc, 0x5e, 0x17, 0x69, 0xe6, 0x70, +0x2d, 0x28, 0x88, 0xa9, 0x40, 0xf8, 0x9c, 0xa3, +0xb0, 0xf1, 0x14, 0xe0, 0x9f, 0x00, 0xff, 0xaa, +0x13, 0xfc, 0x0b, 0xab, 0xf7, 0xe0, 0xdf, 0xa8, +0xe2, 0x10, 0xbd, 0xa7, 0xff, 0xaa, 0x8a, 0xfb, +0x7d, 0x0f, 0x26, 0x3e, 0xf2, 0xde, 0xff, 0x36, +0x4e, 0xfd, 0xe4, 0x71, 0x3e, 0x43, 0x7f, 0x0c, +0xff, 0xa9, 0xc7, 0xf9, 0x7c, 0xeb, 0x2f, 0x5b, +0xfa, 0x2a, 0xc1, 0x3f, 0x80, 0x06, 0xd9, 0x1b, +0x80, 0x3d, 0x02, 0xfe, 0xa7, 0x72, 0x0a, 0x4c, +0xd5, 0x42, 0x7f, 0xd2, 0xde, 0x3f, 0x2f, 0x9d, +0x7c, 0xaf, 0x1b, 0x47, 0xfb, 0xb2, 0xf8, 0x75, +0xb8, 0xb5, 0x9e, 0xbc, 0xf7, 0xa7, 0xa9, 0x9b, +0xff, 0x3b, 0xa8, 0xdf, 0x3d, 0xe9, 0x02, 0x60, +0xaa, 0x92, 0x05, 0xd0, 0xb7, 0x88, 0x26, 0xb5, +0x5a, 0x45, 0x43, 0x1a, 0x04, 0x4b, 0x42, 0x40, +0x27, 0x06, 0xc2, 0xb4, 0x62, 0x20, 0x5c, 0x7f, +0x3d, 0x50, 0x01, 0x4e, 0x20, 0xa2, 0xdb, 0x4e, +0xbd, 0xe6, 0x3d, 0xa3, 0x55, 0x9c, 0x34, 0x05, +0x88, 0x7b, 0xf1, 0x82, 0xde, 0xdb, 0xed, 0x5a, +0xae, 0xd1, 0x6b, 0x96, 0x72, 0x3a, 0x9f, 0x29, +0xbf, 0x00, 0x47, 0x44, 0x0f, 0x73, 0x03, 0xb5, +0x51, 0x19, 0x0b, 0x4d, 0x56, 0xb9, 0x0c, 0x9a, +0x12, 0x02, 0x91, 0xdd, 0xf6, 0xa9, 0xae, 0x12, +0x2e, 0xe2, 0xde, 0x3f, 0xa5, 0x92, 0xeb, 0x01, +0x63, 0x21, 0xe0, 0xd6, 0x36, 0x9b, 0x02, 0x7b, +0xed, 0xd7, 0x59, 0x0b, 0x77, 0xdf, 0xfe, 0xed, +0xa4, 0xe6, 0x2b, 0x2b, 0x04, 0x0a, 0x4e, 0xb5, +0x10, 0x14, 0x9c, 0x51, 0x61, 0x50, 0x70, 0xa7, +0x19, 0x50, 0xb0, 0xd0, 0x0c, 0x28, 0x78, 0xa4, +0xea, 0x41, 0x41, 0x58, 0x0b, 0x87, 0x0f, 0xd1, +0x80, 0x82, 0x61, 0x03, 0xf0, 0xe7, 0x44, 0x1f, +0xa1, 0x99, 0x57, 0x05, 0xf8, 0x27, 0xc0, 0x3f, +0x01, 0xfe, 0x55, 0x16, 0xfc, 0xeb, 0x77, 0xd7, +0x0e, 0x71, 0xbf, 0xba, 0xa7, 0x7f, 0xaf, 0x9c, +0x55, 0xf4, 0x9f, 0xef, 0xbe, 0xa9, 0xd2, 0xbd, +0xff, 0x61, 0x3c, 0xf1, 0xff, 0xd7, 0x70, 0x9c, +0xcf, 0x96, 0xbe, 0x18, 0xe7, 0xb3, 0xbb, 0x5f, +0x11, 0x5c, 0xfe, 0x0a, 0xe0, 0xf6, 0xc7, 0xae, +0x7f, 0xec, 0xfe, 0xf7, 0x19, 0x82, 0x7f, 0xd8, +0x0d, 0x70, 0x2b, 0x8c, 0x7d, 0xde, 0x85, 0x3b, +0x20, 0xbb, 0x04, 0x72, 0xf1, 0xcf, 0xb3, 0x31, +0xee, 0xd7, 0xed, 0xfd, 0xd3, 0x29, 0xf4, 0xdd, +0x2c, 0xa3, 0x68, 0x5f, 0x7e, 0xfd, 0xf3, 0xeb, +0xdc, 0xfd, 0xd8, 0x26, 0x75, 0xf3, 0xff, 0x1a, +0xd5, 0xb6, 0x3e, 0x34, 0xff, 0xca, 0x0a, 0x80, +0xd6, 0x6c, 0x77, 0x2b, 0x8b, 0x00, 0xe9, 0xb4, +0xad, 0x57, 0x3e, 0x8d, 0x6f, 0xb1, 0x54, 0x23, +0x04, 0x1a, 0x84, 0x98, 0x99, 0x0a, 0x94, 0x9f, +0x13, 0x18, 0xd7, 0x74, 0x11, 0x7c, 0x02, 0x74, +0xf9, 0x00, 0xa1, 0x5d, 0xb6, 0x4a, 0x8c, 0x80, +0x6f, 0x07, 0x7d, 0xcb, 0xe0, 0xd0, 0x2e, 0xdb, +0x4c, 0xc6, 0x12, 0x47, 0x76, 0xdf, 0x6b, 0x24, +0x00, 0x9c, 0x5b, 0x6f, 0x54, 0x1a, 0xe8, 0x34, +0x04, 0x10, 0xcd, 0xec, 0xba, 0x4b, 0x3a, 0x0f, +0xe4, 0x09, 0xc3, 0x2c, 0x8c, 0xe4, 0x5d, 0xda, +0x24, 0x1b, 0x71, 0x02, 0x11, 0x88, 0x03, 0x56, +0xff, 0x1e, 0x8b, 0x7b, 0x15, 0x57, 0x19, 0x27, +0x20, 0x65, 0x0c, 0xf4, 0x39, 0x24, 0x5b, 0x0b, +0x3f, 0x70, 0xe9, 0x9c, 0xf9, 0xc3, 0x04, 0x4c, +0x43, 0xcc, 0x81, 0x82, 0x36, 0x75, 0x06, 0x14, +0x3c, 0x6c, 0x06, 0x14, 0x3c, 0x69, 0x45, 0x50, +0x50, 0x63, 0x2d, 0x1c, 0x36, 0x50, 0xfb, 0x3a, +0x1d, 0x8e, 0x3f, 0x6b, 0x53, 0x31, 0x85, 0xdf, +0x14, 0xe0, 0x9f, 0x00, 0xff, 0xaa, 0x6b, 0xf4, +0x1f, 0x52, 0xef, 0xc0, 0x3f, 0x4d, 0xdc, 0xaf, +0xee, 0xe9, 0x3f, 0xb1, 0x60, 0x47, 0x95, 0xee, +0xfd, 0xb3, 0xe1, 0xe1, 0xcf, 0x3e, 0xff, 0xf2, +0x38, 0x9f, 0x0d, 0x7f, 0xde, 0xc7, 0x34, 0x40, +0x1e, 0xe7, 0xb3, 0xbf, 0x3f, 0xfb, 0xfc, 0xb3, +0xdf, 0xff, 0x77, 0xb0, 0xf4, 0x95, 0x83, 0x7f, +0x38, 0x0f, 0x80, 0x9f, 0xf6, 0xf9, 0xa9, 0x9f, +0x9f, 0xfe, 0x79, 0x0a, 0xb0, 0x13, 0x70, 0x20, +0x3f, 0xf5, 0x4b, 0x66, 0x3f, 0x10, 0x02, 0x0b, +0x8e, 0x67, 0xaa, 0xa2, 0x7d, 0xb7, 0xe8, 0x35, +0x7f, 0xa7, 0x0b, 0x1b, 0xd5, 0xcd, 0xff, 0x31, +0x6a, 0x7c, 0x7d, 0x69, 0xfe, 0x95, 0x12, 0x00, +0x5c, 0xd3, 0x3b, 0x6d, 0xda, 0x14, 0xd8, 0x4f, +0x79, 0x52, 0x25, 0xf5, 0x59, 0xe0, 0x98, 0x66, +0x0b, 0x2c, 0x10, 0x02, 0xe1, 0xe5, 0xe6, 0x04, +0xfc, 0x3b, 0xa6, 0xd3, 0x62, 0x04, 0xef, 0xd8, +0xb5, 0x5c, 0x2d, 0xad, 0x07, 0x58, 0x04, 0xa8, +0xfd, 0x00, 0xd6, 0xbf, 0x7c, 0x11, 0x90, 0xa0, +0x9c, 0xc8, 0xa7, 0x13, 0x02, 0xee, 0x6d, 0x8d, +0xad, 0x88, 0xdd, 0x61, 0x4f, 0x2c, 0xef, 0xd4, +0x17, 0xf5, 0x3a, 0x64, 0x72, 0x4d, 0x10, 0x83, +0xb5, 0x82, 0x13, 0x84, 0x82, 0x2c, 0x04, 0x42, +0x3a, 0x6f, 0xd7, 0x7b, 0x7f, 0xd2, 0x2b, 0xd7, +0xc8, 0xae, 0x45, 0x42, 0x05, 0x63, 0x89, 0x2d, +0xe3, 0x04, 0xbc, 0x3a, 0x6d, 0xa7, 0x10, 0xed, +0xc5, 0x00, 0xac, 0x85, 0xef, 0x4d, 0xef, 0xb0, +0xf9, 0xe7, 0xf1, 0x7a, 0x91, 0xcb, 0xf5, 0x17, +0x14, 0x8c, 0xb0, 0x12, 0x28, 0xb8, 0x10, 0xa0, +0xe0, 0xec, 0x41, 0x67, 0x25, 0xef, 0x00, 0xe9, +0x75, 0x3a, 0x09, 0xd3, 0x87, 0x6d, 0x87, 0x05, +0xf8, 0x57, 0xc7, 0xc1, 0xbf, 0x09, 0x02, 0xfc, +0xab, 0x76, 0xf0, 0x4f, 0x13, 0xf7, 0x1b, 0xa5, +0x34, 0x7f, 0xef, 0xac, 0xe8, 0x2a, 0x89, 0xfb, +0x2d, 0x2a, 0x2a, 0x92, 0x9a, 0x7f, 0x72, 0x72, +0xb2, 0x94, 0xe6, 0x67, 0x34, 0xce, 0x87, 0xf5, +0xef, 0x3f, 0xd5, 0xc1, 0x3f, 0x68, 0xf8, 0xdc, +0xf8, 0xf9, 0x63, 0xaf, 0xa8, 0x83, 0x7f, 0x20, +0x10, 0x58, 0x28, 0xf0, 0xfe, 0x9f, 0xb3, 0x00, +0xd2, 0x54, 0x4f, 0xff, 0xab, 0xf7, 0x65, 0x98, +0x3c, 0xf7, 0x63, 0xb1, 0x3b, 0xfd, 0xda, 0x7a, +0xec, 0xfd, 0xd3, 0xd5, 0x02, 0x20, 0xb6, 0x3e, +0x35, 0xff, 0x4a, 0x0b, 0x00, 0xae, 0xe1, 0x4d, +0x22, 0x86, 0x39, 0x74, 0xdc, 0xf8, 0xb7, 0xe0, +0xfe, 0x87, 0x8c, 0x84, 0x80, 0x6b, 0xd7, 0x4c, +0x1a, 0xd9, 0x24, 0x52, 0x2b, 0x04, 0x82, 0x2d, +0x10, 0x02, 0x33, 0x2b, 0xc4, 0x09, 0x38, 0xb4, +0x42, 0x7c, 0x30, 0xa8, 0x7e, 0xe5, 0xee, 0x1f, +0x57, 0x03, 0x13, 0xf1, 0xa4, 0xac, 0x4e, 0x23, +0xf4, 0x6c, 0xb7, 0xd9, 0x64, 0x0c, 0xb1, 0xc4, +0x08, 0xb4, 0x4d, 0x32, 0xeb, 0x23, 0xc0, 0x99, +0x04, 0xc1, 0x9d, 0xb7, 0x4a, 0x4f, 0xd5, 0x1c, +0x4a, 0x64, 0xf8, 0x7e, 0x97, 0xd6, 0xc9, 0x96, +0xfb, 0x09, 0x54, 0x90, 0x13, 0x70, 0x6e, 0x95, +0x4a, 0xde, 0x5d, 0x74, 0x17, 0x03, 0xb0, 0x16, +0xfe, 0xc1, 0xae, 0xed, 0xfa, 0x47, 0xe6, 0x41, +0xc1, 0x28, 0x33, 0xa0, 0x60, 0xdc, 0x13, 0x09, +0x0a, 0x4a, 0xd6, 0xc2, 0xc3, 0x4e, 0x4b, 0x6e, +0x82, 0xd2, 0xeb, 0xd4, 0xf9, 0x28, 0x85, 0x1e, +0x38, 0x68, 0x72, 0xf4, 0x1f, 0x22, 0xc0, 0xbf, +0x7a, 0x07, 0xfe, 0xd5, 0xc4, 0xd9, 0x9f, 0xba, +0xf9, 0x9b, 0x7f, 0xfa, 0xaf, 0x1b, 0xe0, 0x9f, +0x6d, 0xfe, 0x3c, 0x34, 0xfe, 0x95, 0x8a, 0x00, +0xc8, 0x3c, 0x52, 0x68, 0xf5, 0xe6, 0xcf, 0xde, +0xfe, 0xf2, 0xde, 0xff, 0x0e, 0x68, 0x7f, 0x79, +0x9c, 0x9f, 0xa7, 0x1e, 0xe7, 0xc3, 0xd2, 0x97, +0x7f, 0xce, 0x23, 0xfe, 0xe3, 0x1c, 0xfc, 0x83, +0x8f, 0xf9, 0xf9, 0xe7, 0x9f, 0xe9, 0x16, 0x7e, +0x2d, 0xaf, 0x02, 0x78, 0x25, 0xc0, 0xa4, 0xbf, +0xe4, 0x14, 0x08, 0xf2, 0x9f, 0x57, 0x06, 0x19, +0xda, 0xe6, 0xcf, 0x4f, 0xff, 0x49, 0xd8, 0xfb, +0x7b, 0xdf, 0x30, 0x8e, 0xf6, 0x95, 0x5e, 0xef, +0xb7, 0xe2, 0xb1, 0xf7, 0x4f, 0x55, 0x35, 0xff, +0xf4, 0xb7, 0x51, 0xbf, 0x15, 0x02, 0xa0, 0x94, +0x1a, 0xd9, 0x74, 0x8e, 0xc3, 0x8c, 0xce, 0x9b, +0xbf, 0x0c, 0x79, 0xe1, 0x88, 0x9e, 0x08, 0xc0, +0x8d, 0x3b, 0x20, 0xc1, 0x2d, 0x34, 0xbc, 0x71, +0x04, 0x0d, 0x56, 0x09, 0x81, 0x32, 0x39, 0x01, +0xbd, 0xf5, 0x40, 0xd9, 0x9c, 0x80, 0x7b, 0xbb, +0x64, 0xbd, 0xa6, 0xcc, 0x53, 0x81, 0xe9, 0xe0, +0x04, 0x64, 0x3f, 0x81, 0xc5, 0xbd, 0x8d, 0x9f, +0xf0, 0x03, 0x3a, 0x66, 0x49, 0x4d, 0x33, 0xa8, +0x53, 0xae, 0x45, 0x86, 0x42, 0x33, 0xd1, 0x80, +0x0d, 0x53, 0x0a, 0xa5, 0x49, 0x42, 0xdb, 0x94, +0x4a, 0xf8, 0x09, 0x94, 0x8f, 0x13, 0x70, 0x6e, +0x9d, 0x26, 0x5d, 0x0c, 0x84, 0x69, 0x2f, 0x06, +0x02, 0xfa, 0x14, 0xfe, 0x77, 0x4a, 0xab, 0xb5, +0x15, 0x00, 0x05, 0xd7, 0x9a, 0x01, 0x05, 0x37, +0x9a, 0x01, 0x05, 0xd3, 0xea, 0x07, 0x28, 0x08, +0x6b, 0xe1, 0x99, 0x23, 0x4e, 0x6a, 0x5e, 0xa7, +0x7c, 0x35, 0x10, 0x04, 0xf1, 0x71, 0x6a, 0xbf, +0x00, 0xff, 0x04, 0xf8, 0xa7, 0xd7, 0xfc, 0x2d, +0xf3, 0xfb, 0xaf, 0x3a, 0xf0, 0xef, 0xcd, 0x5a, +0x06, 0xfe, 0xbd, 0x78, 0xcb, 0x91, 0x3c, 0xb2, +0xa3, 0x14, 0x01, 0xe0, 0x9b, 0x19, 0x6b, 0xf5, +0xb8, 0x5f, 0xc3, 0xbd, 0xff, 0xbf, 0x61, 0xe9, +0x6b, 0x38, 0xce, 0xe7, 0x75, 0xc0, 0x7b, 0xb0, +0xf4, 0x55, 0x07, 0xff, 0x30, 0xf4, 0xf7, 0xd1, +0x07, 0x1f, 0xd0, 0x61, 0x4c, 0x0e, 0xd4, 0xc1, +0x3f, 0x0c, 0x09, 0xf2, 0xed, 0x7f, 0x9a, 0xca, +0xe9, 0x2f, 0x35, 0x23, 0x9d, 0x82, 0x2f, 0x66, +0x1a, 0x45, 0xfb, 0xf2, 0x6b, 0x9d, 0x5f, 0xdf, +0xee, 0x25, 0xea, 0xbd, 0x7f, 0xfa, 0x7f, 0x50, +0x2d, 0xeb, 0x5b, 0xf3, 0xb7, 0xaa, 0x00, 0xe0, +0x1a, 0xf8, 0xbc, 0xef, 0xaf, 0xc7, 0x34, 0x5f, +0x10, 0xea, 0xdc, 0x25, 0xfd, 0x7b, 0xf9, 0xa4, +0x4d, 0xae, 0x90, 0xfe, 0xc5, 0x84, 0x49, 0x01, +0x0d, 0x6d, 0x14, 0xa6, 0x13, 0x02, 0x16, 0x72, +0x02, 0xc3, 0x2d, 0xe4, 0x04, 0x42, 0x4c, 0x44, +0x0e, 0xc7, 0xbd, 0x74, 0xc1, 0x24, 0x00, 0xc8, +0x15, 0x82, 0xa7, 0x7a, 0x6e, 0x9a, 0xb3, 0xba, +0xed, 0x32, 0xf9, 0x7e, 0x8e, 0x10, 0x36, 0x4c, +0x2b, 0x5c, 0xd2, 0xcb, 0x38, 0xaf, 0xc0, 0xbb, +0x7d, 0xba, 0x15, 0xfd, 0x04, 0x36, 0x5a, 0xc4, +0x09, 0xb8, 0xb6, 0xc1, 0x0b, 0xb3, 0xa7, 0xee, +0x62, 0xc0, 0xa7, 0xe7, 0xae, 0x6f, 0x6d, 0x5a, +0x44, 0x57, 0x03, 0x28, 0xb8, 0xc5, 0x0c, 0x28, +0x98, 0x63, 0x06, 0x14, 0xcc, 0xaf, 0x31, 0x50, +0xd0, 0x9c, 0x10, 0x98, 0xdb, 0xe7, 0x22, 0x85, +0x0f, 0xd3, 0x82, 0x82, 0x48, 0x1e, 0x0c, 0x5d, +0x88, 0x3f, 0xfb, 0x62, 0x91, 0x00, 0xff, 0x9e, +0x08, 0xf0, 0x6f, 0x9e, 0x00, 0xff, 0xca, 0x01, +0xfe, 0xf1, 0xd3, 0xff, 0xb4, 0xad, 0x8b, 0xb5, +0xcd, 0x5f, 0x23, 0x00, 0x76, 0x5b, 0x39, 0xee, +0x97, 0xf7, 0xfe, 0xe9, 0x78, 0xa2, 0xe7, 0xe6, +0x9f, 0x05, 0xd0, 0x8f, 0xcf, 0xfb, 0x38, 0xa1, +0x6f, 0xa7, 0x89, 0x71, 0xfe, 0x01, 0xb6, 0xf4, +0x95, 0x83, 0x7f, 0x70, 0xee, 0xc7, 0x67, 0x7f, +0x27, 0x61, 0xe9, 0x9b, 0x8b, 0xa7, 0x7c, 0x3e, +0x07, 0x64, 0x97, 0x3f, 0xc9, 0x29, 0x10, 0x67, +0x82, 0x79, 0x38, 0x17, 0x54, 0xef, 0xfd, 0xe7, +0x1f, 0xcf, 0x34, 0x79, 0xee, 0xc7, 0xaf, 0x6d, +0xa7, 0xf3, 0x1b, 0xd4, 0xcd, 0x1f, 0x7b, 0xff, +0xf4, 0x51, 0xf5, 0xb1, 0xf9, 0x5b, 0x5d, 0x00, +0xa8, 0x84, 0xc0, 0xef, 0xc7, 0xb5, 0x58, 0xb2, +0x0a, 0x0e, 0x81, 0x3f, 0x1b, 0xae, 0x05, 0x30, +0xba, 0xa6, 0x69, 0xed, 0xe2, 0xa5, 0xc6, 0x3f, +0xb8, 0x41, 0x90, 0xd5, 0x39, 0x01, 0xef, 0x0e, +0x29, 0x30, 0xf9, 0xb1, 0xcc, 0x22, 0x98, 0x2f, +0x0b, 0xb8, 0x61, 0x9a, 0x12, 0x00, 0x73, 0xba, +0xef, 0x93, 0x9e, 0xa0, 0x6d, 0x9b, 0x45, 0x49, +0x13, 0x02, 0x75, 0x34, 0xb1, 0x61, 0xf1, 0x5a, +0xc0, 0xda, 0x7e, 0x02, 0xea, 0xa9, 0x80, 0x39, +0x4e, 0xc0, 0xad, 0x1d, 0x2e, 0x06, 0x7a, 0x1f, +0x50, 0x59, 0x0b, 0xe7, 0x7d, 0x3f, 0x11, 0xa1, +0x4b, 0xf5, 0x11, 0x14, 0x0c, 0xb3, 0x10, 0x14, +0x9c, 0x53, 0x11, 0x50, 0x10, 0x42, 0x31, 0x7c, +0xb0, 0xf6, 0x75, 0x3a, 0xa8, 0x84, 0x42, 0xd6, +0xe2, 0xbf, 0xe1, 0x3d, 0x01, 0xfe, 0x09, 0xf0, +0x4f, 0x80, 0x7f, 0x72, 0xf3, 0x7f, 0xf5, 0xba, +0x13, 0x6e, 0xfd, 0x57, 0x29, 0x02, 0x20, 0xa0, +0x0a, 0xe2, 0x7e, 0xf7, 0xe3, 0x36, 0x5f, 0xde, +0xfb, 0xb3, 0xcf, 0xbf, 0x34, 0xce, 0x87, 0x59, +0x8f, 0x7a, 0x9c, 0xff, 0x09, 0x8f, 0xf3, 0x91, +0x00, 0xb8, 0x1d, 0x96, 0xbe, 0x7c, 0x11, 0xc0, +0x46, 0x3f, 0x6c, 0xf8, 0x73, 0x01, 0xc6, 0x3f, +0x39, 0x68, 0xee, 0xec, 0xeb, 0xcf, 0x86, 0x40, +0x6c, 0x0c, 0x74, 0x43, 0xeb, 0x14, 0x98, 0xae, +0xda, 0xfb, 0xc7, 0xee, 0xcb, 0x30, 0x8e, 0xf6, +0xe5, 0x73, 0x3f, 0xbc, 0xb6, 0x1d, 0xaf, 0xaa, +0xf7, 0xfe, 0xfc, 0x63, 0xfa, 0xca, 0xfa, 0xda, +0xfc, 0xab, 0x4c, 0x00, 0xa8, 0x84, 0xc0, 0x33, +0x13, 0x5b, 0xad, 0x48, 0xf5, 0xec, 0xb1, 0xed, +0xa1, 0xa1, 0x10, 0xe0, 0xd3, 0xc1, 0xc9, 0x6d, +0x62, 0xa5, 0x69, 0x80, 0x4e, 0x08, 0x58, 0x87, +0x13, 0x98, 0xdc, 0x7c, 0x15, 0x45, 0xab, 0x52, +0x07, 0x4b, 0xab, 0x39, 0xb8, 0x0c, 0xe0, 0xf5, +0x80, 0x67, 0xfb, 0xcd, 0x26, 0x3c, 0x02, 0x62, +0xf5, 0xfc, 0x04, 0xa6, 0xc3, 0x5e, 0x78, 0xfd, +0xcb, 0x97, 0x4c, 0xfe, 0x3e, 0xc1, 0x9d, 0xb6, +0x5a, 0x7c, 0x46, 0x58, 0x55, 0x9c, 0x80, 0x47, +0x87, 0x3c, 0x0a, 0xee, 0x2b, 0x5f, 0x0c, 0x1c, +0xfd, 0xc5, 0xb9, 0x53, 0xda, 0x3d, 0x7d, 0x6b, +0xe1, 0xda, 0x03, 0x0a, 0x7a, 0x5b, 0x08, 0x0a, +0x06, 0x99, 0x05, 0x05, 0x8f, 0x9b, 0x01, 0x05, +0xcf, 0x99, 0x01, 0x05, 0xaf, 0x94, 0x0e, 0x0a, +0xa2, 0x22, 0x07, 0xbc, 0x2d, 0x9d, 0x0c, 0x4a, +0xaf, 0xd3, 0x51, 0x47, 0x29, 0x38, 0x0d, 0xff, +0x1d, 0x37, 0x05, 0xf8, 0x57, 0xff, 0xc1, 0xbf, +0x39, 0x02, 0xfc, 0x33, 0x03, 0xfe, 0xb1, 0x00, +0x70, 0xcc, 0x5e, 0x46, 0x9e, 0xca, 0xd3, 0xff, +0x4a, 0x3a, 0x7a, 0xf5, 0x7c, 0x95, 0xed, 0xfd, +0xef, 0x62, 0xa4, 0xcf, 0xe3, 0xfc, 0x62, 0x8c, +0xf3, 0xd9, 0xd2, 0xd7, 0x70, 0x9c, 0x9f, 0x89, +0x66, 0xce, 0x3f, 0x2a, 0xc1, 0x3f, 0xb0, 0xfc, +0xe5, 0x8f, 0xe3, 0x8f, 0xe7, 0x5f, 0xa7, 0x04, +0xff, 0xc0, 0x29, 0x30, 0x13, 0x13, 0x05, 0xb9, +0xf9, 0xf3, 0xde, 0xdf, 0xeb, 0x86, 0x71, 0xb4, +0xaf, 0x24, 0x70, 0x6f, 0xc6, 0x93, 0x4f, 0x51, +0xaa, 0xdc, 0xf8, 0xb9, 0x4e, 0xa2, 0x7e, 0x23, +0x04, 0x40, 0xa5, 0x85, 0x80, 0x4f, 0x53, 0x9b, +0x36, 0xd1, 0xfb, 0x7c, 0x7a, 0xed, 0x7a, 0x6c, +0x28, 0x04, 0xfc, 0x7a, 0xef, 0x25, 0x88, 0x04, +0x49, 0x04, 0x68, 0xaa, 0xa2, 0x9c, 0x80, 0xfe, +0x7a, 0x60, 0x0c, 0xb8, 0x00, 0x6f, 0xc4, 0x0d, +0x2f, 0xeb, 0x73, 0x44, 0x7a, 0x7a, 0x8f, 0x02, +0x18, 0x98, 0xf0, 0xb2, 0x7e, 0x36, 0xc0, 0xc2, +0x5e, 0x07, 0xa4, 0x2b, 0x02, 0xdb, 0x66, 0xab, +0x8c, 0x9a, 0xba, 0x4d, 0xb3, 0x95, 0x46, 0x7e, +0x02, 0x6e, 0x6d, 0x36, 0xc1, 0x8a, 0xd8, 0x38, +0x7f, 0x20, 0xbc, 0xcb, 0x4e, 0x23, 0x3f, 0x01, +0x5b, 0x95, 0x10, 0xd0, 0x6f, 0xb0, 0x55, 0xcb, +0x09, 0x48, 0x17, 0x03, 0xfd, 0x8f, 0xc8, 0x6b, +0x97, 0x9f, 0x1c, 0xdb, 0x27, 0x3f, 0x90, 0x2f, +0x22, 0xac, 0x0d, 0x0a, 0x4e, 0xb7, 0x10, 0x14, +0x74, 0xaf, 0x55, 0xa0, 0xe0, 0x25, 0x0b, 0x40, +0x41, 0xb6, 0x16, 0x3e, 0x2d, 0xad, 0x04, 0x24, +0x41, 0x35, 0xe5, 0x08, 0x05, 0xef, 0x2a, 0x12, +0xe0, 0x9f, 0x00, 0xff, 0x9e, 0x58, 0xf0, 0x8f, +0xe3, 0x7e, 0x3d, 0xf3, 0x56, 0x2a, 0x02, 0x20, +0x34, 0x23, 0xc1, 0xea, 0x7b, 0xff, 0x8d, 0x1b, +0x37, 0x4a, 0x02, 0xe0, 0x10, 0x9e, 0xee, 0xf5, +0xc6, 0xf9, 0x6c, 0xe9, 0x8b, 0xf7, 0x7f, 0xab, +0x1d, 0xe7, 0x73, 0x98, 0xcf, 0x31, 0x7c, 0x0c, +0x4f, 0x02, 0x38, 0xe4, 0xe7, 0x0e, 0x07, 0xff, +0x20, 0xf4, 0x87, 0xc3, 0x7f, 0x6e, 0x43, 0x44, +0xdc, 0x07, 0x08, 0xc8, 0xa1, 0x40, 0xc7, 0xc1, +0x0f, 0x64, 0xa9, 0xef, 0xfd, 0xb1, 0xf7, 0x0f, +0xba, 0x98, 0x61, 0x14, 0xed, 0xcb, 0xaf, 0x6f, +0x7e, 0x1d, 0x6b, 0xf6, 0xfe, 0x4a, 0xf3, 0xff, +0x02, 0xd5, 0xac, 0x3e, 0x37, 0xff, 0x6a, 0x13, +0x00, 0x72, 0x0d, 0x6a, 0xe0, 0xd7, 0x71, 0x4a, +0xbb, 0xb5, 0x67, 0xfd, 0xfa, 0xec, 0x33, 0xba, +0x18, 0xf0, 0xee, 0x89, 0x71, 0x7c, 0x8b, 0xc5, +0x10, 0x00, 0x81, 0xfa, 0x42, 0xa0, 0x02, 0x9c, +0xc0, 0x88, 0x52, 0x38, 0x01, 0x8e, 0x21, 0x56, +0x37, 0x6e, 0x16, 0x07, 0x72, 0xee, 0x80, 0x61, +0xf2, 0xa0, 0x17, 0xc4, 0x83, 0x29, 0x3f, 0x81, +0xa5, 0xbd, 0x8d, 0x19, 0x80, 0xd9, 0x80, 0xf2, +0xe4, 0x66, 0xea, 0xd1, 0x76, 0x33, 0x2e, 0x0e, +0x52, 0xd1, 0x40, 0xd7, 0x98, 0x11, 0x02, 0x6b, +0xaa, 0x94, 0x13, 0x70, 0x6a, 0xb5, 0x85, 0x7c, +0xe0, 0x69, 0xc0, 0x00, 0xa6, 0xb4, 0x76, 0xe9, +0x7b, 0xe0, 0x7b, 0xbb, 0x36, 0xf1, 0xa5, 0x82, +0x82, 0x6a, 0x6b, 0xe1, 0xc9, 0x16, 0x5a, 0x0b, +0x3f, 0x09, 0xa0, 0xe0, 0x82, 0xae, 0x57, 0x34, +0xa0, 0xa0, 0xd6, 0x5a, 0x38, 0xd4, 0xa3, 0x98, +0x82, 0x8e, 0x14, 0xe8, 0x35, 0xff, 0x00, 0x01, +0xfe, 0x55, 0x01, 0xf8, 0xb7, 0x52, 0x80, 0x7f, +0xb5, 0x08, 0xfc, 0x63, 0x01, 0xe0, 0x94, 0xa9, +0x69, 0xfe, 0xb2, 0x00, 0x78, 0xe7, 0xfd, 0xeb, +0x56, 0xdd, 0xfb, 0x67, 0x60, 0x47, 0xcf, 0xcd, +0x3f, 0x13, 0xcd, 0x9d, 0x9f, 0xf2, 0xb9, 0xe9, +0xe7, 0x9a, 0x18, 0xe7, 0x73, 0x8c, 0x2f, 0xef, +0xfe, 0x3f, 0x00, 0x03, 0x20, 0x07, 0xff, 0xb0, +0xa5, 0x2f, 0xc7, 0xfe, 0x32, 0x2b, 0xc0, 0x27, +0x80, 0xb2, 0x53, 0x60, 0x06, 0xa0, 0x3f, 0xde, +0xf9, 0x4b, 0xcd, 0x1f, 0xbf, 0xd7, 0xbc, 0x13, +0x19, 0x46, 0xd1, 0xbe, 0x0e, 0x12, 0xf4, 0x17, +0x4f, 0xce, 0xe7, 0x36, 0xa8, 0x9b, 0xff, 0x23, +0xd4, 0xd0, 0xfa, 0xde, 0xfc, 0xab, 0x5d, 0x00, +0xc8, 0x35, 0xa4, 0x51, 0xf0, 0x0b, 0x76, 0xed, +0x13, 0x6e, 0x9a, 0xf2, 0x10, 0x70, 0xef, 0x9e, +0x47, 0xa3, 0x9b, 0xcd, 0x53, 0x09, 0x01, 0xeb, +0x71, 0x02, 0xa3, 0x21, 0x02, 0x16, 0xc2, 0x61, +0x4f, 0x2d, 0x00, 0x64, 0xbb, 0x61, 0xc3, 0x2b, +0x82, 0xc5, 0xbd, 0x0e, 0xea, 0x9d, 0x11, 0xca, +0x62, 0xc0, 0xb7, 0x43, 0xba, 0x91, 0x00, 0x98, +0xdf, 0xb3, 0x48, 0x69, 0xa4, 0xf1, 0xda, 0x04, +0x42, 0x76, 0x09, 0xf4, 0xc0, 0x75, 0x80, 0xad, +0x91, 0xcb, 0x60, 0xd5, 0x70, 0x02, 0x8e, 0x26, +0x38, 0x01, 0xbe, 0x18, 0xf0, 0xc3, 0x9a, 0x03, +0x6c, 0x80, 0x76, 0xda, 0xb2, 0xef, 0xbb, 0xc9, +0xad, 0x56, 0xd7, 0x7b, 0x50, 0x70, 0xa6, 0x95, +0x41, 0xc1, 0xf9, 0xbd, 0x2e, 0x51, 0xf8, 0x08, +0x2d, 0x28, 0x88, 0xf3, 0xc1, 0x90, 0x99, 0x87, +0x28, 0xf0, 0xed, 0x3d, 0x15, 0x6a, 0xfe, 0x3e, +0x02, 0xfc, 0xab, 0x02, 0xf0, 0x6f, 0xf1, 0x13, +0x0d, 0xfe, 0xbd, 0x5a, 0xc5, 0xe0, 0x1f, 0xc7, +0xfd, 0xca, 0xcd, 0x9f, 0x6b, 0x76, 0xd6, 0x46, +0xab, 0x3e, 0xfd, 0x1f, 0x00, 0xdc, 0x27, 0xef, +0xfd, 0x3f, 0xc3, 0x93, 0xbf, 0xe1, 0x38, 0xff, +0xb1, 0x6a, 0x9c, 0xcf, 0xfb, 0xfc, 0xeb, 0xa0, +0xff, 0xf9, 0x0a, 0xe0, 0x1f, 0x10, 0x06, 0xa7, +0xe5, 0xe0, 0x9f, 0xd3, 0xa7, 0xe9, 0x4b, 0x5c, +0x0b, 0xfc, 0x17, 0x26, 0x40, 0x97, 0xb5, 0x4e, +0x81, 0xe9, 0x30, 0x11, 0xe2, 0xa7, 0x7f, 0x6e, +0xfe, 0x31, 0x05, 0xe9, 0x26, 0xcf, 0xfd, 0xf8, +0x35, 0xed, 0x78, 0x35, 0x01, 0x7b, 0xff, 0x34, +0xb5, 0x00, 0x58, 0xfc, 0x24, 0x34, 0xff, 0x1a, +0x13, 0x00, 0x72, 0x0d, 0x6b, 0x1c, 0x3e, 0x12, +0x97, 0x01, 0x9f, 0x06, 0xf7, 0x3f, 0x6c, 0x20, +0x04, 0x4a, 0xc8, 0xa5, 0x6b, 0x06, 0x8d, 0x68, +0x32, 0xdb, 0x84, 0x10, 0xa8, 0x3c, 0x27, 0xe0, +0xd7, 0x31, 0x0d, 0xb1, 0xc2, 0x87, 0x60, 0xb9, +0xbb, 0x51, 0xcf, 0x4f, 0x20, 0x46, 0xc5, 0x0d, +0xf0, 0xda, 0x80, 0xbd, 0x04, 0xe4, 0x33, 0x42, +0x59, 0x08, 0xd8, 0x00, 0xb0, 0x4b, 0x36, 0x00, +0x02, 0x17, 0xc3, 0x44, 0x48, 0xce, 0x1d, 0x88, +0x57, 0x45, 0x10, 0x73, 0x5c, 0xb1, 0x6c, 0x37, +0x6c, 0x5b, 0x0e, 0xbb, 0xe1, 0xca, 0x73, 0x02, +0xfa, 0x53, 0x01, 0x97, 0xb6, 0x7c, 0x31, 0x50, +0xa8, 0x7c, 0x7e, 0xbd, 0xba, 0xef, 0xf8, 0x7e, +0x52, 0x8b, 0xa8, 0x5a, 0x08, 0x0a, 0xee, 0x30, +0x03, 0x0a, 0x16, 0xd4, 0x38, 0x28, 0xc8, 0xd6, +0xc2, 0x61, 0xc3, 0xb4, 0xaf, 0xd1, 0xd7, 0x4b, +0x28, 0x78, 0xd9, 0x01, 0xf2, 0xbf, 0xbc, 0xab, +0x5e, 0x83, 0x7f, 0x0e, 0x35, 0x0e, 0xfe, 0x2d, +0x17, 0xe0, 0x9f, 0x95, 0xc1, 0xbf, 0x17, 0xcb, +0x01, 0xfe, 0x71, 0xb9, 0xa6, 0x47, 0xe9, 0x09, +0x00, 0x6b, 0xc6, 0xfd, 0xde, 0xc0, 0xf8, 0x5e, +0xde, 0xfb, 0x33, 0x03, 0xc0, 0xe3, 0xfc, 0xa2, +0x52, 0xc6, 0xf9, 0x5b, 0x39, 0xf8, 0xe7, 0xdc, +0x39, 0xfa, 0x06, 0xf7, 0xff, 0x5f, 0xc1, 0x07, +0xe0, 0x1d, 0x90, 0xfe, 0x79, 0x68, 0xf2, 0x27, +0x10, 0xfc, 0xf3, 0xd9, 0x27, 0x9f, 0xd0, 0x3d, +0xd8, 0xff, 0xde, 0x84, 0x0d, 0x30, 0x3b, 0x05, +0x66, 0x63, 0x92, 0x20, 0x8f, 0xfe, 0x37, 0x6e, +0x4d, 0x27, 0xcf, 0x1b, 0x9a, 0x73, 0x3f, 0x27, +0x83, 0x73, 0x3f, 0xbb, 0x9b, 0x71, 0xd8, 0xfb, +0x6f, 0x51, 0x37, 0xff, 0xa3, 0xa8, 0x5f, 0x0b, +0x01, 0x50, 0x8d, 0x35, 0xb2, 0x69, 0xa4, 0x13, +0x3c, 0x04, 0xbe, 0x32, 0xe5, 0x21, 0x80, 0xb7, +0x13, 0x84, 0x02, 0xbd, 0xa5, 0x12, 0x02, 0xd6, +0xe2, 0x04, 0x0c, 0xfd, 0x04, 0x9c, 0xdb, 0xac, +0xd7, 0x6b, 0xec, 0x0b, 0x7a, 0xee, 0xd7, 0x8b, +0x25, 0x96, 0x85, 0xc0, 0xea, 0x17, 0xce, 0x18, +0xc4, 0x10, 0x97, 0x28, 0x63, 0x75, 0xc3, 0x88, +0xe2, 0x85, 0x3d, 0x41, 0xe8, 0x77, 0xd9, 0x41, +0x73, 0x91, 0x54, 0xc8, 0xab, 0x01, 0x4b, 0x38, +0x81, 0x29, 0x55, 0xc4, 0x09, 0xb8, 0xb5, 0xc7, +0xc5, 0x40, 0x1f, 0xe5, 0x62, 0xe0, 0xa1, 0x5b, +0x97, 0xec, 0x1f, 0x27, 0x34, 0x5b, 0xae, 0x0f, +0x0a, 0x36, 0xa9, 0x5a, 0x50, 0xd0, 0xa5, 0xc2, +0xa0, 0xe0, 0x5e, 0x33, 0xa0, 0xe0, 0x21, 0x33, +0xa0, 0xe0, 0x09, 0xeb, 0x83, 0x82, 0xaf, 0x9d, +0xa3, 0xb0, 0xb7, 0xb4, 0xaf, 0xd1, 0x21, 0x47, +0x29, 0x68, 0x7d, 0x21, 0xf9, 0x5d, 0x17, 0xe0, +0x9f, 0x00, 0xff, 0xea, 0x1f, 0xf8, 0x37, 0xec, +0x44, 0x00, 0x9a, 0xfe, 0x2a, 0xa5, 0xf9, 0x2f, +0xce, 0xdb, 0x62, 0xb5, 0xe6, 0xff, 0x1f, 0x34, +0x71, 0x79, 0xef, 0x7f, 0x10, 0x26, 0x3d, 0x7f, +0xd5, 0x26, 0xf4, 0xe9, 0x8d, 0xf3, 0xe1, 0xec, +0xa7, 0x0e, 0xfe, 0xf9, 0xe7, 0xe7, 0x9f, 0x4b, +0x0e, 0x80, 0xec, 0x04, 0xa8, 0x0e, 0xfe, 0xe1, +0x7f, 0xf8, 0x47, 0xfe, 0xf7, 0x3c, 0x55, 0xf3, +0xe7, 0xbd, 0x7f, 0xe0, 0x25, 0xd3, 0xe7, 0x7e, +0xfc, 0xfa, 0xf5, 0x38, 0xaa, 0xb7, 0xf7, 0xff, +0x87, 0xff, 0xae, 0xb4, 0x26, 0x4f, 0x4a, 0xf3, +0xaf, 0x35, 0x02, 0x80, 0x6b, 0xc0, 0xf3, 0xde, +0xbf, 0x19, 0xdd, 0x7c, 0x7e, 0x84, 0x73, 0xd7, +0xb4, 0xff, 0x19, 0x7a, 0x08, 0x04, 0xc3, 0x43, +0xc0, 0xbe, 0xc3, 0x06, 0x1a, 0xd2, 0x28, 0x44, +0x2b, 0x04, 0xac, 0xc5, 0x09, 0x18, 0x9f, 0x11, +0x86, 0x76, 0xc9, 0xd3, 0x07, 0xfc, 0xba, 0x6e, +0x57, 0x38, 0x01, 0x59, 0x08, 0x24, 0xbc, 0xf4, +0xae, 0x81, 0x5d, 0xf0, 0x29, 0xe5, 0x49, 0x7a, +0x55, 0xdf, 0x13, 0x66, 0x2f, 0x0f, 0x16, 0x61, +0xb5, 0x60, 0xdb, 0xcc, 0x12, 0x60, 0xb0, 0x8a, +0x38, 0x01, 0xac, 0x07, 0x3c, 0x3a, 0xe2, 0x62, +0xa0, 0xdf, 0x61, 0x59, 0x64, 0xdd, 0x9f, 0xd1, +0x71, 0xcb, 0x2f, 0xf2, 0xc5, 0x80, 0xa5, 0xa0, +0xe0, 0x94, 0x3a, 0x03, 0x0a, 0x1e, 0x33, 0x03, +0x0a, 0x9a, 0xb1, 0x16, 0x2e, 0x63, 0x2d, 0xc0, +0x93, 0x82, 0x59, 0x6f, 0x9d, 0xa1, 0xb0, 0x37, +0x34, 0xaf, 0xd5, 0xd0, 0x71, 0x47, 0x28, 0x30, +0x7b, 0xaf, 0x00, 0xff, 0xaa, 0x14, 0xfc, 0x5b, +0x2a, 0xc0, 0xbf, 0x6a, 0x04, 0xff, 0x34, 0x71, +0xbf, 0xd1, 0x8a, 0x00, 0xf0, 0xc2, 0x09, 0xe0, +0x67, 0x5f, 0x5a, 0x27, 0xee, 0x97, 0xcf, 0xf9, +0x78, 0xdf, 0x2f, 0xed, 0xfd, 0xf1, 0x64, 0xff, +0x09, 0x5c, 0xfc, 0x4c, 0x8e, 0xf3, 0xd9, 0xd2, +0x17, 0xe3, 0xfc, 0xa3, 0x72, 0xf0, 0xcf, 0x83, +0x07, 0x74, 0x17, 0x19, 0x00, 0x9c, 0x05, 0xb0, +0x0f, 0x6e, 0x7f, 0x37, 0xe5, 0xe0, 0x1f, 0x4c, +0x00, 0x78, 0x12, 0xc0, 0x67, 0x80, 0xf2, 0xde, +0x9f, 0x73, 0x04, 0xe6, 0x9e, 0x48, 0x37, 0x6a, +0xfe, 0x2c, 0x6c, 0xf9, 0x35, 0xec, 0xfc, 0x76, +0xa2, 0xba, 0xf9, 0x3f, 0x44, 0xf3, 0x1f, 0xf8, +0x24, 0x35, 0xff, 0x5a, 0x25, 0x00, 0x54, 0x42, +0xe0, 0x0f, 0xe3, 0x5a, 0x2e, 0x89, 0x71, 0xeb, +0x96, 0x7d, 0xdf, 0xd8, 0x43, 0xe0, 0x20, 0x4d, +0x6d, 0xb7, 0x8e, 0x06, 0x37, 0x0c, 0x32, 0x10, +0x02, 0xd6, 0xe2, 0x04, 0x34, 0x53, 0x81, 0x85, +0x3d, 0xf7, 0xeb, 0x35, 0xed, 0xe5, 0x60, 0x05, +0x9c, 0xdb, 0x24, 0xd0, 0x84, 0xa6, 0x4b, 0x60, +0x09, 0x6c, 0x6c, 0x36, 0xb4, 0x0e, 0xae, 0x83, +0x32, 0x27, 0x60, 0x0a, 0x12, 0x34, 0xac, 0xb9, +0x88, 0xfc, 0xd5, 0x8c, 0xd9, 0xa3, 0x4a, 0x59, +0x0f, 0xac, 0xae, 0xe0, 0x7a, 0xc0, 0x72, 0x4e, +0x60, 0x7a, 0x0b, 0x5c, 0x0c, 0x74, 0xd6, 0x5d, +0x0c, 0x40, 0x10, 0xfc, 0xe8, 0xd0, 0x6e, 0xc3, +0xe3, 0x1a, 0x05, 0x05, 0x5b, 0x59, 0x1f, 0x14, +0x0c, 0xb5, 0x10, 0x14, 0x8c, 0xac, 0x28, 0x28, +0x88, 0x8b, 0x81, 0x88, 0xe1, 0xa7, 0xa4, 0xd8, +0x61, 0xe9, 0xf2, 0xc2, 0xe1, 0x30, 0xf9, 0x17, +0xec, 0x16, 0xe0, 0x9f, 0xc5, 0x02, 0x40, 0x80, +0x7f, 0xb5, 0x15, 0xfc, 0x1b, 0x7d, 0x38, 0x4c, +0xdb, 0xfc, 0x35, 0x02, 0xc0, 0x9a, 0x71, 0xbf, +0xfc, 0xc4, 0xcf, 0xcd, 0x3f, 0x29, 0x29, 0x89, +0x3e, 0x04, 0xc8, 0xf7, 0x0e, 0x2c, 0x7d, 0xd5, +0xe3, 0xfc, 0x9f, 0xe5, 0x71, 0x3e, 0x9a, 0x3c, +0x37, 0x7b, 0x6e, 0xfa, 0xdc, 0xfc, 0x59, 0x04, +0xb0, 0x18, 0x60, 0x51, 0xc0, 0xe2, 0x80, 0x45, +0x02, 0x8b, 0x05, 0x16, 0x0d, 0x59, 0x68, 0xfa, +0xea, 0xbd, 0x7f, 0x74, 0x41, 0xba, 0x71, 0xb4, +0xaf, 0x96, 0xf8, 0x77, 0xb8, 0x1a, 0x47, 0x7e, +0xbb, 0xd5, 0x7b, 0xff, 0xb4, 0xb9, 0x4f, 0x5a, +0xf3, 0xaf, 0x95, 0x02, 0x40, 0x25, 0x04, 0x9e, +0x9d, 0xd0, 0x6a, 0x45, 0x86, 0x69, 0x0f, 0x81, +0x42, 0xc2, 0x59, 0xa1, 0x24, 0x02, 0xe4, 0xb2, +0x26, 0x27, 0xc0, 0x27, 0x84, 0x2b, 0xfb, 0x1e, +0xb3, 0xc8, 0x4c, 0x48, 0x13, 0x40, 0x74, 0x49, +0x59, 0x0f, 0x2c, 0x00, 0x10, 0x58, 0xd6, 0xc7, +0x6f, 0x80, 0x51, 0x11, 0x1b, 0x0c, 0xe9, 0xf6, +0xed, 0x51, 0x35, 0xc6, 0x09, 0x70, 0x53, 0xf6, +0xe9, 0xc6, 0x17, 0x03, 0xb2, 0xb5, 0x70, 0xd1, +0xf7, 0x53, 0x5b, 0xc7, 0x95, 0x0d, 0x0a, 0x1a, +0x09, 0x81, 0x75, 0x66, 0xac, 0x85, 0xab, 0x0f, +0x14, 0x0c, 0xac, 0x29, 0x50, 0xb0, 0xfb, 0x15, +0x0a, 0x1f, 0x79, 0x5c, 0xb9, 0x18, 0x08, 0xf6, +0x3d, 0x48, 0xbe, 0xc7, 0x77, 0xd6, 0x63, 0xf0, +0x6f, 0x9d, 0x00, 0xff, 0xea, 0x31, 0xf8, 0xc7, +0x71, 0xbf, 0x1e, 0xca, 0xd3, 0xff, 0x2a, 0xc4, +0xfd, 0x46, 0x59, 0x2d, 0xee, 0xf7, 0x16, 0x9a, +0xb9, 0xbc, 0xf7, 0xbf, 0x88, 0x51, 0x3f, 0x8f, +0xf3, 0xd9, 0xd2, 0xd7, 0xd4, 0x38, 0x9f, 0xc7, +0xfc, 0x4a, 0xf0, 0x0f, 0xc6, 0xff, 0xbc, 0x06, +0xe0, 0x75, 0x00, 0xaf, 0x05, 0xbe, 0x90, 0x83, +0x7f, 0xd8, 0x29, 0x10, 0x6b, 0x83, 0x1c, 0x88, +0x02, 0x79, 0xf4, 0xbf, 0x01, 0x7b, 0x7f, 0x8f, +0x1b, 0xc6, 0xd1, 0xbe, 0xd2, 0x6b, 0xf8, 0xd6, +0x3a, 0xf2, 0x29, 0x54, 0xef, 0xfd, 0xd3, 0x0e, +0xa2, 0x7e, 0x25, 0x04, 0x40, 0xed, 0x14, 0x02, +0xcd, 0xd0, 0xec, 0x8b, 0x4c, 0x79, 0x08, 0xf8, +0xf6, 0xde, 0x43, 0x13, 0x5a, 0x2d, 0x83, 0x00, +0x08, 0xd0, 0x96, 0x89, 0xf5, 0x40, 0x05, 0x39, +0x81, 0x51, 0x8d, 0xe7, 0x50, 0x58, 0xd7, 0x6d, +0x12, 0xc8, 0x57, 0x56, 0x43, 0x67, 0xbb, 0x60, +0x79, 0x3d, 0x10, 0xd9, 0x7d, 0x8f, 0xd1, 0xfb, +0xd9, 0x8a, 0x98, 0x05, 0x45, 0x54, 0xbf, 0x93, +0xf0, 0x22, 0xb8, 0x28, 0xfd, 0x9e, 0xd3, 0x5b, +0xc5, 0x6b, 0xa1, 0xbb, 0x95, 0x68, 0x9c, 0xab, +0xa5, 0x68, 0xe2, 0xc9, 0x68, 0xfc, 0x96, 0xfa, +0x09, 0x94, 0xb6, 0x1e, 0xa8, 0x28, 0x27, 0xe0, +0xd4, 0x3a, 0x95, 0xfc, 0x7a, 0xec, 0x55, 0x59, +0x0b, 0xef, 0xfe, 0xde, 0xb6, 0x65, 0x8c, 0x15, +0x40, 0xc1, 0xf5, 0x66, 0x40, 0xc1, 0x94, 0x52, +0x41, 0x41, 0x8d, 0x10, 0xa8, 0x7b, 0xa0, 0xe0, +0xbc, 0x3e, 0xef, 0x52, 0xd8, 0x08, 0xed, 0x6b, +0x14, 0x53, 0x81, 0xa0, 0x39, 0x45, 0xe4, 0x73, +0x61, 0x7b, 0xb9, 0x46, 0xff, 0x1e, 0xf5, 0x12, +0xfc, 0x8b, 0x16, 0xe0, 0x5f, 0x1d, 0x02, 0xff, +0xc6, 0x17, 0xce, 0x56, 0x3d, 0xfd, 0xaf, 0xa2, +0x0d, 0x56, 0x8a, 0xfb, 0x55, 0xef, 0xfd, 0x0b, +0xd1, 0xe0, 0x95, 0x71, 0x3e, 0x5b, 0xfa, 0xe2, +0x89, 0xff, 0x9e, 0x6a, 0x9c, 0xcf, 0x13, 0x01, +0x06, 0xfd, 0x18, 0xf8, 0x63, 0xf0, 0x8f, 0x01, +0x40, 0x06, 0x01, 0x19, 0x08, 0x64, 0x30, 0x90, +0x01, 0x41, 0x06, 0x05, 0x19, 0x18, 0xdc, 0x06, +0x01, 0xa0, 0xde, 0xfb, 0x07, 0x5c, 0x32, 0x8e, +0xf6, 0x65, 0x21, 0xcb, 0xaf, 0x5b, 0x8f, 0x23, +0xc9, 0x72, 0xe3, 0xe7, 0xfa, 0x0c, 0xd5, 0xf0, +0x49, 0x6c, 0xfe, 0x75, 0x42, 0x00, 0x28, 0x66, +0x42, 0x0d, 0x7c, 0x3b, 0x4f, 0x69, 0xb7, 0xe6, +0xbc, 0x5f, 0x9f, 0x02, 0xa3, 0xd3, 0x41, 0xaf, +0x9e, 0x3b, 0x68, 0x4c, 0x8b, 0x85, 0xa5, 0x08, +0x81, 0xa0, 0x4a, 0x71, 0x02, 0x33, 0x5a, 0xaf, +0x2d, 0x35, 0x4b, 0x40, 0x5d, 0xe3, 0xf1, 0xf4, +0xcf, 0x22, 0x20, 0xac, 0xcb, 0x36, 0x63, 0x57, +0xc1, 0x16, 0x31, 0x7a, 0x7e, 0x02, 0x13, 0x9b, +0x6a, 0x8c, 0x85, 0x5c, 0x5a, 0x6f, 0x90, 0xe2, +0x8b, 0xe5, 0x8f, 0xdb, 0x88, 0x44, 0x43, 0xbe, +0x28, 0xe0, 0x6c, 0x01, 0xdb, 0xa6, 0x35, 0xc3, +0x09, 0xb8, 0x20, 0x63, 0x20, 0xa0, 0x57, 0x91, +0xfc, 0xb9, 0x7d, 0xec, 0xd1, 0x6d, 0xeb, 0x8f, +0x93, 0x9a, 0xaf, 0xac, 0x01, 0x50, 0x30, 0xb3, +0x74, 0x50, 0xd0, 0x84, 0xb5, 0xb0, 0x9f, 0x45, +0xd6, 0xc2, 0xd5, 0x07, 0x0a, 0xb2, 0xb5, 0x70, +0xd8, 0x50, 0x2d, 0x1f, 0x30, 0xa0, 0x84, 0x02, +0xa2, 0xf7, 0x91, 0xd7, 0xb5, 0xbc, 0x2a, 0x01, +0xff, 0x5c, 0x6a, 0x18, 0xfc, 0xb3, 0xe6, 0xd3, +0xbf, 0x00, 0xff, 0x6a, 0x1e, 0xfc, 0x7b, 0xe1, +0xb6, 0x3d, 0x79, 0x66, 0xe9, 0x9e, 0xfe, 0x7d, +0xb2, 0x62, 0xe8, 0x87, 0x9f, 0xfe, 0x67, 0xd5, +0xbd, 0x3f, 0xdf, 0xfd, 0x73, 0x80, 0x4f, 0x89, +0x3c, 0xce, 0xc7, 0xe9, 0x9e, 0x7a, 0x9c, 0xcf, +0x2c, 0x00, 0x33, 0x01, 0x7c, 0xea, 0xc7, 0x27, +0x7f, 0x7c, 0xfa, 0xc7, 0x27, 0x80, 0x7c, 0x0a, +0xc8, 0x27, 0x81, 0x7c, 0x1a, 0x28, 0x3b, 0x05, +0x6e, 0x43, 0x4e, 0xc0, 0x66, 0x4c, 0x05, 0xe4, +0xbd, 0xff, 0x9c, 0x93, 0xfa, 0xd1, 0xbe, 0xf2, +0xb9, 0x1f, 0xbf, 0x6e, 0x9d, 0xce, 0x26, 0xaa, +0x9b, 0xff, 0x2f, 0xa8, 0xd7, 0x9f, 0xd4, 0xe6, +0x5f, 0xa7, 0x04, 0x80, 0x5c, 0x83, 0x1b, 0x05, +0xbd, 0x3c, 0xad, 0x43, 0xfc, 0x9d, 0xc0, 0x7e, +0x07, 0x4c, 0x78, 0x08, 0xe4, 0xd0, 0xc8, 0x66, +0x73, 0xca, 0x10, 0x02, 0xc1, 0xe5, 0xe6, 0x04, +0x46, 0x21, 0x68, 0xc8, 0xad, 0x6d, 0x22, 0x3c, +0x04, 0x8a, 0x70, 0xf3, 0x5f, 0x80, 0xec, 0x80, +0x9d, 0xc6, 0xce, 0x81, 0xcd, 0x57, 0x48, 0x7e, +0x02, 0x01, 0x9d, 0xb2, 0x8c, 0xde, 0xa7, 0x8b, +0x26, 0xd6, 0xf9, 0x09, 0xf0, 0x04, 0xc0, 0x5c, +0x66, 0x41, 0x74, 0xbf, 0x53, 0xe4, 0xd0, 0x32, +0xbe, 0xc6, 0x38, 0x01, 0xbe, 0x18, 0x08, 0xea, +0x73, 0x50, 0x0b, 0x0a, 0x96, 0x3c, 0x70, 0xe9, +0x9c, 0x71, 0x7f, 0x02, 0xfe, 0x3f, 0xca, 0x0d, +0x0a, 0x36, 0x7b, 0x92, 0x41, 0xc1, 0x6b, 0x34, +0xfb, 0xcd, 0xb3, 0x52, 0xb6, 0x80, 0xf4, 0x79, +0x1c, 0x7e, 0x84, 0xfc, 0x37, 0xed, 0x21, 0xaf, +0x5b, 0x35, 0x0d, 0xfe, 0x6d, 0xac, 0x51, 0xf0, +0xcf, 0x46, 0x80, 0x7f, 0xb5, 0x1a, 0xfc, 0xe3, +0xb8, 0x5f, 0xf5, 0xd3, 0x7f, 0xe6, 0x91, 0x22, +0xab, 0x3c, 0xfd, 0xb3, 0xc3, 0x9f, 0xbc, 0xf7, +0xbf, 0x89, 0x73, 0x3f, 0xbd, 0x71, 0x3e, 0xcc, +0x7b, 0xd4, 0xe3, 0x7c, 0xbe, 0x06, 0x60, 0x93, +0x9f, 0x47, 0x08, 0xfe, 0xf9, 0x40, 0x0e, 0xfe, +0x81, 0x09, 0x10, 0x9b, 0x01, 0xb1, 0x29, 0xd0, +0xe7, 0xf0, 0x0b, 0x60, 0x93, 0x20, 0x86, 0xfe, +0x38, 0x3c, 0x88, 0x05, 0x00, 0xef, 0xfd, 0xa3, +0x0a, 0xe5, 0x27, 0xff, 0xcd, 0x7a, 0xb7, 0xfe, +0xfc, 0xba, 0x75, 0xb8, 0x22, 0xef, 0xfd, 0x95, +0x9a, 0xf9, 0x24, 0x37, 0xff, 0x3a, 0x29, 0x00, +0xe4, 0x1a, 0xda, 0x24, 0x6c, 0x8c, 0x43, 0xc7, +0x0d, 0x7f, 0x37, 0xe5, 0x21, 0xe0, 0xdc, 0x25, +0x8d, 0x86, 0x37, 0x89, 0xa0, 0x41, 0x0d, 0xfc, +0x15, 0x21, 0x50, 0xda, 0x19, 0x61, 0x45, 0x39, +0x81, 0x18, 0x83, 0xac, 0x81, 0x69, 0x18, 0x97, +0xf3, 0x29, 0xa1, 0xb7, 0x81, 0xdb, 0x20, 0xd7, +0xe4, 0xe6, 0x51, 0x46, 0x7e, 0x02, 0xa6, 0x26, +0x05, 0xa6, 0x58, 0x01, 0xdf, 0x0e, 0x99, 0x56, +0xe0, 0x04, 0xe2, 0x2a, 0xcc, 0x09, 0x68, 0x2e, +0x06, 0x8a, 0xb5, 0xd6, 0xc2, 0x47, 0x7e, 0x9e, +0xd1, 0x61, 0xd3, 0xa3, 0xf1, 0x75, 0x04, 0x14, +0xf4, 0xb3, 0x0a, 0x28, 0x78, 0xc6, 0x0c, 0x28, +0x78, 0xd1, 0x72, 0x50, 0x70, 0xe8, 0x29, 0xc9, +0x3b, 0x40, 0xfa, 0x3c, 0x4e, 0x2a, 0x26, 0xdf, +0xed, 0x3b, 0x05, 0xf8, 0x67, 0x21, 0xf8, 0x37, +0xbe, 0x86, 0xc1, 0xbf, 0xa1, 0x4f, 0x10, 0xf8, +0xc7, 0x71, 0xbf, 0x9e, 0xd9, 0xba, 0xa7, 0x7f, +0xbf, 0xcc, 0xd5, 0x56, 0x89, 0xfb, 0x55, 0xef, +0xfd, 0xcf, 0xc2, 0xe5, 0xcf, 0xdc, 0x38, 0x9f, +0x6d, 0x7d, 0xd9, 0x0f, 0x80, 0x6d, 0x7e, 0xd9, +0xee, 0x97, 0x6d, 0x7f, 0xd9, 0xfe, 0x97, 0x6d, +0x80, 0xd9, 0x0e, 0x98, 0x6d, 0x81, 0x65, 0xa7, +0xc0, 0x5c, 0xd5, 0xe8, 0x9f, 0xf7, 0xfe, 0xee, +0x37, 0xd5, 0xd1, 0xbe, 0xba, 0x73, 0xbf, 0xa9, +0x37, 0xd7, 0x90, 0x4f, 0xc1, 0x16, 0x75, 0xf3, +0x2f, 0x78, 0xd2, 0x9b, 0x7f, 0x9d, 0x16, 0x00, +0x72, 0x8d, 0x68, 0x3a, 0xcb, 0x6d, 0x7a, 0xe7, +0xcd, 0x5f, 0x9b, 0xf2, 0x10, 0x98, 0xde, 0x69, +0x13, 0x0d, 0x6d, 0x1c, 0xa6, 0x12, 0x02, 0x01, +0x16, 0x9c, 0x11, 0x5a, 0xc6, 0x09, 0xd8, 0x36, +0x5f, 0x06, 0xfb, 0xe0, 0xd3, 0x8a, 0xe1, 0x8f, +0x4d, 0xb3, 0x65, 0xd2, 0x19, 0x21, 0x4f, 0x0a, +0x0c, 0x1b, 0xb9, 0x5d, 0xcb, 0xd5, 0x46, 0x7e, +0x02, 0x0b, 0x0c, 0x2e, 0x0d, 0x64, 0xf3, 0x21, +0xf6, 0x11, 0x30, 0x4c, 0x1e, 0x9c, 0x2b, 0x25, +0x13, 0xae, 0xd2, 0xdb, 0xbd, 0x57, 0x86, 0x13, +0xb0, 0x6c, 0x3d, 0xa0, 0x13, 0x02, 0x33, 0x5a, +0x6e, 0xc2, 0xc5, 0xc0, 0x0e, 0x0a, 0xed, 0x7f, +0x54, 0xbe, 0xc6, 0xf8, 0xd1, 0x1e, 0xff, 0x9f, +0xa6, 0x41, 0xc1, 0x95, 0x56, 0x07, 0x05, 0x9d, +0x2d, 0x04, 0x05, 0xbd, 0x0c, 0x41, 0xc1, 0x36, +0xb5, 0x0b, 0x14, 0x94, 0xac, 0x85, 0x19, 0x14, +0x7c, 0x59, 0x0b, 0x0a, 0x3a, 0x1f, 0x24, 0xef, +0x83, 0x5b, 0x6b, 0x18, 0xfc, 0x4b, 0x14, 0xe0, +0x9f, 0x95, 0xc1, 0xbf, 0x41, 0x35, 0x0d, 0xfe, +0xdd, 0xad, 0x18, 0xf8, 0x27, 0xc5, 0xfd, 0x6e, +0x5b, 0xac, 0xf7, 0xf4, 0xbf, 0xeb, 0xec, 0xd1, +0x4a, 0x37, 0xff, 0xaf, 0xb0, 0xbf, 0x97, 0xf7, +0xfe, 0x7b, 0xb0, 0xef, 0x37, 0x1c, 0xe7, 0x3f, +0x52, 0x8d, 0xf3, 0xd9, 0x01, 0x90, 0x9d, 0x00, +0x39, 0xe0, 0x87, 0xa7, 0x02, 0xea, 0xe0, 0x1f, +0xb6, 0x08, 0xe6, 0x40, 0x20, 0x0e, 0x06, 0xe2, +0x8f, 0xdb, 0x89, 0xdf, 0x43, 0x26, 0xfe, 0xb7, +0x60, 0xef, 0xef, 0x7f, 0xc9, 0xf8, 0xd6, 0x9f, +0x5f, 0xbf, 0xfc, 0x3a, 0xf5, 0x28, 0xde, 0xa4, +0x6e, 0xfe, 0x7f, 0x43, 0x3d, 0x27, 0x04, 0x40, +0x3d, 0x10, 0x00, 0x5c, 0x6f, 0x3e, 0xef, 0xf9, +0xdb, 0xd1, 0xcd, 0xe7, 0x45, 0x3a, 0x77, 0x4d, +0xff, 0x31, 0xf4, 0x45, 0x43, 0x0f, 0x81, 0xc3, +0x64, 0xd7, 0x61, 0x3d, 0x4e, 0x07, 0x83, 0xcd, +0x08, 0x81, 0x8a, 0x71, 0x02, 0xa3, 0xb1, 0x1a, +0xf0, 0x6c, 0xbf, 0x09, 0x4f, 0xe9, 0x5b, 0x14, +0x3f, 0x01, 0xc7, 0x56, 0x6b, 0x8c, 0x1a, 0xfb, +0x0c, 0x50, 0xf5, 0xec, 0x25, 0xa0, 0xf6, 0x13, +0x60, 0x1b, 0x62, 0xf5, 0xc7, 0xb0, 0x88, 0x70, +0x68, 0xb9, 0x4e, 0x6a, 0xa8, 0x1c, 0x4e, 0x64, +0x18, 0x51, 0x1c, 0xd6, 0x65, 0xbb, 0xf2, 0x94, +0x6d, 0x7c, 0x3d, 0x50, 0x59, 0x4e, 0x20, 0xc1, +0x22, 0x4e, 0xc0, 0xa9, 0x15, 0x5f, 0x0c, 0xec, +0xa6, 0x30, 0xed, 0xc5, 0x80, 0x7f, 0xef, 0x82, +0x1f, 0xa6, 0xb4, 0x5a, 0x6b, 0x00, 0x0a, 0x2e, +0x2f, 0x15, 0x14, 0x54, 0x5b, 0x0b, 0x4f, 0xb3, +0xd0, 0x5a, 0xb8, 0x5e, 0x82, 0x82, 0x3d, 0x2f, +0x21, 0x69, 0x50, 0xfb, 0x3a, 0xc5, 0xd5, 0x40, +0x60, 0x70, 0x11, 0x79, 0x9d, 0xce, 0xad, 0x02, +0xf0, 0x2f, 0x59, 0x80, 0x7f, 0x02, 0xfc, 0xb3, +0x00, 0xfc, 0xd3, 0x08, 0x80, 0x57, 0x38, 0xee, +0x37, 0x4f, 0xf7, 0xf4, 0x1f, 0x98, 0xb1, 0x8e, +0x1e, 0x55, 0x32, 0xee, 0x97, 0xf7, 0xfe, 0x59, +0xd8, 0xf1, 0x73, 0xf3, 0xe7, 0x51, 0x3d, 0x83, +0x7e, 0x07, 0x0d, 0xc7, 0xf9, 0xd8, 0xf3, 0xcb, +0xe3, 0x7c, 0x29, 0xf8, 0x07, 0xd1, 0xbe, 0x1c, +0xf1, 0xcb, 0x51, 0xbf, 0x1c, 0xf9, 0x5b, 0x22, +0x07, 0xff, 0xe0, 0xf7, 0xe2, 0x48, 0x60, 0x8e, +0x06, 0xce, 0x47, 0xf3, 0x97, 0xc7, 0xfe, 0xbc, +0xf7, 0x8f, 0x3c, 0x95, 0x6a, 0x70, 0xee, 0xa7, +0x6b, 0xfe, 0x4e, 0x67, 0xd6, 0xab, 0x9b, 0xff, +0x7d, 0xd4, 0xcb, 0xa2, 0xf9, 0xd7, 0x23, 0x01, +0xa0, 0x12, 0x02, 0x7f, 0x1c, 0xdb, 0x72, 0xd1, +0x1a, 0xb7, 0xee, 0xd9, 0xbf, 0x18, 0xf2, 0x01, +0xcc, 0x0c, 0x4c, 0x69, 0xbb, 0x46, 0x6a, 0xfe, +0x65, 0x0b, 0x81, 0xe0, 0x0a, 0xfb, 0x09, 0xb0, +0x28, 0x48, 0x7c, 0xf9, 0xb2, 0x5e, 0xf3, 0xd6, +0x59, 0x0e, 0x6b, 0x72, 0x07, 0x58, 0x08, 0x84, +0x77, 0xdd, 0x61, 0x70, 0x4a, 0x78, 0x91, 0xec, +0x5b, 0xae, 0xd1, 0xe3, 0x04, 0xfc, 0x3b, 0x66, +0x4a, 0x17, 0x06, 0xf2, 0xc7, 0xf8, 0x74, 0x48, +0x53, 0x8d, 0xdb, 0x57, 0x5a, 0x70, 0x46, 0x58, +0x35, 0x9c, 0x80, 0xe6, 0x62, 0x40, 0x17, 0xe8, +0xe4, 0xdd, 0x63, 0xe7, 0x8f, 0x36, 0x2d, 0xa2, +0x8d, 0x40, 0xc1, 0x89, 0xe5, 0x02, 0x05, 0x13, +0xea, 0x1c, 0x28, 0x38, 0xbb, 0x92, 0xa0, 0xe0, +0xdc, 0xfe, 0xb0, 0x16, 0x1e, 0xa1, 0x99, 0xaa, +0x84, 0xbd, 0x5a, 0x42, 0xfe, 0x8b, 0xf6, 0x91, +0xc7, 0xc5, 0xac, 0x1a, 0x04, 0xff, 0x12, 0x04, +0xf8, 0xf7, 0x84, 0x82, 0x7f, 0x52, 0xdc, 0x6f, +0xce, 0x72, 0xf2, 0xdc, 0x16, 0xa5, 0x08, 0x80, +0x23, 0x57, 0x2a, 0x1f, 0xf7, 0x5b, 0x5c, 0x5c, +0xac, 0xec, 0xfd, 0xaf, 0xe0, 0xc9, 0xfd, 0x18, +0x46, 0xfe, 0xf2, 0x38, 0xff, 0x1b, 0x79, 0x9c, +0x0f, 0xd2, 0x9f, 0xc7, 0xf9, 0x9c, 0xfe, 0xc7, +0x29, 0x80, 0xf7, 0x7e, 0xfa, 0x89, 0x6e, 0x5c, +0xbb, 0x46, 0x7b, 0x71, 0x19, 0xc0, 0xbb, 0xff, +0xf7, 0xc1, 0x00, 0x3c, 0x04, 0x0b, 0xf0, 0x31, +0x9c, 0x02, 0x8f, 0x22, 0x37, 0x80, 0xa1, 0x41, +0xf5, 0xde, 0x7f, 0x55, 0xa1, 0x71, 0xb4, 0xaf, +0xdc, 0xfc, 0xed, 0x2f, 0xaf, 0x23, 0x7f, 0xd5, +0xde, 0xdf, 0x6f, 0x57, 0x5a, 0xb0, 0x68, 0xfc, +0xf5, 0x54, 0x00, 0x28, 0x42, 0xe0, 0x39, 0xcf, +0xe7, 0x70, 0x1e, 0x98, 0xed, 0xd9, 0x73, 0xdb, +0x23, 0x43, 0x21, 0xe0, 0xdf, 0xa7, 0x90, 0x26, +0xb5, 0x8e, 0xa2, 0x41, 0xcf, 0xfb, 0x49, 0x42, +0xc0, 0x12, 0x4e, 0x40, 0xbd, 0x1e, 0xb0, 0x84, +0x13, 0x98, 0xd5, 0x2d, 0xdf, 0x20, 0x59, 0x70, +0xb3, 0x62, 0x37, 0x2c, 0x0b, 0x01, 0x57, 0x13, +0xab, 0x02, 0x9e, 0x02, 0xcc, 0x87, 0x67, 0xff, +0x54, 0x5c, 0x0d, 0xc8, 0x42, 0xc0, 0xad, 0x6d, +0x92, 0xde, 0x8a, 0x60, 0x46, 0xab, 0x04, 0x6d, +0x73, 0x5d, 0xa1, 0x9c, 0x11, 0x1a, 0xae, 0x07, +0xaa, 0x8b, 0x13, 0xe0, 0x8c, 0x81, 0x80, 0xde, +0xf2, 0xc5, 0x40, 0xc9, 0x23, 0xf7, 0xae, 0x39, +0x3f, 0x4f, 0x44, 0x56, 0x42, 0xed, 0x07, 0x05, +0xf7, 0xe8, 0xf1, 0x01, 0x6a, 0x21, 0x10, 0x2c, +0x09, 0x81, 0xea, 0x05, 0x05, 0xd9, 0x5a, 0x98, +0x2d, 0x85, 0xa5, 0xd5, 0xd5, 0xa0, 0xa3, 0xe4, +0xbb, 0x6e, 0x17, 0xb9, 0x5d, 0xcf, 0x10, 0xe0, +0x9f, 0x00, 0xff, 0xaa, 0x0d, 0xfc, 0x7b, 0xe3, +0x92, 0x2b, 0x9a, 0x7e, 0x94, 0x22, 0x00, 0xc2, +0xac, 0x10, 0xf7, 0x7b, 0x1b, 0x8d, 0x5b, 0xde, +0xfb, 0x1f, 0x3f, 0x76, 0x4c, 0x82, 0xfd, 0x32, +0xd1, 0xb4, 0x0d, 0xc7, 0xf9, 0x92, 0xa5, 0xaf, +0x1c, 0xfc, 0x83, 0x89, 0x03, 0x5f, 0x07, 0x1c, +0x2a, 0x28, 0x90, 0xbc, 0x01, 0xde, 0x93, 0x83, +0x7f, 0xfe, 0xfe, 0x77, 0x3a, 0x8d, 0xdf, 0x23, +0x1b, 0x2e, 0x7f, 0x79, 0xaa, 0xbd, 0x7f, 0xe2, +0xb6, 0x34, 0x72, 0xbb, 0x69, 0x7c, 0xeb, 0xcf, +0xaf, 0xd5, 0x69, 0x37, 0x57, 0xeb, 0xed, 0xfd, +0xd1, 0xfc, 0x77, 0x89, 0xa6, 0xff, 0x04, 0x08, +0x00, 0x95, 0x10, 0x68, 0x61, 0xd3, 0x26, 0xea, +0xa0, 0x4f, 0x6f, 0x63, 0x0f, 0x01, 0x9f, 0xde, +0xbb, 0x69, 0x5c, 0xcb, 0xa5, 0x26, 0x84, 0x40, +0x40, 0x39, 0xec, 0x86, 0x4d, 0x73, 0x02, 0xec, +0x21, 0xc0, 0x17, 0x03, 0x72, 0xe3, 0x76, 0x69, +0xbb, 0xde, 0x20, 0x77, 0x60, 0x2e, 0x8d, 0x6f, +0xba, 0xb8, 0x54, 0x8f, 0x01, 0x7e, 0xea, 0x8f, +0xec, 0xbe, 0x1b, 0x9c, 0xc1, 0x2a, 0x49, 0x08, +0x2c, 0xef, 0x73, 0x54, 0x79, 0x1f, 0x5b, 0x0d, +0x2b, 0xcd, 0xd5, 0xac, 0x10, 0x88, 0xaa, 0x36, +0x4e, 0x40, 0xba, 0x18, 0xe8, 0x7b, 0x48, 0x66, +0x2f, 0x7e, 0x71, 0xee, 0x94, 0xf6, 0x40, 0x63, +0x2d, 0x5c, 0x05, 0xa0, 0x60, 0x8b, 0xd2, 0x41, +0x41, 0x57, 0xab, 0x80, 0x82, 0xfb, 0xcd, 0x80, +0x82, 0x25, 0x66, 0x40, 0xc1, 0xb3, 0x95, 0x02, +0x05, 0xb9, 0x66, 0xbd, 0x75, 0x5a, 0x3a, 0x19, +0x94, 0x40, 0xc1, 0x51, 0xc5, 0xe4, 0x9d, 0xb6, +0x9d, 0x5c, 0x6f, 0x09, 0xf0, 0x4f, 0x80, 0x7f, +0xd6, 0x02, 0xff, 0x4a, 0x7f, 0xfa, 0x77, 0xca, +0x5c, 0xa5, 0x69, 0xfe, 0x5a, 0x01, 0x50, 0xd9, +0xb8, 0x5f, 0xf5, 0xde, 0x7f, 0x27, 0xdc, 0xfc, +0xf8, 0x89, 0x9f, 0x13, 0xfa, 0x78, 0x9c, 0xff, +0x37, 0x83, 0x71, 0x7e, 0x01, 0xde, 0x7f, 0x0b, +0x00, 0xe0, 0xcf, 0x00, 0x01, 0x3f, 0x83, 0x25, +0xf0, 0x71, 0x4c, 0x0d, 0xb6, 0xe2, 0x09, 0xff, +0x5d, 0xb8, 0x03, 0x7e, 0x8d, 0xdf, 0xe7, 0x6b, +0xf8, 0x00, 0xf0, 0xcf, 0xf3, 0xf0, 0xb6, 0x5d, +0x98, 0x0a, 0x48, 0xcd, 0x3f, 0x75, 0x0b, 0x6d, +0xc9, 0x4c, 0x27, 0xbf, 0xcb, 0xc6, 0xd1, 0xbe, +0xfc, 0x7a, 0xe5, 0xd7, 0xa6, 0xc7, 0xe1, 0x64, +0x55, 0xf3, 0x4f, 0xfd, 0x0b, 0xea, 0x19, 0xd1, +0xf4, 0x9f, 0x20, 0x01, 0xa0, 0x32, 0x13, 0xea, +0x3a, 0xb9, 0xdd, 0xea, 0x77, 0xfc, 0x4d, 0x78, +0x08, 0x78, 0xf6, 0xdc, 0x8e, 0xf8, 0xe1, 0xf9, +0x16, 0x08, 0x81, 0xf2, 0x73, 0x02, 0xee, 0xed, +0x36, 0xc0, 0x3a, 0x38, 0x5b, 0xcb, 0x07, 0x18, +0xe7, 0x0e, 0xcc, 0x81, 0xf1, 0x8e, 0xba, 0xf1, +0x73, 0x42, 0xa1, 0xfa, 0x34, 0x90, 0x7d, 0x01, +0xc2, 0xb1, 0xfb, 0xf7, 0x68, 0xb7, 0xc9, 0x60, +0xa2, 0x90, 0xa2, 0x6d, 0xac, 0xcb, 0xc0, 0x0d, +0xc4, 0xd1, 0x92, 0x5e, 0x87, 0xf1, 0x6b, 0x8b, +0x25, 0x13, 0xa2, 0xe9, 0x98, 0x10, 0x54, 0x15, +0x27, 0x60, 0x57, 0x06, 0x27, 0xe0, 0xd1, 0x69, +0x2b, 0x2e, 0x05, 0x8a, 0x65, 0xf6, 0xe2, 0x9e, +0x63, 0xfb, 0xe4, 0xc7, 0x4f, 0x0e, 0x28, 0x78, +0xda, 0x0c, 0x28, 0x58, 0x3e, 0x6b, 0xe1, 0x99, +0x23, 0x4e, 0x50, 0xd8, 0x6b, 0x1a, 0x21, 0x10, +0x3c, 0xe5, 0x20, 0x79, 0xee, 0xce, 0x15, 0xe0, +0x5f, 0x19, 0xe0, 0xdf, 0x68, 0x01, 0xfe, 0x55, +0x18, 0xfc, 0x1b, 0x74, 0xce, 0x4b, 0xd7, 0xfc, +0x51, 0x91, 0x59, 0x49, 0x56, 0xdb, 0xfb, 0xf3, +0x88, 0x9e, 0x4f, 0xfb, 0xa4, 0x71, 0x3e, 0x00, +0x40, 0xa3, 0x71, 0x3e, 0x6e, 0xf8, 0xaf, 0xc0, +0xd2, 0x97, 0x4f, 0x00, 0xff, 0x0d, 0x67, 0xbf, +0x73, 0xa7, 0x4e, 0x49, 0x4f, 0xf9, 0xfc, 0xb4, +0xff, 0x4f, 0x3c, 0xf5, 0xcb, 0xc1, 0x3f, 0x3c, +0x0d, 0xd8, 0x8b, 0x0b, 0x01, 0xf5, 0xde, 0x7f, +0xf6, 0xa9, 0x54, 0xa3, 0x68, 0x5f, 0x7e, 0xbd, +0xf2, 0x6b, 0x53, 0xbd, 0xf7, 0x47, 0xe3, 0xbf, +0x87, 0xea, 0x27, 0x1a, 0xfe, 0x13, 0x2a, 0x00, +0xe4, 0x7a, 0xab, 0x61, 0xe0, 0xeb, 0xf0, 0x10, +0x78, 0xdf, 0x94, 0x87, 0x00, 0xb2, 0x07, 0xa4, +0xf8, 0x61, 0x49, 0x08, 0x68, 0xc5, 0x40, 0x55, +0x71, 0x02, 0x72, 0xee, 0xc0, 0x44, 0x4c, 0x01, +0xd4, 0x0d, 0x9f, 0xc1, 0xc0, 0x89, 0xb8, 0x26, +0x98, 0x0d, 0x00, 0x50, 0xbd, 0xfb, 0x4f, 0x84, +0xd5, 0xf0, 0xa6, 0x57, 0xaf, 0xab, 0xb2, 0x07, +0xce, 0xa3, 0xa1, 0x6a, 0x9e, 0xb0, 0xe3, 0x4c, +0x98, 0x14, 0x45, 0xf5, 0x3b, 0x81, 0x3d, 0x7d, +0x62, 0x15, 0x73, 0x02, 0xa6, 0xd7, 0x03, 0xd3, +0xf9, 0x62, 0x00, 0xe9, 0x87, 0x7c, 0x85, 0x21, +0xb1, 0x17, 0x7d, 0xf7, 0xff, 0x68, 0x87, 0x1c, +0x85, 0x71, 0xf5, 0x01, 0x14, 0x6c, 0x57, 0x51, +0x50, 0xf0, 0x82, 0xb2, 0x16, 0x98, 0x67, 0x21, +0x28, 0xb8, 0xa0, 0xdb, 0x65, 0x0a, 0x1b, 0x5d, +0xa2, 0x58, 0x0b, 0x07, 0x7a, 0x16, 0x91, 0xfb, +0xd1, 0x2c, 0x01, 0xfe, 0x59, 0x09, 0xfc, 0x1b, +0x5e, 0xc3, 0xe0, 0xdf, 0x1b, 0xb5, 0x04, 0xfc, +0x93, 0xe2, 0x7e, 0xd9, 0xf2, 0x57, 0x25, 0x00, +0x6e, 0x7f, 0xfa, 0x17, 0xab, 0xec, 0xfd, 0x79, +0x02, 0x70, 0x1e, 0x4f, 0xee, 0xca, 0x38, 0x9f, +0x2d, 0x7d, 0x0d, 0xc6, 0xf9, 0xdc, 0xf0, 0xb9, +0xf1, 0x7f, 0x27, 0x07, 0xff, 0x40, 0x10, 0xb0, +0x30, 0x60, 0x81, 0xc0, 0x42, 0xe1, 0x7d, 0xad, +0x53, 0x20, 0x5f, 0x0d, 0xf0, 0xde, 0x9f, 0x83, +0x7e, 0x58, 0x00, 0xac, 0x2c, 0x4a, 0x53, 0x9d, +0xfb, 0x25, 0x2a, 0xe7, 0x7e, 0xfc, 0xda, 0xb4, +0xbf, 0xbc, 0x56, 0xda, 0xfb, 0xfb, 0x69, 0x9a, +0x3f, 0x97, 0xaf, 0x68, 0xf6, 0x42, 0x00, 0xe8, +0x3c, 0x04, 0x1a, 0x87, 0x4d, 0xb0, 0xef, 0xb8, +0xe1, 0x1f, 0x86, 0x1e, 0x02, 0x7c, 0x41, 0xe0, +0xd4, 0x25, 0x15, 0xf1, 0xc3, 0x61, 0x34, 0x50, +0x25, 0x04, 0xca, 0xcb, 0x09, 0x0c, 0x2d, 0x87, +0x9f, 0x40, 0x50, 0x67, 0x7d, 0xe3, 0x20, 0x27, +0x34, 0x4b, 0xe6, 0x04, 0x6c, 0xe1, 0xbe, 0xc7, +0x3c, 0x40, 0x69, 0x6b, 0x02, 0x27, 0x44, 0x17, +0xdb, 0xe0, 0x5a, 0xc0, 0x9c, 0x3d, 0x71, 0x68, +0xe7, 0x6d, 0xa5, 0x72, 0x02, 0x36, 0x55, 0xcc, +0x09, 0xcc, 0xc0, 0xc5, 0x80, 0x2f, 0xd6, 0x18, +0x61, 0xda, 0xab, 0x0c, 0xdf, 0x5e, 0x7b, 0x7f, +0x9c, 0xdc, 0x6a, 0x75, 0x15, 0x82, 0x82, 0x9b, +0xf5, 0x41, 0x41, 0x03, 0x21, 0x60, 0x29, 0x28, +0xe8, 0x6b, 0x21, 0x28, 0x18, 0x52, 0x4d, 0xa0, +0xe0, 0xbc, 0x3e, 0x17, 0x29, 0x74, 0x94, 0x16, +0x14, 0xc4, 0xf9, 0xa0, 0xff, 0xcc, 0xbd, 0xe4, +0xfa, 0x76, 0x9a, 0x15, 0xfc, 0xfe, 0x05, 0xf8, +0x57, 0x97, 0xc0, 0x3f, 0x6b, 0xfa, 0xfd, 0xab, +0x9b, 0xff, 0xb0, 0x93, 0xfe, 0x7a, 0xcd, 0x7f, +0x71, 0x5e, 0xaa, 0xd5, 0xf6, 0xfe, 0x47, 0x00, +0xfc, 0xe9, 0x8d, 0xf3, 0x31, 0xca, 0x97, 0xc7, +0xf9, 0xfc, 0xb6, 0x13, 0x78, 0x1f, 0x8f, 0xfc, +0x39, 0xf8, 0xe7, 0x16, 0xae, 0x03, 0x78, 0x15, +0xc0, 0x2b, 0x81, 0xbb, 0x58, 0x0d, 0x3c, 0xc0, +0x14, 0x81, 0x83, 0x7f, 0xd8, 0x29, 0x90, 0x57, +0x07, 0x79, 0x38, 0xfb, 0x53, 0xef, 0xfd, 0x5d, +0x6f, 0x1a, 0x47, 0xfb, 0x4a, 0xaf, 0xd1, 0x1b, +0xab, 0xc9, 0x77, 0xdf, 0x16, 0x5d, 0xf3, 0xcf, +0x4f, 0xdd, 0x2a, 0x1a, 0xbd, 0x10, 0x00, 0x46, +0xf5, 0xc6, 0x73, 0x1e, 0xbf, 0x1a, 0xde, 0x34, +0xc2, 0x6b, 0x7a, 0xe7, 0x4d, 0xdf, 0x1a, 0x7a, +0x08, 0xf0, 0xbf, 0x3b, 0x76, 0x4a, 0x42, 0x53, +0x0f, 0x2e, 0x45, 0x08, 0x04, 0x54, 0x2a, 0x96, +0x58, 0xed, 0x27, 0x30, 0x1a, 0xbc, 0x40, 0x54, +0xbf, 0xe3, 0x4a, 0xe3, 0x5e, 0xfb, 0xc2, 0xdb, +0x30, 0x0e, 0x5a, 0x25, 0x71, 0x02, 0x2c, 0x04, +0xd8, 0x60, 0x68, 0x69, 0xef, 0xc3, 0x46, 0x0d, +0x3e, 0x14, 0x46, 0x42, 0xdc, 0x4c, 0x79, 0x4d, +0x60, 0xce, 0x4c, 0x88, 0x33, 0x08, 0xa6, 0xb5, +0x58, 0x53, 0x63, 0x9c, 0x80, 0x73, 0x9b, 0x54, +0xf2, 0xef, 0xa9, 0x5b, 0xbd, 0x78, 0x76, 0xdf, +0x7e, 0x6f, 0x52, 0x8b, 0xa8, 0x2a, 0x00, 0x05, +0x93, 0xf5, 0x40, 0x41, 0x27, 0x3d, 0x50, 0x30, +0xa3, 0x54, 0x50, 0x50, 0x12, 0x02, 0x75, 0x00, +0x14, 0x9c, 0xf3, 0xd2, 0x79, 0x38, 0x09, 0x6a, +0x41, 0x41, 0x18, 0x0a, 0xf9, 0x2c, 0xcf, 0x27, +0xe7, 0x2b, 0x29, 0x02, 0xfc, 0x13, 0xe0, 0x5f, +0x85, 0xc1, 0xbf, 0xbe, 0xef, 0x4f, 0x45, 0xdc, +0x6f, 0x8c, 0xd2, 0xfc, 0xbd, 0x70, 0x02, 0xf8, +0xe9, 0x97, 0xff, 0xa8, 0x70, 0xf3, 0xff, 0x1a, +0x54, 0x3f, 0xd3, 0xfe, 0x2c, 0x00, 0xb6, 0xe1, +0x89, 0x9d, 0xa1, 0x3f, 0x79, 0x9c, 0xcf, 0x4f, +0xfd, 0xfc, 0xf4, 0x2f, 0x8f, 0xf3, 0x79, 0x2a, +0xc0, 0xb0, 0x1f, 0x43, 0x7f, 0xea, 0xe0, 0x1f, +0x86, 0x02, 0x19, 0x0e, 0x64, 0x48, 0x50, 0x76, +0x0a, 0xdc, 0x83, 0xd1, 0xbf, 0x72, 0xef, 0x9f, +0x99, 0x46, 0xbe, 0x97, 0x53, 0x8c, 0xa2, 0x7d, +0xf9, 0xf5, 0xc9, 0xaf, 0x45, 0x8f, 0x43, 0xc9, +0xf2, 0x53, 0x3f, 0x37, 0xff, 0xf7, 0x51, 0x4f, +0x89, 0x46, 0x2f, 0x04, 0x80, 0x39, 0x21, 0xf0, +0xdb, 0x51, 0xcd, 0xe6, 0xce, 0x73, 0xee, 0x9a, +0x66, 0xd2, 0x43, 0x60, 0x5a, 0xfb, 0x78, 0xa9, +0xe1, 0x0f, 0x7c, 0xde, 0xd7, 0x4a, 0x9c, 0x80, +0xf1, 0x7a, 0x60, 0x5c, 0xd3, 0x05, 0x92, 0x01, +0x90, 0xda, 0x01, 0xd0, 0xbd, 0xdd, 0x46, 0x89, +0x13, 0x18, 0xa5, 0x15, 0x02, 0xd3, 0x5b, 0xaf, +0x03, 0x00, 0x78, 0x5c, 0x15, 0x51, 0x7c, 0x54, +0xf2, 0x13, 0xe0, 0xec, 0x00, 0x3d, 0x0b, 0x61, +0x38, 0x14, 0x1a, 0x26, 0x19, 0x26, 0xbc, 0xf4, +0x2e, 0xd9, 0x49, 0x22, 0x60, 0x85, 0x5e, 0xb3, +0xad, 0xd8, 0x7a, 0xc0, 0x72, 0x4e, 0x40, 0x7d, +0x46, 0xe8, 0xd2, 0x2e, 0x9d, 0x02, 0xfb, 0xec, +0x97, 0x27, 0x2d, 0x0f, 0xdd, 0xba, 0x64, 0xfd, +0x32, 0xa1, 0xd9, 0x72, 0xab, 0x81, 0x82, 0x0e, +0x15, 0x06, 0x05, 0xf3, 0xcc, 0x80, 0x82, 0x15, +0xb5, 0x16, 0xae, 0x42, 0x50, 0x70, 0xc0, 0x19, +0x0a, 0x1d, 0xac, 0x11, 0x02, 0x21, 0x43, 0x8e, +0x90, 0x57, 0xe2, 0x36, 0x9a, 0x71, 0x63, 0x93, +0x00, 0xff, 0x9e, 0x28, 0xf0, 0xcf, 0x3a, 0x4f, +0xff, 0xa3, 0x8a, 0x43, 0xf5, 0x9e, 0xfe, 0x63, +0xf2, 0xb3, 0x2b, 0xb5, 0xf7, 0xcf, 0xc6, 0xf8, +0x9e, 0x9b, 0x3f, 0x3f, 0xa5, 0x9f, 0xc7, 0x3d, +0xbf, 0xd1, 0x38, 0x9f, 0x2d, 0x7d, 0xe5, 0xe0, +0x1f, 0x9c, 0xf9, 0xf1, 0xb9, 0x1f, 0x9f, 0xfd, +0x9d, 0x44, 0xf0, 0x4f, 0xae, 0x1c, 0xfc, 0x83, +0xb3, 0x40, 0x3e, 0x0f, 0x64, 0x68, 0x70, 0x1b, +0x9c, 0x02, 0x8b, 0x70, 0x06, 0x28, 0x37, 0x7f, +0xde, 0xfb, 0x47, 0x9c, 0xde, 0x62, 0xf2, 0xdc, +0x8f, 0x5f, 0x8f, 0x4e, 0xa7, 0xd7, 0xab, 0x9b, +0xff, 0x4f, 0xa8, 0x5e, 0xa2, 0xc9, 0x0b, 0x01, +0x60, 0xa9, 0x10, 0xf8, 0x13, 0x02, 0x85, 0xe2, +0xc1, 0x02, 0x98, 0xf4, 0x10, 0xb0, 0x6d, 0x1b, +0x8b, 0xc6, 0xef, 0xa7, 0x13, 0x02, 0x56, 0xe3, +0x04, 0x34, 0xeb, 0x81, 0x89, 0xcd, 0x16, 0x23, +0x74, 0xe8, 0x82, 0x5e, 0xe3, 0x9e, 0x83, 0x11, +0xfa, 0x74, 0x18, 0xed, 0xb0, 0x77, 0x80, 0x7c, +0x46, 0xe8, 0xda, 0x76, 0x83, 0x14, 0x39, 0x1c, +0xdc, 0x39, 0x47, 0xf2, 0x13, 0x98, 0x8a, 0xfb, +0xfb, 0x64, 0x95, 0x73, 0xe0, 0xbc, 0x1e, 0x05, +0x92, 0xd3, 0xa0, 0x5f, 0xc7, 0x0c, 0xbd, 0xb7, +0xaf, 0xc1, 0x64, 0x81, 0x23, 0x88, 0x65, 0x10, +0xaf, 0x7a, 0xfc, 0x04, 0x8c, 0xd7, 0x03, 0x6e, +0x1d, 0xb2, 0x29, 0x58, 0x7b, 0x31, 0x80, 0x49, +0xcb, 0x7d, 0xa7, 0x8e, 0x5b, 0x1e, 0x97, 0x76, +0x31, 0x50, 0xbb, 0x41, 0xc1, 0xa2, 0x1a, 0x03, +0x05, 0x99, 0x1d, 0x98, 0x39, 0xec, 0x24, 0x85, +0xbe, 0xa9, 0x11, 0x02, 0xc1, 0xe3, 0x0e, 0x91, +0x47, 0x4e, 0xb6, 0x00, 0xff, 0xea, 0x05, 0xf8, +0xe7, 0x5e, 0x2d, 0xe0, 0x5f, 0xbf, 0xbb, 0xd3, +0xc8, 0x23, 0x33, 0x56, 0xf7, 0xf4, 0x9f, 0x1b, +0x53, 0xa9, 0xb8, 0xdf, 0x23, 0x68, 0xe2, 0xf2, +0xde, 0xff, 0x14, 0xce, 0xfc, 0xe4, 0x71, 0x3e, +0x93, 0xfe, 0x2c, 0x0e, 0x98, 0xfc, 0x97, 0xc7, +0xf9, 0x6c, 0xf0, 0xc3, 0x46, 0x3f, 0x6c, 0xf8, +0xc3, 0x42, 0x81, 0x83, 0x7f, 0x4e, 0x21, 0xf8, +0x87, 0x0d, 0x81, 0xd8, 0x18, 0x88, 0x0d, 0x82, +0xf6, 0xc0, 0x28, 0x88, 0x7f, 0x3d, 0x37, 0x7d, +0x79, 0xef, 0xbf, 0x62, 0x7f, 0xaa, 0xc9, 0x73, +0x3f, 0x7e, 0x3d, 0xda, 0x5f, 0x5a, 0xab, 0x6e, +0xfe, 0x5c, 0xee, 0xa2, 0xaf, 0x09, 0x01, 0x50, +0x01, 0x21, 0xe0, 0xde, 0x60, 0x7c, 0xab, 0x65, +0x79, 0xb8, 0x0e, 0x30, 0xe1, 0x21, 0x50, 0x40, +0x13, 0x5b, 0xaf, 0x80, 0x08, 0xf0, 0x91, 0x84, +0x80, 0xb5, 0x39, 0x01, 0xdb, 0xe6, 0xcb, 0xf5, +0x26, 0x01, 0xea, 0x6b, 0x80, 0xe5, 0x00, 0x04, +0x23, 0x10, 0x42, 0xc4, 0x9e, 0x02, 0x6a, 0x3f, +0x01, 0x16, 0x07, 0x3e, 0x1d, 0x52, 0xf5, 0x3e, +0xde, 0xb3, 0xdd, 0x66, 0x49, 0x04, 0xcc, 0x68, +0x1d, 0x0f, 0x51, 0xf1, 0xae, 0xf2, 0xf6, 0xe0, +0xce, 0x79, 0x4a, 0x93, 0x2d, 0xfb, 0x8c, 0xb0, +0x74, 0xbb, 0x61, 0x6b, 0x70, 0x02, 0x1e, 0x9d, +0xf9, 0x62, 0xe0, 0x88, 0xd6, 0x5a, 0xf8, 0xd0, +0x4f, 0x0e, 0x98, 0x78, 0x98, 0xbe, 0x18, 0x10, +0xa0, 0x60, 0xe9, 0xd6, 0xc2, 0x57, 0x01, 0x0a, +0x72, 0xec, 0xb0, 0x66, 0x72, 0x15, 0xe8, 0xb0, +0x9f, 0x5c, 0x0b, 0xd3, 0x05, 0xf8, 0x57, 0xad, +0xe0, 0x5f, 0x40, 0x0d, 0x83, 0x7f, 0x33, 0x2a, +0x04, 0xfe, 0x49, 0x71, 0xbf, 0xdb, 0x74, 0xf0, +0x5f, 0x62, 0xe1, 0xce, 0x0a, 0x37, 0xff, 0x3b, +0xb0, 0xf3, 0x95, 0xf7, 0xfe, 0xfb, 0x31, 0xca, +0xe7, 0x9b, 0x7e, 0xc3, 0x71, 0xbe, 0x64, 0xe9, +0xab, 0x0a, 0xfe, 0x61, 0xab, 0x5f, 0xb6, 0xfc, +0x65, 0x4b, 0xdf, 0x62, 0x39, 0xf8, 0x07, 0x96, +0xc0, 0x6c, 0x0d, 0xcc, 0x16, 0xc1, 0x0c, 0xfd, +0xe5, 0xe1, 0xf7, 0x90, 0xf7, 0xfe, 0xeb, 0xb7, +0xe3, 0xeb, 0xf6, 0xa6, 0x71, 0xb4, 0x2f, 0xbf, +0x26, 0xa7, 0xdc, 0x88, 0x21, 0x9f, 0x7d, 0x29, +0x72, 0xe3, 0xe7, 0xca, 0x12, 0xbd, 0x4c, 0x08, +0x80, 0xca, 0x0a, 0x81, 0x56, 0x93, 0xda, 0x44, +0x15, 0xc3, 0x2f, 0xc0, 0xd8, 0x43, 0xa0, 0xd7, +0x2e, 0x1a, 0xdb, 0x62, 0xb1, 0x4a, 0x08, 0xf8, +0x5a, 0x8d, 0x13, 0x18, 0x05, 0x38, 0x70, 0xa6, +0x81, 0x4b, 0xa0, 0x61, 0x71, 0x22, 0xe1, 0xe8, +0x46, 0xf3, 0x14, 0x4e, 0x80, 0x2b, 0xa0, 0x53, +0xa6, 0x0a, 0x00, 0xbc, 0x26, 0x9d, 0x0a, 0x72, +0xee, 0xc0, 0xe4, 0x66, 0x2b, 0x69, 0x95, 0x96, +0x31, 0x58, 0x8a, 0x53, 0x41, 0x39, 0x96, 0x98, +0x57, 0x02, 0xa1, 0x68, 0xc2, 0x81, 0x9d, 0x72, +0x00, 0xec, 0xad, 0xaf, 0x11, 0x3f, 0x01, 0xc7, +0x96, 0x49, 0xe4, 0xdd, 0x75, 0x27, 0xa7, 0x0d, +0x4a, 0x9f, 0xd7, 0x80, 0x3e, 0x85, 0x3f, 0x4d, +0x85, 0x6d, 0xb2, 0xbe, 0xb5, 0x70, 0x69, 0xa0, +0x60, 0x6c, 0xdd, 0x07, 0x05, 0x3b, 0x58, 0x07, +0x14, 0x9c, 0xdf, 0xe3, 0x32, 0x85, 0x8e, 0x39, +0xaa, 0x5c, 0x0c, 0xf8, 0xfb, 0xed, 0x23, 0xa7, +0xe3, 0x29, 0x02, 0xfc, 0x13, 0xe0, 0x9f, 0xc9, +0xd1, 0x7f, 0xff, 0x3b, 0x76, 0x88, 0xfb, 0x8d, +0x55, 0x04, 0x80, 0x4f, 0x76, 0x2c, 0xe2, 0x7e, +0x7f, 0xac, 0xf4, 0xde, 0x3f, 0x17, 0xcd, 0xfc, +0x04, 0x8f, 0xf3, 0xd9, 0xd2, 0x17, 0xe3, 0xfc, +0xff, 0xa8, 0xc7, 0xf9, 0x70, 0xff, 0x63, 0x17, +0xc0, 0x4f, 0x10, 0xfc, 0xc3, 0x21, 0x3f, 0xb7, +0x11, 0xf6, 0xc3, 0xa1, 0x3f, 0x1c, 0xfe, 0xc3, +0x3f, 0xbf, 0x8f, 0xb7, 0x71, 0x28, 0x90, 0xe4, +0x14, 0x88, 0xd1, 0xff, 0x5e, 0x3c, 0xfd, 0xab, +0xf7, 0xfe, 0x3e, 0x57, 0x36, 0x1b, 0x45, 0xfb, +0xf2, 0x6b, 0xd2, 0xf6, 0x76, 0x34, 0xf6, 0xfe, +0x49, 0xea, 0xe6, 0x7f, 0xcb, 0x2f, 0x7f, 0xcb, +0x9f, 0x44, 0x0f, 0x13, 0x02, 0xc0, 0x5a, 0xf6, +0xc2, 0x3d, 0xe0, 0x21, 0x70, 0xc9, 0xa4, 0x87, +0x40, 0x8f, 0xad, 0x04, 0x7e, 0xa0, 0x9c, 0x42, +0xc0, 0x32, 0x4e, 0xc0, 0x11, 0xc4, 0x3c, 0x9f, +0xfb, 0x95, 0x26, 0x02, 0xdc, 0xdb, 0x25, 0x29, +0x7e, 0x02, 0x32, 0x27, 0x10, 0x04, 0xcf, 0x01, +0x7d, 0x50, 0x70, 0xab, 0xc4, 0x09, 0xf0, 0x34, +0xc0, 0xa5, 0xcd, 0x06, 0x84, 0x12, 0xad, 0x91, +0x7e, 0x3e, 0xad, 0x45, 0xac, 0x11, 0x3c, 0xc8, +0xe9, 0x86, 0xbe, 0x1d, 0xd2, 0x6b, 0x84, 0x13, +0x98, 0xd1, 0x7a, 0x33, 0x2e, 0x06, 0xf6, 0xe8, +0x04, 0x56, 0xcf, 0x5d, 0xf7, 0x6c, 0x01, 0x3f, +0x9a, 0x07, 0x05, 0xa3, 0x4b, 0x05, 0x05, 0x35, +0x7f, 0xd6, 0xfa, 0x72, 0x59, 0x0b, 0xd7, 0x07, +0x50, 0x90, 0xad, 0x85, 0x43, 0x46, 0x69, 0x81, +0x56, 0x4c, 0x05, 0x7c, 0xe6, 0xe6, 0xd3, 0xf4, +0x77, 0x92, 0x4c, 0x8e, 0xfe, 0xed, 0x05, 0xf8, +0x57, 0x05, 0xe0, 0x9f, 0x5f, 0x8d, 0x82, 0x7f, +0xe6, 0x9f, 0xfe, 0x75, 0xe0, 0x9f, 0xcd, 0xae, +0xf9, 0xda, 0xe6, 0xaf, 0x11, 0x00, 0x19, 0x47, +0x0a, 0x2b, 0xd4, 0xfc, 0x1f, 0x3c, 0x78, 0x40, +0x39, 0x70, 0xe5, 0xe3, 0xe6, 0xcf, 0xf7, 0xf9, +0xa7, 0x00, 0xfb, 0xb1, 0x9f, 0xbf, 0xe1, 0x38, +0x9f, 0x7d, 0xff, 0xd9, 0xff, 0x5f, 0x0e, 0xfe, +0xe1, 0xa7, 0x7d, 0x8e, 0xfb, 0xe5, 0xd8, 0xdf, +0xab, 0xf0, 0x08, 0x90, 0x83, 0x7f, 0x78, 0x3a, +0xc0, 0xd0, 0xdf, 0x41, 0x4c, 0x10, 0xa4, 0xe6, +0x9f, 0xa6, 0xd9, 0xfb, 0xcf, 0x3c, 0x9d, 0x62, +0xf2, 0xd6, 0x9f, 0x5f, 0x7f, 0x4e, 0xa7, 0x12, +0xd4, 0xcd, 0xff, 0x7f, 0x68, 0xfe, 0xdd, 0x45, +0xdf, 0x12, 0x02, 0xc0, 0xea, 0x35, 0xa8, 0xa1, +0xff, 0x9b, 0xd3, 0xda, 0xc7, 0x7d, 0x68, 0xca, +0x43, 0xc0, 0xb5, 0x5b, 0x96, 0x14, 0x3f, 0x3c, +0x40, 0x25, 0x04, 0x06, 0x5a, 0x81, 0x13, 0x60, +0x36, 0x80, 0xd3, 0x05, 0x57, 0xf4, 0x3d, 0x6a, +0x24, 0x00, 0x22, 0xbb, 0xef, 0x92, 0xce, 0x08, +0xfd, 0x3b, 0xa6, 0x23, 0x82, 0x38, 0x45, 0x9a, +0x08, 0xb0, 0x18, 0x08, 0xc4, 0x24, 0x40, 0x7d, +0x3a, 0x38, 0x17, 0x9e, 0xfd, 0xba, 0x10, 0xa2, +0x45, 0x52, 0x19, 0xae, 0x0c, 0xf4, 0xcd, 0x88, +0x8a, 0xd1, 0x4c, 0xa3, 0x2b, 0xc0, 0x09, 0xc4, +0x56, 0x9a, 0x13, 0x70, 0x6a, 0x03, 0xdb, 0xce, +0x5e, 0x85, 0xf2, 0xe7, 0xf5, 0xb1, 0x47, 0xb7, +0xbc, 0x5f, 0x26, 0xe1, 0x1c, 0xb2, 0x2c, 0x50, +0xd0, 0xb6, 0x5c, 0xa0, 0x60, 0x92, 0x19, 0x50, +0x30, 0xbd, 0x56, 0x82, 0x82, 0x73, 0xcb, 0x09, +0x0a, 0x46, 0xbe, 0xf6, 0x36, 0x85, 0x0c, 0xd3, +0x08, 0x01, 0xe6, 0x04, 0xbc, 0xa2, 0xb7, 0x91, +0xe3, 0xb5, 0xc4, 0x4a, 0x35, 0xff, 0x29, 0x02, +0xfc, 0xab, 0x17, 0xe0, 0xdf, 0x0b, 0xb7, 0x1c, +0xc8, 0x33, 0x27, 0x56, 0x11, 0x00, 0x7e, 0x59, +0x6b, 0xe8, 0xe7, 0x5f, 0xee, 0x57, 0x48, 0x00, +0x1c, 0x85, 0x77, 0xbf, 0xbc, 0xf7, 0x3f, 0x8a, +0x93, 0x3e, 0x69, 0x9c, 0xcf, 0x96, 0xbe, 0x26, +0xc6, 0xf9, 0x9c, 0x00, 0xf8, 0xa3, 0x1c, 0xfc, +0x03, 0x81, 0xc0, 0x7b, 0xff, 0xf3, 0xa7, 0x4f, +0xd3, 0x97, 0x5f, 0x7c, 0x41, 0xff, 0x95, 0x83, +0x7f, 0xc0, 0x07, 0xf0, 0x35, 0x00, 0x37, 0x7d, +0x1e, 0xfb, 0xf3, 0xd3, 0xff, 0xf2, 0xfd, 0x5b, +0x8c, 0xa2, 0x7d, 0xf9, 0x35, 0xc9, 0xaf, 0x41, +0xfb, 0x8b, 0x6b, 0xd4, 0xcd, 0x1f, 0xb5, 0x65, +0x86, 0xe8, 0x55, 0x42, 0x00, 0x54, 0x69, 0x0d, +0x69, 0x1c, 0x62, 0x63, 0xdf, 0x31, 0xf1, 0x5f, +0xa6, 0x3c, 0x04, 0x66, 0x74, 0xd9, 0x82, 0xf8, +0xe1, 0x10, 0xad, 0x10, 0xb0, 0x2e, 0x27, 0x30, +0xae, 0xc9, 0x7c, 0x9c, 0xd4, 0xc5, 0x4b, 0x0d, +0xde, 0x07, 0x0d, 0x7f, 0x3c, 0x2e, 0x07, 0xc6, +0x37, 0x5d, 0xa4, 0x34, 0x6e, 0x3e, 0x15, 0x1c, +0xd7, 0x64, 0xa1, 0x34, 0x15, 0xe0, 0xf0, 0x21, +0x75, 0xa4, 0x30, 0xdb, 0x0a, 0xab, 0xd3, 0x08, +0xbd, 0xdb, 0x6f, 0x31, 0xbb, 0x62, 0xe0, 0xab, +0x01, 0xb7, 0xb6, 0xc9, 0x95, 0xe2, 0x04, 0xf4, +0x9f, 0xcc, 0xcb, 0xc7, 0x09, 0xb8, 0xb4, 0xcf, +0xc0, 0xc5, 0xc0, 0x01, 0xad, 0xb5, 0x70, 0xc9, +0x43, 0x97, 0xce, 0x19, 0x8f, 0x26, 0x34, 0x5d, +0x5e, 0xe7, 0x41, 0xc1, 0x60, 0x3d, 0x50, 0xf0, +0x68, 0xa9, 0xa0, 0xe0, 0x2c, 0x43, 0x3e, 0xa0, +0x63, 0x45, 0x40, 0xc1, 0x6b, 0x14, 0x31, 0xf8, +0x14, 0xb2, 0x05, 0x34, 0x42, 0x20, 0x78, 0xf8, +0x61, 0x72, 0xdf, 0x94, 0x4d, 0xf6, 0xb7, 0x04, +0xf8, 0x57, 0x3d, 0xe0, 0x9f, 0x4f, 0xad, 0x03, +0xff, 0xf8, 0xe9, 0x7f, 0xda, 0xb6, 0x25, 0xaa, +0xa7, 0xff, 0xe8, 0x0a, 0xc7, 0xfd, 0xaa, 0xf7, +0xfe, 0xfb, 0x40, 0xf6, 0x2b, 0xe3, 0x7c, 0x58, +0xfa, 0xca, 0xe3, 0xfc, 0xe3, 0xda, 0x71, 0xfe, +0xc5, 0x73, 0xe7, 0xe8, 0x1b, 0x58, 0xfa, 0x32, +0xe1, 0xcf, 0xa4, 0x7f, 0x1e, 0x1a, 0x3c, 0x93, +0xff, 0x7f, 0xff, 0xe4, 0x13, 0xba, 0x07, 0x0f, +0x00, 0xbe, 0x08, 0xe0, 0xcb, 0x00, 0x86, 0xfe, +0xb6, 0xaa, 0xf6, 0xfe, 0x09, 0xdb, 0x21, 0xcc, +0x6f, 0x1a, 0x47, 0xfb, 0xf2, 0x6b, 0x70, 0xca, +0xf5, 0x68, 0xf2, 0xd9, 0xa3, 0xde, 0xfb, 0xe3, +0x17, 0x88, 0xfe, 0x24, 0x04, 0x40, 0x75, 0xd4, +0xeb, 0xcf, 0xb9, 0xb1, 0x87, 0x80, 0x2f, 0x3c, +0x04, 0xfe, 0x2b, 0x3b, 0xde, 0xa9, 0x3d, 0x04, +0x1c, 0x3a, 0x6e, 0x24, 0xb8, 0x0e, 0x1a, 0x08, +0x01, 0x5f, 0xab, 0xfb, 0x09, 0xf0, 0x84, 0x60, +0x49, 0xef, 0x83, 0x4a, 0xe3, 0x5e, 0xfd, 0xc2, +0x19, 0x80, 0x84, 0x2b, 0x24, 0x11, 0xe0, 0xd0, +0x72, 0xb5, 0x9e, 0xcb, 0xe0, 0xcc, 0xae, 0xdb, +0x95, 0x24, 0x42, 0x1b, 0x04, 0xf6, 0x18, 0x1a, +0x0c, 0xc5, 0xc3, 0x51, 0x50, 0xfd, 0x36, 0xfe, +0x79, 0x08, 0x18, 0x81, 0x9a, 0xcc, 0x1d, 0x70, +0xef, 0x98, 0x43, 0xc1, 0xfd, 0x34, 0x42, 0x0b, +0x16, 0xc3, 0xf7, 0xa7, 0x77, 0xd8, 0xac, 0x30, +0x0c, 0x35, 0x09, 0x0a, 0x7a, 0x58, 0x08, 0x0a, +0xfa, 0x9b, 0x05, 0x05, 0x8b, 0xcd, 0x80, 0x82, +0xa7, 0xcc, 0x80, 0x82, 0xef, 0x94, 0x0f, 0x14, +0x84, 0xb5, 0x70, 0xf8, 0xc8, 0xe3, 0xf0, 0x0e, +0xd0, 0xbc, 0x4e, 0x83, 0x26, 0x1d, 0x20, 0x67, +0x7c, 0x63, 0x15, 0xe0, 0xdf, 0x93, 0x07, 0xfe, +0xbd, 0xfc, 0xde, 0x0c, 0xc4, 0xfd, 0xc6, 0x28, +0xcd, 0x3f, 0x30, 0x33, 0xae, 0x42, 0x71, 0xbf, +0xea, 0xbd, 0x7f, 0x36, 0x9e, 0xda, 0xf9, 0xa9, +0x9f, 0xc7, 0xf9, 0x6c, 0xf9, 0xfb, 0x3d, 0x2c, +0x7d, 0xd5, 0xe3, 0x7c, 0xbe, 0xe5, 0xff, 0xe7, +0xe7, 0x9f, 0xeb, 0x07, 0xff, 0xe0, 0x29, 0x9f, +0x6f, 0xff, 0xf9, 0x1f, 0x75, 0xf0, 0x4f, 0x81, +0xea, 0xe4, 0x2f, 0x05, 0x7b, 0x7f, 0xaf, 0x2b, +0x9b, 0xb4, 0xd1, 0xbe, 0xeb, 0xf5, 0x9a, 0xbf, +0xcd, 0xed, 0x28, 0xf2, 0x38, 0x90, 0x2c, 0x37, +0x7e, 0xae, 0xf7, 0x50, 0x7f, 0x10, 0xbd, 0x49, +0x08, 0x80, 0xea, 0x16, 0x02, 0xbf, 0x1b, 0xd9, +0x6c, 0xce, 0x42, 0x78, 0x08, 0xfc, 0x14, 0x66, +0xe4, 0x21, 0x70, 0x88, 0xa6, 0xb6, 0x8f, 0x93, +0x4e, 0x07, 0x4d, 0x0a, 0x01, 0x8b, 0xd6, 0x03, +0x65, 0xfb, 0x09, 0xb0, 0x9d, 0x70, 0xbc, 0xca, +0x0e, 0x78, 0xc3, 0x2b, 0x97, 0xa5, 0xf0, 0x21, +0x5e, 0x0f, 0x78, 0xb4, 0x4b, 0xd6, 0x6b, 0xf2, +0x7e, 0x1d, 0xd3, 0x94, 0xeb, 0x81, 0x39, 0xd8, +0xb9, 0xab, 0xdf, 0x67, 0xdf, 0x72, 0x2d, 0xc0, +0xc0, 0xd5, 0xd2, 0xb9, 0xa0, 0xfa, 0xed, 0xcc, +0x05, 0xc8, 0xb9, 0x03, 0x1a, 0x21, 0xb0, 0xbc, +0x5a, 0x39, 0x01, 0x7e, 0x62, 0xf7, 0x80, 0xa3, +0x61, 0x68, 0xff, 0xa3, 0x8f, 0x35, 0xd6, 0xc2, +0x07, 0xee, 0xd9, 0x63, 0x2d, 0x62, 0x0d, 0x50, +0xd0, 0xbe, 0x4e, 0x82, 0x82, 0xe7, 0xcd, 0x80, +0x82, 0xe6, 0xad, 0x85, 0x25, 0x50, 0xf0, 0x65, +0xcd, 0xeb, 0xd4, 0xdf, 0xb9, 0x80, 0xa6, 0x1f, +0x4c, 0x7e, 0x42, 0xc0, 0xbf, 0x88, 0x1a, 0x06, +0xff, 0xbc, 0x6a, 0x1c, 0xfc, 0xe3, 0xa7, 0x7f, +0xc7, 0xec, 0x15, 0x7a, 0x4f, 0xff, 0xc5, 0x57, +0xce, 0x55, 0x68, 0xef, 0xcf, 0xb0, 0x9f, 0xbc, +0xf7, 0x3f, 0x82, 0xd3, 0x3e, 0xbd, 0x71, 0x3e, +0x5b, 0xfa, 0x6a, 0xc7, 0xf9, 0x7c, 0xf6, 0xc7, +0x6e, 0x7e, 0xfc, 0x6b, 0xd8, 0xdd, 0x6f, 0x3f, +0x9e, 0xf0, 0xf7, 0x71, 0xf0, 0x0f, 0x5c, 0xff, +0xd8, 0xfd, 0xef, 0x33, 0x4c, 0x00, 0xd8, 0x0d, +0x90, 0x43, 0x7e, 0x8a, 0xf1, 0xb1, 0xdc, 0xfc, +0x79, 0xfc, 0xcf, 0x15, 0x7e, 0x26, 0xc5, 0xe4, +0xb9, 0x1f, 0xbf, 0xe6, 0x9c, 0x4f, 0x24, 0xa8, +0x9b, 0xff, 0xf7, 0xa8, 0xce, 0xa2, 0x1f, 0x09, +0x01, 0x50, 0x93, 0x42, 0xe0, 0xcf, 0xf0, 0x10, +0xd8, 0xe0, 0xd6, 0x3d, 0xfb, 0x81, 0xb1, 0x87, +0xc0, 0x7e, 0xb2, 0x69, 0x1b, 0x4d, 0x03, 0x1b, +0xf8, 0x48, 0x42, 0xa0, 0x34, 0x4e, 0x40, 0xbd, +0x1e, 0x28, 0xaf, 0x9f, 0xc0, 0x64, 0x9c, 0x0f, +0x72, 0x5e, 0x80, 0xba, 0x71, 0x47, 0x74, 0xdb, +0x41, 0x53, 0x5a, 0xac, 0xa0, 0xb5, 0x2f, 0x9e, +0xd3, 0x13, 0x07, 0x13, 0x9a, 0x2e, 0x91, 0x44, +0xc0, 0x04, 0x08, 0x07, 0xf5, 0xfb, 0x18, 0x02, +0x1c, 0x0f, 0x40, 0x70, 0x62, 0xd3, 0x65, 0x98, +0x2a, 0x1c, 0x56, 0x45, 0x10, 0x5f, 0xc5, 0xc4, +0x60, 0xa5, 0xde, 0x93, 0xb7, 0x69, 0x21, 0x50, +0xb5, 0x9c, 0x80, 0xea, 0x62, 0x40, 0x12, 0x02, +0x7e, 0xbd, 0xf7, 0xdd, 0x9b, 0x02, 0x8f, 0x04, +0x3d, 0x6b, 0x61, 0x93, 0xa0, 0x60, 0xcc, 0x93, +0x03, 0x0a, 0x4a, 0x42, 0xc0, 0xfc, 0x5a, 0x60, +0x5e, 0xef, 0x77, 0x29, 0x64, 0x8c, 0x26, 0xb0, +0x89, 0xaf, 0x06, 0x7c, 0x82, 0x77, 0x91, 0xc3, +0xe9, 0x44, 0x01, 0xfe, 0xd5, 0x73, 0xf0, 0xef, +0x75, 0x29, 0xee, 0x57, 0xd7, 0xfc, 0x43, 0x33, +0x13, 0x2b, 0x34, 0xfa, 0x2f, 0xc1, 0xfe, 0x5e, +0xde, 0xfb, 0x33, 0xac, 0xc7, 0xe3, 0x7c, 0x26, +0xff, 0x3f, 0x93, 0xc7, 0xf9, 0x68, 0xee, 0x3c, +0xce, 0x67, 0xff, 0xfe, 0xbb, 0xf0, 0xf1, 0xe7, +0xe6, 0xff, 0x31, 0x44, 0x80, 0x1c, 0xfc, 0xc3, +0x7e, 0xff, 0x2c, 0x12, 0x58, 0x2c, 0x9c, 0x83, +0x68, 0x60, 0xa7, 0xc0, 0x12, 0xac, 0x0a, 0x24, +0xda, 0x5f, 0xbb, 0xf7, 0x5f, 0x76, 0x60, 0x8b, +0x51, 0xf3, 0xe7, 0xd7, 0x22, 0xbf, 0xee, 0xec, +0xdf, 0x5d, 0xa3, 0x6e, 0xfe, 0x5c, 0x76, 0xa2, +0x07, 0x09, 0x01, 0x50, 0x5b, 0x84, 0x40, 0xa3, +0xf1, 0xad, 0x96, 0xee, 0x30, 0xe5, 0x21, 0xe0, +0xd7, 0x67, 0x1f, 0x4d, 0x68, 0xb5, 0x0c, 0x02, +0xc0, 0x5b, 0x5b, 0x65, 0x71, 0x02, 0x01, 0xe5, +0xe2, 0x04, 0x26, 0x34, 0x5d, 0x08, 0x07, 0xc0, +0x12, 0xb3, 0xbb, 0x7d, 0x2e, 0x7f, 0x18, 0x04, +0xc9, 0xd7, 0x03, 0x36, 0x10, 0x0e, 0x71, 0xaa, +0x4b, 0x83, 0xc5, 0xbd, 0x0e, 0x4a, 0x57, 0x02, +0xcc, 0x09, 0xf0, 0x05, 0x81, 0xbc, 0x12, 0xe0, +0x29, 0x80, 0xe6, 0x46, 0x7f, 0x89, 0x91, 0x10, +0xb0, 0x16, 0x27, 0x30, 0xc5, 0x42, 0x4e, 0x60, +0x7a, 0xab, 0x4d, 0xe4, 0x8b, 0x14, 0x45, 0xf9, +0xf3, 0xea, 0xd5, 0x63, 0xc7, 0x7d, 0x1b, 0x98, +0x21, 0xd5, 0x0e, 0x50, 0x70, 0xab, 0xd5, 0x41, +0xc1, 0xf0, 0xaa, 0x02, 0x05, 0x5f, 0x3e, 0x4f, +0x21, 0x23, 0x35, 0x42, 0x20, 0xf4, 0xd5, 0x12, +0xf2, 0x5c, 0xb4, 0x8d, 0xec, 0x2e, 0xc5, 0x3d, +0x01, 0xe0, 0x5f, 0x78, 0x0d, 0x83, 0x7f, 0x1e, +0xd5, 0x0e, 0xfe, 0xf5, 0x81, 0x00, 0x70, 0xca, +0x8c, 0xd2, 0x7b, 0xfa, 0xbf, 0x50, 0x81, 0xb8, +0xdf, 0xbb, 0x18, 0xd7, 0xcb, 0x7b, 0xff, 0x5d, +0x78, 0x92, 0x37, 0x1c, 0xe7, 0xcb, 0x96, 0xbe, +0x4a, 0xf0, 0x0f, 0x92, 0xfc, 0x78, 0xfc, 0x2f, +0x59, 0xfa, 0xaa, 0x83, 0x7f, 0xb0, 0x26, 0xe0, +0x75, 0x01, 0xaf, 0x0d, 0xd8, 0x03, 0x20, 0xcf, +0x60, 0xef, 0xef, 0x74, 0xd3, 0x38, 0xda, 0x97, +0x5f, 0x77, 0x93, 0x95, 0xbd, 0xbf, 0xd2, 0xfc, +0x37, 0x8a, 0xbe, 0x23, 0x04, 0x40, 0xad, 0xab, +0xd7, 0x9e, 0x73, 0x6b, 0x33, 0xa9, 0xcd, 0xaa, +0x63, 0xf0, 0x10, 0x30, 0xba, 0x18, 0xf0, 0xee, +0x95, 0x4f, 0x63, 0x5a, 0x2c, 0x28, 0x45, 0x08, +0x54, 0x8e, 0x13, 0x18, 0x0e, 0x21, 0x10, 0xd2, +0x25, 0xa7, 0xd4, 0x00, 0x21, 0xae, 0x45, 0xbd, +0xf6, 0x4b, 0xeb, 0x81, 0x51, 0xda, 0x58, 0x62, +0x66, 0x06, 0xd4, 0x2b, 0x04, 0x4e, 0x12, 0xb4, +0x81, 0x45, 0x2f, 0xb3, 0x02, 0x2e, 0x6d, 0x12, +0x91, 0x4c, 0xb8, 0x1b, 0xcd, 0x73, 0x15, 0x8d, +0xc3, 0xf5, 0x00, 0x8b, 0x83, 0x09, 0x98, 0x10, +0x38, 0xe3, 0xed, 0xfe, 0x1d, 0x33, 0x25, 0x0f, +0x81, 0x69, 0xcd, 0x63, 0xad, 0xc8, 0x09, 0xac, +0xb1, 0x98, 0x13, 0x70, 0x42, 0xc6, 0x40, 0x80, +0x72, 0x31, 0x50, 0xf2, 0xc8, 0xbd, 0x6b, 0xce, +0xc3, 0x89, 0xcd, 0x56, 0x56, 0x03, 0x28, 0x98, +0x6a, 0x06, 0x14, 0xcc, 0x2d, 0x15, 0x14, 0xd4, +0x08, 0x81, 0xda, 0x07, 0x0a, 0xce, 0x1a, 0x70, +0x9a, 0x42, 0x86, 0x6a, 0x84, 0x40, 0x08, 0x80, +0x41, 0xb7, 0xb5, 0xd9, 0x08, 0x54, 0x59, 0x53, +0xa1, 0xd1, 0xff, 0xa4, 0x7a, 0x09, 0xfe, 0x05, +0xd6, 0x79, 0xf0, 0x6f, 0xe0, 0x79, 0x8e, 0xfb, +0xd5, 0xed, 0xfe, 0x67, 0x67, 0x27, 0x55, 0x68, +0xef, 0x9f, 0x9c, 0x9c, 0x2c, 0x09, 0x80, 0x0c, +0xb6, 0xe8, 0xd5, 0x8e, 0xf3, 0x6f, 0xaa, 0xc7, +0xf9, 0x98, 0x04, 0xf0, 0x44, 0xe0, 0x1d, 0x84, +0xfd, 0x7c, 0xc5, 0xc1, 0x3f, 0x00, 0xff, 0xde, +0x05, 0x00, 0xb8, 0x15, 0x1f, 0xcf, 0xa1, 0x40, +0x9f, 0x22, 0xf8, 0xe7, 0xfe, 0xcf, 0x3f, 0xd3, +0x2d, 0x80, 0x82, 0x05, 0x00, 0x06, 0x8b, 0x00, +0x0e, 0x16, 0xe0, 0x4a, 0x40, 0xd9, 0xfb, 0x67, +0xf1, 0xde, 0x3f, 0xd9, 0xe4, 0xb9, 0x9f, 0xcd, +0xed, 0x55, 0xe4, 0xb1, 0x3f, 0x49, 0xdd, 0xfc, +0x2f, 0xa3, 0xfe, 0x4f, 0xf4, 0x1b, 0x21, 0x00, +0x6a, 0xaf, 0x87, 0x40, 0x03, 0xcf, 0xde, 0x93, +0xdb, 0xc5, 0x5e, 0x31, 0xe5, 0x21, 0xe0, 0xd1, +0x23, 0x8f, 0x46, 0x36, 0x8b, 0x34, 0x2f, 0x04, +0x2a, 0xc8, 0x09, 0x38, 0xb4, 0x8a, 0x31, 0xb2, +0x15, 0x56, 0xaf, 0x06, 0xd8, 0x40, 0xc8, 0xbe, +0x55, 0x2c, 0xae, 0x08, 0x16, 0x4a, 0x62, 0x60, +0x0a, 0x4e, 0xed, 0xe2, 0x5e, 0xbc, 0xa0, 0x17, +0x37, 0x3c, 0x05, 0x81, 0x3d, 0x32, 0x34, 0x38, +0x46, 0x3a, 0x21, 0x5c, 0x28, 0x35, 0xff, 0x55, +0x10, 0x08, 0xea, 0xdf, 0x8f, 0xc5, 0x06, 0x8b, +0x86, 0x80, 0x8e, 0x59, 0x55, 0xc0, 0x09, 0xac, +0x2d, 0x93, 0x13, 0x70, 0x69, 0x9f, 0x49, 0x41, +0x7d, 0x0f, 0x6a, 0x2f, 0x06, 0x8e, 0x3e, 0x70, +0xee, 0x94, 0x06, 0x6b, 0xe1, 0x65, 0xe5, 0x06, +0x05, 0xa7, 0x5a, 0x08, 0x0a, 0xce, 0xa8, 0x30, +0x28, 0xb8, 0xd3, 0x0c, 0x28, 0x58, 0x68, 0x06, +0x14, 0x3c, 0x52, 0xe5, 0xa0, 0x20, 0x57, 0xf8, +0xb0, 0x13, 0x14, 0x3a, 0x40, 0xeb, 0xcc, 0x38, +0xea, 0x10, 0x39, 0xe3, 0x06, 0x7b, 0xf2, 0xed, +0xaa, 0x05, 0xff, 0xc6, 0xd5, 0x30, 0xf8, 0x67, +0xcd, 0xa7, 0xff, 0xda, 0x0a, 0xfe, 0xf1, 0xd3, +0xbf, 0xab, 0x14, 0xf8, 0xa3, 0x13, 0x00, 0xb7, +0xca, 0x19, 0xf7, 0xab, 0xde, 0xfb, 0x73, 0xb3, +0xde, 0x8f, 0xa6, 0xbd, 0x03, 0x3b, 0x7e, 0xf5, +0x38, 0x9f, 0x19, 0x80, 0x6c, 0x3c, 0xc1, 0x9f, +0xc6, 0x8a, 0x80, 0x83, 0x7f, 0x7e, 0x44, 0xf0, +0x0f, 0x9f, 0xfe, 0xf1, 0x09, 0xe0, 0x21, 0x7c, +0xbc, 0x1c, 0xfc, 0xf3, 0xd1, 0x07, 0x1f, 0x48, +0xd0, 0x20, 0x9f, 0x0c, 0xf2, 0xe9, 0xa0, 0x7a, +0xef, 0x1f, 0x76, 0x66, 0x93, 0x51, 0xb4, 0xaf, +0xd4, 0xfc, 0xf1, 0x3a, 0x73, 0x3e, 0x9e, 0xa0, +0x6e, 0xfe, 0xdf, 0xa2, 0xda, 0x8b, 0x1e, 0x23, +0x04, 0x40, 0x9d, 0xa8, 0x81, 0x0d, 0xfd, 0xde, +0x02, 0x10, 0xf8, 0x91, 0x29, 0x0f, 0x01, 0x97, +0x6e, 0x19, 0x34, 0xac, 0x49, 0x38, 0xbd, 0xf9, +0xbc, 0x97, 0x22, 0x04, 0x2c, 0xe1, 0x04, 0xde, +0x2a, 0x83, 0x13, 0xe0, 0x0b, 0x01, 0x8f, 0x76, +0x1b, 0xf4, 0x82, 0x81, 0x18, 0xf0, 0x9b, 0x0c, +0x2e, 0x80, 0xcf, 0x08, 0xf9, 0xdf, 0xd7, 0xbf, +0x7c, 0x51, 0x32, 0x1c, 0x62, 0x11, 0xc0, 0x4c, +0x40, 0x74, 0xff, 0x93, 0x7a, 0x57, 0x01, 0x3c, +0x1d, 0x90, 0xed, 0x86, 0x59, 0x08, 0xf0, 0x8a, +0xa0, 0xac, 0xe4, 0xc1, 0xa9, 0xcd, 0x63, 0xf4, +0xd7, 0x03, 0xd5, 0xc2, 0x09, 0x68, 0x2e, 0x06, +0x70, 0x29, 0xf0, 0x58, 0x1b, 0xe2, 0x74, 0xdf, +0xb1, 0x7d, 0xb2, 0x59, 0x50, 0xd0, 0xa6, 0xce, +0x80, 0x82, 0x87, 0xcd, 0x80, 0x82, 0x27, 0xad, +0x0b, 0x0a, 0xc2, 0x5a, 0x98, 0x41, 0x41, 0x5e, +0x09, 0x48, 0xce, 0x8c, 0x53, 0x8b, 0x68, 0xfa, +0xee, 0x24, 0x01, 0xfe, 0x95, 0xcb, 0xef, 0xbf, +0x76, 0x81, 0x7f, 0x43, 0x4f, 0x06, 0x90, 0xd7, +0x36, 0x9d, 0x00, 0x58, 0x54, 0x81, 0xb8, 0xdf, +0x63, 0x30, 0xf8, 0x91, 0xf7, 0xfe, 0x05, 0xd8, +0xed, 0x33, 0xdd, 0xff, 0xb6, 0x89, 0x71, 0x3e, +0x9b, 0xfb, 0xfc, 0x55, 0x1d, 0xfc, 0x03, 0xaa, +0x9f, 0x4d, 0x80, 0xd8, 0x0c, 0xe8, 0x27, 0x04, +0xff, 0x7c, 0xce, 0xc1, 0x3f, 0xf0, 0x0e, 0x60, +0xa7, 0xc0, 0x93, 0x10, 0x0a, 0xea, 0xbd, 0xff, +0xd2, 0x03, 0x29, 0x46, 0xd1, 0xbe, 0x12, 0xf1, +0x8f, 0xd7, 0x98, 0xdd, 0x3b, 0xab, 0xd5, 0xcd, +0x9f, 0xcb, 0x46, 0xf4, 0x15, 0x21, 0x00, 0xea, +0x5c, 0x0d, 0x6e, 0x1c, 0x34, 0x05, 0x1e, 0x02, +0x5f, 0x18, 0x79, 0x08, 0xc0, 0x0a, 0x77, 0x46, +0xe7, 0xcd, 0x34, 0xb8, 0x51, 0xb0, 0x4a, 0x08, +0x94, 0x87, 0x13, 0x08, 0x34, 0xcb, 0x09, 0x8c, +0x6c, 0x3c, 0x4b, 0xf2, 0x11, 0xe0, 0xe4, 0x41, +0xbe, 0x1c, 0xb0, 0x69, 0xb6, 0x44, 0x59, 0x13, +0xb0, 0x6d, 0xb0, 0x27, 0x9a, 0xe5, 0x48, 0x58, +0x10, 0x73, 0xa3, 0x5f, 0xd2, 0xfb, 0x90, 0xde, +0x24, 0x80, 0xd7, 0x01, 0xf2, 0xe5, 0x00, 0x0b, +0x86, 0xb2, 0x18, 0x03, 0x86, 0x11, 0x3d, 0xdb, +0xa5, 0xa8, 0x46, 0xf1, 0xcb, 0xac, 0xcf, 0x09, +0x18, 0x4c, 0x05, 0x64, 0x21, 0xc0, 0xcd, 0xda, +0x13, 0x31, 0xc9, 0x98, 0x04, 0x3c, 0xd6, 0x58, +0x0b, 0xef, 0xff, 0x79, 0x5a, 0x9b, 0x84, 0x27, +0x02, 0x14, 0x8c, 0xb0, 0x22, 0x28, 0x38, 0xbf, +0xc7, 0x25, 0x0a, 0x19, 0x57, 0xac, 0x58, 0x0b, +0xfb, 0x7a, 0xec, 0x21, 0xbb, 0x92, 0xf8, 0x2a, +0x06, 0xff, 0x16, 0xd6, 0x30, 0xf8, 0x17, 0x5c, +0xef, 0xc0, 0x3f, 0x7e, 0xfa, 0x77, 0xcf, 0x88, +0x55, 0x04, 0x80, 0x17, 0x4e, 0x00, 0x3f, 0xf9, +0xf7, 0x3f, 0x2a, 0xbc, 0xf7, 0xdf, 0x8e, 0xdd, +0xbe, 0x34, 0xce, 0x07, 0xb4, 0x27, 0x8f, 0xf3, +0x6f, 0xab, 0xc6, 0xf9, 0x77, 0x60, 0xe9, 0xcb, +0xc1, 0x3f, 0x9f, 0x20, 0xf8, 0xe7, 0xd8, 0xa1, +0x43, 0xb4, 0x1d, 0xf6, 0xbf, 0x97, 0x60, 0x03, +0xfc, 0x2d, 0xd6, 0x07, 0x1c, 0xfc, 0x73, 0x01, +0xc1, 0x3f, 0xdc, 0xfc, 0x8f, 0xf3, 0xaa, 0x00, +0x13, 0x00, 0x79, 0xf4, 0x1f, 0xbf, 0x23, 0x95, +0x66, 0xdc, 0x32, 0x8e, 0xf6, 0xe5, 0xd7, 0xd8, +0xe4, 0xf7, 0x60, 0x55, 0xbc, 0x67, 0xb3, 0xaa, +0xf9, 0xa7, 0xc4, 0x89, 0x5e, 0x22, 0x04, 0x40, +0x1d, 0xe6, 0x03, 0x5c, 0x7e, 0x3d, 0xac, 0x69, +0x78, 0x80, 0x63, 0xe7, 0x4d, 0xdf, 0x19, 0x7b, +0x08, 0x14, 0x13, 0x04, 0x02, 0x0d, 0x6a, 0x18, +0x60, 0x46, 0x08, 0x58, 0xc7, 0x6e, 0x38, 0xbc, +0xeb, 0x36, 0xbd, 0xc6, 0x3d, 0xbb, 0x7b, 0x3e, +0x2c, 0x85, 0x23, 0xa5, 0xf5, 0x40, 0x6c, 0xff, +0xd3, 0xaa, 0xa9, 0xc1, 0x59, 0xc9, 0x60, 0x68, +0x82, 0xca, 0x74, 0x48, 0x5d, 0x3c, 0x15, 0x60, +0xb7, 0xc1, 0x04, 0x55, 0xe8, 0x10, 0x57, 0x60, +0xa7, 0x6c, 0x03, 0x60, 0xd0, 0x70, 0x3d, 0x50, +0x75, 0x9c, 0x80, 0x03, 0x2e, 0x06, 0x7c, 0xba, +0xe5, 0x33, 0x1b, 0x20, 0x09, 0x01, 0xdf, 0x5e, +0x7b, 0xee, 0x4f, 0xc6, 0xa4, 0xa3, 0x74, 0x50, +0x30, 0xca, 0x0c, 0x28, 0x18, 0xf7, 0xc4, 0x82, +0x82, 0x73, 0x60, 0x2d, 0x1c, 0x3c, 0x56, 0x2b, +0x56, 0x71, 0x3e, 0xe8, 0x35, 0x73, 0x3b, 0x4d, +0x39, 0xb7, 0xa6, 0x96, 0x80, 0x7f, 0x91, 0x02, +0xfc, 0x2b, 0x03, 0xfc, 0x1b, 0x55, 0x1c, 0x26, +0x35, 0x7f, 0x59, 0x00, 0x44, 0x97, 0x33, 0xee, +0xf7, 0x1b, 0x38, 0xf4, 0xc9, 0x7b, 0xff, 0x74, +0x9c, 0xea, 0x31, 0xdc, 0xc7, 0xce, 0x7e, 0x1f, +0xc2, 0x04, 0xc8, 0x70, 0x9c, 0xcf, 0xc1, 0x3e, +0x3f, 0xc0, 0xd2, 0x57, 0x09, 0xfe, 0x41, 0x73, +0xe7, 0x1f, 0xf9, 0xdf, 0x7f, 0x50, 0x07, 0xff, +0xe0, 0xe3, 0x0b, 0x71, 0xf7, 0xaf, 0xb1, 0xfa, +0x4d, 0x93, 0xf6, 0xfe, 0x9e, 0x57, 0x93, 0x8c, +0xa2, 0x7d, 0x59, 0x6c, 0x4e, 0xba, 0xbd, 0x92, +0x3c, 0xf5, 0xf6, 0xfe, 0x29, 0x17, 0x50, 0xbf, +0x13, 0x7d, 0x44, 0x08, 0x80, 0xfa, 0x20, 0x04, +0xfe, 0x6f, 0x64, 0xf3, 0xc8, 0xa5, 0x4e, 0x5d, +0xd3, 0xee, 0x19, 0x7a, 0x08, 0x04, 0xc1, 0x43, +0x60, 0x4a, 0xbb, 0xb5, 0xd2, 0xe9, 0x60, 0x99, +0x42, 0xa0, 0x12, 0x7e, 0x02, 0x1c, 0x2a, 0xa4, +0x6e, 0xda, 0xab, 0xfa, 0x1d, 0xc3, 0xd8, 0x7f, +0x19, 0x4d, 0x6b, 0x19, 0xa5, 0xf7, 0x76, 0x36, +0x11, 0xe2, 0x15, 0x81, 0x61, 0xf3, 0x9f, 0x27, +0xd9, 0x0c, 0x6b, 0xd6, 0x03, 0x63, 0x9b, 0x2c, +0x92, 0x84, 0x80, 0x9a, 0x0d, 0x70, 0x87, 0x0f, +0x81, 0xfa, 0x7a, 0xa0, 0x6a, 0xfc, 0x04, 0x4a, +0x5f, 0x0f, 0x4c, 0x6f, 0xbd, 0x89, 0xfc, 0x7a, +0xee, 0xd3, 0x65, 0x37, 0x74, 0xdf, 0xf6, 0x60, +0x52, 0xf3, 0xa8, 0x72, 0x82, 0x82, 0x6b, 0xcd, +0x80, 0x82, 0x1b, 0xcd, 0x80, 0x82, 0x69, 0xf5, +0x06, 0x14, 0x9c, 0xfd, 0xda, 0x59, 0x0a, 0x1e, +0xa1, 0x11, 0x02, 0x6c, 0x28, 0xe4, 0xb6, 0x3c, +0x9b, 0x6c, 0xaf, 0x46, 0x57, 0x21, 0xf8, 0x37, +0x5f, 0x80, 0x7f, 0x95, 0x04, 0xff, 0xfa, 0x22, +0xee, 0xd7, 0x33, 0x73, 0xb5, 0x22, 0x00, 0xbc, +0x72, 0x57, 0xd3, 0x97, 0xff, 0xfd, 0xba, 0x5c, +0x7b, 0x7f, 0xa6, 0xf3, 0xb9, 0xf9, 0xb3, 0x08, +0xd8, 0x0b, 0xe0, 0x4f, 0x19, 0xe7, 0xb3, 0xa5, +0x2f, 0xc6, 0xf9, 0xa7, 0xb4, 0xe3, 0x7c, 0x7e, +0xb2, 0xe7, 0x27, 0x7c, 0x8e, 0xf8, 0xe5, 0x27, +0x7e, 0x7e, 0xf2, 0xe7, 0x09, 0x00, 0x4f, 0x02, +0x78, 0x22, 0xc0, 0x93, 0x01, 0x09, 0xf8, 0xc3, +0xa4, 0xe0, 0x38, 0x46, 0xff, 0xd2, 0xde, 0x3f, +0x5d, 0xb3, 0xf7, 0x0f, 0x3d, 0xbb, 0xc9, 0xe8, +0xd6, 0x9f, 0x57, 0x4d, 0xfc, 0xda, 0x72, 0x3e, +0xa6, 0xde, 0xfb, 0xa7, 0x7c, 0x8d, 0x6a, 0x23, +0x7a, 0x87, 0x10, 0x00, 0xf5, 0x4d, 0x08, 0x3c, +0x3d, 0xba, 0xc5, 0xfc, 0x64, 0x53, 0x1e, 0x02, +0x01, 0x7d, 0x8b, 0x08, 0x89, 0x84, 0x68, 0xfc, +0x5e, 0x92, 0x10, 0xa8, 0x0c, 0x27, 0x30, 0xd8, +0x04, 0x27, 0x30, 0xac, 0xd1, 0x4c, 0x0a, 0xeb, +0x9a, 0x67, 0xd4, 0xd8, 0xd5, 0x57, 0x01, 0x9a, +0x35, 0xc1, 0x7b, 0x68, 0xf0, 0x0b, 0x8c, 0x4c, +0x82, 0x38, 0x65, 0xd0, 0x1e, 0x4f, 0xd6, 0x6a, +0x4e, 0x20, 0xb8, 0xb3, 0xee, 0x0a, 0x81, 0x03, +0x87, 0x1c, 0x5b, 0xc5, 0x49, 0xd7, 0x03, 0xe5, +0x3d, 0x23, 0xac, 0x3c, 0x27, 0xa0, 0x6b, 0xda, +0x4e, 0x6d, 0xb7, 0x50, 0x40, 0xef, 0xfd, 0xf2, +0xba, 0xe5, 0x91, 0x6b, 0x97, 0xac, 0xc7, 0x13, +0xe0, 0x86, 0x58, 0xb5, 0xa0, 0xe0, 0x16, 0x33, +0xa0, 0x60, 0x8e, 0x19, 0x50, 0x30, 0xbf, 0xc6, +0x40, 0xc1, 0xb2, 0x84, 0xc0, 0xcc, 0xc1, 0x27, +0x29, 0x64, 0xb0, 0xe6, 0x62, 0x20, 0x78, 0xc8, +0x61, 0x72, 0x4e, 0x4c, 0xa5, 0x49, 0x37, 0x57, +0xd6, 0x3c, 0xf8, 0x57, 0x86, 0xdf, 0xff, 0x93, +0x08, 0xfe, 0x71, 0xdc, 0xaf, 0xd2, 0xfc, 0x51, +0xeb, 0xcb, 0x19, 0xf7, 0xab, 0xde, 0xfb, 0xef, +0xc2, 0x5d, 0x3f, 0xa7, 0xf9, 0x5d, 0x94, 0xc7, +0xf9, 0xb0, 0xf4, 0x95, 0xc7, 0xf9, 0xbc, 0xd3, +0xff, 0x3b, 0xc4, 0x00, 0xef, 0xf8, 0x6f, 0xc0, +0xd2, 0x97, 0x45, 0x02, 0xef, 0xfe, 0x99, 0x01, +0x60, 0x16, 0x80, 0x99, 0x00, 0x39, 0xf8, 0xe7, +0x2c, 0xb8, 0x01, 0x79, 0xe7, 0xcf, 0xb5, 0xe4, +0xe0, 0x66, 0xe9, 0xdc, 0xcf, 0xce, 0xe0, 0xdc, +0x8f, 0x9b, 0xbf, 0xdd, 0x05, 0xf5, 0xde, 0x3f, +0xe5, 0x31, 0x6a, 0x9c, 0xe8, 0x17, 0x42, 0x00, +0xd4, 0x67, 0x21, 0xd0, 0x78, 0x5c, 0xab, 0x25, +0xf9, 0xf0, 0x10, 0x78, 0x6c, 0xec, 0x21, 0xb0, +0x97, 0xc6, 0xb7, 0x5c, 0x42, 0x6f, 0x3e, 0xe7, +0x69, 0x20, 0x04, 0x2a, 0xc1, 0x09, 0xa8, 0xa6, +0x02, 0x8e, 0xad, 0xd7, 0x50, 0xc2, 0xcb, 0xef, +0x9a, 0xdd, 0xed, 0xbb, 0xb4, 0x4d, 0xc0, 0x13, +0xfe, 0x5e, 0x93, 0xef, 0x5b, 0x88, 0xd3, 0x42, +0xbe, 0x1a, 0x90, 0x85, 0x40, 0x48, 0xe7, 0x5c, +0x3d, 0x31, 0x31, 0x01, 0x8d, 0x56, 0x23, 0x02, +0x4a, 0x13, 0x02, 0x55, 0xcf, 0x09, 0x70, 0xb9, +0x76, 0xc8, 0xc0, 0xc5, 0xc0, 0xa1, 0xc7, 0x1a, +0x6b, 0xe1, 0x23, 0xbf, 0xcc, 0xe8, 0x98, 0x82, +0xc9, 0xc6, 0xd2, 0x7a, 0x07, 0x0a, 0x86, 0x59, +0x08, 0x0a, 0xce, 0xa9, 0x00, 0x28, 0xc8, 0xef, +0x0b, 0x1d, 0x05, 0x50, 0xf0, 0x4d, 0xcd, 0xc5, +0x40, 0xe0, 0xb8, 0x03, 0xe4, 0x98, 0x93, 0x54, +0x65, 0xe0, 0x5f, 0x4d, 0xf8, 0xfd, 0xd7, 0x75, +0xf0, 0x4f, 0x13, 0xf7, 0xab, 0x7b, 0xfa, 0xf7, +0xc9, 0x5e, 0x43, 0xdf, 0xff, 0xf4, 0x3f, 0x8b, +0x9b, 0xff, 0xfb, 0xb8, 0xe7, 0x97, 0xf7, 0xfe, +0xb9, 0x68, 0xdc, 0x7a, 0xe3, 0x7c, 0xad, 0xa5, +0xaf, 0x12, 0xfc, 0x83, 0x35, 0x00, 0xaf, 0x03, +0x64, 0x4b, 0x5f, 0x25, 0xf8, 0x07, 0x57, 0x00, +0x7c, 0x0d, 0x70, 0x1a, 0x42, 0x82, 0xaf, 0x03, +0xce, 0xc2, 0x1a, 0x98, 0x2f, 0x09, 0xd8, 0x3d, +0x90, 0x9b, 0x7f, 0x1c, 0xf6, 0xfe, 0xd3, 0x6f, +0x19, 0x9f, 0xfb, 0x71, 0xf3, 0xb7, 0xbd, 0x16, +0x45, 0xbe, 0xbb, 0xe5, 0x7b, 0x7f, 0xfe, 0x31, +0x25, 0x56, 0xf4, 0x08, 0x21, 0x00, 0x9e, 0x88, +0x7a, 0xf5, 0x59, 0x97, 0x76, 0x13, 0xdb, 0xac, +0x3c, 0x61, 0xda, 0x43, 0x60, 0x27, 0x8d, 0x6e, +0x3e, 0xcf, 0x02, 0x21, 0x50, 0x7e, 0x4e, 0x60, +0x4c, 0x93, 0xb9, 0xb4, 0xb4, 0xcf, 0xa1, 0x52, +0x05, 0xc0, 0x8c, 0x36, 0xeb, 0xc8, 0xa3, 0x7d, +0x52, 0xa9, 0xef, 0xdf, 0xf4, 0xea, 0x75, 0x9a, +0x03, 0x81, 0xc0, 0xe6, 0x42, 0x1c, 0x52, 0xc4, +0xae, 0x83, 0xf2, 0xfb, 0xc2, 0x01, 0xe6, 0xc9, +0x69, 0x84, 0xb2, 0x9f, 0x00, 0x57, 0xe9, 0x42, +0xc0, 0x92, 0xf5, 0x40, 0xc5, 0x38, 0x01, 0xbb, +0x16, 0x09, 0xe4, 0xde, 0x29, 0x97, 0x05, 0x80, +0x24, 0x04, 0x82, 0xfa, 0x1d, 0xbc, 0xef, 0xd0, +0x6e, 0x63, 0xad, 0x04, 0x05, 0xbd, 0x2d, 0x04, +0x05, 0x83, 0xcc, 0x82, 0x82, 0xc7, 0xcd, 0x80, +0x82, 0xe7, 0xcc, 0x80, 0x82, 0x57, 0xcc, 0x83, +0x82, 0xdd, 0xae, 0x50, 0xf0, 0xb8, 0xc3, 0x14, +0xfa, 0x8a, 0x66, 0x7d, 0xe5, 0xe7, 0xb0, 0x8f, +0xa6, 0x15, 0xc5, 0x59, 0xec, 0xf7, 0x5f, 0x5f, +0xc1, 0xbf, 0xd7, 0x6b, 0x01, 0xf8, 0x67, 0xbb, +0x6b, 0x81, 0xde, 0xd3, 0x7f, 0x79, 0xe2, 0x7e, +0xd5, 0x7b, 0xff, 0x34, 0x34, 0x6a, 0x0e, 0xf3, +0x29, 0x51, 0x8f, 0xf3, 0x61, 0xe9, 0xcb, 0x1e, +0x00, 0x3c, 0xce, 0xe7, 0x7b, 0x7e, 0x06, 0x01, +0x19, 0x08, 0xe4, 0x3b, 0x7f, 0x06, 0x04, 0xf9, +0xee, 0x9f, 0xef, 0xff, 0xbf, 0x86, 0x0f, 0x00, +0xfb, 0x01, 0xb0, 0xcd, 0x2f, 0xfb, 0x03, 0xe8, +0xf6, 0xfe, 0x9a, 0x7b, 0x7f, 0xf7, 0xab, 0x1b, +0x4c, 0x34, 0x7f, 0x7c, 0x9d, 0xdf, 0x82, 0x5d, +0x71, 0x51, 0x92, 0xdc, 0xf8, 0xb9, 0xce, 0xa2, +0x7e, 0x2b, 0x7a, 0x83, 0x10, 0x00, 0x4f, 0x96, +0xab, 0xe0, 0xf3, 0x1e, 0xfd, 0x6c, 0xdb, 0xc5, +0xbe, 0xe7, 0xdf, 0xb7, 0xd0, 0x48, 0x08, 0xb8, +0x77, 0xcf, 0x25, 0x84, 0x11, 0xd1, 0x1b, 0x92, +0x10, 0xf0, 0xb4, 0x12, 0x27, 0xa0, 0x59, 0x0f, +0xb8, 0xe2, 0x49, 0x7f, 0x79, 0xdf, 0x23, 0x7a, +0xcd, 0x9d, 0xaf, 0x01, 0xc6, 0x00, 0x0e, 0x1c, +0xd1, 0x70, 0x96, 0x14, 0x38, 0x24, 0xbf, 0x7d, +0x3d, 0x88, 0x7f, 0x36, 0x1e, 0x52, 0xdb, 0x10, +0x73, 0x0a, 0x61, 0x44, 0xd7, 0x1d, 0x7a, 0x3c, +0x40, 0x12, 0x56, 0x01, 0xb6, 0xf0, 0x1a, 0x18, +0x23, 0x79, 0x09, 0x2c, 0xa5, 0x05, 0x3d, 0x8b, +0xa4, 0xa0, 0x22, 0x9e, 0x3a, 0x2c, 0x02, 0x44, +0xe8, 0xd2, 0x76, 0xa3, 0x85, 0x9c, 0xc0, 0x4a, +0xab, 0x71, 0x02, 0x76, 0x2d, 0xd6, 0x93, 0x17, +0xd8, 0x06, 0xd9, 0x5a, 0xd8, 0xbf, 0x77, 0xc1, +0xfd, 0xa9, 0xad, 0xe3, 0xa4, 0xff, 0x0e, 0x6b, +0x83, 0x82, 0xd3, 0x2d, 0x04, 0x05, 0xdd, 0x6b, +0x15, 0x28, 0x78, 0xc9, 0xa2, 0xb5, 0xc0, 0xbc, +0xde, 0x17, 0x29, 0x68, 0xfc, 0x21, 0x9d, 0x33, +0xa3, 0xef, 0x4e, 0xb2, 0x3d, 0x11, 0x2b, 0xc0, +0x3f, 0x0b, 0xc1, 0xbf, 0x97, 0xad, 0x0c, 0xfe, +0x71, 0xdc, 0xaf, 0x57, 0x8e, 0xee, 0xe9, 0xdf, +0x3f, 0x6b, 0x9d, 0xc5, 0x71, 0xbf, 0x86, 0x7b, +0xff, 0x1d, 0xf8, 0xb9, 0x7a, 0x9c, 0xff, 0x31, +0x8f, 0xf3, 0x61, 0xe9, 0xbb, 0x13, 0x96, 0xbe, +0x7c, 0xfa, 0xc7, 0x27, 0x80, 0x7c, 0x0a, 0xc8, +0x0e, 0x7f, 0x6c, 0xe9, 0x2b, 0x07, 0xff, 0xb0, +0x03, 0x20, 0x3b, 0x01, 0x32, 0x34, 0xc8, 0x53, +0x81, 0x93, 0x78, 0x3b, 0x37, 0x7f, 0x06, 0x09, +0x79, 0xef, 0x1f, 0xfc, 0x76, 0xb2, 0x51, 0xb4, +0x2f, 0x83, 0xa5, 0xbc, 0x46, 0x72, 0x2e, 0x49, +0x50, 0x37, 0xff, 0x2f, 0x51, 0x2d, 0x45, 0x3f, +0x10, 0x02, 0xe0, 0x89, 0xad, 0x01, 0x0d, 0x7c, +0x87, 0x4e, 0x6d, 0xbf, 0xee, 0x63, 0x53, 0x1e, +0x02, 0xce, 0x5d, 0xd3, 0x11, 0x3f, 0x1c, 0xaa, +0x11, 0x02, 0x46, 0x53, 0x81, 0xca, 0x71, 0x02, +0x13, 0x9b, 0x2d, 0x22, 0xe7, 0xb6, 0x71, 0xe4, +0xd6, 0x2e, 0x11, 0xd7, 0x01, 0xb3, 0x95, 0xdc, +0x81, 0x19, 0xad, 0xd7, 0xe9, 0xd3, 0xfe, 0x9d, +0x33, 0xc1, 0x07, 0xcc, 0x07, 0x4b, 0xb0, 0x55, +0xda, 0xf9, 0xab, 0x21, 0x40, 0xf5, 0xc7, 0xf1, +0x74, 0x80, 0xd7, 0x03, 0x1e, 0xed, 0x36, 0x99, +0x9c, 0x20, 0xf0, 0xe5, 0x01, 0x07, 0x12, 0x55, +0xd4, 0x6e, 0xb8, 0xa2, 0x9c, 0x80, 0x43, 0xab, +0x8d, 0xe4, 0xd3, 0x7d, 0x97, 0x6e, 0xca, 0xd2, +0x23, 0xff, 0x81, 0x6d, 0xcb, 0xd8, 0x32, 0xad, +0x85, 0x27, 0x5b, 0x68, 0x2d, 0xfc, 0xa4, 0x80, +0x82, 0x91, 0x2f, 0x9d, 0xa3, 0xa0, 0x31, 0x5a, +0x43, 0x26, 0x4c, 0x05, 0xdc, 0xe7, 0xe4, 0xd0, +0xc4, 0x77, 0x57, 0x0a, 0xf0, 0xaf, 0x1a, 0xc1, +0x3f, 0x16, 0x00, 0xd3, 0xb6, 0x2e, 0x45, 0xe3, +0x8f, 0x55, 0x04, 0x40, 0xfe, 0x19, 0xcb, 0xe3, +0x7e, 0x8f, 0xa3, 0x51, 0xcb, 0x7b, 0xff, 0xed, +0x68, 0xfe, 0xbb, 0x4d, 0x8d, 0xf3, 0xd9, 0xd2, +0x57, 0x1d, 0xfc, 0x03, 0x33, 0x20, 0xf6, 0xf8, +0x67, 0xaf, 0x7f, 0xf6, 0xfc, 0x7f, 0xc8, 0xc1, +0x3f, 0xc8, 0x00, 0xe0, 0x2c, 0x00, 0xce, 0x04, +0xb8, 0x80, 0x29, 0x80, 0xbc, 0xf7, 0xe7, 0xe6, +0xbf, 0x18, 0x7b, 0x7f, 0x7b, 0x13, 0xe7, 0x7e, +0x0c, 0x92, 0xda, 0x9d, 0x8f, 0x55, 0x37, 0xff, +0x47, 0xa8, 0x91, 0xa2, 0x07, 0x08, 0x01, 0x20, +0x8a, 0x3d, 0x04, 0x1a, 0x05, 0xda, 0xe3, 0x44, +0xf0, 0xcb, 0xe0, 0xfe, 0xc5, 0x06, 0x1e, 0x02, +0x47, 0x09, 0xb1, 0xc4, 0x88, 0x1f, 0x0e, 0x80, +0x10, 0xf0, 0xa8, 0x32, 0x4e, 0x40, 0x77, 0x3d, +0x10, 0xae, 0xe7, 0x15, 0x90, 0x88, 0x51, 0xff, +0xd8, 0x26, 0xf3, 0x24, 0x8f, 0x01, 0x3e, 0x15, +0x8c, 0x44, 0x33, 0x65, 0x68, 0xd0, 0xb0, 0xc1, +0x27, 0x80, 0x05, 0x60, 0x3f, 0x81, 0x90, 0x2e, +0xb9, 0xa5, 0xae, 0x11, 0x78, 0x7a, 0x10, 0xd0, +0x29, 0xab, 0x46, 0x38, 0x81, 0xe9, 0x6d, 0x70, +0x31, 0xd0, 0x4b, 0xb9, 0x18, 0x78, 0xec, 0xd1, +0x2d, 0xef, 0xd1, 0xa4, 0xe6, 0xab, 0xea, 0x35, +0x28, 0x38, 0xb3, 0x0a, 0x40, 0xc1, 0x08, 0x58, +0x0b, 0x07, 0x0f, 0xd7, 0x4c, 0x04, 0x42, 0xc0, +0x09, 0x38, 0x47, 0xa7, 0xd1, 0xf8, 0xf7, 0x96, +0x08, 0xf0, 0xaf, 0x1a, 0xc0, 0x3f, 0x8e, 0xfb, +0xf5, 0xca, 0x5b, 0xad, 0x08, 0x80, 0xc0, 0xcc, +0x78, 0x8b, 0xe3, 0x7e, 0xd5, 0x7b, 0xff, 0x6c, +0x00, 0x7f, 0x5b, 0xf1, 0xb4, 0x6e, 0x72, 0x9c, +0x8f, 0x51, 0x3f, 0xdb, 0xfe, 0xb2, 0xfd, 0x2f, +0xa7, 0xfa, 0x15, 0xe0, 0x3a, 0x80, 0x53, 0xfe, +0x38, 0xed, 0x8f, 0x27, 0x08, 0x9c, 0xfe, 0xc7, +0x29, 0x80, 0x9c, 0x06, 0xf8, 0x2e, 0x7e, 0x8d, +0xde, 0xde, 0x7f, 0xe7, 0x16, 0x72, 0xbc, 0x65, +0x10, 0xed, 0x0b, 0xe2, 0x9f, 0x9b, 0xbf, 0xed, +0xb5, 0x95, 0xd8, 0xfb, 0x6f, 0x56, 0x0b, 0x80, +0x15, 0xe2, 0xfb, 0xbe, 0x10, 0x00, 0xa2, 0xf4, +0xf8, 0x00, 0xe7, 0x5f, 0x0f, 0x6d, 0x12, 0x16, +0x02, 0x0f, 0x81, 0xef, 0x4d, 0x79, 0x08, 0xd8, +0x75, 0x48, 0xc0, 0xe9, 0xa0, 0xaf, 0x4a, 0x08, +0x78, 0x56, 0x89, 0x9f, 0xc0, 0xb8, 0xa6, 0xf3, +0x29, 0xee, 0xa5, 0xf3, 0xaa, 0xfc, 0x80, 0xe3, +0x52, 0x2c, 0x31, 0xbb, 0x0f, 0xb2, 0x10, 0xb0, +0xc1, 0x29, 0x21, 0x8f, 0xf9, 0x0d, 0x1b, 0xfc, +0x14, 0x34, 0x54, 0x57, 0x44, 0xf9, 0x96, 0x65, +0x26, 0xb4, 0xac, 0x77, 0xb1, 0x94, 0x40, 0x58, +0x13, 0x9c, 0x80, 0x53, 0xbb, 0x54, 0x0a, 0xec, +0xb3, 0xff, 0xb1, 0x56, 0x5c, 0x3d, 0x74, 0xe9, +0x9c, 0x81, 0x3f, 0x63, 0x79, 0x2d, 0x03, 0x05, +0x77, 0x98, 0x01, 0x05, 0x0b, 0x6a, 0x01, 0x28, +0x78, 0x8d, 0xc2, 0x86, 0xe3, 0x35, 0xf9, 0x96, +0x46, 0xac, 0x06, 0x0d, 0x3f, 0x48, 0x8e, 0x9b, +0x92, 0x68, 0xec, 0xed, 0x45, 0x02, 0xfc, 0xab, +0x22, 0xf0, 0xaf, 0x8f, 0x14, 0xf7, 0xbb, 0x52, +0xdb, 0xfc, 0x35, 0x02, 0xc0, 0xd2, 0xb8, 0x5f, +0x79, 0xef, 0xcf, 0xcd, 0x9f, 0x9f, 0xd6, 0x39, +0xb8, 0xe7, 0x0c, 0x9e, 0xf6, 0x4d, 0x8d, 0xf3, +0x19, 0xf6, 0x53, 0x07, 0xff, 0x70, 0x20, 0x10, +0x43, 0x81, 0x0c, 0x07, 0x2a, 0xc1, 0x3f, 0xec, +0x14, 0x08, 0xe8, 0xaf, 0x10, 0xef, 0x97, 0xad, +0x7e, 0x37, 0x63, 0xef, 0xef, 0x76, 0x35, 0xd1, +0x28, 0xda, 0x57, 0x3a, 0x23, 0xbd, 0xb5, 0x9c, +0x3c, 0x0b, 0xf5, 0xf6, 0xfe, 0x27, 0xfc, 0xf2, +0x37, 0xff, 0x46, 0x7c, 0xcf, 0x17, 0x02, 0x40, +0x94, 0x69, 0x21, 0xf0, 0xfb, 0x11, 0xcd, 0x66, +0xaf, 0x80, 0x87, 0xc0, 0xcf, 0x46, 0x1e, 0x02, +0xfd, 0x0e, 0xd2, 0xe4, 0x76, 0xab, 0xa5, 0x86, +0xcf, 0x42, 0x40, 0xcd, 0x09, 0xa8, 0xd7, 0x03, +0x95, 0xe1, 0x04, 0x58, 0x04, 0x4c, 0x6a, 0xbe, +0x58, 0xcf, 0x19, 0x90, 0x7f, 0x3e, 0xa3, 0xf5, +0x5a, 0x38, 0x0d, 0x46, 0x28, 0x42, 0x80, 0xfd, +0x04, 0x96, 0xf5, 0x29, 0x56, 0x3e, 0xc6, 0x1d, +0xb0, 0xdd, 0x58, 0x9c, 0x0a, 0xaa, 0x4d, 0x83, +0x78, 0x55, 0xe0, 0xdb, 0x31, 0x4d, 0x6f, 0xaa, +0x20, 0xc7, 0x13, 0x73, 0xf6, 0x80, 0xa9, 0xeb, +0x81, 0xea, 0xe0, 0x04, 0x5c, 0x3b, 0x64, 0x52, +0x70, 0xbf, 0xc3, 0x5a, 0x6b, 0xe1, 0xe2, 0x5f, +0xa6, 0x77, 0xd8, 0x2c, 0x5d, 0x33, 0x28, 0xa0, +0x60, 0x93, 0xaa, 0x05, 0x05, 0x5d, 0x2a, 0x0c, +0x0a, 0xee, 0x35, 0x03, 0x0a, 0x1e, 0x32, 0x03, +0x0a, 0x9e, 0xb0, 0x3a, 0x28, 0xb8, 0xa0, 0xcb, +0x55, 0x0a, 0x19, 0x5b, 0x2c, 0x79, 0x07, 0x48, +0x9c, 0xc5, 0xa4, 0x42, 0x9a, 0xba, 0x3d, 0x4e, +0x80, 0x7f, 0x55, 0x00, 0xfe, 0x71, 0xdc, 0xaf, +0xd7, 0xd6, 0x58, 0x45, 0x00, 0x84, 0x59, 0x18, +0xf7, 0xcb, 0xbb, 0xfd, 0xad, 0x68, 0xee, 0xfc, +0xf4, 0x9f, 0x94, 0x94, 0x44, 0xb9, 0x00, 0xf9, +0xa4, 0x71, 0x3e, 0x5b, 0xfa, 0xe2, 0x89, 0xfe, +0x7d, 0xd5, 0x38, 0xff, 0x26, 0xce, 0xfc, 0xee, +0xe1, 0xdc, 0xef, 0xef, 0x98, 0x00, 0x9c, 0x94, +0x83, 0x7f, 0xce, 0x9e, 0xa5, 0xaf, 0x70, 0x16, +0xf8, 0x0d, 0x26, 0x05, 0x17, 0x31, 0x31, 0xd8, +0xa6, 0x75, 0x0a, 0x3c, 0x0d, 0x01, 0xa0, 0xde, +0xfb, 0x07, 0xbd, 0xbd, 0x51, 0x3a, 0xf7, 0x53, +0x47, 0xfb, 0x32, 0xf1, 0xcf, 0xd0, 0xa8, 0xf3, +0xd1, 0x78, 0x75, 0xf3, 0xff, 0x02, 0xcd, 0xbf, +0x99, 0xf8, 0x3e, 0x2f, 0x04, 0x80, 0xa8, 0x32, +0x85, 0x80, 0xd3, 0x33, 0xa3, 0x5b, 0xcc, 0x4b, +0x81, 0x87, 0xc0, 0x43, 0x53, 0x1e, 0x02, 0x13, +0x5b, 0xaf, 0xc4, 0x24, 0xc0, 0x43, 0x27, 0x04, +0x4a, 0x5d, 0x0f, 0x54, 0x8c, 0x13, 0x98, 0xd2, +0x72, 0x85, 0x04, 0xf3, 0xa9, 0x9b, 0xf9, 0x82, +0x9e, 0x85, 0xe4, 0xd5, 0x7e, 0x93, 0xde, 0x44, +0xc0, 0x1e, 0xe1, 0x44, 0x41, 0x9d, 0xb3, 0x95, +0xf0, 0x21, 0x8f, 0x76, 0xfa, 0xd7, 0x04, 0xbe, +0x1d, 0x52, 0xa5, 0xf5, 0x40, 0x20, 0xc6, 0xff, +0x7c, 0x4d, 0xa0, 0x73, 0x19, 0x3c, 0x24, 0x5d, +0x0e, 0x8c, 0x55, 0x5d, 0x0e, 0x58, 0x2b, 0x96, +0xd8, 0x12, 0x4e, 0xc0, 0xae, 0x45, 0x3c, 0xb9, +0xe3, 0xa4, 0x31, 0xe4, 0x85, 0x23, 0x52, 0xbc, +0x73, 0x60, 0xdf, 0x03, 0xf7, 0xed, 0xdb, 0xae, +0x2f, 0x17, 0x28, 0x38, 0xa5, 0xce, 0x80, 0x82, +0xc7, 0xcc, 0x80, 0x82, 0x66, 0xac, 0x85, 0x2d, +0x58, 0x0b, 0xb0, 0xb5, 0x70, 0xd0, 0xf8, 0x83, +0x92, 0x9b, 0x20, 0x7f, 0x1e, 0x7d, 0x9c, 0x77, +0x91, 0xcd, 0xa1, 0x68, 0x01, 0xfe, 0x59, 0x09, +0xfc, 0xe3, 0x72, 0xce, 0x8c, 0x56, 0x3d, 0xfd, +0xc7, 0xd2, 0xf9, 0xbb, 0xef, 0x95, 0x7b, 0xef, +0x9f, 0x8b, 0xd1, 0x7f, 0x91, 0x3c, 0xce, 0x07, +0xf1, 0xaf, 0x1e, 0xe7, 0x5f, 0xba, 0x70, 0x81, +0xfe, 0x8b, 0x49, 0xc1, 0x97, 0x30, 0xfc, 0xe1, +0xe0, 0x9f, 0x1c, 0x4c, 0x0a, 0x4e, 0xc1, 0xd4, +0xe7, 0xf3, 0xcf, 0x3e, 0x93, 0x8c, 0x81, 0xe4, +0xe0, 0x1f, 0x76, 0x0a, 0xbc, 0x04, 0x40, 0x30, +0x05, 0x53, 0x04, 0x39, 0xe4, 0x67, 0xd1, 0xa1, +0x4d, 0xaa, 0x68, 0x5f, 0xdd, 0xb9, 0x1f, 0x37, +0x7f, 0xbb, 0x73, 0x86, 0x7b, 0xff, 0xcd, 0x43, +0xc4, 0xf7, 0x76, 0x21, 0x00, 0x44, 0x95, 0x4f, +0x08, 0x34, 0x1d, 0xd7, 0x6a, 0xf1, 0x5e, 0x53, +0x1e, 0x02, 0xbe, 0xbd, 0xf7, 0xd0, 0xd8, 0x96, +0x8b, 0x21, 0x00, 0xdc, 0xb5, 0x42, 0xc0, 0xba, +0x9c, 0xc0, 0x14, 0x84, 0x0b, 0xb1, 0x5d, 0xb0, +0xa9, 0x51, 0x3e, 0x7b, 0x00, 0xf0, 0x04, 0x80, +0xc3, 0x87, 0x46, 0x68, 0xc5, 0x00, 0x17, 0xe7, +0x0e, 0xa8, 0xad, 0x88, 0xf9, 0x4a, 0x60, 0x5a, +0x8b, 0x18, 0xc9, 0x86, 0xd8, 0xa9, 0x4d, 0xbc, +0x74, 0x5d, 0x20, 0xbf, 0x8f, 0xdf, 0x3e, 0x56, +0x9b, 0x46, 0x58, 0xb6, 0x10, 0xb0, 0x56, 0x2c, +0xb1, 0x3e, 0x27, 0x60, 0xd7, 0x92, 0x2f, 0x06, +0x76, 0x28, 0x17, 0x03, 0x7e, 0xbd, 0xf6, 0xfe, +0x32, 0xa5, 0xd5, 0xda, 0x9a, 0x03, 0x05, 0x5b, +0x59, 0x1f, 0x14, 0x0c, 0xb5, 0x10, 0x14, 0x8c, +0xac, 0x04, 0x28, 0x38, 0xb7, 0xdf, 0x3b, 0x14, +0x38, 0x5e, 0x0b, 0xb3, 0x22, 0x67, 0xc0, 0x23, +0x38, 0x8f, 0x26, 0x9c, 0x59, 0x26, 0xc0, 0xbf, +0x32, 0x9a, 0x7f, 0x59, 0x4f, 0xff, 0x1c, 0xf7, +0xab, 0x6e, 0xfe, 0x91, 0xd9, 0x9b, 0x2c, 0x6a, +0xfe, 0x1f, 0xe0, 0x86, 0x5f, 0xde, 0xfb, 0x67, +0xe0, 0x49, 0x5d, 0x3d, 0xce, 0xe7, 0x9b, 0x7f, +0xf5, 0x38, 0xff, 0x8b, 0x7f, 0xfe, 0x93, 0xbe, +0x97, 0x2d, 0x7d, 0xe5, 0xe0, 0x9f, 0x0f, 0x3f, +0xa4, 0x47, 0x8f, 0x1e, 0xd1, 0x07, 0xb0, 0x06, +0x3e, 0x88, 0x6b, 0x81, 0x3d, 0x30, 0x01, 0xe2, +0xf7, 0xb3, 0x77, 0x80, 0xbc, 0xf7, 0x5f, 0x87, +0xbd, 0xbf, 0xc3, 0x2d, 0xe3, 0x73, 0x3f, 0xf6, +0x8d, 0xb0, 0xbd, 0x6a, 0xb8, 0xf7, 0xdf, 0xbc, +0x48, 0x7c, 0x3f, 0x17, 0x02, 0x40, 0x54, 0x05, +0xeb, 0x95, 0x67, 0x9d, 0x3a, 0x4c, 0x6c, 0xb3, +0xe2, 0xb4, 0x29, 0x0f, 0x01, 0xaf, 0x9e, 0x3b, +0x68, 0x54, 0xf3, 0x39, 0x26, 0x84, 0x40, 0xe5, +0x39, 0x81, 0xe1, 0x00, 0x03, 0x23, 0xba, 0x6d, +0x37, 0xbb, 0xd7, 0x0f, 0xea, 0x9c, 0xa5, 0xb7, +0x1e, 0xe0, 0x9a, 0x05, 0xbf, 0x7e, 0xf9, 0xfd, +0x1b, 0x30, 0x49, 0x70, 0x46, 0xf3, 0x1f, 0xd5, +0x68, 0xae, 0x94, 0x42, 0x18, 0x8d, 0x15, 0x00, +0xbf, 0x7d, 0x3a, 0x4e, 0xf3, 0x0c, 0x63, 0x89, +0xad, 0xeb, 0x27, 0x10, 0x6d, 0x31, 0x27, 0xc0, +0x17, 0x03, 0xbe, 0x3d, 0x74, 0x9f, 0x5b, 0xaf, +0x1e, 0x3b, 0x1e, 0xda, 0x40, 0xa0, 0x98, 0x05, +0x05, 0x8d, 0x84, 0xc0, 0x3a, 0x33, 0xd6, 0xc2, +0xd5, 0x07, 0x0a, 0x06, 0xd6, 0x20, 0x28, 0xc8, +0xd6, 0xc2, 0x41, 0xa3, 0xb5, 0x17, 0x03, 0xaf, +0x1e, 0x25, 0x97, 0x45, 0xe9, 0x34, 0xf6, 0xd2, +0x22, 0x01, 0xfe, 0x55, 0x00, 0xfc, 0x93, 0xe2, +0x7e, 0xd3, 0x63, 0xf5, 0x04, 0x80, 0x25, 0x71, +0xbf, 0xdf, 0x82, 0xe0, 0x97, 0xf7, 0xfe, 0xfc, +0xb4, 0x9e, 0x83, 0x66, 0xad, 0x8c, 0xf3, 0xe1, +0xf6, 0xc7, 0xae, 0x7f, 0x3c, 0xce, 0x3f, 0xc6, +0xc1, 0x3f, 0x1f, 0x7f, 0x4c, 0xf7, 0xef, 0xdf, +0xa7, 0xdb, 0xb0, 0xf4, 0x2d, 0x84, 0xa5, 0x2f, +0x17, 0xff, 0x9c, 0xdf, 0xf6, 0x09, 0xde, 0xc7, +0x1f, 0x23, 0x3b, 0x05, 0xca, 0x7b, 0xff, 0x54, +0xed, 0xde, 0xdf, 0xf5, 0xda, 0x7a, 0xa3, 0x68, +0x5f, 0xc9, 0x35, 0xf2, 0x16, 0xae, 0x15, 0xf4, +0xf6, 0xfe, 0x9b, 0x8f, 0xa0, 0x7e, 0x2d, 0xbe, +0x8f, 0x0b, 0x01, 0x20, 0xaa, 0xd2, 0xae, 0x82, +0x6e, 0x2f, 0xd8, 0xb6, 0x8d, 0xb9, 0x61, 0xca, +0x43, 0xc0, 0xad, 0x7b, 0x0e, 0xe2, 0x87, 0x67, +0xd2, 0xeb, 0x2a, 0x21, 0x50, 0x1a, 0x27, 0x30, +0xa0, 0x9c, 0x9c, 0x80, 0x03, 0x46, 0xfd, 0xb1, +0xda, 0xc6, 0x6d, 0x8a, 0xf0, 0xe7, 0x6b, 0x01, +0x4e, 0x23, 0x54, 0x0b, 0x81, 0x39, 0x3d, 0xf6, +0xe8, 0x99, 0x09, 0xf9, 0x74, 0xd8, 0x02, 0x11, +0x30, 0x47, 0x12, 0x02, 0xe3, 0x90, 0x2f, 0xa0, +0x49, 0x22, 0x9c, 0xa7, 0x67, 0x37, 0x2c, 0x65, +0x0f, 0x68, 0x85, 0x40, 0x69, 0x53, 0x81, 0xaa, +0xe4, 0x04, 0xf8, 0x62, 0xc0, 0xbf, 0xb7, 0xfc, +0xb9, 0x2d, 0x79, 0xe4, 0xd6, 0x35, 0xe7, 0xf1, +0x24, 0x40, 0x8b, 0x95, 0x03, 0x05, 0xd7, 0x9b, +0x01, 0x05, 0x53, 0x4a, 0x05, 0x05, 0x35, 0x42, +0xa0, 0x6e, 0x82, 0x82, 0xe1, 0x83, 0x8f, 0x53, +0xd0, 0x50, 0xcd, 0xc5, 0x40, 0xf0, 0xa0, 0xc3, +0xe4, 0xb8, 0x36, 0x99, 0x46, 0xdd, 0x98, 0x27, +0xc0, 0xbf, 0x72, 0x80, 0x7f, 0x43, 0x4f, 0xfa, +0xeb, 0x35, 0xff, 0xc5, 0x79, 0x69, 0x16, 0xed, +0xfd, 0xb7, 0x61, 0x5c, 0x2f, 0xef, 0xfd, 0x33, +0x21, 0x00, 0xf4, 0xc6, 0xf9, 0xf0, 0xfb, 0xe7, +0xa7, 0x79, 0x1e, 0xe7, 0xf3, 0xd3, 0x3d, 0x3f, +0xe5, 0xf3, 0xd3, 0x3e, 0x3f, 0xf5, 0xf3, 0xd3, +0x3f, 0x3f, 0xe5, 0xf3, 0x34, 0x80, 0xa7, 0x02, +0x3c, 0x1d, 0xe0, 0x29, 0x01, 0x3b, 0x05, 0x9e, +0xc1, 0x6a, 0x80, 0x9b, 0x7f, 0x06, 0x84, 0x03, +0x8f, 0xfe, 0x03, 0xcf, 0x6d, 0x30, 0x8a, 0xf6, +0xe5, 0xe6, 0xcf, 0x26, 0x51, 0x2e, 0x47, 0xe4, +0xbd, 0x3f, 0x4f, 0x00, 0x36, 0xff, 0x03, 0xd5, +0x58, 0x7c, 0xef, 0x16, 0x02, 0x40, 0x94, 0x35, +0x3d, 0x04, 0x1a, 0xfa, 0x8c, 0x98, 0xda, 0x7e, +0xed, 0x27, 0x0c, 0x06, 0x1a, 0x7b, 0x08, 0xa4, +0x11, 0xe2, 0x89, 0xb5, 0x42, 0xc0, 0xdd, 0x02, +0x4e, 0xc0, 0xc7, 0x62, 0x4e, 0x80, 0xe1, 0xbf, +0xf9, 0x08, 0xe1, 0x51, 0xdb, 0x0b, 0xb3, 0x00, +0x98, 0xd8, 0x6c, 0x31, 0xb2, 0x01, 0x56, 0x4b, +0xc0, 0x9f, 0x7f, 0xc7, 0x74, 0x8d, 0x18, 0x80, +0x10, 0x08, 0x87, 0x87, 0x80, 0x7e, 0x92, 0x60, +0xa6, 0xc4, 0x0a, 0x68, 0x84, 0x80, 0x46, 0x0c, +0x98, 0x17, 0x02, 0x0b, 0x6b, 0x84, 0x13, 0x70, +0x6a, 0x9f, 0x0a, 0x6b, 0xe1, 0x83, 0x1a, 0x6b, +0xe1, 0x17, 0x8e, 0x3c, 0x70, 0xee, 0x94, 0x2a, +0x81, 0x8b, 0xd5, 0x0b, 0x0a, 0x66, 0x96, 0x0e, +0x0a, 0x9a, 0xb0, 0x16, 0xf6, 0xb3, 0xc8, 0x5a, +0xb8, 0xfa, 0x40, 0x41, 0xae, 0x90, 0xd1, 0x47, +0x28, 0x64, 0xa0, 0xe6, 0x62, 0x20, 0x70, 0xd4, +0x7e, 0x9a, 0x9a, 0x16, 0x4f, 0x23, 0x6e, 0x0b, +0xf0, 0xaf, 0xac, 0xd1, 0xbf, 0x26, 0xee, 0x77, +0x8d, 0x4e, 0x00, 0x6c, 0x5d, 0x4d, 0x7f, 0xfb, +0xe2, 0xf3, 0x32, 0x05, 0xc0, 0x09, 0x34, 0x6b, +0x79, 0xef, 0x9f, 0x89, 0x46, 0x6d, 0x34, 0xce, +0x47, 0xe3, 0x97, 0x2c, 0x7d, 0xe5, 0xe0, 0x1f, +0x08, 0x03, 0x16, 0x08, 0xbc, 0xf7, 0xe7, 0xfd, +0xff, 0x97, 0x72, 0xf0, 0x0f, 0xb8, 0x00, 0xe6, +0x03, 0x98, 0x13, 0xb8, 0x0a, 0x06, 0x80, 0x27, +0x09, 0x32, 0xf4, 0xb7, 0xf0, 0x70, 0xb2, 0xc9, +0x5b, 0x7f, 0x6e, 0xfe, 0x76, 0x6f, 0xc7, 0xaa, +0x9b, 0xff, 0x03, 0xd4, 0x40, 0xf1, 0xfd, 0x5a, +0x08, 0x00, 0x51, 0x55, 0x54, 0x6f, 0x35, 0x0e, +0x9c, 0x61, 0xd7, 0x71, 0xfd, 0x7f, 0x42, 0x4c, +0x78, 0x08, 0x38, 0x76, 0x4a, 0x42, 0xfc, 0xb0, +0x9f, 0x81, 0x10, 0xb0, 0x1e, 0x27, 0x30, 0xa1, +0xe9, 0x02, 0x70, 0x02, 0xcb, 0x61, 0x35, 0x3c, +0x47, 0xba, 0x1e, 0xf0, 0x01, 0x4d, 0xaf, 0xa4, +0x09, 0x42, 0x24, 0x8c, 0x00, 0x0f, 0xc0, 0x42, +0xc0, 0x1b, 0x6f, 0x57, 0x03, 0x80, 0x7e, 0x1d, +0x53, 0x25, 0x11, 0x60, 0x2c, 0x04, 0x74, 0x62, +0xa0, 0x54, 0x21, 0xa0, 0x88, 0x81, 0xea, 0xe0, +0x04, 0x70, 0x31, 0xd0, 0x31, 0x8b, 0x2f, 0x05, +0x1e, 0x69, 0xae, 0x30, 0x0e, 0xfd, 0xe2, 0x08, +0xcb, 0xe4, 0x72, 0x83, 0x82, 0xcd, 0x9e, 0x6c, +0x50, 0x70, 0x41, 0xd7, 0x2b, 0x12, 0x28, 0x18, +0xfa, 0x9a, 0xe6, 0x62, 0xc0, 0x77, 0x2a, 0x6c, +0xa5, 0x77, 0x47, 0x0b, 0xf0, 0xcf, 0x0c, 0xf8, +0x37, 0xaa, 0x38, 0x14, 0x8d, 0x7f, 0xb5, 0x22, +0x00, 0xa2, 0xf3, 0x73, 0xca, 0xb5, 0xf7, 0x67, +0xab, 0xdf, 0x02, 0xd5, 0x38, 0xff, 0x53, 0x79, +0x9c, 0x8f, 0x27, 0x78, 0x1e, 0xe7, 0xf3, 0x2a, +0x80, 0x57, 0x02, 0xbc, 0x1a, 0xc8, 0x45, 0x53, +0x67, 0xf2, 0x9f, 0x83, 0x7f, 0xf8, 0x12, 0x80, +0x2f, 0x02, 0xf8, 0x32, 0xe0, 0x00, 0x2e, 0x04, +0xf8, 0xe7, 0x39, 0x98, 0x0c, 0xb0, 0x00, 0xe0, +0xbd, 0xff, 0xda, 0x9d, 0x29, 0x64, 0x7f, 0x4b, +0x3f, 0xda, 0x97, 0x9b, 0x3f, 0x67, 0x44, 0xd8, +0x5e, 0x59, 0x41, 0xbe, 0xbb, 0x36, 0xcb, 0xcd, +0x9f, 0x6b, 0x8e, 0xf8, 0x1e, 0x2d, 0x04, 0x80, +0xa8, 0x2a, 0xe7, 0x03, 0x66, 0xfc, 0x06, 0x1e, +0x02, 0xe1, 0x8e, 0x9d, 0x93, 0x7f, 0x30, 0xf2, +0x10, 0x80, 0x30, 0x98, 0xd6, 0x21, 0x9e, 0x06, +0x34, 0xf0, 0x2e, 0x45, 0x08, 0x58, 0xcf, 0x4f, +0x60, 0x44, 0xe3, 0x99, 0x80, 0xfc, 0xde, 0xd5, +0x8b, 0x20, 0x1e, 0x0f, 0x91, 0xc0, 0x06, 0x43, +0x6c, 0x43, 0xac, 0x9e, 0x04, 0x78, 0x75, 0xd8, +0x24, 0x09, 0x84, 0x91, 0x52, 0xb1, 0x18, 0xd0, +0x09, 0x81, 0x51, 0x8d, 0x4b, 0x9b, 0x0a, 0x2c, +0x34, 0xb9, 0x1e, 0xa8, 0x34, 0x27, 0x50, 0xc6, +0x7a, 0x80, 0x9f, 0xe0, 0x3d, 0x3a, 0xe7, 0xb1, +0xa8, 0x92, 0x84, 0x40, 0x40, 0x9f, 0xa2, 0x5f, +0xa6, 0xb5, 0x49, 0xa8, 0x13, 0xa0, 0xa0, 0x9f, +0x55, 0x40, 0xc1, 0x33, 0x66, 0x40, 0xc1, 0x8b, +0x16, 0xf3, 0x01, 0x6c, 0x2d, 0x1c, 0x30, 0x11, +0xc9, 0x8d, 0x2f, 0x69, 0x2e, 0x06, 0x3c, 0x3d, +0xb6, 0xd3, 0xf8, 0x92, 0xa5, 0x02, 0xfc, 0x33, +0x78, 0xfa, 0xef, 0x7b, 0x77, 0x2a, 0xe2, 0x7e, +0xd7, 0x2a, 0x02, 0xc0, 0x3b, 0x77, 0x0d, 0xfd, +0xbb, 0x8c, 0xb8, 0x5f, 0xde, 0xfb, 0xf3, 0x88, +0x9e, 0x9b, 0x3f, 0x43, 0x7a, 0xfc, 0xf4, 0x6e, +0x6a, 0x9c, 0xcf, 0xf0, 0x9f, 0x3a, 0xf8, 0x87, +0xe1, 0x40, 0xbe, 0xf9, 0xe7, 0xdb, 0x7f, 0x75, +0xf0, 0x0f, 0x7b, 0x03, 0xb0, 0x47, 0x80, 0xec, +0xf3, 0x2f, 0xdd, 0xfb, 0x67, 0xa7, 0x91, 0xf3, +0xb5, 0x78, 0xa3, 0x68, 0x5f, 0x29, 0x24, 0xea, +0x26, 0xf6, 0xfe, 0x05, 0x49, 0xea, 0xe6, 0x7f, +0x00, 0xf5, 0x2b, 0xf1, 0xfd, 0x59, 0x08, 0x00, +0x51, 0xd5, 0x27, 0x04, 0xfe, 0x30, 0xa2, 0xd9, +0xac, 0x68, 0x78, 0x08, 0xdc, 0x37, 0x5c, 0x0b, +0xf0, 0xaa, 0xc0, 0xb6, 0x5d, 0x8c, 0xd4, 0xf0, +0x59, 0x08, 0x94, 0x97, 0x13, 0x18, 0x68, 0xa1, +0x9f, 0x00, 0x4f, 0x04, 0x92, 0x5e, 0xbd, 0xaa, +0xe7, 0x21, 0xc0, 0xfc, 0x00, 0x8b, 0x00, 0xf5, +0x3a, 0x80, 0xcf, 0x0a, 0xa7, 0xb6, 0x58, 0xa5, +0x85, 0x06, 0xd5, 0x42, 0x20, 0x52, 0x27, 0x04, +0xca, 0x5c, 0x0f, 0x54, 0x25, 0x27, 0x60, 0xbc, +0x1e, 0xb0, 0x47, 0xd8, 0x90, 0x57, 0xb7, 0x9d, +0xcc, 0x06, 0x48, 0xab, 0x01, 0x9f, 0x5e, 0xbb, +0x1f, 0x4e, 0x6e, 0xb5, 0xc6, 0x04, 0x28, 0xb8, +0xd2, 0xea, 0xa0, 0xa0, 0xb3, 0x85, 0xa0, 0xa0, +0x97, 0x21, 0x28, 0xd8, 0xa6, 0xf6, 0x81, 0x82, +0x6c, 0x2d, 0x1c, 0x30, 0x4e, 0x1b, 0xe1, 0x8c, +0xf3, 0x41, 0xd7, 0x88, 0x2c, 0x1a, 0x7d, 0x7e, +0xfe, 0x13, 0x06, 0xfe, 0x95, 0xfe, 0xf4, 0x3f, +0xbe, 0x30, 0x92, 0xbc, 0xb6, 0xaf, 0x56, 0x04, +0xc0, 0xfa, 0x82, 0x9d, 0xe5, 0xda, 0xfb, 0x67, +0xe0, 0x69, 0x5d, 0x1e, 0xe7, 0xff, 0xd7, 0x60, +0x9c, 0xcf, 0xe7, 0x7f, 0x7c, 0x06, 0x78, 0x57, +0x0e, 0xfe, 0x81, 0xdb, 0x1f, 0xbb, 0xfe, 0xb1, +0xfb, 0xdf, 0x67, 0x08, 0xfe, 0x61, 0x37, 0x40, +0x76, 0x05, 0x64, 0xa7, 0xbf, 0xb3, 0x88, 0x05, +0x56, 0xef, 0xfd, 0x03, 0xa4, 0xbd, 0xbf, 0x7e, +0xb4, 0x2f, 0x37, 0x7f, 0xb6, 0x83, 0x76, 0x29, +0x8e, 0x57, 0x37, 0xff, 0x4f, 0x51, 0x0d, 0xc4, +0xf7, 0x64, 0x21, 0x00, 0x44, 0xd5, 0x8c, 0x10, +0x78, 0x76, 0x54, 0x8b, 0xb9, 0x69, 0xa6, 0x3c, +0x04, 0x18, 0x1e, 0x9c, 0xd0, 0x7a, 0xb9, 0x56, +0x04, 0xb8, 0x55, 0x09, 0x27, 0xe0, 0xd8, 0x7a, +0xb5, 0xbe, 0x87, 0x00, 0xec, 0x83, 0xe7, 0x80, +0xb0, 0xe7, 0x6b, 0x01, 0xf5, 0x14, 0x60, 0x45, +0xdf, 0xa3, 0x12, 0x34, 0xa8, 0x3b, 0x23, 0x34, +0x25, 0x04, 0x6a, 0x8e, 0x13, 0xb0, 0x2d, 0x45, +0x08, 0x38, 0xb4, 0xda, 0x40, 0xbe, 0x3d, 0xf7, +0x28, 0x9f, 0x53, 0xcf, 0xee, 0xdb, 0x1e, 0xdb, +0x34, 0x8f, 0x32, 0x10, 0x02, 0x2b, 0xcb, 0xb4, +0x16, 0x9e, 0x66, 0xa1, 0xb5, 0x70, 0x7d, 0x05, +0x05, 0x67, 0x0e, 0x38, 0x05, 0x2e, 0x40, 0x73, +0x3a, 0x18, 0xf2, 0xfa, 0x11, 0x9a, 0xbe, 0x62, +0x33, 0x0d, 0xbf, 0x36, 0xfb, 0x89, 0x06, 0xff, +0xfa, 0xdd, 0x99, 0x46, 0x9e, 0xd9, 0x6b, 0x15, +0x01, 0xe0, 0x83, 0x9f, 0x97, 0x15, 0xf7, 0xab, +0xde, 0xfb, 0xa7, 0xa1, 0xf9, 0x4b, 0xe3, 0x7c, +0x18, 0xfa, 0xa8, 0xc7, 0xf9, 0x6c, 0xf8, 0xc3, +0x3e, 0xfe, 0x6c, 0x00, 0xc4, 0x46, 0x40, 0x6c, +0x08, 0xc4, 0x3e, 0xff, 0xec, 0xf7, 0xcf, 0xbe, +0xff, 0xff, 0x86, 0xff, 0xbf, 0x1c, 0xfc, 0xc3, +0xb9, 0x00, 0xd7, 0xf1, 0xeb, 0x78, 0x92, 0x20, +0xef, 0xfd, 0x17, 0x60, 0xef, 0x6f, 0x18, 0xed, +0x3b, 0x41, 0x82, 0xfe, 0x96, 0x90, 0xfd, 0xd9, +0x18, 0x75, 0xf3, 0xff, 0xc5, 0x37, 0x7f, 0xf3, +0x6b, 0xe2, 0xfb, 0xb0, 0x10, 0x00, 0xa2, 0x6a, +0xb8, 0x5e, 0x7e, 0x76, 0x46, 0x73, 0x78, 0x08, +0x14, 0x9a, 0xf6, 0x10, 0xd8, 0x4d, 0x63, 0x5a, +0x2e, 0xd0, 0x8a, 0x00, 0xb7, 0x0a, 0x70, 0x02, +0xe6, 0xd7, 0x03, 0xe3, 0x61, 0x29, 0xcc, 0x36, +0xc2, 0x65, 0x59, 0x03, 0x8f, 0xc3, 0x8a, 0xc0, +0xf0, 0x7a, 0x40, 0xf6, 0x13, 0xa8, 0x3c, 0x27, +0xb0, 0xb8, 0x4a, 0x39, 0x01, 0xbe, 0x18, 0x08, +0xe8, 0x5d, 0xa4, 0xb5, 0x16, 0x2e, 0x79, 0xe4, +0xda, 0x25, 0x0b, 0x30, 0xe4, 0x0a, 0x3d, 0x50, +0x70, 0x62, 0xb9, 0x40, 0xc1, 0x84, 0x3a, 0x07, +0x0a, 0xce, 0xb6, 0x02, 0x28, 0x18, 0x3a, 0xe2, +0x28, 0x05, 0x0d, 0xd1, 0x5c, 0x0c, 0xf0, 0x8f, +0xd3, 0x12, 0x13, 0x68, 0xe8, 0xad, 0x70, 0x93, +0xcd, 0x7f, 0x70, 0xbd, 0x04, 0xff, 0x74, 0x4f, +0xff, 0x36, 0x1c, 0xf7, 0xcb, 0xcd, 0x5f, 0x2b, +0x00, 0xd2, 0x8b, 0xcd, 0xc7, 0xfd, 0x7e, 0x08, +0xc0, 0x4f, 0xde, 0xfb, 0xa7, 0xa2, 0x79, 0xf3, +0xf8, 0x9e, 0xc7, 0xf9, 0xd2, 0xfb, 0x0c, 0xc6, +0xf9, 0x6c, 0xfd, 0x2b, 0x59, 0xfa, 0xca, 0xc1, +0x3f, 0x68, 0xf8, 0x9c, 0xf8, 0xc7, 0xc9, 0x7f, +0x9c, 0x00, 0xb8, 0x53, 0x1b, 0xfc, 0x73, 0x17, +0x09, 0x81, 0x59, 0x98, 0x18, 0xc8, 0x7b, 0xff, +0x35, 0x80, 0xfa, 0xec, 0x6e, 0x19, 0x9f, 0xfb, +0x71, 0xf3, 0xb7, 0xb9, 0xb2, 0x1c, 0x7b, 0xff, +0x4d, 0x8a, 0x00, 0x40, 0xf3, 0x0f, 0x17, 0xdf, +0x7b, 0x85, 0x00, 0x10, 0x55, 0xab, 0x84, 0xc0, +0xf4, 0xce, 0xf0, 0x10, 0x78, 0xdb, 0x94, 0x87, +0x00, 0xc4, 0x01, 0xc1, 0x7a, 0x98, 0x5e, 0x33, +0x2b, 0x04, 0x2a, 0x16, 0x4b, 0x3c, 0xb4, 0x61, +0x30, 0x92, 0x04, 0xf3, 0xcc, 0x0a, 0x00, 0xb6, +0x18, 0x96, 0xd3, 0x08, 0x4d, 0x09, 0x01, 0x6b, +0x71, 0x02, 0x96, 0xaf, 0x07, 0xca, 0xcf, 0x09, +0x38, 0xb7, 0x87, 0x1d, 0x6a, 0xdf, 0x43, 0x8f, +0xb4, 0xcc, 0xc5, 0x83, 0x19, 0x1d, 0x53, 0xa4, +0x68, 0xe4, 0xda, 0x0d, 0x0a, 0xee, 0xd1, 0xe3, +0x03, 0xd4, 0x42, 0x20, 0x58, 0x12, 0x02, 0xd5, +0x0b, 0x0a, 0xf2, 0xb4, 0x20, 0x68, 0x1c, 0xc4, +0xc7, 0x9b, 0x1a, 0x98, 0xd5, 0x7f, 0x5c, 0x21, +0xd9, 0xe4, 0xc4, 0x54, 0x7a, 0xf4, 0x3f, 0xa0, +0x0e, 0x81, 0x7f, 0x2f, 0xdc, 0xb2, 0x27, 0x2f, +0xec, 0xfb, 0x65, 0x01, 0xe0, 0x97, 0x15, 0x67, +0x36, 0xee, 0x57, 0x6f, 0xef, 0x8f, 0x1f, 0x39, +0xe1, 0x4f, 0x19, 0xe7, 0x63, 0x02, 0x20, 0x8f, +0xf3, 0x39, 0xec, 0x87, 0x43, 0x7f, 0x38, 0xfc, +0x87, 0x43, 0x80, 0x38, 0x0c, 0xe8, 0x38, 0xde, +0xf7, 0x29, 0x46, 0xfe, 0x3f, 0xff, 0xfc, 0x33, +0xdd, 0xba, 0x7e, 0x9d, 0x0a, 0xf2, 0xf3, 0xa5, +0x95, 0x00, 0x43, 0x83, 0x05, 0xaa, 0xbd, 0xff, +0x26, 0xec, 0xfd, 0x9d, 0xa4, 0xbd, 0xbf, 0xf1, +0xb9, 0xdf, 0xf8, 0x9b, 0x4b, 0xc8, 0x6b, 0xdf, +0x46, 0x55, 0xf3, 0xdf, 0xb4, 0x4f, 0x7c, 0xbf, +0x15, 0x02, 0x40, 0x54, 0x6d, 0xf5, 0x10, 0x78, +0xde, 0xed, 0x65, 0xdb, 0xb6, 0xd1, 0xb7, 0x4c, +0x7b, 0x08, 0x64, 0xd1, 0xd0, 0x26, 0xa1, 0x10, +0x02, 0xae, 0x8a, 0x10, 0xa8, 0x0c, 0x27, 0xa0, +0x5e, 0x0f, 0x38, 0xb6, 0x8e, 0xa1, 0xb5, 0x2f, +0xbe, 0x6d, 0x52, 0x00, 0x8c, 0x6d, 0x3a, 0x4f, +0x9b, 0x44, 0x18, 0x66, 0x20, 0x04, 0x66, 0x9a, +0x11, 0x02, 0xb5, 0x8f, 0x13, 0x98, 0xda, 0x7c, +0x2d, 0xb9, 0x76, 0xca, 0x86, 0x00, 0x38, 0xf2, +0x50, 0xcb, 0x5c, 0x3c, 0x70, 0x68, 0xb7, 0xa1, +0x6a, 0x40, 0xc1, 0x16, 0xa5, 0x83, 0x82, 0xae, +0x56, 0x01, 0x05, 0xf7, 0x9b, 0x01, 0x05, 0x4b, +0xcc, 0x80, 0x82, 0x67, 0x2b, 0x0d, 0x0a, 0xce, +0xef, 0x7e, 0x59, 0x02, 0x05, 0x39, 0x76, 0x58, +0x8a, 0x70, 0x76, 0xc8, 0xa7, 0x71, 0x45, 0x4b, +0xab, 0x0d, 0xfc, 0x7b, 0xad, 0x86, 0xc0, 0xbf, +0x3e, 0xef, 0x4f, 0xa1, 0x69, 0xdb, 0x96, 0xea, +0x9e, 0xfe, 0x51, 0xf9, 0x67, 0x4a, 0x2c, 0xde, +0xfb, 0xe7, 0xa0, 0xa9, 0xcb, 0xe3, 0x7c, 0x8e, +0xf3, 0xe5, 0x58, 0x5f, 0x79, 0x9c, 0xcf, 0x71, +0xbf, 0x1c, 0xfb, 0xcb, 0x96, 0xbe, 0x2c, 0x12, +0xe4, 0xe0, 0x1f, 0x86, 0xfe, 0x3e, 0xc2, 0xe5, +0x40, 0x71, 0x51, 0x91, 0xe2, 0x14, 0x78, 0x16, +0x57, 0x01, 0xca, 0xde, 0x3f, 0x3d, 0x8d, 0xfc, +0xcf, 0x27, 0x9a, 0x3c, 0xf7, 0xe3, 0x04, 0x48, +0xd7, 0xc3, 0xf1, 0xea, 0xe6, 0xff, 0x31, 0xea, +0x39, 0xf1, 0x7d, 0x56, 0x08, 0x00, 0x51, 0xb5, +0xbc, 0xde, 0x6c, 0xe0, 0x35, 0x7a, 0x4a, 0xfb, +0xb5, 0x9f, 0x19, 0x7b, 0x08, 0x94, 0x90, 0x53, +0x97, 0x2d, 0xf4, 0x56, 0xa3, 0x40, 0x95, 0x10, +0xb0, 0x1e, 0x27, 0x60, 0xdf, 0x2a, 0x1a, 0x79, +0x02, 0x05, 0x08, 0x03, 0x3a, 0x49, 0xab, 0x5f, +0x38, 0x83, 0x00, 0xa1, 0x0d, 0x52, 0xee, 0x80, +0x2e, 0x8d, 0x30, 0x4c, 0x89, 0x25, 0xd6, 0x13, +0x02, 0x7a, 0x9c, 0xc0, 0xac, 0x5a, 0xcb, 0x09, +0x70, 0xf1, 0x53, 0xbc, 0x47, 0x97, 0xad, 0xd2, +0x4a, 0x40, 0x7a, 0x92, 0xed, 0x5d, 0xf0, 0x60, +0x2a, 0x1c, 0x0f, 0x9f, 0x0c, 0x50, 0xf0, 0xb4, +0x19, 0x50, 0xb0, 0xbc, 0xd6, 0xc2, 0x17, 0x20, +0x04, 0x74, 0x42, 0xd5, 0xdd, 0x2f, 0x97, 0x46, +0x9e, 0x9c, 0x5b, 0x6f, 0xc1, 0xbf, 0x97, 0xaf, +0x4f, 0xc7, 0xad, 0xbf, 0xee, 0xe9, 0x3f, 0x30, +0x2b, 0xc1, 0x6c, 0xdc, 0xef, 0x49, 0x50, 0xfd, +0xf2, 0xde, 0x3f, 0x15, 0xbb, 0x7a, 0xa3, 0x71, +0x3e, 0x5b, 0xfa, 0xca, 0xc1, 0x3f, 0x10, 0x0b, +0xef, 0x63, 0xac, 0x7f, 0x00, 0x96, 0xbe, 0x7b, +0x61, 0x02, 0x74, 0x43, 0x0e, 0xfe, 0xc1, 0xd9, +0xdf, 0xc9, 0xa3, 0x47, 0x29, 0x17, 0x63, 0xfe, +0x0b, 0x68, 0xfc, 0x37, 0x01, 0x06, 0xaa, 0xa1, +0xbf, 0xf9, 0xc5, 0x49, 0x46, 0xd1, 0xbe, 0x7c, +0xee, 0x37, 0x0e, 0xcd, 0xdf, 0xfe, 0x4c, 0x8c, +0xba, 0xf9, 0xdf, 0x47, 0xbd, 0x24, 0xbe, 0xb7, +0x0a, 0x01, 0x20, 0xaa, 0x0e, 0xd5, 0xa0, 0x46, +0xfe, 0xce, 0xf0, 0x10, 0xf8, 0x3a, 0xd8, 0x84, +0x87, 0x80, 0x7d, 0xc7, 0x0d, 0x34, 0xb0, 0xa1, +0x8f, 0x19, 0x21, 0x50, 0x79, 0x4e, 0x40, 0x2f, +0x80, 0xc8, 0x20, 0x96, 0x58, 0x7f, 0x2a, 0x30, +0xb3, 0xcc, 0xf5, 0x40, 0x6d, 0xe3, 0x04, 0xec, +0x5a, 0x26, 0x90, 0x77, 0xf7, 0x7c, 0xfe, 0x7c, +0x4a, 0x8c, 0x80, 0x77, 0xcf, 0xfc, 0x47, 0xb6, +0x2d, 0x63, 0xeb, 0x3e, 0x28, 0xd8, 0xae, 0xa2, +0xa0, 0xe0, 0x05, 0x65, 0x2d, 0x30, 0xaf, 0x1c, +0xa0, 0xe0, 0xac, 0xd7, 0xce, 0xe0, 0x62, 0xa0, +0x48, 0xf3, 0xba, 0xc4, 0x54, 0x60, 0xc6, 0xdc, +0x2d, 0x34, 0xf4, 0xdd, 0x99, 0xd5, 0x04, 0xfe, +0xb9, 0x55, 0x0b, 0xf8, 0xc7, 0x4f, 0xff, 0x8e, +0x39, 0xab, 0xf4, 0x9e, 0xfe, 0x0f, 0x5f, 0x3e, +0x67, 0xd1, 0xde, 0x3f, 0x05, 0xcd, 0xbf, 0x84, +0x2d, 0x7d, 0x31, 0xce, 0xbf, 0xaf, 0x1e, 0xe7, +0xc3, 0x03, 0xe0, 0x0e, 0x1a, 0xfa, 0x2f, 0x20, +0xfe, 0x3f, 0xf9, 0xeb, 0x5f, 0xa9, 0xe4, 0xd0, +0x21, 0xda, 0x0e, 0x4b, 0xdf, 0x4b, 0xf0, 0x00, +0x60, 0xa3, 0x9f, 0xff, 0xe0, 0x42, 0xe0, 0x02, +0x28, 0x7f, 0xb6, 0x09, 0x3e, 0x05, 0x11, 0xf0, +0x11, 0x7e, 0xcf, 0x4c, 0x34, 0x7e, 0x8e, 0x0c, +0xe6, 0xbd, 0xff, 0x6a, 0xdc, 0xf3, 0x33, 0xf1, +0xaf, 0x3b, 0xf7, 0x5b, 0xa1, 0x10, 0xff, 0x36, +0x97, 0x35, 0x7b, 0x7f, 0x5f, 0x4d, 0xf3, 0xe7, +0x0a, 0x12, 0xdf, 0x4f, 0x85, 0x00, 0x10, 0x55, +0x27, 0xf9, 0x00, 0xc7, 0xdf, 0x0e, 0x69, 0x12, +0x32, 0x0b, 0x1e, 0x02, 0xff, 0x33, 0xf4, 0x10, +0x60, 0x61, 0x30, 0xb5, 0xfd, 0x3a, 0x7a, 0xb3, +0x81, 0xa7, 0x24, 0x04, 0xd4, 0xeb, 0x01, 0x6b, +0x71, 0x02, 0xa6, 0xfc, 0x04, 0x4a, 0x17, 0x02, +0x75, 0x8f, 0x13, 0x70, 0x68, 0x8d, 0x1d, 0x69, +0xcf, 0xbd, 0x32, 0x84, 0xf9, 0xd8, 0xbd, 0x5b, +0x1e, 0xd9, 0x34, 0x5f, 0x55, 0x45, 0xa0, 0xe0, +0x66, 0x7d, 0x50, 0xd0, 0x40, 0x08, 0x58, 0x0a, +0x0a, 0xfa, 0x5a, 0x08, 0x0a, 0x86, 0x54, 0x23, +0x28, 0x18, 0x3e, 0xe4, 0x38, 0x05, 0x8e, 0xd0, +0x5c, 0x0c, 0x04, 0x83, 0x13, 0xb0, 0x8b, 0x49, +0xa4, 0xc1, 0xd7, 0x83, 0xeb, 0x05, 0xf8, 0xf7, +0xfa, 0x65, 0xc4, 0xfd, 0x6e, 0xd3, 0x3d, 0xfd, +0x87, 0x65, 0x6d, 0x28, 0xb5, 0xf9, 0xff, 0x17, +0x4f, 0xf8, 0xf2, 0xde, 0x9f, 0x7f, 0x64, 0xb3, +0x1f, 0xc3, 0x71, 0x7e, 0x7e, 0x6e, 0xae, 0x5e, +0xf0, 0x0f, 0x5b, 0xf9, 0x66, 0xe2, 0x63, 0xf9, +0x47, 0xbd, 0xe0, 0x1f, 0x7c, 0x1c, 0x7f, 0x3c, +0x43, 0x83, 0x7b, 0x31, 0x1d, 0xd0, 0xed, 0xfd, +0x53, 0xc9, 0xe9, 0xbd, 0x38, 0xa3, 0x68, 0x5f, +0x6e, 0xfe, 0xe3, 0x6e, 0x2e, 0xc6, 0xde, 0x3f, +0x49, 0xdd, 0xfc, 0xf3, 0xc5, 0xf7, 0x51, 0x21, +0x00, 0x44, 0xd5, 0x7d, 0x21, 0xf0, 0xc7, 0xe1, +0xcd, 0x22, 0x56, 0x3b, 0x75, 0x4d, 0x35, 0xf2, +0x10, 0x08, 0xec, 0x77, 0x80, 0x6c, 0xda, 0x46, +0xd3, 0xeb, 0xcf, 0xbb, 0x19, 0x09, 0x01, 0x6b, +0x71, 0x02, 0x6f, 0x19, 0x09, 0x81, 0x60, 0x0b, +0x84, 0x40, 0xd5, 0x73, 0x02, 0x7a, 0x3b, 0xfc, +0x4a, 0x70, 0x02, 0x33, 0xda, 0x6e, 0xa6, 0xc0, +0x3e, 0xfb, 0x1f, 0x69, 0x27, 0x2c, 0x0f, 0x5d, +0x3a, 0xa7, 0xe3, 0xf7, 0x59, 0x6e, 0x65, 0x50, +0x30, 0x59, 0x0f, 0x14, 0x74, 0xd2, 0x03, 0x05, +0x33, 0x4a, 0x05, 0x05, 0x25, 0x21, 0x50, 0x27, +0x40, 0xc1, 0x6b, 0x08, 0x1a, 0x3a, 0x4c, 0x41, +0x6f, 0x69, 0x2e, 0x06, 0x02, 0x87, 0x1f, 0x20, +0xdb, 0x4d, 0xab, 0x69, 0xe0, 0x9d, 0x80, 0x6a, +0x00, 0xff, 0x5c, 0xaa, 0x04, 0xfc, 0xe3, 0xa7, +0x7f, 0xa7, 0xcc, 0x18, 0x34, 0x7e, 0x9d, 0x00, +0x28, 0x2d, 0xee, 0x97, 0x47, 0xf9, 0xdb, 0x31, +0xc2, 0x97, 0xf7, 0xfe, 0x5b, 0x41, 0xea, 0xf3, +0x38, 0xff, 0x27, 0x8c, 0xf3, 0x3f, 0x57, 0x8f, +0xf3, 0xf1, 0x64, 0xff, 0x1f, 0xb8, 0xfc, 0x7d, +0x0b, 0xb7, 0x3f, 0x7e, 0xe2, 0xe7, 0x30, 0x9f, +0x63, 0x98, 0x00, 0xf0, 0x24, 0xe0, 0x17, 0xb8, +0x02, 0xde, 0x01, 0xe8, 0xc7, 0x13, 0x82, 0x42, +0x4c, 0x0a, 0x6e, 0x63, 0x62, 0xf0, 0xb6, 0xbc, +0xf7, 0xcf, 0xd4, 0xec, 0xfd, 0xfd, 0xce, 0x27, +0x18, 0x45, 0xfb, 0x8e, 0x03, 0xf1, 0x3f, 0xf6, +0xce, 0x42, 0x72, 0x3d, 0x14, 0x2f, 0x37, 0x7e, +0xae, 0xbf, 0xf8, 0xee, 0xdc, 0xf4, 0x8c, 0xf8, +0xfe, 0x29, 0x04, 0x80, 0xa8, 0xfa, 0x23, 0x04, +0x9e, 0x87, 0x87, 0x40, 0x96, 0x49, 0x0f, 0x81, +0x3e, 0x05, 0x34, 0xbe, 0xd5, 0x52, 0x45, 0x04, +0x58, 0x9f, 0x13, 0x28, 0x65, 0x3d, 0x50, 0xab, +0x38, 0x81, 0x65, 0x95, 0xe2, 0x04, 0x9c, 0x3b, +0xa4, 0x51, 0x70, 0xbf, 0xc3, 0x0f, 0x35, 0x13, +0x96, 0xc3, 0x0f, 0xa6, 0xc3, 0x11, 0x51, 0xef, +0xf7, 0xad, 0x04, 0x28, 0xe8, 0x50, 0x61, 0x50, +0x30, 0xcf, 0x0c, 0x28, 0x58, 0x51, 0x6b, 0xe1, +0xaa, 0x03, 0x05, 0xd9, 0x5a, 0x98, 0x41, 0x41, +0xf6, 0x0e, 0x90, 0x4e, 0x5a, 0x27, 0xed, 0xa5, +0x71, 0xdb, 0x97, 0xd6, 0x49, 0xf0, 0x4f, 0x8a, +0xfb, 0x95, 0x9a, 0xbf, 0x46, 0x00, 0x44, 0xe6, +0x6c, 0xb2, 0x68, 0xef, 0x9f, 0x86, 0x51, 0xbd, +0xe1, 0x38, 0x9f, 0x9b, 0x3f, 0x8b, 0x00, 0x16, +0x03, 0xec, 0xf3, 0x7f, 0x03, 0x7e, 0xff, 0xbc, +0xf3, 0xe7, 0xdd, 0x3f, 0x33, 0x00, 0x8f, 0x20, +0x20, 0xe4, 0xe0, 0x1f, 0x66, 0x04, 0x98, 0x15, +0xb8, 0x8d, 0xb7, 0xab, 0xf7, 0xfe, 0x73, 0x8f, +0x6c, 0xd4, 0x8b, 0xf6, 0x95, 0xcf, 0xfd, 0xb8, +0xf9, 0xdb, 0x9f, 0x8e, 0x51, 0x37, 0xff, 0x7b, +0x68, 0xfe, 0xfd, 0xc4, 0xf7, 0x4c, 0x21, 0x00, +0x44, 0xd5, 0xc3, 0x7a, 0xe9, 0x59, 0xc7, 0x96, +0x63, 0x5b, 0x2d, 0xdc, 0x6f, 0xca, 0x43, 0xc0, +0xa7, 0xf7, 0x2e, 0x1a, 0xdd, 0x62, 0x1e, 0xbd, +0xfa, 0xac, 0x0b, 0x44, 0x80, 0x8b, 0x56, 0x0c, +0xd4, 0x7e, 0x4e, 0x60, 0x64, 0x95, 0x70, 0x02, +0xcb, 0xcb, 0xcd, 0x09, 0x4c, 0xc1, 0xc5, 0x80, +0x1b, 0x5f, 0x0c, 0xbc, 0xa0, 0xb9, 0x18, 0x08, +0xec, 0xbb, 0xff, 0xa1, 0x7d, 0xdb, 0x44, 0x93, +0x17, 0x03, 0xb5, 0x1b, 0x14, 0x2c, 0xaa, 0x51, +0x50, 0x70, 0x5e, 0xaf, 0x8b, 0xe4, 0x6f, 0x53, +0x20, 0xb9, 0x09, 0x4a, 0x27, 0xad, 0xce, 0xdb, +0x68, 0xe4, 0xa1, 0xb9, 0x55, 0x0e, 0xfe, 0x59, +0xf6, 0xf4, 0x6f, 0x6f, 0xd1, 0xd3, 0xbf, 0x6b, +0xc6, 0x1a, 0x3d, 0x01, 0x70, 0xe3, 0x93, 0x0f, +0x4d, 0x36, 0xff, 0xbf, 0x00, 0xe6, 0x93, 0xf7, +0xfe, 0x7c, 0xf2, 0x77, 0x0a, 0x74, 0xbf, 0x64, +0xe9, 0x6b, 0x30, 0xce, 0xe7, 0x35, 0x80, 0x64, +0xe9, 0xab, 0x0e, 0xfe, 0x01, 0xfd, 0xcf, 0x57, +0x00, 0x7c, 0x0d, 0x70, 0x5a, 0x15, 0xfc, 0xc3, +0x71, 0xbf, 0x6c, 0xf4, 0x23, 0xef, 0xfd, 0x63, +0xb1, 0xf7, 0x9f, 0x8a, 0xe6, 0xaf, 0x7f, 0xee, +0xb7, 0x44, 0x22, 0xfe, 0x6d, 0x2e, 0x2d, 0xd3, +0xee, 0xfd, 0xb5, 0xb5, 0x73, 0x93, 0x8f, 0xf8, +0x3e, 0x29, 0x04, 0x80, 0xa8, 0xfa, 0x2f, 0x04, +0xba, 0x4e, 0x68, 0xb3, 0xfc, 0x82, 0x6f, 0xef, +0x3d, 0x26, 0x3c, 0x04, 0xb6, 0xd1, 0xf0, 0xa6, +0x11, 0x06, 0x42, 0xc0, 0xf4, 0x7a, 0xa0, 0x76, +0x71, 0x02, 0x91, 0xb5, 0x82, 0x13, 0x98, 0xda, +0x22, 0x8e, 0x3c, 0xbb, 0x6e, 0xa3, 0xd0, 0x17, +0x35, 0x17, 0x03, 0x7e, 0xbd, 0xf6, 0x3e, 0x9a, +0xd2, 0x6a, 0xad, 0x89, 0x8b, 0x01, 0x01, 0x0a, +0x96, 0x65, 0x2d, 0xec, 0x37, 0xb1, 0x40, 0xf3, +0xba, 0x7c, 0x09, 0x69, 0x98, 0xc1, 0x19, 0x34, +0xf4, 0x4c, 0x78, 0xad, 0x01, 0xff, 0x4a, 0x7b, +0xfa, 0x97, 0xe2, 0x7e, 0xb7, 0xeb, 0x04, 0xc0, +0xa2, 0xad, 0x69, 0xa5, 0xee, 0xfd, 0xd9, 0x95, +0x4f, 0xda, 0xfb, 0x27, 0x27, 0xd3, 0x01, 0x9c, +0xf1, 0x49, 0xe3, 0x7c, 0x00, 0x7e, 0xf2, 0x38, +0xbf, 0x40, 0x3b, 0xce, 0x67, 0x10, 0x90, 0x81, +0xc0, 0xe3, 0x00, 0x03, 0xb7, 0xe2, 0xa9, 0x9e, +0xef, 0xfe, 0xbf, 0xc1, 0xfd, 0xff, 0x57, 0xf0, +0x01, 0x60, 0x3f, 0x80, 0x3c, 0x3c, 0xe5, 0x9f, +0x80, 0x53, 0x20, 0x37, 0xff, 0x5d, 0xf8, 0x75, +0xf2, 0xde, 0x3f, 0x39, 0x27, 0x95, 0xa6, 0x5f, +0x5f, 0x67, 0xf2, 0xdc, 0x6f, 0xdc, 0x8d, 0x45, +0xe4, 0xb5, 0x77, 0xa3, 0xba, 0xf9, 0xe7, 0x89, +0xef, 0x8d, 0x42, 0x00, 0x88, 0x7a, 0x82, 0xea, +0xd5, 0xe7, 0x5c, 0x5e, 0xb5, 0x69, 0x17, 0x7d, +0x37, 0xc0, 0x84, 0x87, 0x80, 0x6b, 0xb7, 0x4c, +0x1a, 0xd2, 0x38, 0xb8, 0x14, 0x21, 0x60, 0x62, +0x3d, 0x60, 0x05, 0x4e, 0x60, 0xb0, 0x55, 0x39, +0x81, 0x39, 0x56, 0xe3, 0x04, 0xd4, 0xeb, 0x01, +0x4b, 0x39, 0x01, 0xbe, 0x18, 0xf0, 0xe9, 0xb1, +0x4b, 0x99, 0xb4, 0x78, 0x75, 0xdf, 0xfe, 0xd8, +0xb6, 0x45, 0x8c, 0x4a, 0x08, 0x94, 0x06, 0x0a, +0xc6, 0xd6, 0x7d, 0x50, 0xb0, 0x83, 0xf5, 0x40, +0xc1, 0x99, 0x03, 0x4f, 0x92, 0xff, 0x18, 0xcd, +0xeb, 0x93, 0x93, 0x07, 0x1d, 0x16, 0x21, 0x0d, +0xf3, 0x72, 0x60, 0x15, 0x83, 0x7f, 0xd3, 0x2b, +0x04, 0xfe, 0xb1, 0x00, 0x70, 0xcf, 0x58, 0xab, +0x13, 0x00, 0xdb, 0xd6, 0xd2, 0xc7, 0x26, 0xe2, +0x7e, 0x0d, 0xf7, 0xfe, 0xdb, 0x71, 0xaf, 0xcf, +0xe3, 0x7c, 0x7e, 0xfb, 0x5f, 0x31, 0x15, 0x50, +0x8f, 0xf3, 0xf9, 0x04, 0x90, 0x4f, 0x01, 0xdf, +0xc6, 0x49, 0xa0, 0x1c, 0xfc, 0xc3, 0xce, 0x7f, +0xec, 0x00, 0xc8, 0x4e, 0x80, 0xbb, 0xe0, 0x08, +0x28, 0x07, 0xff, 0xc8, 0xf7, 0xfe, 0x99, 0xe0, +0x03, 0x78, 0xef, 0xef, 0x73, 0x21, 0xde, 0xa8, +0xf9, 0xf3, 0xb9, 0xdf, 0x98, 0x3b, 0x0b, 0x74, +0x7b, 0xff, 0x9d, 0x52, 0xdd, 0xf5, 0xdd, 0x99, +0xfc, 0x94, 0xf8, 0x9e, 0x28, 0x04, 0x80, 0xa8, +0x27, 0xb0, 0xde, 0x68, 0xe0, 0x39, 0x7e, 0x4a, +0xfb, 0x35, 0x9f, 0x9b, 0xf2, 0x10, 0x98, 0xd1, +0x65, 0x33, 0xe2, 0x87, 0xfd, 0x21, 0x04, 0x9c, +0x2d, 0x13, 0x02, 0xb5, 0x96, 0x13, 0x98, 0x5b, +0x23, 0x9c, 0x80, 0x43, 0x9b, 0x8d, 0xec, 0x1b, +0xa0, 0x01, 0x05, 0x11, 0x38, 0xe4, 0xd6, 0x35, +0x9b, 0x26, 0x35, 0x5b, 0x69, 0x06, 0x14, 0x8c, +0x2e, 0x15, 0x14, 0xd4, 0x08, 0x81, 0xf5, 0xe5, +0xb2, 0x16, 0xae, 0x2f, 0xa0, 0x60, 0xc8, 0x88, +0x23, 0x14, 0x38, 0x4c, 0x73, 0x31, 0x10, 0x34, +0xe8, 0x10, 0x4d, 0x5e, 0xb7, 0x96, 0xde, 0xbc, +0xe1, 0x5d, 0xab, 0xc0, 0xbf, 0x51, 0xc5, 0x61, +0x7a, 0x4f, 0xff, 0x51, 0xa5, 0xc4, 0xfd, 0x9e, +0x42, 0x33, 0x97, 0xf7, 0xfe, 0x19, 0x78, 0x52, +0xd7, 0x1b, 0xe7, 0xb3, 0xa5, 0xaf, 0x76, 0x9c, +0xcf, 0xe6, 0x3f, 0x6c, 0x02, 0xc4, 0x66, 0x40, +0xec, 0xf1, 0x7f, 0x54, 0x0e, 0xfe, 0x81, 0xf7, +0x3f, 0x67, 0x00, 0x70, 0x16, 0x00, 0x67, 0x02, +0xdc, 0x84, 0x53, 0xe0, 0x5d, 0x5c, 0x0d, 0x28, +0xcd, 0x1f, 0xbf, 0xe7, 0x9c, 0xa3, 0x1b, 0x94, +0x68, 0xdf, 0x49, 0xca, 0xad, 0xff, 0x62, 0xa9, +0xf9, 0xdb, 0x9f, 0x8a, 0x51, 0x37, 0xff, 0x1f, +0xd1, 0xfc, 0x7b, 0x89, 0xef, 0x83, 0x42, 0x00, +0x88, 0x7a, 0x92, 0xd7, 0x02, 0xcf, 0x38, 0xfc, +0x6a, 0x60, 0x23, 0x5f, 0x77, 0x78, 0x08, 0x7c, +0x13, 0xf2, 0x82, 0xbe, 0x87, 0x00, 0xf6, 0xda, +0xf0, 0x10, 0x48, 0xc4, 0xe9, 0xa0, 0x97, 0x24, +0x04, 0xaa, 0x8f, 0x13, 0x08, 0xb2, 0x3a, 0x27, +0x30, 0xca, 0xea, 0x9c, 0xc0, 0x0a, 0x8b, 0x38, +0x81, 0x19, 0xed, 0x70, 0x31, 0xd0, 0xf7, 0xc0, +0x03, 0xed, 0xe7, 0xf3, 0x91, 0x73, 0xa7, 0x54, +0x58, 0x0b, 0x2f, 0x37, 0x0b, 0x0a, 0xda, 0x96, +0x0b, 0x14, 0x4c, 0x32, 0x03, 0x0a, 0xa6, 0xd7, +0x4a, 0x50, 0x70, 0x6e, 0x39, 0x41, 0x41, 0xae, +0x80, 0xf1, 0xfb, 0x29, 0x78, 0xe0, 0x61, 0x0d, +0xc0, 0x3a, 0xba, 0x90, 0xc6, 0xa7, 0x2f, 0xa7, +0xd7, 0xee, 0xd4, 0x3c, 0xf8, 0xc7, 0x71, 0xbf, +0x1e, 0x99, 0xeb, 0x94, 0xe6, 0xef, 0x9d, 0xb7, +0x96, 0xbe, 0xf8, 0xf6, 0x2b, 0xb3, 0x7b, 0x7f, +0xbe, 0xf7, 0x3f, 0x07, 0xd0, 0xef, 0x6b, 0xf5, +0x38, 0x1f, 0xfb, 0x7b, 0x1e, 0xe7, 0xb3, 0xed, +0x2f, 0xdb, 0xff, 0x72, 0x73, 0xdf, 0x87, 0x74, +0xbf, 0xfd, 0xb0, 0xf4, 0xe5, 0xa6, 0xcf, 0xcd, +0x9f, 0x45, 0x00, 0x8b, 0x81, 0x1d, 0xb8, 0x18, +0xb8, 0x8c, 0x54, 0xc0, 0xbf, 0x43, 0x38, 0x70, +0xd3, 0xe7, 0x9d, 0xbf, 0xb4, 0xf7, 0xdf, 0xcd, +0x7b, 0x7f, 0xe3, 0x73, 0x3f, 0x6e, 0xfe, 0x36, +0x17, 0x97, 0xa9, 0x9b, 0x3f, 0x2a, 0xd9, 0x4d, +0x7c, 0xff, 0x13, 0x02, 0x40, 0x94, 0x28, 0xad, +0x10, 0xb0, 0xff, 0xdd, 0x90, 0x26, 0xc1, 0x73, +0xe1, 0x21, 0xf0, 0xa3, 0xb1, 0x87, 0xc0, 0x61, +0x9a, 0xdc, 0x7e, 0x0d, 0xbd, 0xf1, 0xbc, 0xbb, +0x09, 0x21, 0x50, 0xf6, 0x19, 0x61, 0xe5, 0x39, +0x81, 0x60, 0xeb, 0x71, 0x02, 0x8d, 0xaa, 0x8a, +0x13, 0x30, 0xb7, 0x1e, 0x88, 0x25, 0x97, 0x8e, +0xe9, 0xec, 0xc5, 0xf0, 0x40, 0x63, 0x2d, 0x7c, +0xe8, 0xa1, 0x63, 0xfb, 0xe4, 0x3a, 0x0f, 0x0a, +0x06, 0xeb, 0x81, 0x82, 0x47, 0x4b, 0x05, 0x05, +0x67, 0x19, 0xf2, 0x01, 0x1d, 0x2b, 0x06, 0x0a, +0xb2, 0xb5, 0xb0, 0x9f, 0xcd, 0x3e, 0x0a, 0x79, +0x4d, 0x73, 0x31, 0xe0, 0x3d, 0x35, 0x9f, 0x46, +0xee, 0x99, 0x57, 0xa3, 0xe0, 0xdf, 0xb8, 0xa2, +0x48, 0xbd, 0xa7, 0xff, 0xf5, 0x85, 0xf9, 0x66, +0xf7, 0xfe, 0xc9, 0xd8, 0xfb, 0x17, 0xc3, 0xd5, +0x4f, 0x3d, 0xce, 0xdf, 0xad, 0x1a, 0xe7, 0x4b, +0x62, 0x01, 0x3f, 0xf2, 0xbf, 0xcb, 0x96, 0xbe, +0x4a, 0xf0, 0x0f, 0xd6, 0x00, 0xbc, 0x0e, 0x78, +0x1b, 0x17, 0x04, 0xff, 0xc0, 0xbf, 0xef, 0xc0, +0x14, 0x40, 0xda, 0xfb, 0xa7, 0x6b, 0xf6, 0xfe, +0x8e, 0xd7, 0xd7, 0x18, 0x45, 0xfb, 0x8e, 0x01, +0xf1, 0x3f, 0xee, 0xc6, 0x42, 0xcd, 0xde, 0x5f, +0xd3, 0xf8, 0xb9, 0x32, 0xc5, 0xf7, 0x3c, 0x21, +0x00, 0x44, 0x89, 0x32, 0x25, 0x04, 0xfe, 0x34, +0xac, 0xe9, 0xcc, 0x75, 0x4e, 0x5d, 0xd3, 0x7e, +0x31, 0xe5, 0x21, 0x30, 0xa9, 0xcd, 0x2a, 0xa9, +0xf9, 0x97, 0x2e, 0x04, 0x2c, 0x59, 0x0f, 0x54, +0x8e, 0x13, 0x50, 0xaf, 0x07, 0x6a, 0x13, 0x27, +0x30, 0xb1, 0x0c, 0x21, 0x30, 0xb9, 0xf9, 0x6a, +0x72, 0xef, 0x9c, 0x23, 0x79, 0x07, 0xf0, 0xe7, +0x33, 0xa0, 0x4f, 0xe1, 0xa3, 0x69, 0x6d, 0x12, +0x6a, 0x1c, 0x14, 0xf4, 0xb0, 0x10, 0x14, 0xf4, +0x37, 0x0b, 0x0a, 0x16, 0x9b, 0x01, 0x05, 0x4f, +0x99, 0x01, 0x05, 0xdf, 0x29, 0x37, 0x28, 0x38, +0xa7, 0xef, 0x05, 0xf2, 0xb5, 0xd9, 0x2b, 0x41, +0x82, 0x12, 0xb7, 0xe2, 0x99, 0x43, 0x43, 0x4a, +0xc2, 0xaa, 0x1d, 0xfc, 0xd3, 0xc4, 0xfd, 0xc6, +0x29, 0xcd, 0xdf, 0x27, 0x37, 0x8e, 0xbe, 0xfb, +0xf1, 0x07, 0xa3, 0xbd, 0x3f, 0x37, 0x6a, 0x79, +0xef, 0xbf, 0x13, 0x24, 0xff, 0xc7, 0x78, 0x92, +0x7f, 0x68, 0x62, 0x9c, 0x7f, 0x0f, 0x4f, 0xfe, +0x1c, 0xfd, 0xcb, 0x93, 0x00, 0x06, 0xfc, 0xde, +0xc1, 0x6e, 0x9f, 0x27, 0x04, 0x0c, 0xfe, 0x5d, +0xe4, 0xe0, 0x1f, 0x80, 0x80, 0x0c, 0x04, 0x7e, +0x0a, 0xe8, 0xef, 0x04, 0xc4, 0x80, 0x7a, 0xef, +0xef, 0xfd, 0x4e, 0x9c, 0x51, 0xb4, 0x2f, 0x9f, +0xfb, 0x8d, 0xbe, 0x3d, 0x8f, 0x5c, 0x0f, 0xc4, +0xab, 0x9b, 0xff, 0x4d, 0xd4, 0x9f, 0xc4, 0xf7, +0x3a, 0x21, 0x00, 0x44, 0x89, 0x2a, 0xb5, 0x5e, +0x7c, 0xc6, 0xbe, 0xc1, 0xc8, 0xe6, 0x73, 0x72, +0xdd, 0xba, 0xe7, 0x3c, 0x32, 0x14, 0x02, 0x7e, +0x7d, 0xf6, 0x11, 0xa2, 0x89, 0x21, 0x00, 0x9c, +0xb4, 0x42, 0xc0, 0x12, 0x4e, 0xc0, 0xc3, 0xba, +0x9c, 0x40, 0x83, 0xaa, 0xe0, 0x04, 0xe6, 0x55, +0x0b, 0x27, 0x30, 0xb5, 0xc5, 0x3a, 0xf2, 0xec, +0xb6, 0x9d, 0x59, 0x0b, 0x09, 0x16, 0xf4, 0xe9, +0xb9, 0xfb, 0xf1, 0x94, 0x96, 0xab, 0x2b, 0x0d, +0x0a, 0xda, 0xd7, 0x49, 0x50, 0xf0, 0xbc, 0x19, +0x50, 0xd0, 0xbc, 0x10, 0x88, 0x78, 0xed, 0x34, +0xf9, 0x4e, 0xd8, 0xa7, 0xbd, 0x18, 0x28, 0x21, +0xc7, 0x88, 0xcd, 0x34, 0xe0, 0xbc, 0x5f, 0xb5, +0x81, 0x7f, 0xb6, 0xbb, 0xf0, 0x64, 0xbd, 0x5d, +0x07, 0xff, 0xa5, 0x1d, 0x29, 0x32, 0xbb, 0xf7, +0xcf, 0xc4, 0x98, 0x9f, 0x2d, 0x7d, 0xe5, 0x71, +0x7e, 0x09, 0xc6, 0xf9, 0xdb, 0xb5, 0xe3, 0x7c, +0x39, 0xf8, 0x87, 0x19, 0x00, 0x3e, 0xed, 0x3b, +0x85, 0x13, 0xbf, 0x7f, 0x7c, 0xf6, 0x99, 0x12, +0xfc, 0xc3, 0x27, 0x80, 0x7c, 0x0a, 0xf8, 0x01, +0x4e, 0x02, 0xdf, 0xc7, 0x84, 0x80, 0x9b, 0x3f, +0xc7, 0xfc, 0xf2, 0x0a, 0x20, 0x12, 0x7b, 0x7f, +0xc3, 0x68, 0x5f, 0xa9, 0xf9, 0xdf, 0x99, 0x4f, +0xf6, 0x27, 0x62, 0xd4, 0xcd, 0xff, 0x07, 0x54, +0x37, 0xf1, 0xfd, 0x4d, 0x08, 0x00, 0x51, 0xa2, +0x2c, 0x15, 0x02, 0xad, 0xc7, 0xb6, 0x5c, 0x78, +0xc8, 0xcb, 0x84, 0x87, 0x80, 0x77, 0xaf, 0x7c, +0x1a, 0xd5, 0x7c, 0x0e, 0xbd, 0xa2, 0x12, 0x02, +0x96, 0x73, 0x02, 0x9e, 0xb5, 0x9a, 0x13, 0x50, +0x4f, 0x05, 0xaa, 0x8a, 0x13, 0xb0, 0x6b, 0x95, +0xc0, 0xcd, 0x5f, 0x11, 0x58, 0x9e, 0xdd, 0xb6, +0xc2, 0x5a, 0x38, 0x4a, 0x67, 0x2d, 0x6c, 0x12, +0x14, 0x8c, 0x79, 0x72, 0x40, 0x41, 0x49, 0x08, +0x94, 0xcd, 0x07, 0x84, 0x0e, 0x29, 0x91, 0xb8, +0x00, 0x89, 0xb3, 0x78, 0x1d, 0x96, 0xd7, 0xcb, +0xe3, 0xe9, 0xb5, 0x6b, 0x9e, 0x55, 0x0a, 0xfe, +0xbd, 0x70, 0xdb, 0x9e, 0xbc, 0x73, 0xd6, 0x29, +0x02, 0xc0, 0x2f, 0x3b, 0xde, 0x28, 0xee, 0xf7, +0x23, 0x34, 0x79, 0xb9, 0xf9, 0xa7, 0x20, 0xcd, +0xef, 0x22, 0xcc, 0x7e, 0xd8, 0xd2, 0xd7, 0x70, +0x9c, 0x2f, 0x59, 0xfa, 0xaa, 0x83, 0x7f, 0x70, +0x0d, 0xc0, 0x26, 0x3f, 0x8f, 0x1e, 0x3d, 0xa2, +0x0f, 0xd4, 0xc1, 0x3f, 0x30, 0x03, 0xfa, 0x17, +0x3e, 0x96, 0x6f, 0xfd, 0xe5, 0xdd, 0x7f, 0xcc, +0xee, 0x4d, 0x46, 0xd1, 0xbe, 0x7c, 0xee, 0xc7, +0xcd, 0x7f, 0xd2, 0xbb, 0x4b, 0xd5, 0xcd, 0x9f, +0x6b, 0xba, 0xf8, 0x9e, 0x26, 0x04, 0x80, 0x28, +0x51, 0x15, 0x11, 0x02, 0xdd, 0x27, 0xb4, 0x5e, +0xf6, 0xae, 0x29, 0x0f, 0x01, 0x8f, 0x1e, 0x79, +0x34, 0xac, 0x69, 0xb8, 0x19, 0x21, 0x50, 0x3e, +0xbb, 0xe1, 0x27, 0x8d, 0x13, 0xe0, 0x8b, 0x81, +0x80, 0xde, 0x85, 0x0f, 0xb4, 0xd6, 0xc2, 0x8f, +0x5c, 0xbb, 0x64, 0xd2, 0xc4, 0x52, 0x2f, 0x06, +0xaa, 0x13, 0x14, 0xdc, 0x6a, 0x75, 0x50, 0x30, +0xbc, 0x0a, 0x41, 0xc1, 0xa0, 0x31, 0x07, 0x29, +0x70, 0x88, 0xe6, 0x62, 0x80, 0x7f, 0x9c, 0x98, +0xb8, 0x8a, 0x5e, 0xbe, 0xe5, 0x62, 0x75, 0xf0, +0x4f, 0x13, 0xf7, 0xbb, 0x8c, 0xbc, 0xa5, 0xe6, +0xaf, 0x11, 0x00, 0x3b, 0x0d, 0xe2, 0x7e, 0x0d, +0xf7, 0xfe, 0x1c, 0xf2, 0xf3, 0x15, 0x2c, 0x7d, +0xe5, 0x71, 0xfe, 0x36, 0xd5, 0x38, 0xff, 0x3e, +0x2c, 0x7d, 0xf9, 0xee, 0x9f, 0xed, 0x7c, 0x0b, +0x39, 0xf8, 0x07, 0x7e, 0x00, 0x6c, 0xf3, 0xcb, +0xf7, 0xfd, 0x6c, 0xfb, 0xcb, 0xf6, 0xbf, 0x2c, +0x1e, 0xd8, 0x12, 0x78, 0x2b, 0x78, 0x01, 0xf9, +0xde, 0x3f, 0x09, 0x7b, 0x7f, 0x87, 0xeb, 0xab, +0x8d, 0x6e, 0xfd, 0x19, 0xfa, 0x1b, 0x77, 0x1d, +0xd3, 0x89, 0xdd, 0x1b, 0xd5, 0xcd, 0x3f, 0x45, +0x7c, 0x1f, 0x13, 0x02, 0x40, 0x94, 0xa8, 0x4a, +0xd5, 0x2b, 0xcf, 0x39, 0xbd, 0x61, 0xd3, 0x36, +0xea, 0x03, 0x53, 0x1e, 0x02, 0x2e, 0xdd, 0x32, +0x68, 0x70, 0xe3, 0x40, 0xad, 0x10, 0x70, 0xaa, +0x35, 0x9c, 0xc0, 0xd0, 0x5a, 0xca, 0x09, 0xe8, +0xed, 0xfa, 0x51, 0x33, 0xda, 0xa5, 0x00, 0x10, +0x3c, 0x28, 0xb1, 0x17, 0x21, 0xfd, 0x8b, 0x1f, +0xcd, 0xe8, 0xb8, 0x05, 0x17, 0x03, 0xcb, 0xaa, +0x18, 0x14, 0x4c, 0x35, 0x03, 0x0a, 0xe6, 0x96, +0x0a, 0x0a, 0x6a, 0x84, 0x40, 0xed, 0x03, 0x05, +0x17, 0x74, 0xb9, 0x42, 0x7e, 0x93, 0xf6, 0x21, +0x64, 0x48, 0x73, 0x31, 0xe0, 0x3b, 0x6e, 0x2f, +0x8d, 0xca, 0x59, 0x60, 0x55, 0xf0, 0xef, 0x25, +0xc4, 0xfd, 0x7a, 0xe7, 0xad, 0x53, 0x04, 0x40, +0x60, 0xd6, 0x7a, 0x7a, 0xf8, 0xe8, 0x61, 0xa9, +0x7b, 0xff, 0x5d, 0xa0, 0xf9, 0x3f, 0xe7, 0x71, +0x3e, 0x2c, 0x7d, 0x0d, 0xc7, 0xf9, 0xfc, 0x94, +0xcf, 0xe9, 0x7d, 0x72, 0xf0, 0x0f, 0x3b, 0x01, +0x72, 0xc0, 0x0f, 0x4f, 0x05, 0x78, 0x3a, 0x20, +0x07, 0xff, 0xb0, 0x53, 0xe0, 0x11, 0xb0, 0x01, +0xf2, 0xe8, 0x3f, 0x15, 0x7b, 0x7f, 0xcf, 0x77, +0xd6, 0x19, 0x44, 0xfb, 0x6a, 0x88, 0xff, 0xd1, +0xb7, 0xe7, 0x92, 0xeb, 0xfe, 0x38, 0x75, 0xf3, +0xbf, 0x86, 0xfa, 0x83, 0xf8, 0xfe, 0x25, 0x04, +0x80, 0x28, 0x51, 0x56, 0xf2, 0x10, 0xf0, 0x98, +0x84, 0xcb, 0x80, 0x7f, 0x06, 0xf5, 0xd7, 0xf7, +0x10, 0xc0, 0xcd, 0x3b, 0x4d, 0xef, 0xbc, 0x49, +0x8a, 0x1f, 0xd6, 0x17, 0x02, 0x35, 0xcd, 0x09, +0x84, 0xd6, 0x01, 0x4e, 0x20, 0x4a, 0x1a, 0xf1, +0xbb, 0x74, 0xcc, 0x80, 0x00, 0x38, 0xf2, 0x40, +0x63, 0x2d, 0x7c, 0xe0, 0x91, 0x43, 0xbb, 0x8d, +0xe5, 0x06, 0x05, 0xa7, 0x5a, 0x08, 0x0a, 0xce, +0xa8, 0x30, 0x28, 0xb8, 0xd3, 0x0c, 0x28, 0x58, +0x68, 0x06, 0x14, 0x3c, 0x52, 0x2d, 0xa0, 0xe0, +0x5c, 0x58, 0x0b, 0xfb, 0xda, 0xee, 0x41, 0xec, +0xb0, 0xe6, 0xa2, 0xc5, 0xc3, 0x71, 0x1b, 0x0d, +0x29, 0x0a, 0xaf, 0x34, 0xf8, 0x27, 0xc7, 0xfd, +0x72, 0xf3, 0x97, 0x05, 0xc0, 0xe1, 0xcb, 0x6f, +0xeb, 0x3d, 0xfd, 0x9f, 0xc6, 0x1e, 0x5f, 0xd9, +0xfb, 0xe3, 0x49, 0x9f, 0x2d, 0x7d, 0xa5, 0x71, +0x3e, 0x5b, 0xfa, 0xaa, 0xc6, 0xf9, 0xec, 0xf1, +0xcf, 0xc2, 0x80, 0xf7, 0xfd, 0x39, 0x72, 0xf0, +0x0f, 0xb2, 0x00, 0x38, 0x13, 0xe0, 0x12, 0xb8, +0x00, 0xe6, 0x03, 0x38, 0xfa, 0xf7, 0x6f, 0x70, +0x0a, 0xbc, 0x05, 0x60, 0x50, 0xbd, 0xf7, 0x9f, +0x5d, 0x92, 0x68, 0xf2, 0xdc, 0x6f, 0xd4, 0x9d, +0x79, 0xe4, 0x70, 0x3c, 0x46, 0xdd, 0xfc, 0xbf, +0x43, 0x75, 0x12, 0xdf, 0xb3, 0x84, 0x00, 0x10, +0x25, 0xca, 0xca, 0x6b, 0x01, 0x3b, 0xf6, 0x10, +0xf0, 0x9a, 0xd6, 0x31, 0xe1, 0x5b, 0x53, 0x1e, +0x02, 0x78, 0x3b, 0x41, 0x28, 0x48, 0x42, 0xa0, +0xbe, 0x73, 0x02, 0x63, 0xac, 0xcc, 0x09, 0x48, +0x17, 0x03, 0x5d, 0x72, 0xb1, 0x12, 0x28, 0x91, +0x2e, 0x06, 0xfc, 0x7a, 0xef, 0x7b, 0x3c, 0xad, +0x75, 0x5c, 0xa9, 0xa0, 0xa0, 0x4d, 0x9d, 0x01, +0x05, 0x0f, 0x9b, 0x01, 0x05, 0x4f, 0x5a, 0x1d, +0x14, 0x9c, 0x0d, 0x6b, 0x61, 0x1f, 0x9b, 0xdd, +0xca, 0xeb, 0xd2, 0xc9, 0x2f, 0x8d, 0xde, 0x84, +0x6d, 0x6f, 0x45, 0xc1, 0xbf, 0x57, 0x2f, 0xbb, +0x90, 0xf7, 0xb6, 0xb5, 0x8a, 0x00, 0x08, 0xcd, +0x4a, 0xa2, 0xc7, 0x66, 0xf6, 0xfe, 0x57, 0x71, +0xe6, 0xa7, 0x8c, 0xf3, 0x31, 0xf2, 0x97, 0xc7, +0xf9, 0xdf, 0x20, 0xdd, 0x8f, 0x47, 0xfa, 0x17, +0x40, 0xfa, 0xe7, 0xa2, 0xa1, 0x73, 0xf0, 0xcf, +0xdf, 0x11, 0xfc, 0x73, 0x0f, 0x69, 0x80, 0x37, +0x91, 0x0a, 0xb8, 0x17, 0x13, 0x84, 0x03, 0xb8, +0x10, 0x60, 0xa7, 0xc0, 0x2f, 0xf1, 0x71, 0xf2, +0xde, 0x9f, 0x2b, 0x7a, 0x4f, 0xb2, 0x89, 0xe6, +0xbf, 0x50, 0x6a, 0xfe, 0x36, 0xef, 0x2c, 0x55, +0x37, 0x7f, 0xae, 0x69, 0xe2, 0x7b, 0x95, 0x10, +0x00, 0xa2, 0x44, 0x55, 0xa5, 0x10, 0xf8, 0xdd, +0xe0, 0x26, 0x41, 0x0b, 0xe0, 0x21, 0xf0, 0x93, +0xb1, 0x87, 0xc0, 0x21, 0xb2, 0x6d, 0x17, 0x8b, +0xf8, 0x61, 0xd7, 0x32, 0x84, 0x40, 0x7d, 0xe1, +0x04, 0x16, 0x58, 0x95, 0x13, 0xe0, 0x8b, 0x01, +0xaf, 0xee, 0x3b, 0x18, 0x14, 0x94, 0x20, 0x4c, +0xef, 0x1e, 0x3b, 0x69, 0x72, 0xcb, 0xd8, 0x7a, +0x0f, 0x0a, 0x46, 0x58, 0x19, 0x14, 0x0c, 0x1f, +0x70, 0x82, 0x7c, 0xc7, 0xef, 0xd5, 0x4c, 0xa9, +0x30, 0x15, 0xb0, 0x9b, 0x9b, 0x48, 0xaf, 0x5c, +0x74, 0x2f, 0x17, 0xf8, 0xc7, 0xe5, 0x9c, 0x19, +0xab, 0x34, 0x7f, 0xae, 0x73, 0x77, 0xae, 0x29, +0xcd, 0xff, 0x3b, 0x8c, 0xee, 0xb9, 0xe9, 0xcb, +0x7b, 0xff, 0x13, 0x78, 0xb2, 0x57, 0x8f, 0xf3, +0x19, 0xfa, 0x93, 0xc7, 0xf9, 0x0c, 0x03, 0xf2, +0x8d, 0x3f, 0xdf, 0xfa, 0xf3, 0xcd, 0xbf, 0x12, +0xfc, 0x03, 0x67, 0xbf, 0x43, 0xc8, 0x07, 0x60, +0x6f, 0x00, 0xf6, 0x08, 0xe0, 0xeb, 0x80, 0x5c, +0x80, 0x81, 0xcc, 0x13, 0x48, 0x7b, 0xff, 0xdc, +0x54, 0xb2, 0xbf, 0x11, 0x6b, 0x14, 0xed, 0x3b, +0x1a, 0xcd, 0x7f, 0xec, 0x7b, 0xf3, 0xc9, 0x5b, +0x6f, 0xef, 0x9f, 0xb4, 0x41, 0x7c, 0x7f, 0x12, +0x02, 0x40, 0x94, 0xa8, 0xea, 0x12, 0x02, 0x4f, +0x0d, 0x6b, 0x16, 0x9e, 0xe0, 0xd4, 0x35, 0xf5, +0x81, 0x21, 0x1f, 0x10, 0xd0, 0x6f, 0x3f, 0x4d, +0x6c, 0xb3, 0x82, 0x5e, 0x7d, 0xce, 0x19, 0x22, +0x60, 0x86, 0x95, 0x38, 0x01, 0xef, 0x3a, 0xc0, +0x09, 0x2c, 0xb4, 0x0a, 0x27, 0x60, 0xd7, 0x6a, +0x3d, 0xf9, 0xf6, 0xda, 0xab, 0xfd, 0xbc, 0x96, +0x3c, 0x76, 0xef, 0x9a, 0x4b, 0x93, 0x70, 0x31, +0x50, 0xba, 0xb5, 0x70, 0x69, 0xa0, 0x60, 0xdc, +0x13, 0x0d, 0x0a, 0x06, 0x8f, 0x3c, 0x4c, 0xfe, +0x23, 0x35, 0xfc, 0x0a, 0x73, 0x02, 0x36, 0x31, +0xb1, 0xf4, 0xe2, 0x8d, 0x19, 0x16, 0x8d, 0xfe, +0x07, 0x20, 0xee, 0x57, 0xdd, 0xfc, 0x23, 0x73, +0x52, 0xf4, 0xf6, 0xfe, 0x3b, 0xb1, 0xeb, 0x97, +0xf7, 0xfe, 0xbb, 0x01, 0xf4, 0x7d, 0x69, 0x38, +0xce, 0x67, 0x4b, 0x5f, 0x8c, 0xf3, 0x1f, 0x70, +0xf0, 0x0f, 0xce, 0x01, 0x8b, 0xe0, 0xf2, 0x57, +0x80, 0x5f, 0x73, 0x0b, 0x00, 0xe0, 0xcf, 0x08, +0xfe, 0xf9, 0x8c, 0x83, 0x7f, 0x8a, 0x8b, 0x69, +0x2b, 0xce, 0x05, 0xdf, 0x85, 0x3b, 0xe0, 0xd7, +0xf0, 0x00, 0x38, 0x00, 0xd3, 0x20, 0xf5, 0xde, +0xdf, 0xe3, 0xdd, 0xb5, 0x46, 0xd1, 0xbe, 0x4c, +0xfc, 0x8f, 0xc2, 0xde, 0xdf, 0xad, 0x28, 0x5e, +0xdd, 0xfc, 0x2f, 0xa1, 0xfe, 0x4f, 0x7c, 0x5f, +0x12, 0x02, 0x40, 0x94, 0xa8, 0x6a, 0xad, 0x17, +0x9e, 0xb1, 0x6b, 0x34, 0xb2, 0x45, 0xe4, 0x36, +0xd3, 0x1e, 0x02, 0x7b, 0x69, 0x4c, 0xcb, 0x85, +0xf4, 0xb2, 0x24, 0x02, 0x66, 0xd4, 0x52, 0x4e, +0xc0, 0x78, 0x3d, 0x50, 0x5b, 0x38, 0x01, 0x47, +0x5c, 0x0c, 0x04, 0xf6, 0xd9, 0xff, 0x8b, 0x7c, +0x31, 0xe0, 0xd2, 0x39, 0x43, 0xfa, 0x58, 0xcb, +0x41, 0xc1, 0xb5, 0x66, 0x40, 0xc1, 0x8d, 0x66, +0x40, 0xc1, 0xb4, 0x7a, 0x03, 0x0a, 0x72, 0xf9, +0x4f, 0x28, 0xa0, 0xc0, 0xc1, 0x1a, 0x7e, 0xc5, +0x7f, 0x78, 0x11, 0x8d, 0xd9, 0xbc, 0x98, 0xfa, +0xdf, 0xb1, 0x2f, 0xf5, 0xe9, 0xbf, 0x37, 0xca, +0x2d, 0x63, 0xad, 0x9e, 0x00, 0x50, 0xc7, 0xfd, +0x1a, 0xee, 0xfd, 0xd9, 0xd2, 0x57, 0x1e, 0xe7, +0xef, 0x53, 0x8d, 0xf3, 0x59, 0x28, 0x7c, 0x0c, +0x5b, 0xe0, 0xa3, 0x68, 0xec, 0xec, 0xf3, 0x7f, +0x05, 0x7e, 0xff, 0x72, 0xf0, 0xcf, 0x39, 0x78, +0x06, 0x64, 0x63, 0x82, 0xc0, 0xb9, 0x00, 0x9c, +0x0f, 0x70, 0x05, 0xc0, 0x20, 0x37, 0xff, 0x6c, +0x7c, 0x1c, 0x3f, 0xfd, 0xcf, 0x2a, 0x59, 0x6f, +0x14, 0xed, 0xcb, 0xcd, 0x7f, 0xe4, 0x9d, 0x39, +0xe4, 0x70, 0x2c, 0x5a, 0xdd, 0xfc, 0xbf, 0x45, +0xb5, 0x17, 0xdf, 0x8b, 0x84, 0x00, 0x10, 0x25, +0xaa, 0x06, 0x85, 0xc0, 0xb4, 0xb6, 0x63, 0x5a, +0x2d, 0x38, 0xe2, 0xd5, 0x6b, 0x07, 0x19, 0x7b, +0x08, 0xec, 0xa4, 0x11, 0xcd, 0x67, 0x43, 0x08, +0x4c, 0x57, 0x84, 0x40, 0xed, 0xe5, 0x04, 0xc2, +0xad, 0xce, 0x09, 0x8c, 0xad, 0x24, 0x27, 0xe0, +0xd4, 0x7e, 0x0b, 0x05, 0xf7, 0x3b, 0x7c, 0x5f, +0x6b, 0xd5, 0xfc, 0x68, 0x7a, 0x87, 0xcd, 0xca, +0xaf, 0xad, 0x1a, 0x50, 0x70, 0x8b, 0x19, 0x50, +0x30, 0xc7, 0x0c, 0x28, 0x98, 0x5f, 0x63, 0xa0, +0xa0, 0x25, 0xd6, 0xc2, 0x3e, 0x93, 0x77, 0x53, +0xf0, 0x1b, 0x1a, 0x7e, 0xc5, 0x7b, 0x52, 0x3e, +0x0d, 0xdd, 0x11, 0x61, 0xf2, 0xe9, 0x7f, 0xc8, +0xc9, 0x00, 0x34, 0xfd, 0x75, 0x4a, 0xf3, 0x5f, +0xb4, 0x35, 0xbd, 0xd4, 0xbd, 0xff, 0x0d, 0xb8, +0xfa, 0x99, 0x1a, 0xe7, 0xff, 0x4f, 0x1d, 0xfc, +0x83, 0x8f, 0xe3, 0x86, 0xcf, 0x8d, 0xff, 0x3b, +0x8c, 0xf9, 0xaf, 0xc8, 0xc1, 0x3f, 0x10, 0x06, +0x2c, 0x10, 0xbe, 0x80, 0x29, 0x10, 0xff, 0x5e, +0xe9, 0x98, 0x06, 0x70, 0xf3, 0x8f, 0xc2, 0xde, +0xdf, 0xf0, 0xdc, 0x4f, 0x7a, 0xf2, 0xbf, 0x33, +0x97, 0x6c, 0x2e, 0xa8, 0xf7, 0xfe, 0x49, 0x5c, +0x36, 0xe2, 0xfb, 0x8f, 0x10, 0x00, 0xa2, 0x44, +0xd5, 0x8e, 0xd5, 0xc0, 0xb3, 0xf6, 0xbd, 0xc7, +0xb7, 0x5e, 0x76, 0xd9, 0x94, 0x87, 0x80, 0x7b, +0x8f, 0x5c, 0x1a, 0xd2, 0x34, 0x54, 0x25, 0x04, +0x66, 0x58, 0x8d, 0x13, 0x18, 0x50, 0x65, 0x9c, +0xc0, 0xcc, 0x5a, 0xc1, 0x09, 0x70, 0x53, 0x77, +0xed, 0x94, 0xc9, 0x93, 0x00, 0x69, 0x35, 0x10, +0xd0, 0x77, 0xff, 0x23, 0xfb, 0xb6, 0x89, 0xf5, +0x0e, 0x14, 0x0c, 0xb3, 0x10, 0x14, 0x9c, 0x53, +0x41, 0x50, 0x90, 0xad, 0x85, 0xbd, 0xa7, 0xe4, +0x53, 0xe8, 0xcb, 0x25, 0x1a, 0x6b, 0x61, 0xe7, +0x1c, 0x7a, 0xf3, 0xb0, 0xbf, 0xde, 0xd3, 0xbf, +0x47, 0x46, 0x9c, 0x4e, 0x00, 0x6c, 0x5b, 0xa7, +0xc4, 0xfd, 0x1a, 0xee, 0xfd, 0x4f, 0xc1, 0xe0, +0x87, 0xc3, 0x7c, 0x78, 0x9c, 0x7f, 0xc2, 0x60, +0x9c, 0xcf, 0xc5, 0x3f, 0xe7, 0xb7, 0xf1, 0xa8, +0x9f, 0x3f, 0x86, 0x47, 0xff, 0xb7, 0x20, 0x18, +0x78, 0x15, 0xc0, 0x2b, 0x01, 0x5e, 0x0d, 0xb0, +0xfb, 0x5f, 0x36, 0x46, 0xfe, 0xf2, 0xde, 0x7f, +0x63, 0xee, 0x16, 0x9a, 0x76, 0x23, 0xc6, 0x28, +0xda, 0x97, 0x9b, 0xbf, 0x6e, 0xef, 0x9f, 0x24, +0xd7, 0x3a, 0xf1, 0x3d, 0x47, 0x08, 0x00, 0x51, +0xa2, 0x6a, 0xa3, 0x87, 0xc0, 0x20, 0x78, 0x08, +0xfc, 0x25, 0xa0, 0x6f, 0x91, 0x91, 0x10, 0x70, +0xee, 0x9a, 0x46, 0x83, 0x1a, 0xfb, 0x9b, 0x10, +0x02, 0xd6, 0xe2, 0x04, 0x7c, 0xaa, 0x86, 0x13, +0x68, 0x58, 0xf3, 0x9c, 0x80, 0x6d, 0xf3, 0x58, +0xf2, 0xe8, 0x9a, 0x07, 0x48, 0xb0, 0x44, 0x5a, +0xb9, 0xf8, 0xf6, 0xda, 0xf3, 0x78, 0x6a, 0xab, +0xb5, 0xb5, 0x0e, 0x14, 0xf4, 0xb6, 0x10, 0x14, +0x0c, 0x32, 0x0b, 0x0a, 0x1e, 0x37, 0x03, 0x0a, +0x9e, 0x33, 0x03, 0x0a, 0x5e, 0x29, 0x73, 0x2d, +0xc0, 0xd6, 0xc2, 0xde, 0x36, 0xbb, 0xb4, 0xd6, +0xc2, 0xc7, 0xc8, 0x31, 0x78, 0x13, 0xbd, 0x72, +0xd6, 0x8d, 0x46, 0x22, 0xee, 0x57, 0xd3, 0xfc, +0x35, 0x02, 0x20, 0x3a, 0x3f, 0x57, 0x6a, 0xfe, +0x7c, 0xda, 0xa7, 0xde, 0xfb, 0xef, 0x81, 0x89, +0x0f, 0x3f, 0xcd, 0xff, 0x1b, 0x4f, 0xef, 0x86, +0xe3, 0x7c, 0x7e, 0xfa, 0x97, 0x83, 0x7f, 0x78, +0x2a, 0xc0, 0xd3, 0x01, 0x9e, 0x12, 0x30, 0xfc, +0xa7, 0x0e, 0xfe, 0x61, 0x38, 0xb0, 0x00, 0x1e, +0x01, 0xea, 0xbd, 0xbf, 0xfb, 0xbb, 0x6b, 0xb4, +0xd1, 0xbe, 0xea, 0x73, 0xbf, 0xb9, 0x34, 0xf2, +0xf6, 0x1c, 0xed, 0xde, 0x5f, 0x69, 0xfe, 0x17, +0x50, 0xbf, 0x13, 0xdf, 0x6b, 0x84, 0x00, 0x10, +0x25, 0xaa, 0xd6, 0xd6, 0xeb, 0x0d, 0xdc, 0x26, +0xc3, 0x43, 0xe0, 0x5f, 0x41, 0xb8, 0x10, 0x30, +0xf4, 0x10, 0x70, 0xe8, 0x9c, 0x44, 0x6f, 0x36, +0xf4, 0x92, 0x84, 0x80, 0x9a, 0x13, 0x78, 0xc5, +0xea, 0x9c, 0x80, 0xaf, 0xd5, 0x39, 0x81, 0xe1, +0xd6, 0xe2, 0x04, 0x2c, 0x5a, 0x0f, 0x18, 0x0b, +0x81, 0x29, 0x2d, 0xf1, 0x74, 0xda, 0x23, 0xff, +0xa1, 0xfc, 0xf9, 0xf4, 0xea, 0xbe, 0x9d, 0x6c, +0x5b, 0x44, 0x5b, 0x1d, 0x14, 0x9c, 0x6e, 0x21, +0x28, 0xe8, 0x5e, 0xab, 0x40, 0xc1, 0x4b, 0x16, +0xf3, 0x01, 0xa1, 0x43, 0x8e, 0x48, 0x06, 0x42, +0xd2, 0x39, 0x2b, 0x92, 0x07, 0xdd, 0xa3, 0x92, +0xa4, 0xa7, 0x7e, 0x16, 0x00, 0x3e, 0x30, 0x00, +0x92, 0xe3, 0x7e, 0xcf, 0xe0, 0x6e, 0x5f, 0x1e, +0xfd, 0x67, 0xe1, 0xbc, 0x8f, 0xe9, 0xfe, 0xef, +0xb4, 0x96, 0xbe, 0xea, 0x71, 0x3e, 0xef, 0xfd, +0x79, 0xff, 0xcf, 0x1c, 0x00, 0x9f, 0xf7, 0x31, +0x17, 0xc0, 0x7c, 0x00, 0x9f, 0xfd, 0xf1, 0xf9, +0x1f, 0x9f, 0x01, 0xf2, 0x39, 0x20, 0x3b, 0x05, +0x5e, 0x00, 0x30, 0xa8, 0xde, 0xfb, 0x47, 0x1c, +0x4b, 0x30, 0x79, 0xee, 0x37, 0xe2, 0x4e, 0x24, +0x39, 0x1e, 0x8b, 0x51, 0x37, 0xff, 0xaf, 0x50, +0xad, 0xc5, 0xf7, 0x17, 0x21, 0x00, 0x44, 0x89, +0xaa, 0x03, 0x7c, 0xc0, 0xd4, 0x5f, 0x0f, 0x68, +0xe4, 0xe3, 0x07, 0xaf, 0x80, 0xff, 0x9a, 0xf2, +0x10, 0x98, 0xda, 0x21, 0x9e, 0x20, 0x14, 0xb4, +0x42, 0xa0, 0x1a, 0x38, 0x01, 0x8b, 0xd6, 0x03, +0x35, 0xc7, 0x09, 0x8c, 0x2b, 0x07, 0x27, 0x60, +0xd7, 0x3a, 0x81, 0xfc, 0x7b, 0x17, 0xdc, 0xd7, +0x8a, 0xaa, 0xc7, 0x6e, 0x5d, 0x72, 0x68, 0x52, +0xb3, 0x55, 0x66, 0xad, 0x85, 0x27, 0x5b, 0x68, +0x2d, 0xfc, 0x44, 0x81, 0x82, 0x63, 0x8b, 0xc8, +0xdd, 0x61, 0xab, 0x34, 0x0d, 0x08, 0x19, 0x75, +0x80, 0xfc, 0xa3, 0x52, 0x95, 0xb8, 0xdf, 0xbf, +0x82, 0xe6, 0x57, 0xef, 0xfd, 0xef, 0xc0, 0xa8, +0x47, 0x1a, 0xe7, 0x83, 0xe8, 0x2f, 0xc0, 0x05, +0x80, 0x3c, 0xce, 0xff, 0x05, 0xc4, 0x3f, 0x93, +0xff, 0x6c, 0xe8, 0xc3, 0x97, 0x00, 0x7c, 0x11, +0xc0, 0x97, 0x01, 0x6c, 0xf8, 0x73, 0x1e, 0x02, +0x82, 0x0d, 0x80, 0xd8, 0x08, 0x88, 0x0d, 0x81, +0x3e, 0x05, 0x38, 0xc8, 0x63, 0xff, 0x0c, 0x40, +0x84, 0xdc, 0xfc, 0x57, 0xed, 0x4d, 0x36, 0x6a, +0xfe, 0x7c, 0xee, 0x37, 0x12, 0xcd, 0xdf, 0xe6, +0xc2, 0x12, 0x75, 0xf3, 0x7f, 0x8c, 0x1a, 0x2b, +0xbe, 0xaf, 0x08, 0x01, 0x20, 0x4a, 0x54, 0x5d, +0x13, 0x02, 0xff, 0xf7, 0x56, 0x93, 0xc0, 0xc5, +0x8e, 0x9d, 0x93, 0xee, 0xf1, 0x04, 0x40, 0x2d, +0x04, 0x78, 0x42, 0x60, 0xd3, 0x2e, 0x46, 0x3a, +0x1d, 0xd4, 0x17, 0x02, 0x96, 0xac, 0x07, 0xca, +0xcf, 0x09, 0x0c, 0xac, 0x67, 0x9c, 0x80, 0x63, +0xdb, 0x24, 0x76, 0x12, 0xfc, 0x59, 0x63, 0x2d, +0x7c, 0xe4, 0x91, 0x53, 0xa7, 0x34, 0x58, 0x0b, +0x2f, 0xaf, 0xb7, 0xa0, 0xe0, 0xcc, 0x2a, 0x00, +0x05, 0x23, 0xfa, 0x9e, 0x56, 0x5e, 0x8f, 0xd1, +0xde, 0x85, 0x92, 0x6f, 0xbf, 0xe1, 0xde, 0xff, +0x0c, 0xc6, 0xfd, 0xf2, 0x38, 0x9f, 0x2d, 0x7d, +0xd5, 0xe3, 0x7c, 0x9e, 0x0a, 0xf0, 0xed, 0x3f, +0x5b, 0xfa, 0x2a, 0xc1, 0x3f, 0xf8, 0xf5, 0x6c, +0xf9, 0xcb, 0xd6, 0xbf, 0xfc, 0xf1, 0x1c, 0xfc, +0xc3, 0x36, 0xc1, 0x7c, 0x3d, 0xc0, 0xbf, 0x6f, +0x1a, 0x18, 0x01, 0xde, 0xfb, 0x4f, 0xbd, 0x11, +0xa5, 0x1f, 0xed, 0x2b, 0x35, 0xff, 0x39, 0x34, +0xe6, 0xda, 0x3c, 0xf2, 0xde, 0xb5, 0x41, 0x2d, +0x00, 0x62, 0xc4, 0xf7, 0x12, 0x21, 0x00, 0x44, +0x89, 0xaa, 0xcb, 0x42, 0xe0, 0xe9, 0xa1, 0xcd, +0xc2, 0x36, 0x38, 0x75, 0x4d, 0x33, 0xf6, 0x10, +0x00, 0x33, 0x30, 0xbe, 0xf5, 0x52, 0x7a, 0xe5, +0xb9, 0x19, 0x65, 0x08, 0x01, 0xe7, 0x5a, 0xcc, +0x09, 0x58, 0xb2, 0x1e, 0xa8, 0x0a, 0x4e, 0x60, +0x15, 0x39, 0x75, 0x48, 0xc5, 0xa5, 0x40, 0xb1, +0x34, 0x11, 0x08, 0xea, 0x77, 0xe8, 0x91, 0x63, +0xfb, 0xe4, 0x5a, 0x06, 0x0a, 0xee, 0x30, 0x03, +0x0a, 0x16, 0xd4, 0x18, 0x28, 0x38, 0xaf, 0xfb, +0x45, 0xe5, 0x35, 0x38, 0xf3, 0xf5, 0xa3, 0x20, +0xf5, 0x6f, 0x18, 0xef, 0xfd, 0xf1, 0xa4, 0xaf, +0x37, 0xce, 0x67, 0x4b, 0x5f, 0x8c, 0xf3, 0xd9, +0xe5, 0x8f, 0xdd, 0xfe, 0xd8, 0xf5, 0x8f, 0xdd, +0xff, 0x38, 0xd4, 0x87, 0xdd, 0x00, 0xd9, 0x15, +0x90, 0xc3, 0x7e, 0x38, 0xf4, 0x87, 0xc3, 0x7f, +0x38, 0x04, 0x88, 0x45, 0xc5, 0x6e, 0xfc, 0x3e, +0xea, 0xbd, 0xbf, 0xdb, 0xc5, 0xd5, 0x46, 0xb7, +0xfe, 0xdc, 0xfc, 0x47, 0xdc, 0x9a, 0x4d, 0xee, +0x85, 0x7a, 0x7b, 0xff, 0x33, 0xbe, 0x3b, 0x37, +0xfe, 0x56, 0x7c, 0x0f, 0x11, 0x02, 0x40, 0x94, +0xa8, 0x3a, 0x5f, 0xfd, 0x9f, 0x99, 0xda, 0x64, +0x44, 0x8b, 0xd9, 0x3b, 0xdd, 0x7a, 0x18, 0x7b, +0x08, 0xf8, 0xf6, 0xd9, 0x43, 0xa3, 0x5b, 0xcc, +0xa7, 0x97, 0x9e, 0x75, 0x84, 0x08, 0x70, 0x34, +0xcb, 0x09, 0xa8, 0xa7, 0x02, 0xb5, 0x95, 0x13, +0x18, 0x51, 0x8d, 0x9c, 0x80, 0x4d, 0xb3, 0x28, +0x72, 0xed, 0x9c, 0xf5, 0x58, 0xbe, 0x18, 0xf0, +0xef, 0x53, 0xf8, 0xd8, 0xae, 0x4d, 0x82, 0x0e, +0x14, 0x6c, 0x52, 0xb5, 0xa0, 0xa0, 0x4b, 0x85, +0x41, 0xc1, 0xbd, 0x66, 0x40, 0xc1, 0x43, 0x66, +0x40, 0xc1, 0x13, 0x95, 0x06, 0x05, 0x23, 0xfa, +0x9d, 0x52, 0x5e, 0x7b, 0xeb, 0x42, 0x8b, 0xa4, +0xe6, 0x6f, 0xb8, 0xf7, 0xff, 0x0a, 0x64, 0x3f, +0x8f, 0xf3, 0x2f, 0xc8, 0xe3, 0x7c, 0x88, 0x00, +0x1e, 0xe7, 0xb3, 0xcf, 0x3f, 0xfb, 0xfd, 0xb3, +0xef, 0x3f, 0xc7, 0xf9, 0xca, 0xc1, 0x3f, 0xfc, +0xb4, 0xcf, 0x71, 0xbf, 0x1c, 0xfb, 0xcb, 0xac, +0x00, 0x4f, 0x03, 0xce, 0xc0, 0x43, 0x80, 0x9b, +0x7f, 0x0e, 0xde, 0xc6, 0xa3, 0xff, 0xf0, 0xe3, +0xf1, 0x46, 0xd1, 0xbe, 0x52, 0xf3, 0xbf, 0x33, +0x9b, 0x1c, 0x4b, 0xf4, 0xf6, 0xfe, 0x5f, 0xa2, +0xf9, 0xb7, 0x10, 0xdf, 0x37, 0x84, 0x00, 0x10, +0x25, 0xaa, 0xbe, 0x09, 0x81, 0xf6, 0xf0, 0x10, +0x38, 0x66, 0xca, 0x43, 0x80, 0xdf, 0x36, 0xbc, +0x59, 0x84, 0x81, 0x10, 0x10, 0x9c, 0x80, 0x25, +0xeb, 0x81, 0xc9, 0x2d, 0x62, 0xc9, 0xb3, 0xdb, +0xb6, 0x87, 0xf2, 0xc5, 0x80, 0x4f, 0xcf, 0x5d, +0x80, 0x07, 0x57, 0x5b, 0x0c, 0x0a, 0x4e, 0xa9, +0x33, 0xa0, 0xe0, 0x31, 0x33, 0xa0, 0xa0, 0x19, +0x6b, 0x61, 0xed, 0x5a, 0x60, 0x6e, 0xf7, 0x77, +0x95, 0xd7, 0xdb, 0xac, 0x01, 0x47, 0xb0, 0xe3, +0xff, 0xd0, 0x68, 0xef, 0xff, 0xe1, 0xfb, 0xef, +0x1b, 0x8d, 0xf3, 0xf5, 0x82, 0x7f, 0x40, 0xf3, +0x73, 0xf2, 0x1f, 0x27, 0x00, 0xf2, 0x88, 0xff, +0x1f, 0x72, 0xf0, 0x0f, 0x7c, 0xfd, 0xcf, 0xa3, +0xe9, 0x7f, 0x89, 0x6b, 0x81, 0x0f, 0xf1, 0xf1, +0xbc, 0xf7, 0xcf, 0x84, 0x98, 0xe0, 0xe6, 0xbf, +0x72, 0x6f, 0x92, 0x51, 0xb4, 0x2f, 0x13, 0xff, +0xdc, 0xfc, 0x6d, 0xce, 0xeb, 0xed, 0xfd, 0x1f, +0xa1, 0xf9, 0x8f, 0x10, 0xdf, 0x2b, 0x84, 0x00, +0x10, 0x25, 0xaa, 0xfe, 0xae, 0x06, 0x9e, 0x9d, +0xd6, 0x77, 0x7c, 0x9b, 0xa5, 0x57, 0xf9, 0xe9, +0xdf, 0x50, 0x08, 0xb8, 0x75, 0xcf, 0x26, 0x64, +0x10, 0xd0, 0x4b, 0xcf, 0x98, 0x12, 0x02, 0x55, +0xcf, 0x09, 0xa8, 0xd7, 0x03, 0xb5, 0x95, 0x13, +0x50, 0xaf, 0x07, 0xd4, 0x42, 0x60, 0x6a, 0xcb, +0x75, 0xdc, 0xfc, 0xef, 0xcb, 0x9f, 0x4b, 0x8f, +0x6e, 0xdb, 0xc8, 0xa6, 0x79, 0x74, 0xcd, 0x80, +0x82, 0xad, 0xac, 0x0f, 0x0a, 0x86, 0x5a, 0x08, +0x0a, 0x46, 0x96, 0x02, 0x0a, 0xce, 0xec, 0x7f, +0x52, 0x79, 0x9d, 0x6d, 0x98, 0xbf, 0x5f, 0xd9, +0xfb, 0x73, 0xf3, 0xe7, 0xbd, 0xff, 0x59, 0x3c, +0xf1, 0x9b, 0x1c, 0xe7, 0x03, 0x04, 0xfc, 0x14, +0xa3, 0xfe, 0xe3, 0x08, 0xfe, 0xd9, 0x8a, 0x9d, +0xfe, 0xc5, 0x73, 0xe7, 0xe8, 0x9b, 0xaf, 0xbe, +0x92, 0x08, 0xff, 0x77, 0xb0, 0x1a, 0xc8, 0x43, +0x93, 0x3f, 0x81, 0x58, 0xdf, 0xbf, 0x03, 0xf8, +0xfb, 0x16, 0x27, 0x83, 0x6c, 0xf4, 0x23, 0xed, +0xfd, 0xf1, 0xf6, 0x0d, 0x79, 0x5b, 0x68, 0xca, +0x8d, 0x55, 0x7a, 0xd1, 0xbe, 0x72, 0xf3, 0xe7, +0xbd, 0xbf, 0xcf, 0x2e, 0xf5, 0xbd, 0xff, 0xc6, +0xe5, 0xe2, 0xfb, 0x83, 0x10, 0x00, 0xa2, 0x44, +0x3d, 0x11, 0x85, 0x06, 0x3f, 0x64, 0x52, 0xdb, +0x55, 0x7f, 0x35, 0xe5, 0x21, 0xe0, 0xd4, 0x75, +0x0b, 0x21, 0x95, 0x10, 0x42, 0xc0, 0xc1, 0x02, +0x21, 0x50, 0x95, 0x9c, 0x40, 0x40, 0x1d, 0xe0, +0x04, 0xf4, 0xd7, 0x03, 0x76, 0x6d, 0xd6, 0x53, +0x40, 0x9f, 0xc2, 0x7b, 0x5a, 0x6b, 0xe1, 0xc7, +0xae, 0x5d, 0xb2, 0x68, 0x62, 0xb3, 0x95, 0xa5, +0x83, 0x82, 0x46, 0x42, 0x60, 0x9d, 0x19, 0x6b, +0xe1, 0xea, 0x03, 0x05, 0x03, 0xad, 0x08, 0x0a, +0x46, 0xf6, 0x38, 0xa7, 0xbc, 0xb6, 0x22, 0x87, +0x14, 0xd3, 0x5f, 0x3f, 0xfa, 0x98, 0xf2, 0xd1, +0xe0, 0xe5, 0xbd, 0xff, 0x5e, 0xec, 0xeb, 0x1f, +0xe1, 0xb4, 0xcf, 0x70, 0x9c, 0xcf, 0x27, 0x80, +0xea, 0xe0, 0x9f, 0x33, 0x30, 0x05, 0xfa, 0xe7, +0xe7, 0x9f, 0xd3, 0xff, 0x7e, 0xf8, 0x41, 0x2f, +0xf8, 0xe7, 0x2f, 0x98, 0x1c, 0x30, 0x34, 0xb8, +0x13, 0x27, 0x81, 0xd2, 0xde, 0x3f, 0x1b, 0x7b, +0xff, 0x8c, 0x34, 0x72, 0xbd, 0x18, 0x6b, 0x14, +0xed, 0xcb, 0xe7, 0x7e, 0x23, 0x6e, 0xcf, 0x22, +0xf7, 0x02, 0x79, 0xef, 0xcf, 0x22, 0x60, 0xe3, +0x71, 0xd4, 0xaf, 0xc5, 0xf7, 0x05, 0x21, 0x00, +0x44, 0x89, 0x7a, 0xa2, 0xea, 0xb5, 0xe7, 0x5d, +0xed, 0x26, 0xb7, 0x5f, 0xfd, 0x6f, 0x23, 0x0f, +0x01, 0xa4, 0x10, 0x3a, 0x74, 0xda, 0x28, 0xc5, +0x0f, 0xb3, 0x10, 0x28, 0x2f, 0x27, 0xf0, 0x5a, +0xad, 0xe6, 0x04, 0x8c, 0xd7, 0x03, 0xd6, 0xe6, +0x04, 0x1c, 0xdb, 0x6d, 0x62, 0x40, 0xf0, 0x9e, +0xc6, 0x5a, 0xb8, 0xf8, 0xb1, 0x53, 0xc7, 0x2d, +0xb8, 0x18, 0x58, 0x56, 0x09, 0x50, 0x70, 0xbd, +0x19, 0x50, 0x30, 0xa5, 0x54, 0x50, 0x50, 0x23, +0x04, 0x6a, 0x10, 0x14, 0xec, 0x74, 0x9e, 0xc2, +0xfb, 0x1f, 0x57, 0x5e, 0x57, 0xa9, 0x51, 0x87, +0xe8, 0x2c, 0x9e, 0xdc, 0x15, 0x9f, 0x7f, 0x8c, +0xea, 0x39, 0xa1, 0x4f, 0xb2, 0xf4, 0x35, 0x18, +0xe7, 0xf3, 0xdb, 0x2f, 0xe3, 0xcc, 0x6f, 0x87, +0x1c, 0xfc, 0x03, 0x8b, 0xe0, 0x07, 0x0f, 0x1e, +0xd0, 0x5d, 0x9c, 0x08, 0xee, 0x87, 0x68, 0xd8, +0xc7, 0xc1, 0x3f, 0x70, 0xfd, 0x63, 0xa7, 0xc0, +0x63, 0xf8, 0xb5, 0xdc, 0xfc, 0x73, 0xb1, 0x3a, +0xe0, 0xa7, 0xff, 0xb0, 0xe3, 0x71, 0x46, 0xb7, +0xfe, 0x7c, 0xee, 0x37, 0xfc, 0x6e, 0x04, 0x4d, +0x3f, 0x1a, 0xa3, 0x6e, 0xfe, 0xff, 0x42, 0x35, +0x15, 0xdf, 0x0b, 0x84, 0x00, 0x10, 0x25, 0xea, +0xc9, 0xe4, 0x03, 0x9e, 0x9e, 0xfc, 0x1b, 0x98, +0x05, 0x05, 0xc1, 0x43, 0xe0, 0x3b, 0xf6, 0x0c, +0xd0, 0xf7, 0x10, 0x28, 0x86, 0x87, 0xc0, 0x3a, +0xa9, 0xb1, 0x1b, 0x0b, 0x01, 0x4b, 0x38, 0x01, +0xd7, 0x3a, 0xc0, 0x09, 0x44, 0x56, 0x09, 0x27, +0x30, 0x09, 0x4f, 0xfe, 0xce, 0x1d, 0x53, 0xf9, +0x64, 0x50, 0x5a, 0x0d, 0xe0, 0x84, 0xf0, 0xb1, +0x43, 0xbb, 0x8d, 0xd5, 0x0c, 0x0a, 0x66, 0x96, +0x0e, 0x0a, 0x9a, 0xb0, 0x16, 0xf6, 0xb3, 0xc8, +0x5a, 0xd8, 0x72, 0x50, 0x30, 0xa2, 0x87, 0x0e, +0xfc, 0x9b, 0x3b, 0xf2, 0x10, 0x5d, 0xbd, 0x72, +0x55, 0x79, 0xf2, 0xe7, 0x5d, 0xfd, 0x5f, 0x61, +0xec, 0xc3, 0xe0, 0xdf, 0x3b, 0xb0, 0xf4, 0x95, +0xc7, 0xf9, 0x52, 0xf0, 0x0f, 0x9a, 0xfa, 0x4d, +0x34, 0x77, 0x0e, 0xfe, 0xd9, 0x0f, 0xc3, 0x1f, +0x6e, 0xfa, 0xdc, 0xfc, 0x3f, 0x86, 0x08, 0x38, +0x0a, 0x31, 0xc0, 0xc6, 0x40, 0x97, 0xe1, 0xf7, +0xcf, 0x22, 0xe1, 0x16, 0xd6, 0x06, 0x32, 0xf1, +0xcf, 0xcd, 0x7f, 0xc5, 0xbe, 0x8d, 0xd2, 0xb9, +0xdf, 0x38, 0x83, 0x73, 0xbf, 0xe1, 0x77, 0x66, +0x91, 0xed, 0xb9, 0x25, 0xea, 0xe6, 0xff, 0x10, +0x35, 0x44, 0x7c, 0x0f, 0x10, 0x02, 0x40, 0x94, +0x28, 0x21, 0x04, 0x9e, 0x9e, 0xfc, 0xfb, 0xb7, +0x1a, 0x07, 0x2c, 0x83, 0x87, 0xc0, 0xcf, 0xc6, +0x1e, 0x02, 0x07, 0x69, 0x52, 0xdb, 0x28, 0xa9, +0xe1, 0x4b, 0x42, 0xa0, 0xc2, 0x9c, 0x80, 0x9b, +0xd5, 0x38, 0x81, 0xb7, 0xaa, 0x8c, 0x13, 0x98, +0x63, 0x35, 0x4e, 0x80, 0x8b, 0x2f, 0x06, 0xdc, +0xba, 0x64, 0x3f, 0x0a, 0x7d, 0xa1, 0x44, 0x72, +0x15, 0xf4, 0xeb, 0xbd, 0x8f, 0xa6, 0xb5, 0x8e, +0x2b, 0x1f, 0x28, 0xd8, 0xac, 0x0e, 0x82, 0x82, +0x1d, 0x71, 0xf3, 0xff, 0x82, 0xee, 0x35, 0x94, +0x9d, 0x70, 0x98, 0xb6, 0xe0, 0x09, 0x5f, 0xde, +0xfb, 0xbf, 0x8d, 0x49, 0x00, 0x8f, 0xf3, 0xd9, +0xd2, 0x57, 0x3d, 0xce, 0xe7, 0x7f, 0xf8, 0x47, +0xfe, 0x77, 0x25, 0xf8, 0x07, 0x1f, 0xc7, 0xe3, +0x7f, 0x5e, 0x03, 0xf0, 0x3a, 0xe0, 0x6d, 0x6d, +0xf0, 0xcf, 0x17, 0x28, 0x6e, 0xfa, 0xfc, 0xfb, +0x6a, 0xf6, 0xfe, 0x29, 0x34, 0xe5, 0xe6, 0x4a, +0xa3, 0x73, 0x3f, 0x6e, 0xfe, 0x63, 0xae, 0xcd, +0x25, 0x9f, 0xfc, 0x8d, 0x72, 0xf3, 0xe7, 0x5a, +0x28, 0xbe, 0xee, 0x85, 0x00, 0x10, 0x25, 0x4a, +0x94, 0xaa, 0xfa, 0x3d, 0x3d, 0xf9, 0x99, 0xa1, +0x4d, 0x43, 0x93, 0x91, 0x27, 0xf0, 0xd0, 0xd8, +0x43, 0xa0, 0x90, 0xc6, 0xb5, 0x5e, 0x42, 0x2f, +0x4b, 0x22, 0xc0, 0xa1, 0x16, 0x71, 0x02, 0x81, +0xb5, 0x9e, 0x13, 0x98, 0x8c, 0x8c, 0x01, 0xd8, +0x09, 0xf3, 0x34, 0xe0, 0xb1, 0x94, 0x96, 0xd7, +0x63, 0x27, 0x4d, 0x2e, 0xf5, 0x62, 0xa0, 0xf6, +0x80, 0x82, 0x7e, 0x15, 0x04, 0x05, 0xc3, 0x7b, +0xea, 0x46, 0xff, 0x0b, 0x26, 0x1c, 0xa0, 0x6d, +0x20, 0xf8, 0x95, 0xbd, 0x3f, 0x9e, 0xea, 0x95, +0x71, 0x3e, 0x7e, 0xce, 0xe3, 0x7c, 0x7e, 0xe2, +0xe7, 0x27, 0x7f, 0x9e, 0x00, 0xf0, 0x24, 0x80, +0x27, 0x02, 0x3c, 0x19, 0xe0, 0x09, 0x01, 0x83, +0x7f, 0xef, 0x02, 0x00, 0x64, 0x10, 0x90, 0x81, +0xc0, 0x4f, 0x39, 0xf8, 0x07, 0x1f, 0xbb, 0x0d, +0x02, 0x41, 0xb9, 0xf7, 0xc7, 0xde, 0xdf, 0xf9, +0x52, 0xb4, 0x51, 0xb4, 0x2f, 0x37, 0x7f, 0xdd, +0xde, 0x5f, 0x69, 0xfe, 0x47, 0x7c, 0x76, 0x6e, +0xfc, 0x95, 0xf8, 0x7a, 0x17, 0x02, 0x40, 0x94, +0x28, 0x51, 0xa6, 0x85, 0x40, 0x33, 0x44, 0x0c, +0xef, 0x86, 0x87, 0xc0, 0x63, 0x23, 0x0f, 0x81, +0xde, 0xbb, 0x69, 0x54, 0x8b, 0xb9, 0xf4, 0xe2, +0x33, 0xf6, 0x8a, 0x10, 0xa8, 0x5d, 0x9c, 0x40, +0x90, 0xd5, 0x39, 0x81, 0x51, 0x56, 0xe2, 0x04, +0xa6, 0x22, 0x63, 0xc0, 0xb7, 0xd7, 0xde, 0x7b, +0x9a, 0xcf, 0x65, 0xc9, 0x63, 0xf7, 0xae, 0x79, +0x34, 0xa9, 0x79, 0x94, 0x01, 0x28, 0xb8, 0xd2, +0xea, 0xa0, 0xa0, 0xb3, 0x85, 0xa0, 0xa0, 0x97, +0x21, 0x28, 0xd8, 0xa6, 0x02, 0xa0, 0x60, 0xc7, +0x63, 0x7a, 0x4f, 0xff, 0xa9, 0x71, 0xbb, 0x95, +0xe6, 0xcf, 0x7b, 0x7f, 0x0e, 0xf3, 0xf9, 0x9b, +0x3c, 0xce, 0x47, 0xf3, 0x96, 0xc7, 0xf9, 0xbc, +0xfb, 0x67, 0x06, 0x80, 0x59, 0x00, 0x66, 0x02, +0x98, 0x0d, 0xe0, 0x34, 0x3f, 0x3e, 0xfd, 0xe3, +0x13, 0x40, 0x3e, 0x05, 0xfc, 0x10, 0x27, 0x81, +0x0c, 0xfd, 0x1d, 0x86, 0x19, 0x10, 0x37, 0xff, +0x3c, 0x4c, 0x0f, 0xf8, 0xe9, 0x3f, 0xe4, 0xc4, +0x3a, 0xa3, 0x68, 0x5f, 0x26, 0xfe, 0x87, 0xdd, +0x9d, 0x49, 0xd3, 0x8f, 0x44, 0xab, 0x9b, 0xff, +0xe7, 0x68, 0xfe, 0x8d, 0xc5, 0xd7, 0xb8, 0x10, +0x00, 0xa2, 0x44, 0x89, 0x2a, 0x5b, 0x08, 0x74, +0x1c, 0xdd, 0x72, 0xde, 0x49, 0x53, 0x1e, 0x02, +0x9e, 0x3d, 0xb7, 0xd3, 0xb0, 0x66, 0x61, 0x66, +0x84, 0x40, 0xf9, 0x38, 0x81, 0xd7, 0xab, 0x8c, +0x13, 0x08, 0xb6, 0x1e, 0x27, 0xd0, 0xc8, 0x3a, +0x9c, 0x80, 0x3d, 0x2e, 0x06, 0x02, 0xfb, 0xee, +0xff, 0x49, 0xbe, 0x18, 0x70, 0xe9, 0x9c, 0x21, +0x35, 0x7f, 0x9d, 0x10, 0x58, 0x59, 0xa6, 0xb5, +0xf0, 0x34, 0x0b, 0xad, 0x85, 0xab, 0x1b, 0x14, +0x0c, 0xeb, 0xa5, 0x5b, 0x21, 0x2d, 0x9a, 0x52, +0xa8, 0xb7, 0xf7, 0xff, 0x1b, 0xce, 0xfa, 0xf4, +0xc6, 0xf9, 0x6c, 0xe9, 0x8b, 0x51, 0xbe, 0x1c, +0xfc, 0xc3, 0x57, 0x00, 0x7c, 0x0d, 0xc0, 0x7c, +0xc0, 0x23, 0x39, 0xf8, 0x07, 0xe6, 0x3f, 0x6c, +0x02, 0xc4, 0x66, 0x40, 0x3f, 0xc1, 0x29, 0xf0, +0x2a, 0xd6, 0x02, 0xea, 0x90, 0x9f, 0xe5, 0xd8, +0xfb, 0x1b, 0x46, 0xfb, 0x6a, 0x9a, 0x7f, 0x04, +0xd9, 0xbe, 0xbd, 0x44, 0xdd, 0xfc, 0x1f, 0xa0, +0xf9, 0x0f, 0x10, 0x5f, 0xd7, 0x42, 0x00, 0x88, +0x12, 0x25, 0xaa, 0x7c, 0x66, 0x42, 0x2f, 0x8c, +0x6f, 0xbd, 0xe4, 0xba, 0x6f, 0x9f, 0xbd, 0x46, +0x42, 0xc0, 0xb5, 0x7b, 0x16, 0x81, 0x1f, 0xd0, +0x0a, 0x01, 0x7b, 0x2b, 0x71, 0x02, 0xee, 0x56, +0xe5, 0x04, 0x06, 0xd7, 0x52, 0x4e, 0x60, 0x7a, +0xfb, 0x4d, 0x14, 0xdc, 0xef, 0xb0, 0xe6, 0x62, +0xa0, 0xdf, 0xe1, 0xc7, 0x33, 0x3a, 0x6c, 0x36, +0xb8, 0x2a, 0x28, 0x0f, 0x28, 0x98, 0x50, 0xf3, +0xa0, 0x60, 0xc7, 0xc3, 0xca, 0xeb, 0x22, 0x1c, +0xc1, 0x3f, 0x09, 0x51, 0x69, 0xca, 0xde, 0xff, +0x1c, 0x46, 0xfa, 0x3c, 0xce, 0xbf, 0xa8, 0x1e, +0xe7, 0x43, 0x10, 0xf0, 0xbd, 0x3f, 0xdf, 0xfd, +0xf3, 0xfd, 0x7f, 0x11, 0x7c, 0x00, 0xd8, 0x0f, +0x80, 0x83, 0x7f, 0x3e, 0x81, 0x59, 0x10, 0xdb, +0xfe, 0xb2, 0xfd, 0xef, 0x25, 0xd8, 0x00, 0x7f, +0x0b, 0x3b, 0x60, 0x0e, 0xf9, 0x49, 0x85, 0x4b, +0xa0, 0xbc, 0xf7, 0x4f, 0xc4, 0xde, 0xdf, 0xf6, +0xe6, 0x72, 0x83, 0x5b, 0xff, 0x48, 0xa9, 0xf9, +0x8f, 0xb9, 0x3a, 0x07, 0x7b, 0xff, 0x0d, 0x8a, +0x00, 0x40, 0xf3, 0x8f, 0x14, 0x5f, 0xcb, 0xa2, +0xc4, 0x27, 0x41, 0x94, 0xa8, 0x8a, 0x7a, 0x08, +0x3c, 0x37, 0x7d, 0xc4, 0xc4, 0xb6, 0x2b, 0xff, +0x66, 0xca, 0x43, 0x60, 0x46, 0x97, 0x14, 0x1a, +0x80, 0xf8, 0x61, 0x16, 0x02, 0xea, 0xa9, 0x80, +0x75, 0x38, 0x01, 0x0f, 0xeb, 0x72, 0x02, 0x0d, +0xac, 0xc9, 0x09, 0x58, 0xb0, 0x1e, 0x30, 0x23, +0x04, 0xf8, 0xc9, 0xdf, 0xb9, 0x53, 0x3a, 0x40, +0xc1, 0xa3, 0xd2, 0xc5, 0x40, 0x40, 0x9f, 0x22, +0xb2, 0x6f, 0x9b, 0x58, 0xcb, 0x41, 0xc1, 0x3d, +0x7a, 0x7c, 0x80, 0x2c, 0x04, 0x42, 0x7b, 0xe9, +0x2e, 0x49, 0x16, 0x3b, 0xec, 0xd1, 0xf3, 0xf9, +0x37, 0x1c, 0xe7, 0xb3, 0xc3, 0xdf, 0x63, 0x38, +0xfd, 0xc9, 0xc1, 0x3f, 0xec, 0x00, 0xc8, 0x4e, +0x80, 0xec, 0x08, 0xa8, 0x0e, 0xfe, 0xe1, 0x1f, +0xe5, 0x78, 0xe0, 0x5c, 0x4c, 0x08, 0xd4, 0xf7, +0xfe, 0x4e, 0x97, 0xa2, 0x8c, 0xa2, 0x7d, 0xf9, +0xdc, 0x6f, 0xf8, 0xad, 0x08, 0xf2, 0xd8, 0x17, +0x2f, 0x37, 0x7e, 0xd4, 0x86, 0x03, 0x28, 0xb1, +0xf7, 0x17, 0x25, 0x04, 0x80, 0x28, 0x51, 0x95, +0xf6, 0x10, 0x68, 0xe0, 0xea, 0x08, 0x0f, 0x81, +0x2f, 0x83, 0x4d, 0x78, 0x08, 0xd8, 0x77, 0x4a, +0x94, 0xe2, 0x87, 0x0d, 0x85, 0x80, 0x75, 0x39, +0x01, 0xcf, 0x5a, 0xcd, 0x09, 0x8c, 0xae, 0x00, +0x27, 0xc0, 0x31, 0xc3, 0xee, 0x5d, 0x73, 0x7f, +0x01, 0x1b, 0x20, 0x01, 0x98, 0xbe, 0xbd, 0xf6, +0xd0, 0xd4, 0x56, 0xeb, 0xac, 0x0f, 0x0a, 0xb6, +0x28, 0x1d, 0x14, 0x74, 0xad, 0x04, 0x28, 0x18, +0xd8, 0x71, 0xbf, 0xee, 0xe9, 0xff, 0x95, 0x12, +0x8a, 0x8b, 0xde, 0x24, 0x35, 0x7f, 0x8e, 0xe4, +0x65, 0xfb, 0xde, 0x0f, 0x0c, 0xc7, 0xf9, 0x78, +0x1b, 0x7b, 0xfd, 0x9f, 0x92, 0x83, 0x7f, 0xe0, +0x08, 0xc8, 0x59, 0x00, 0x1c, 0xf1, 0xcb, 0x4f, +0xfc, 0xdb, 0xe5, 0xe0, 0x1f, 0x4c, 0x02, 0x78, +0x22, 0xb0, 0x1f, 0x22, 0x41, 0xbd, 0xf7, 0x0f, +0x3e, 0xb1, 0x56, 0x3a, 0xf7, 0x53, 0x47, 0xfb, +0x32, 0xf4, 0x37, 0xf4, 0x6e, 0x38, 0xcd, 0x28, +0x8e, 0x51, 0x37, 0xff, 0x4f, 0x51, 0x0d, 0xc4, +0xd7, 0xad, 0x28, 0x21, 0x00, 0x44, 0x89, 0xb2, +0x1a, 0x1f, 0x60, 0x0b, 0x0f, 0x01, 0xcf, 0x30, +0x78, 0x08, 0x7c, 0x6f, 0xca, 0x43, 0x60, 0x72, +0xfb, 0x35, 0x88, 0x1f, 0x76, 0x82, 0x08, 0xb0, +0xb3, 0x60, 0x3d, 0x50, 0x7e, 0x4e, 0xe0, 0x8d, +0x7a, 0xca, 0x09, 0x70, 0xc6, 0x00, 0xae, 0x04, +0x7e, 0x52, 0xf2, 0x1a, 0xba, 0x6f, 0x27, 0xdb, +0x16, 0x31, 0xb5, 0x1e, 0x14, 0x0c, 0xe9, 0x5d, +0xac, 0xfc, 0xfd, 0x2f, 0x71, 0xde, 0xa9, 0xec, +0xfd, 0x79, 0x6c, 0xcf, 0xe9, 0x7d, 0xf2, 0x38, +0xff, 0xa2, 0x76, 0x9c, 0xcf, 0x29, 0x7f, 0x9c, +0xf6, 0xc7, 0xcd, 0x9f, 0xd3, 0xff, 0x38, 0x05, +0x90, 0x77, 0xfc, 0x37, 0xae, 0x5d, 0x53, 0x82, +0x7f, 0x98, 0x01, 0x78, 0x08, 0x16, 0xe0, 0x02, +0xd6, 0x06, 0xea, 0x90, 0x9f, 0x65, 0x05, 0x1b, +0x4c, 0x9e, 0xfb, 0x71, 0xf3, 0x9f, 0x7c, 0x76, +0x89, 0xba, 0xf9, 0xff, 0x82, 0x7a, 0x55, 0x7c, +0xbd, 0x8a, 0x12, 0x02, 0x40, 0x94, 0xa8, 0x2a, +0xa8, 0xbe, 0x4f, 0xdb, 0xfe, 0x61, 0x50, 0x63, +0xbf, 0x55, 0xf0, 0x10, 0xb8, 0x6f, 0xe4, 0x21, +0xd0, 0xef, 0x20, 0x61, 0x65, 0x20, 0x35, 0x7c, +0x63, 0x21, 0xe0, 0x60, 0x3d, 0x4e, 0xe0, 0x39, +0xeb, 0x72, 0x02, 0xea, 0xf5, 0x40, 0x4d, 0x71, +0x02, 0xfc, 0xf4, 0xef, 0xdf, 0xbb, 0xe0, 0x7f, +0x9a, 0xc9, 0x4a, 0xc9, 0x63, 0xb7, 0x2e, 0x39, +0x92, 0xc1, 0x50, 0x6d, 0x04, 0x05, 0xfd, 0x3b, +0x16, 0xe8, 0xe2, 0x7e, 0x5f, 0x3b, 0x4a, 0x09, +0x6b, 0x93, 0x95, 0xbd, 0xbf, 0x6c, 0xe9, 0xab, +0x1e, 0xe7, 0xff, 0xf0, 0xfd, 0xf7, 0x8a, 0xa5, +0xaf, 0x1c, 0xfc, 0xc3, 0x74, 0xff, 0x87, 0x77, +0xef, 0xd2, 0xa1, 0x82, 0x02, 0xda, 0x2d, 0x07, +0xff, 0x60, 0x6d, 0xf0, 0x17, 0xbc, 0x8f, 0x77, +0xfe, 0xbc, 0xfb, 0xe7, 0xe6, 0xbf, 0x7e, 0x6b, +0x0a, 0xd9, 0xdc, 0x5c, 0x6a, 0xd4, 0xfc, 0x99, +0xf8, 0x1f, 0x73, 0x45, 0xb3, 0xf7, 0xd7, 0x36, +0x7f, 0xae, 0x30, 0xf1, 0x35, 0x2a, 0x4a, 0x08, +0x00, 0x51, 0xa2, 0xaa, 0x5e, 0x08, 0x3c, 0x37, +0xa4, 0x69, 0x48, 0xaa, 0x93, 0x09, 0x0f, 0x01, +0x7f, 0x78, 0x08, 0x8c, 0x6d, 0xb5, 0x48, 0xbb, +0x16, 0xb0, 0x2b, 0x65, 0x3d, 0x50, 0x9b, 0x39, +0x81, 0xd0, 0x1a, 0xe3, 0x04, 0xec, 0xdb, 0x6e, +0xa0, 0xa0, 0xbe, 0x07, 0x24, 0x21, 0x00, 0x67, +0xc1, 0xc7, 0xce, 0x9d, 0xd2, 0x60, 0x2d, 0xbc, +0xbc, 0x0a, 0x40, 0xc1, 0xcd, 0xfa, 0xa0, 0xa0, +0x81, 0x10, 0x30, 0x07, 0x0a, 0x86, 0xf4, 0xd1, +0x3d, 0xfd, 0x2f, 0xf3, 0xda, 0x26, 0x3d, 0xfd, +0xef, 0xc6, 0xde, 0xff, 0x1b, 0x3c, 0xe9, 0x5f, +0x82, 0xa5, 0x2f, 0x8f, 0xf3, 0x4b, 0x30, 0x01, +0xf8, 0x9b, 0x76, 0x9c, 0x7f, 0xe7, 0xe6, 0x4d, +0x2a, 0xc2, 0xfb, 0x0b, 0x00, 0xfe, 0xdd, 0x02, +0x00, 0xf8, 0x33, 0x07, 0xff, 0xe0, 0xbe, 0xff, +0x78, 0x71, 0x31, 0x6d, 0x45, 0xa8, 0x0f, 0xdf, +0xfd, 0x7f, 0x0d, 0x60, 0x90, 0x57, 0x02, 0xd9, +0x38, 0x15, 0x94, 0xa9, 0xff, 0x2d, 0xd8, 0xfb, +0xcf, 0xb8, 0xb4, 0xca, 0x28, 0xda, 0x97, 0x9b, +0xff, 0xf0, 0x5b, 0x33, 0xa5, 0xbd, 0xbf, 0xb6, +0xf1, 0x73, 0xed, 0x15, 0x5f, 0x97, 0xa2, 0x84, +0x00, 0x10, 0x25, 0xaa, 0x5a, 0x85, 0x80, 0x4d, +0xf3, 0x11, 0xcd, 0x23, 0xf6, 0xb9, 0xf7, 0xc8, +0x35, 0xf2, 0x10, 0xf0, 0xe9, 0xbd, 0x8b, 0x46, +0xb6, 0x88, 0xa4, 0x17, 0x9e, 0x99, 0x66, 0x46, +0x08, 0x3c, 0x49, 0x9c, 0xc0, 0x7c, 0x0b, 0x39, +0x81, 0x65, 0x84, 0x0b, 0x81, 0xc7, 0x21, 0xfd, +0x8b, 0x7f, 0xd2, 0x4e, 0x56, 0x1e, 0x3b, 0xb6, +0x4f, 0xb6, 0x32, 0x28, 0x98, 0xac, 0x07, 0x0a, +0x3a, 0xe9, 0x81, 0x82, 0x19, 0xa5, 0x82, 0x82, +0xbe, 0x9d, 0x74, 0xe9, 0x92, 0x11, 0x03, 0x8a, +0x69, 0xc3, 0xfa, 0x4d, 0x52, 0x32, 0x1f, 0x37, +0xff, 0x9b, 0x3c, 0xce, 0x87, 0xa5, 0xaf, 0x7a, +0x9c, 0xff, 0x31, 0x4e, 0xfc, 0x8e, 0x1e, 0x38, +0x40, 0x3b, 0xd1, 0xd0, 0xe5, 0xe0, 0x1f, 0x76, +0xf6, 0x3b, 0x07, 0x87, 0xbf, 0x6c, 0xa4, 0xf9, +0x9d, 0x39, 0x76, 0x4c, 0x09, 0xfe, 0xd9, 0x07, +0xa3, 0x20, 0x6e, 0xfe, 0x5b, 0x61, 0xfa, 0xc3, +0x4f, 0xff, 0x41, 0x27, 0xd7, 0x18, 0x45, 0xfb, +0x72, 0xf3, 0x1f, 0x72, 0x37, 0x8c, 0xa6, 0x1f, +0x8e, 0x51, 0x37, 0xff, 0x8f, 0x51, 0xcf, 0x89, +0xaf, 0x47, 0x51, 0x42, 0x00, 0x88, 0x12, 0x55, +0x33, 0x42, 0xa0, 0x33, 0x3c, 0x04, 0xce, 0x98, +0xf6, 0x10, 0xd8, 0x46, 0x70, 0x1c, 0x54, 0x09, +0x81, 0xaa, 0xe7, 0x04, 0xd4, 0xeb, 0x81, 0xda, +0xcb, 0x09, 0x98, 0x5f, 0x0f, 0x70, 0xa3, 0x77, +0xed, 0x9c, 0xf9, 0x00, 0xb0, 0xe5, 0x2f, 0xd2, +0x64, 0xa5, 0x4f, 0x21, 0x52, 0x08, 0x13, 0xac, +0x02, 0x0a, 0x3a, 0x54, 0x10, 0x14, 0x0c, 0xe9, +0xab, 0x7b, 0xfa, 0x5f, 0x15, 0xa8, 0x71, 0xe7, +0xfb, 0x14, 0xfb, 0x7c, 0x65, 0x9c, 0xcf, 0x96, +0xbe, 0xda, 0x71, 0xbe, 0x14, 0xfc, 0x83, 0x06, +0xcf, 0x8d, 0x9e, 0x1b, 0xfe, 0xbf, 0xe5, 0xe0, +0x1f, 0x98, 0x01, 0xb1, 0xc7, 0x3f, 0x0b, 0x03, +0x16, 0x08, 0x0f, 0xe1, 0x14, 0x78, 0x1a, 0x6b, +0x03, 0x75, 0xc8, 0xcf, 0xd2, 0x82, 0x44, 0xa3, +0x68, 0x5f, 0x3e, 0xf7, 0x1b, 0x8a, 0xe6, 0x6f, +0x7b, 0x66, 0x89, 0xba, 0xf9, 0xff, 0x8c, 0x7a, +0x51, 0x7c, 0x0d, 0x8a, 0x12, 0x02, 0x40, 0x94, +0xa8, 0x9a, 0x86, 0x05, 0x9f, 0x99, 0xfc, 0x12, +0x2c, 0x84, 0x6f, 0x9a, 0xf2, 0x10, 0x70, 0xe9, +0x9e, 0x49, 0xe0, 0x07, 0xcc, 0x08, 0x81, 0xaa, +0xe4, 0x04, 0xbc, 0xad, 0xc6, 0x09, 0x0c, 0xad, +0x66, 0x4e, 0x60, 0x52, 0xf3, 0x55, 0xe4, 0xd1, +0x6d, 0x2b, 0xa6, 0x01, 0x25, 0x8f, 0xa4, 0xc9, +0x4a, 0xcf, 0x5d, 0x34, 0xa5, 0xe5, 0x1a, 0x23, +0x21, 0x50, 0xd5, 0xa0, 0xa0, 0x4f, 0xe7, 0x5d, +0xca, 0xdf, 0xe5, 0xec, 0xc1, 0x87, 0x28, 0x69, +0xe3, 0x26, 0x3a, 0x0e, 0x93, 0x9f, 0xcf, 0xd4, +0xe3, 0x7c, 0x70, 0x00, 0x3c, 0xce, 0xff, 0x1a, +0xb6, 0xbe, 0xfc, 0xf3, 0x3c, 0xbc, 0xed, 0x04, +0xde, 0xf7, 0x99, 0xd6, 0xd2, 0x97, 0x53, 0xfd, +0x0a, 0x60, 0x07, 0xcc, 0x29, 0x7f, 0x77, 0xb1, +0x1a, 0x60, 0x9b, 0x60, 0x0e, 0xf9, 0x49, 0x81, +0x48, 0xe0, 0xc6, 0xaf, 0xd9, 0xfb, 0x6f, 0xa6, +0x49, 0x37, 0x97, 0xe8, 0x45, 0xfb, 0x0e, 0xd7, +0x36, 0xff, 0x31, 0x97, 0xe7, 0x90, 0x77, 0x7e, +0xa2, 0x5a, 0x00, 0x04, 0x8a, 0xaf, 0x3b, 0x51, +0x42, 0x00, 0x88, 0x12, 0x55, 0x8b, 0xea, 0xa5, +0xe7, 0x1c, 0x46, 0x03, 0x08, 0xfc, 0x34, 0xa0, +0x9f, 0xb1, 0x87, 0xc0, 0xf4, 0x2e, 0x9b, 0xe9, +0xcd, 0x86, 0x1e, 0x92, 0x10, 0x78, 0x41, 0x25, +0x04, 0x2c, 0x59, 0x0f, 0xd4, 0x3e, 0x4e, 0x20, +0xac, 0xda, 0x38, 0x01, 0xbe, 0x18, 0x40, 0xf3, +0xff, 0x41, 0xfe, 0x3c, 0x7a, 0x74, 0xdb, 0x46, +0x36, 0xcd, 0xa3, 0x0d, 0x2e, 0x06, 0xaa, 0x06, +0x14, 0x74, 0x6d, 0x9d, 0xc9, 0x4c, 0x82, 0xf2, +0x77, 0xb8, 0x7a, 0xd6, 0x56, 0x8d, 0xdb, 0x1f, +0xf6, 0xfc, 0xf2, 0x38, 0x9f, 0x9f, 0xf6, 0xff, +0x89, 0xa7, 0x7e, 0x39, 0xf8, 0x87, 0xa7, 0x01, +0x3c, 0x15, 0xe0, 0xe9, 0x00, 0xa8, 0x3f, 0x25, +0xf8, 0x87, 0x61, 0x40, 0x86, 0x02, 0x19, 0x0e, +0xfc, 0x1c, 0xd3, 0x83, 0x4c, 0x9c, 0x0e, 0xca, +0xf7, 0xfe, 0xbc, 0xf7, 0x77, 0xbc, 0xbc, 0x42, +0xff, 0xdc, 0x4f, 0x6a, 0xfe, 0x10, 0x5c, 0x37, +0xc3, 0xc9, 0x63, 0xaf, 0xde, 0xde, 0x7f, 0xa7, +0xf8, 0x5a, 0x13, 0x25, 0x04, 0x80, 0x28, 0x51, +0xb5, 0x72, 0x2d, 0x30, 0xe9, 0x57, 0xaf, 0x36, +0x70, 0x71, 0xb6, 0x6d, 0x1f, 0xfb, 0x55, 0x90, +0x09, 0x0f, 0x01, 0xbb, 0x8e, 0x09, 0xf4, 0xda, +0xf3, 0xce, 0x5a, 0x21, 0x60, 0x09, 0x27, 0x30, +0xbd, 0x0e, 0x70, 0x02, 0xe1, 0x56, 0xe1, 0x04, +0xf8, 0x8c, 0x70, 0x6a, 0xdb, 0xe5, 0x34, 0x7f, +0xc8, 0x16, 0xb2, 0x6b, 0xb7, 0x52, 0x8f, 0x13, +0x98, 0x8a, 0x84, 0x41, 0x18, 0x08, 0x7d, 0x2f, +0x5b, 0x0b, 0xbb, 0x76, 0xce, 0xa2, 0x89, 0xca, +0xc5, 0x40, 0x69, 0xa0, 0x60, 0x6c, 0xa5, 0x40, +0x41, 0x9f, 0x2e, 0xba, 0xa7, 0xff, 0x39, 0x23, +0x0e, 0x4a, 0x0d, 0xfb, 0x08, 0x9e, 0xec, 0x8d, +0xc6, 0xf9, 0x6c, 0xe9, 0x2b, 0x07, 0xff, 0x80, +0x07, 0x60, 0x2e, 0xe0, 0x1e, 0xce, 0xfd, 0xf8, +0xec, 0xef, 0xa4, 0x1c, 0xfc, 0x83, 0x73, 0xc0, +0xaf, 0x70, 0x16, 0xc8, 0xdc, 0xc0, 0x2e, 0x4c, +0x03, 0xd4, 0x7b, 0xff, 0xc0, 0x93, 0xab, 0x8d, +0xa2, 0x7d, 0xb9, 0xf9, 0x0f, 0xbe, 0x1b, 0x42, +0x33, 0x0e, 0xe9, 0xed, 0xfd, 0x3f, 0xf4, 0xd9, +0x91, 0xf8, 0xb4, 0xf8, 0x3a, 0x13, 0x25, 0x04, +0x80, 0x28, 0x51, 0xb5, 0xb8, 0xfa, 0x3c, 0x3d, +0xe9, 0xb7, 0x6f, 0x34, 0xf2, 0x8c, 0x98, 0xd6, +0x31, 0xfe, 0x07, 0x43, 0x0f, 0x81, 0xe0, 0xfe, +0x87, 0x09, 0x02, 0x81, 0xe0, 0x3a, 0x68, 0x20, +0x04, 0xec, 0xca, 0x61, 0x37, 0x5c, 0x79, 0x4e, +0x60, 0x40, 0x2d, 0xe2, 0x04, 0xc6, 0x35, 0x5b, +0x48, 0x8b, 0x47, 0xa6, 0xd0, 0xa1, 0x79, 0x47, +0xe9, 0xc4, 0xb2, 0x53, 0xb4, 0x3f, 0xf2, 0x28, +0xc4, 0xc0, 0x0a, 0xa3, 0xa9, 0x80, 0x43, 0x3b, +0x5c, 0x0c, 0xf4, 0x3b, 0xf4, 0x3f, 0xcd, 0xe7, +0xb1, 0xf8, 0xb1, 0x53, 0xc7, 0x2d, 0x68, 0xfe, +0xcb, 0x4b, 0x01, 0x05, 0xa3, 0x4b, 0x05, 0x05, +0x35, 0x42, 0x60, 0x7d, 0xa9, 0x42, 0xc0, 0xa9, +0x55, 0x2a, 0x85, 0xbd, 0xa4, 0xfb, 0x7b, 0x5b, +0xbf, 0x74, 0x9b, 0xf4, 0xf4, 0x7f, 0x09, 0xcd, +0x9f, 0xc7, 0xf9, 0x4c, 0xf8, 0x33, 0xe9, 0xff, +0x00, 0xc4, 0x3f, 0x4f, 0x04, 0x4a, 0x10, 0xfc, +0xb3, 0x1d, 0x34, 0x3f, 0x5f, 0x04, 0xb0, 0xd1, +0xcf, 0x97, 0xa0, 0xfb, 0xe5, 0xe0, 0x9f, 0x53, +0x08, 0xfe, 0x61, 0x43, 0x20, 0x36, 0x06, 0x3a, +0x06, 0x3f, 0x00, 0xb5, 0xd9, 0xcf, 0x92, 0xc2, +0xf5, 0x26, 0xcf, 0xfd, 0x86, 0xdc, 0x0d, 0xa5, +0xc9, 0xa7, 0xf5, 0xf6, 0xfe, 0xf7, 0xd0, 0xfc, +0xfb, 0x8a, 0xaf, 0x2d, 0x51, 0x42, 0x00, 0x88, +0x12, 0x55, 0x77, 0x84, 0xc0, 0x1f, 0x07, 0x36, +0xf6, 0x8d, 0x31, 0xe5, 0x21, 0x10, 0xd8, 0xef, +0x00, 0x4d, 0xc0, 0x13, 0xef, 0x4b, 0xcf, 0xda, +0x97, 0x21, 0x04, 0xaa, 0x83, 0x13, 0xf0, 0xa9, +0x31, 0x4e, 0x20, 0xe0, 0xa5, 0x35, 0xb4, 0x35, +0x60, 0x0f, 0x1d, 0x9c, 0x77, 0x98, 0x0e, 0xcf, +0x3f, 0x42, 0xc5, 0x0b, 0x8f, 0xd2, 0xd1, 0xc5, +0xc7, 0x28, 0xc3, 0x6b, 0x0f, 0x9a, 0xfe, 0x22, +0xa3, 0xf5, 0xc0, 0xf8, 0xa6, 0x4b, 0x09, 0x8d, +0xff, 0x21, 0x84, 0x95, 0x94, 0x31, 0x10, 0xd8, +0xf7, 0x00, 0x84, 0xc1, 0x46, 0xb3, 0xa0, 0xa0, +0x6d, 0xb9, 0x40, 0xc1, 0x24, 0xf2, 0xe9, 0x96, +0xaf, 0xfc, 0x3d, 0xcd, 0x1f, 0x7f, 0x40, 0x6a, +0xda, 0xfb, 0x40, 0xfa, 0x1b, 0x8e, 0xf3, 0x65, +0x4b, 0x5f, 0x25, 0xf8, 0x07, 0x9e, 0x00, 0x6c, +0xf5, 0xcb, 0x96, 0xbf, 0xf9, 0x72, 0xf0, 0xcf, +0x87, 0x1f, 0xd2, 0x23, 0x58, 0x02, 0x5f, 0xc5, +0xaf, 0x49, 0xc1, 0xc7, 0xf1, 0x05, 0x41, 0x2a, +0x9a, 0x7f, 0x02, 0xf6, 0xfe, 0x13, 0x6f, 0x2e, +0x36, 0x3a, 0xf7, 0xe3, 0xe6, 0x3f, 0xe6, 0x52, +0xa4, 0xf6, 0xde, 0x1f, 0xb5, 0x23, 0x91, 0xcb, +0x5b, 0x7c, 0x3d, 0x89, 0x12, 0x02, 0x40, 0x94, +0xa8, 0xba, 0x29, 0x04, 0x9e, 0x1f, 0xd2, 0x34, +0x38, 0xc3, 0xb9, 0x5b, 0xda, 0x23, 0x63, 0x0f, +0x81, 0x02, 0x1a, 0xd3, 0x72, 0x01, 0xf5, 0x97, +0x44, 0xc0, 0xd4, 0x0a, 0x71, 0x02, 0xaf, 0x58, +0x9d, 0x13, 0xf0, 0xb5, 0x0a, 0x27, 0x30, 0xcc, +0x0c, 0x27, 0x30, 0xbd, 0xcb, 0x52, 0x4a, 0x74, +0xcc, 0xa4, 0x5d, 0xe1, 0xb0, 0xcf, 0x8d, 0x28, +0xa0, 0x7d, 0xb3, 0x8a, 0xa8, 0x30, 0xf2, 0x00, +0xed, 0x9f, 0x73, 0x50, 0x23, 0x06, 0x16, 0x1c, +0xa1, 0x15, 0x63, 0xd3, 0x4a, 0x3d, 0x23, 0x9c, +0xd0, 0x6c, 0x39, 0xb9, 0x76, 0xc9, 0xba, 0x07, +0x13, 0xa1, 0x07, 0xfc, 0x79, 0xf4, 0xeb, 0xbd, +0x8f, 0xa6, 0xb5, 0x8e, 0xaf, 0x34, 0x28, 0x38, +0xbd, 0xd5, 0x26, 0x69, 0x5d, 0x23, 0xff, 0xfd, +0x24, 0xc5, 0x6c, 0x93, 0x04, 0x40, 0x31, 0x46, +0xfe, 0xb9, 0x68, 0xdc, 0x17, 0x54, 0xe3, 0x7c, +0x76, 0xfd, 0x63, 0xf7, 0xbf, 0x63, 0x08, 0xfe, +0x61, 0x37, 0xc0, 0xfb, 0xf7, 0xef, 0xd3, 0x6d, +0x00, 0x7e, 0x85, 0x08, 0xfd, 0xe1, 0xe2, 0x9f, +0xf3, 0xdb, 0x78, 0x55, 0x90, 0x8e, 0x5f, 0xcb, +0x53, 0x04, 0xf9, 0xde, 0xdf, 0xe1, 0xf2, 0x72, +0x93, 0xe7, 0x7e, 0xc3, 0x6e, 0x86, 0x91, 0xc7, +0x9e, 0x78, 0x75, 0xf3, 0xcf, 0x15, 0x5f, 0x43, +0xa2, 0x84, 0x00, 0x10, 0x25, 0xaa, 0xee, 0x0b, +0x81, 0x96, 0xc3, 0x9b, 0x47, 0x14, 0xb9, 0xf7, +0xc8, 0x31, 0xe9, 0x21, 0x30, 0xa2, 0xf9, 0x2c, +0x08, 0x81, 0xa9, 0x2a, 0x21, 0x50, 0xff, 0x38, +0x81, 0x09, 0xad, 0xe6, 0xd2, 0x92, 0xd1, 0xeb, +0x29, 0xc7, 0x7f, 0x2b, 0xe5, 0x05, 0x6e, 0xa7, +0x6d, 0x41, 0x3b, 0x69, 0x47, 0x48, 0x3e, 0xe5, +0x87, 0xed, 0xa6, 0xdd, 0x5a, 0x31, 0x50, 0x00, +0x31, 0x50, 0x04, 0x31, 0x70, 0x60, 0xee, 0x21, +0xf2, 0x7b, 0x71, 0xad, 0x59, 0xbb, 0x61, 0xbe, +0x18, 0x80, 0x9d, 0x30, 0x83, 0x82, 0xd2, 0xe7, +0x14, 0x36, 0xc3, 0x34, 0xb9, 0xe5, 0xea, 0x0a, +0x83, 0x82, 0xea, 0xa7, 0xff, 0xc5, 0x53, 0x35, +0xfe, 0xfc, 0xdb, 0xb0, 0xaf, 0x37, 0x1c, 0xe7, +0xb3, 0xdf, 0xff, 0x1e, 0x58, 0xfa, 0xca, 0xc1, +0x3f, 0xfc, 0x94, 0xcf, 0x4f, 0xfb, 0xfc, 0xd4, +0xcf, 0x4f, 0xff, 0x72, 0xf0, 0x0f, 0x4f, 0x05, +0xb6, 0x6f, 0xdd, 0xaa, 0xb7, 0xf7, 0xf7, 0x3f, +0x15, 0x6b, 0x74, 0xee, 0xc7, 0xcd, 0x7f, 0xf0, +0xdd, 0x60, 0x72, 0x3a, 0x18, 0xa3, 0x6e, 0xfe, +0x77, 0x50, 0x7f, 0x16, 0x5f, 0x3b, 0xa2, 0x84, +0x00, 0x10, 0x25, 0xaa, 0xde, 0x08, 0x81, 0x89, +0xdd, 0x46, 0xb5, 0x9c, 0x7b, 0xce, 0xab, 0xd7, +0x4e, 0xa3, 0x8b, 0x01, 0x8f, 0x9e, 0x79, 0x34, +0xb8, 0x49, 0x70, 0x29, 0x42, 0xc0, 0xce, 0x4a, +0xb1, 0xc4, 0xe5, 0xe7, 0x04, 0x06, 0x56, 0x92, +0x13, 0x18, 0xd9, 0x64, 0x26, 0x05, 0xbf, 0xbe, +0x8a, 0x92, 0x5c, 0x60, 0x7b, 0xeb, 0x99, 0x41, +0xe9, 0x5e, 0x59, 0x94, 0xe9, 0x93, 0x4d, 0xd9, +0x7e, 0xb9, 0x94, 0x0b, 0x31, 0xb0, 0x15, 0x62, +0x60, 0x7b, 0x30, 0x8b, 0x81, 0x5d, 0x10, 0x03, +0x7b, 0x68, 0xf7, 0xcc, 0x7d, 0x10, 0x03, 0x85, +0xb4, 0x33, 0x74, 0x2f, 0x4d, 0x6b, 0xbf, 0xb4, +0xcc, 0x33, 0xc2, 0xc9, 0x2d, 0x63, 0x11, 0x30, +0xb4, 0xf7, 0xbf, 0x9a, 0xcf, 0x63, 0x09, 0x07, +0x0f, 0x41, 0x1c, 0x44, 0x95, 0x0b, 0x14, 0x74, +0x6c, 0xbd, 0x91, 0x6d, 0x89, 0x95, 0xb8, 0xdf, +0xd4, 0xf5, 0xdb, 0x35, 0x02, 0x00, 0x4f, 0xed, +0xc5, 0xaa, 0x71, 0x3e, 0x37, 0x7c, 0x6e, 0xfc, +0x9c, 0xfc, 0x77, 0x5d, 0x1d, 0xfc, 0x03, 0x81, +0xc0, 0x42, 0x81, 0xf7, 0xff, 0xcc, 0x01, 0xfc, +0x17, 0x3c, 0xc0, 0xa1, 0x03, 0x07, 0xf4, 0x9a, +0xff, 0xe2, 0xa2, 0xf5, 0x46, 0xd1, 0xbe, 0x43, +0xb5, 0xcd, 0x7f, 0xf2, 0xa9, 0x25, 0xea, 0xe6, +0xff, 0x23, 0xaa, 0xa7, 0xf8, 0x7a, 0x11, 0x25, +0x04, 0x80, 0x28, 0x51, 0xf5, 0xd3, 0x43, 0xe0, +0xb5, 0xb1, 0xad, 0x17, 0xdf, 0xf6, 0x33, 0xe1, +0x21, 0xe0, 0xdc, 0x2d, 0x9d, 0x06, 0x34, 0xf2, +0x81, 0x10, 0x98, 0x62, 0x81, 0x10, 0xb0, 0x56, +0x2c, 0x71, 0xd5, 0x70, 0x02, 0xce, 0x3d, 0x17, +0x50, 0xb4, 0x6d, 0x3c, 0x25, 0xce, 0x48, 0xa2, +0x8d, 0xce, 0x9b, 0x28, 0xd9, 0x65, 0x33, 0x6d, +0x76, 0xdb, 0x42, 0x5b, 0x3c, 0x70, 0x07, 0x0f, +0x31, 0x90, 0xe1, 0xcd, 0x62, 0x20, 0x07, 0x62, +0x20, 0x8f, 0x72, 0x03, 0xb6, 0x41, 0x0c, 0xec, +0x90, 0xc4, 0xc0, 0xce, 0xd0, 0x5d, 0xb4, 0x0b, +0x62, 0x60, 0xb3, 0x6b, 0x1e, 0x40, 0xc1, 0x05, +0x66, 0xfc, 0x04, 0x74, 0x9c, 0xc0, 0xb4, 0x36, +0xf1, 0xe0, 0x02, 0xf6, 0x7f, 0xa7, 0x09, 0x6d, +0x3a, 0xf2, 0xd8, 0xa5, 0x73, 0x86, 0x34, 0x05, +0x28, 0x1d, 0x14, 0xd4, 0x59, 0x0b, 0xfb, 0xf4, +0xd0, 0x91, 0xff, 0xcb, 0x9c, 0x0a, 0xa5, 0xc6, +0x9d, 0x89, 0x9d, 0x7d, 0x21, 0x2c, 0x7d, 0xe5, +0x71, 0xfe, 0xa7, 0x1c, 0xfc, 0x83, 0x91, 0xff, +0x36, 0x9c, 0xf2, 0x5d, 0x84, 0xa5, 0x2f, 0xaf, +0x02, 0x78, 0x25, 0xc0, 0xa4, 0x3f, 0x13, 0xff, +0x4c, 0xfe, 0xf3, 0x05, 0x00, 0x5f, 0x02, 0xbc, +0x03, 0x5f, 0x00, 0x1e, 0xfb, 0x67, 0x62, 0x4d, +0xc0, 0xcd, 0x3f, 0x7e, 0xdb, 0x26, 0x1a, 0x7f, +0x6b, 0x91, 0x74, 0xeb, 0xaf, 0x3e, 0xf7, 0x63, +0xe2, 0x5f, 0xda, 0xfb, 0xeb, 0x9a, 0x3f, 0x97, +0xab, 0xf8, 0x1a, 0x11, 0x25, 0x04, 0x80, 0x28, +0x51, 0xf5, 0xbc, 0x5e, 0x7c, 0xce, 0x7e, 0x1c, +0x3c, 0x04, 0xfe, 0x1e, 0xd8, 0x6f, 0xbf, 0xfe, +0xe9, 0x20, 0x9e, 0x64, 0x1d, 0x3b, 0x27, 0x23, +0x7e, 0xd8, 0x9d, 0xfa, 0x3f, 0x3d, 0xc5, 0x60, +0x2a, 0x60, 0x57, 0x49, 0xbb, 0xe1, 0xaa, 0xe7, +0x04, 0x26, 0xb5, 0x8b, 0xa0, 0xb9, 0xc3, 0x57, +0x52, 0xec, 0x94, 0xb5, 0xb4, 0x66, 0x5a, 0x1c, +0xad, 0xb3, 0x8b, 0xa7, 0x78, 0x87, 0xf5, 0xb4, +0x7e, 0xfa, 0x06, 0xda, 0x00, 0x31, 0x90, 0xc4, +0x62, 0xc0, 0x35, 0x05, 0x62, 0x20, 0x15, 0x62, +0x20, 0x5d, 0x11, 0x03, 0x59, 0xbe, 0x39, 0x94, +0x03, 0x31, 0x90, 0x07, 0x31, 0xb0, 0x2d, 0x88, +0xc5, 0x40, 0x3e, 0x2d, 0x1b, 0x9b, 0x6c, 0xb9, +0x9f, 0x00, 0xca, 0xb1, 0x7d, 0xd2, 0x43, 0x5c, +0x5c, 0x68, 0x2e, 0x06, 0xfa, 0x1d, 0x62, 0xab, +0x61, 0x49, 0x04, 0x94, 0x06, 0x0a, 0xda, 0xb7, +0xde, 0xa0, 0x17, 0xf7, 0x9b, 0x95, 0xa2, 0x3d, +0xd7, 0x03, 0xdd, 0x7f, 0x15, 0x96, 0xbe, 0xf2, +0x38, 0x9f, 0x61, 0x3f, 0x86, 0xfe, 0xce, 0xc0, +0x10, 0xe8, 0x5f, 0xb0, 0xf4, 0x55, 0x07, 0xff, +0x30, 0x24, 0xc8, 0xb7, 0xff, 0xec, 0x01, 0xc0, +0x57, 0x02, 0x69, 0x08, 0xf8, 0x61, 0x01, 0xc0, +0xf7, 0xfe, 0x29, 0x99, 0xa9, 0x64, 0x7f, 0x65, +0x99, 0x51, 0xb4, 0x2f, 0x37, 0xff, 0xa1, 0x37, +0x42, 0xc9, 0x63, 0x77, 0x9c, 0xba, 0xf9, 0x67, +0x88, 0xaf, 0x0b, 0x51, 0x42, 0x00, 0x88, 0x12, +0xf5, 0xa4, 0xac, 0x05, 0x9e, 0x9a, 0xf0, 0xab, +0x57, 0x9e, 0x77, 0x72, 0xc3, 0x89, 0xe0, 0xd7, +0xc1, 0x06, 0x1e, 0x02, 0x7c, 0x4a, 0x88, 0x93, +0x42, 0x7a, 0xe5, 0xb9, 0x19, 0x26, 0x84, 0x40, +0x2d, 0xe1, 0x04, 0x54, 0xeb, 0x81, 0x91, 0xcd, +0x82, 0xc8, 0xef, 0x95, 0x79, 0xb4, 0x74, 0xdc, +0x0a, 0x5a, 0x3e, 0x61, 0x25, 0xad, 0x9c, 0x14, +0x45, 0x51, 0x36, 0x31, 0x14, 0x33, 0x79, 0xb5, +0x4e, 0x0c, 0xd8, 0x27, 0x40, 0x0c, 0x24, 0x42, +0x0c, 0x6c, 0xa4, 0x0d, 0x4e, 0x1a, 0x31, 0xb0, +0x09, 0x62, 0x20, 0x05, 0x62, 0x20, 0x95, 0xc5, +0x80, 0x57, 0x26, 0x65, 0x60, 0x45, 0x90, 0xe5, +0x9b, 0xab, 0xe1, 0x05, 0x20, 0x06, 0xfc, 0x5f, +0x8a, 0xb5, 0xc8, 0x4f, 0x40, 0x37, 0x11, 0x58, +0x42, 0xce, 0x9d, 0x52, 0x7f, 0x06, 0xd4, 0xf7, +0x33, 0x7f, 0x1e, 0xe1, 0x25, 0x80, 0xf0, 0xa1, +0x44, 0x93, 0xa0, 0xa0, 0x6f, 0x4f, 0x9d, 0xe7, +0x7f, 0x94, 0x77, 0x81, 0xd4, 0xfc, 0xb7, 0xa0, +0x79, 0x4b, 0xe3, 0x7c, 0xb6, 0xf4, 0xc5, 0x38, +0x5f, 0x0a, 0xfe, 0x81, 0x20, 0xe0, 0xb3, 0xbf, +0xbf, 0x7d, 0xf4, 0x91, 0xe4, 0xea, 0xc7, 0xee, +0x7e, 0xec, 0xf2, 0xc7, 0xe7, 0x81, 0xec, 0xfa, +0xc7, 0xee, 0x7f, 0xec, 0x02, 0x98, 0x07, 0x0e, +0x40, 0x5a, 0x1f, 0x60, 0x4d, 0xc0, 0x4f, 0xff, +0x7e, 0xa7, 0x63, 0x8c, 0xa2, 0x7d, 0x99, 0xf8, +0x7f, 0xeb, 0x4e, 0x10, 0x39, 0xed, 0x8f, 0x51, +0x37, 0xff, 0x1b, 0xa8, 0x3f, 0x8a, 0xaf, 0x09, +0x51, 0x42, 0x00, 0x88, 0x12, 0xf5, 0x84, 0x55, +0xef, 0xa7, 0x26, 0xfc, 0xee, 0x8d, 0x86, 0x1e, +0x91, 0x68, 0xf8, 0x3f, 0x9a, 0xf2, 0x10, 0xb0, +0x69, 0x17, 0x23, 0x9d, 0x0e, 0x6a, 0x84, 0xc0, +0x94, 0x5a, 0xc5, 0x09, 0x0c, 0x6e, 0xe8, 0x4f, +0xd3, 0x7b, 0x84, 0xd1, 0xec, 0x21, 0xf3, 0x68, +0xde, 0x88, 0x05, 0xb4, 0x60, 0xd4, 0x22, 0x5a, +0x34, 0x7a, 0x09, 0x2d, 0x1e, 0xbb, 0x8c, 0x96, +0x8e, 0x67, 0x31, 0xb0, 0x0a, 0x62, 0x20, 0x1a, +0x62, 0x20, 0x16, 0x62, 0x60, 0x0d, 0xad, 0x9e, +0xba, 0x96, 0xd6, 0x42, 0x0c, 0xc4, 0x41, 0x0c, +0x24, 0x38, 0x26, 0x52, 0xa2, 0x24, 0x06, 0x92, +0xc1, 0x09, 0x6c, 0x86, 0x18, 0xd8, 0x42, 0x29, +0xee, 0x10, 0x03, 0x9e, 0xe9, 0xe0, 0x05, 0x32, +0x25, 0x5e, 0x20, 0xdd, 0x2b, 0x9b, 0xec, 0x3a, +0x2c, 0x2e, 0x77, 0xee, 0xc0, 0x84, 0xa6, 0xcb, +0xc0, 0x04, 0xe4, 0x00, 0x14, 0x2c, 0x91, 0x92, +0x1c, 0x7d, 0x7b, 0xed, 0x91, 0xe2, 0x88, 0x65, +0x50, 0xd0, 0xbe, 0x4d, 0xa2, 0x2e, 0xee, 0xf7, +0xf5, 0xa3, 0xd8, 0xf9, 0xef, 0x92, 0x9a, 0xf7, +0x41, 0x3c, 0xd1, 0xff, 0xfd, 0x93, 0x4f, 0xe8, +0x1e, 0x9a, 0x3a, 0x1b, 0xfc, 0xb0, 0xd1, 0x0f, +0x1b, 0xfe, 0xdc, 0x85, 0xf1, 0x0f, 0xfb, 0xf9, +0x7f, 0x0c, 0x11, 0xc0, 0x86, 0x40, 0x6c, 0x0c, +0xc4, 0x06, 0x41, 0xec, 0xfb, 0xcf, 0xfe, 0xff, +0x85, 0x38, 0x19, 0x54, 0x37, 0xff, 0x85, 0x45, +0x09, 0x26, 0x6f, 0xfd, 0xdf, 0xba, 0x1b, 0x44, +0x53, 0x4e, 0x2c, 0x51, 0x37, 0xff, 0x1f, 0x50, +0x5d, 0xc5, 0xd7, 0x81, 0x28, 0x21, 0x00, 0x44, +0x89, 0x7a, 0xb2, 0x85, 0xc0, 0x9f, 0xe1, 0x21, +0xb0, 0xd6, 0xb1, 0x4b, 0xd2, 0x2f, 0xc6, 0x1e, +0x02, 0xfb, 0x69, 0x7c, 0x9b, 0xa5, 0x52, 0xf3, +0x97, 0x84, 0x80, 0x32, 0x15, 0xa8, 0x39, 0x4e, +0x60, 0x5c, 0x1b, 0x7f, 0xf2, 0x7f, 0x2d, 0x8c, +0xc2, 0x06, 0x46, 0x50, 0xf8, 0x5b, 0xb3, 0x68, +0xd6, 0xe0, 0x48, 0x3a, 0xb5, 0xe3, 0xb4, 0x54, +0xf3, 0x46, 0x2c, 0x84, 0x18, 0x58, 0x4c, 0x8b, +0xc6, 0x2c, 0xa5, 0x25, 0x10, 0x03, 0xcb, 0x20, +0x06, 0x56, 0x4c, 0x5c, 0x45, 0xab, 0x58, 0x0c, +0xd8, 0x42, 0x0c, 0x4c, 0x61, 0x31, 0xb0, 0x8e, +0xd6, 0x62, 0x45, 0x10, 0x67, 0xbf, 0x5e, 0x23, +0x06, 0x66, 0x6c, 0xa4, 0x8d, 0x10, 0x03, 0x32, +0x2f, 0x90, 0xe2, 0x9e, 0x26, 0xc1, 0x83, 0x09, +0x0e, 0x29, 0xe0, 0x01, 0xe6, 0x54, 0x20, 0x77, +0x60, 0xa1, 0x74, 0x31, 0x80, 0x2b, 0x81, 0x6f, +0xe5, 0xcf, 0x23, 0xae, 0x07, 0xc8, 0xb6, 0x45, +0x8c, 0x74, 0x42, 0x28, 0xbf, 0x6d, 0x4d, 0xb0, +0xe6, 0xe9, 0x9f, 0xed, 0x7a, 0xa5, 0x71, 0x3e, +0xfe, 0xe1, 0x1f, 0x95, 0xe0, 0x1f, 0x58, 0xfe, +0xb2, 0xf5, 0x2f, 0x27, 0xfa, 0xf1, 0x1a, 0x40, +0x09, 0xfe, 0x41, 0xe2, 0x1f, 0x27, 0xff, 0x9d, +0xc1, 0x8a, 0x40, 0x1a, 0xfb, 0x63, 0x52, 0xc0, +0xcd, 0x3f, 0x0e, 0x7b, 0xff, 0x71, 0xb7, 0x0c, +0xcf, 0xfd, 0xb8, 0xf9, 0x07, 0xd3, 0x98, 0x77, +0x23, 0xd5, 0xcd, 0x1f, 0xb5, 0xde, 0x51, 0xbc, +0xf6, 0x45, 0x09, 0x01, 0x20, 0x4a, 0x94, 0x28, +0x59, 0x08, 0x34, 0x1c, 0xdc, 0x34, 0x38, 0xdb, +0x94, 0x87, 0x80, 0x5f, 0x9f, 0x7d, 0x84, 0x44, +0x42, 0x9d, 0x08, 0xb0, 0x3a, 0x27, 0x60, 0xc9, +0x7a, 0x40, 0x23, 0x04, 0x5c, 0x7a, 0xfb, 0x93, +0xdf, 0xab, 0x81, 0x14, 0xf0, 0x7a, 0x30, 0x05, +0xbd, 0x11, 0x4a, 0x21, 0x03, 0xc2, 0x29, 0xce, +0x3b, 0x81, 0x1e, 0x3f, 0x7a, 0x4c, 0x29, 0x11, +0xa9, 0x34, 0x67, 0xd8, 0x3c, 0xda, 0x97, 0x50, +0x40, 0xd1, 0x0e, 0xb1, 0xb4, 0x50, 0x16, 0x03, +0xe3, 0x96, 0x43, 0x0c, 0xac, 0x84, 0x18, 0x88, +0xa2, 0x55, 0x58, 0x11, 0x44, 0x43, 0x0c, 0xc4, +0x42, 0x0c, 0xac, 0x91, 0xc5, 0x80, 0x03, 0x8b, +0x81, 0x0d, 0x2a, 0x78, 0x30, 0x45, 0x12, 0x03, +0x8b, 0x46, 0xc7, 0x1b, 0x99, 0x0b, 0x95, 0x27, +0x77, 0x80, 0xcf, 0x04, 0xfd, 0x7b, 0x17, 0x7c, +0xa3, 0xb1, 0x16, 0xd6, 0x89, 0xab, 0x59, 0x03, +0x8f, 0xd0, 0xce, 0xed, 0x9a, 0x88, 0xde, 0xb7, +0x31, 0xfa, 0x97, 0xc6, 0xf9, 0x98, 0x00, 0x9c, +0x60, 0x4b, 0x5f, 0xc0, 0x80, 0x0c, 0xf5, 0x71, +0xe8, 0x0f, 0x87, 0xff, 0xbc, 0x0b, 0x00, 0x70, +0x2b, 0x44, 0x02, 0x87, 0x02, 0x7d, 0x8a, 0x91, +0xff, 0xfd, 0x9f, 0x7f, 0x96, 0x52, 0x01, 0x53, +0x71, 0x05, 0xc0, 0x41, 0x3f, 0xf2, 0xde, 0xdf, +0xee, 0xca, 0x52, 0xa3, 0x73, 0x3f, 0x6e, 0xfe, +0xc3, 0xb0, 0xf7, 0xf7, 0xdc, 0x1d, 0xaf, 0x6e, +0xfe, 0x9b, 0xc5, 0xeb, 0x5d, 0x94, 0x10, 0x00, +0xa2, 0x44, 0x89, 0x32, 0x25, 0x04, 0x5a, 0x0f, +0x6f, 0x3e, 0xf3, 0xa0, 0x7b, 0x8f, 0x5c, 0x23, +0x0f, 0x01, 0xef, 0x5e, 0xf9, 0x34, 0xac, 0x59, +0x38, 0xf5, 0x7b, 0x7a, 0x32, 0x44, 0xc0, 0xe4, +0x2a, 0xe4, 0x04, 0x5c, 0x4b, 0x15, 0x02, 0xa3, +0x5a, 0x7a, 0x92, 0xe7, 0x0b, 0x3e, 0xe4, 0xfd, +0x92, 0x1f, 0xf9, 0xbe, 0x12, 0x40, 0xfe, 0xaf, +0x06, 0x51, 0xe0, 0xeb, 0x21, 0x74, 0x66, 0xef, +0xdb, 0xf4, 0xaf, 0xbf, 0x7d, 0x41, 0x17, 0x0f, +0x5f, 0x92, 0x9e, 0xa6, 0x2f, 0x14, 0xbd, 0x43, +0x91, 0x10, 0x03, 0x73, 0x87, 0x2f, 0xa0, 0xf9, +0x23, 0x17, 0xd1, 0xc2, 0xd1, 0x8b, 0x69, 0x31, +0xc4, 0xc0, 0x52, 0x88, 0x01, 0xe6, 0x05, 0x14, +0x31, 0xa0, 0xe6, 0x05, 0x4c, 0xc0, 0x83, 0x7e, +0x2f, 0xaf, 0x2c, 0xdb, 0x6e, 0xb8, 0x0c, 0x4e, +0x00, 0x51, 0xc3, 0x8f, 0x43, 0xfa, 0x17, 0xff, +0xa4, 0xc4, 0xfd, 0x7a, 0xef, 0xa6, 0xcd, 0x1c, +0xd1, 0x8b, 0xfd, 0x3d, 0x8f, 0xf3, 0x79, 0xf7, +0x7f, 0x0e, 0x42, 0x40, 0x0e, 0xfe, 0xe1, 0xb8, +0x5f, 0x8e, 0xfd, 0xbd, 0x8e, 0x46, 0xcf, 0x27, +0x80, 0x72, 0xf0, 0xcf, 0x63, 0x40, 0x7f, 0x1f, +0x7d, 0xf0, 0x01, 0x65, 0x83, 0xf6, 0x67, 0xf1, +0xb0, 0x1d, 0xfe, 0x00, 0xfc, 0xf4, 0xef, 0x7b, +0x3a, 0xda, 0x28, 0xda, 0x97, 0xcf, 0xfd, 0xde, +0xba, 0x13, 0x48, 0xce, 0xfb, 0x63, 0xd5, 0xcd, +0xff, 0x2a, 0xea, 0x0f, 0xe2, 0x75, 0x2e, 0x4a, +0x08, 0x00, 0x51, 0xa2, 0x44, 0x99, 0x13, 0x02, +0x3d, 0xe0, 0x21, 0xf0, 0x8e, 0xb7, 0x09, 0x0f, +0x01, 0x88, 0x03, 0x7a, 0xab, 0x49, 0x80, 0x81, +0x10, 0xa8, 0x4a, 0x4e, 0xc0, 0x4d, 0x8f, 0x13, +0x98, 0xd0, 0xce, 0x83, 0xdc, 0xfa, 0x7a, 0x92, +0x47, 0x7f, 0x6f, 0xf2, 0x7a, 0xd1, 0x57, 0x12, +0x03, 0x11, 0x23, 0x67, 0x63, 0x34, 0xfe, 0x9d, +0x04, 0xcc, 0x7d, 0x74, 0xed, 0x23, 0x9a, 0x3b, +0x7a, 0x01, 0x85, 0x0f, 0x9a, 0x45, 0x11, 0x83, +0x67, 0x83, 0x15, 0x98, 0x23, 0x4d, 0x06, 0x98, +0x17, 0xd0, 0x88, 0x01, 0x2d, 0x2f, 0x30, 0x4e, +0xe6, 0x05, 0x4a, 0x87, 0x07, 0xe3, 0x31, 0x19, +0xb0, 0xeb, 0x38, 0xbf, 0xdc, 0xb9, 0x03, 0x86, +0xeb, 0x81, 0x19, 0x1d, 0x52, 0x94, 0xcf, 0x5f, +0x4c, 0x88, 0x86, 0xfc, 0xbf, 0x82, 0x31, 0x3f, +0x8f, 0xf3, 0xaf, 0x80, 0xfe, 0xdf, 0xc9, 0x96, +0xbe, 0xd8, 0xf3, 0xff, 0x55, 0x0e, 0xfe, 0xb9, +0x7d, 0x9b, 0x0e, 0x60, 0xc7, 0xbf, 0x17, 0x4d, +0xfe, 0x06, 0xb8, 0x80, 0x9f, 0xb4, 0xc1, 0x3f, +0x7b, 0x70, 0x2a, 0xa8, 0x6e, 0xfe, 0x0b, 0xf6, +0xc7, 0x1b, 0x45, 0xfb, 0x32, 0xf1, 0x3f, 0xe8, +0x6e, 0x20, 0x4d, 0x39, 0xae, 0xde, 0xfb, 0xaf, +0xff, 0x0e, 0xd5, 0x49, 0xbc, 0xb6, 0x45, 0x09, +0x01, 0x20, 0x4a, 0x94, 0x28, 0x8b, 0xaa, 0xef, +0xd3, 0xb6, 0x6f, 0x8e, 0x6d, 0xbd, 0xe8, 0x7d, +0x5e, 0x03, 0x18, 0x0a, 0x01, 0xa7, 0x6e, 0x69, +0xf4, 0x66, 0x23, 0x4f, 0x49, 0x08, 0xf4, 0x93, +0x85, 0x80, 0x99, 0xf5, 0x80, 0x35, 0x39, 0x01, +0xbb, 0xce, 0x1e, 0x58, 0x07, 0xb8, 0x93, 0x4b, +0x1f, 0x77, 0xf2, 0x1b, 0x10, 0x48, 0x25, 0x05, +0xc7, 0xe8, 0x63, 0xdc, 0xce, 0xff, 0xe3, 0xf3, +0x7f, 0xd0, 0xdc, 0xf1, 0xf3, 0x29, 0xe0, 0xb5, +0x60, 0x0a, 0x7b, 0x2b, 0x82, 0x32, 0x97, 0x64, +0x53, 0xfe, 0xda, 0xdd, 0xb4, 0x70, 0xe2, 0x12, +0x88, 0x81, 0x48, 0x9a, 0x3d, 0x74, 0x2e, 0xc4, +0xc0, 0x7c, 0x2d, 0x2f, 0xa0, 0x81, 0x07, 0x97, +0x18, 0xc2, 0x83, 0xb6, 0x2a, 0x78, 0xd0, 0x2e, +0x0e, 0xe2, 0x60, 0x1d, 0x8d, 0x6d, 0x36, 0xbb, +0x9c, 0xb1, 0xc4, 0xfa, 0x42, 0xc0, 0xb9, 0x53, +0x9a, 0x2e, 0xf2, 0x37, 0x42, 0x63, 0xfb, 0xfb, +0x2f, 0xec, 0xf3, 0x6f, 0x5d, 0xbf, 0x4e, 0x05, +0x68, 0xea, 0x45, 0xb0, 0xf4, 0xe5, 0x93, 0xbe, +0x5f, 0x10, 0xfc, 0xf3, 0x09, 0x82, 0x7f, 0x8e, +0x1d, 0x3a, 0x44, 0xdb, 0xf1, 0xa4, 0x7f, 0x09, +0x36, 0xc0, 0x1c, 0xfc, 0xf3, 0x1f, 0x18, 0xfe, +0x1c, 0xc3, 0x1a, 0x80, 0x7f, 0x1d, 0xdb, 0xfc, +0x4a, 0x7b, 0xff, 0xed, 0xbc, 0xf7, 0x9f, 0x6f, +0x74, 0xeb, 0xcf, 0xcd, 0x7f, 0xcc, 0x3b, 0xf2, +0xde, 0x7f, 0xbd, 0x5c, 0x53, 0xc5, 0xeb, 0x59, +0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0x2a, 0x77, +0xbd, 0xf0, 0xac, 0xdd, 0xc4, 0x09, 0x6d, 0x57, +0xfc, 0xc3, 0x94, 0x87, 0x80, 0x43, 0xe7, 0x8d, +0xf4, 0x5a, 0x03, 0x97, 0x32, 0x84, 0xc0, 0x34, +0xab, 0x72, 0x02, 0x03, 0x1b, 0x40, 0x00, 0x74, +0xf3, 0x26, 0xcf, 0x3e, 0x3e, 0xb4, 0x2b, 0x77, +0x37, 0x9d, 0xc6, 0x08, 0x3d, 0x2f, 0x71, 0x2b, +0x95, 0x14, 0x1e, 0xa3, 0x3d, 0x69, 0x7b, 0xa5, +0xc9, 0xc0, 0x96, 0x45, 0x69, 0xf4, 0x0d, 0x9a, +0xe7, 0xd5, 0x53, 0xd7, 0xe8, 0x8b, 0x4f, 0xff, +0x4d, 0xeb, 0x7c, 0x12, 0x24, 0x78, 0x70, 0xa6, +0x16, 0x1e, 0x8c, 0x64, 0x31, 0x30, 0x7c, 0xbe, +0x01, 0x3c, 0xb8, 0x5c, 0x0f, 0x1e, 0x8c, 0xd6, +0xc2, 0x83, 0x73, 0x86, 0xae, 0xc2, 0x14, 0x40, +0x3f, 0x77, 0xc0, 0x92, 0x58, 0x62, 0x99, 0x13, +0x70, 0xed, 0x92, 0xa9, 0x7c, 0xce, 0xd6, 0xce, +0xcf, 0x93, 0x1a, 0x39, 0x3f, 0xe5, 0x17, 0x17, +0x15, 0x51, 0x7e, 0x6e, 0xae, 0x64, 0xe9, 0xab, +0x0e, 0xfe, 0xc9, 0xc4, 0xfb, 0xf9, 0x47, 0xfe, +0x77, 0xf6, 0x06, 0xe0, 0x3c, 0x80, 0x2d, 0x58, +0x11, 0x68, 0xf6, 0xfe, 0xd9, 0xd2, 0xde, 0x7f, +0xda, 0x95, 0xc5, 0x46, 0xd1, 0xbe, 0x4c, 0xfc, +0x0f, 0xbd, 0x1e, 0x42, 0x9e, 0xbb, 0xe2, 0xd5, +0xcd, 0x3f, 0x51, 0xbc, 0x86, 0x45, 0x09, 0x01, +0x20, 0x4a, 0x94, 0xa8, 0x4a, 0xac, 0x05, 0xc6, +0xc3, 0x43, 0x60, 0x86, 0x27, 0x3c, 0x04, 0xbe, +0xe5, 0x53, 0x41, 0x43, 0x0f, 0x81, 0xa9, 0x1d, +0xd6, 0x21, 0x7e, 0xd8, 0x11, 0x22, 0xc0, 0xd6, +0x02, 0x4e, 0xc0, 0xae, 0xd2, 0x9c, 0xc0, 0xf0, +0x26, 0x9e, 0xe4, 0xd5, 0xcd, 0x9f, 0x62, 0xc3, +0xf0, 0xb4, 0x8e, 0x72, 0xef, 0xe5, 0x45, 0x33, +0xc7, 0xcd, 0xa6, 0x33, 0xa7, 0xcf, 0xd0, 0x02, +0xfb, 0x45, 0xb4, 0x6b, 0xcb, 0x6e, 0x58, 0xe8, +0xde, 0xa0, 0x4d, 0xf3, 0x36, 0x53, 0x42, 0x70, +0x22, 0x76, 0xed, 0xff, 0xa1, 0xb0, 0x21, 0x11, +0x54, 0x98, 0x5c, 0x44, 0x97, 0x8f, 0x5e, 0xa1, +0xf4, 0xf9, 0x99, 0x10, 0x03, 0xb3, 0x69, 0xc5, +0xb4, 0x55, 0xf4, 0x97, 0xab, 0x1f, 0xd1, 0x82, +0xd1, 0x8b, 0x28, 0x75, 0x16, 0xae, 0x00, 0x66, +0xa6, 0x99, 0x84, 0x07, 0xbd, 0x5f, 0x58, 0x54, +0xe1, 0x58, 0x62, 0xf7, 0x6e, 0xb9, 0xca, 0xe7, +0x2a, 0x61, 0x59, 0x8e, 0xf4, 0x04, 0x7f, 0x12, +0xb1, 0xbd, 0xb9, 0x30, 0xf1, 0xb9, 0x70, 0xe6, +0x8c, 0xf4, 0x84, 0xff, 0x2d, 0xdc, 0xfe, 0x2e, +0xc9, 0xc1, 0x3f, 0x98, 0x00, 0xf0, 0x24, 0x80, +0x27, 0x02, 0x77, 0xe0, 0x0e, 0xc8, 0x4e, 0x81, +0xea, 0xd1, 0xbf, 0xf7, 0x99, 0x28, 0x93, 0xe7, +0x7e, 0x83, 0xee, 0x04, 0x90, 0x73, 0x51, 0xac, +0xba, 0xf9, 0x5f, 0x44, 0xfd, 0x9f, 0x78, 0xfd, +0x8a, 0x12, 0x02, 0x40, 0x94, 0x28, 0x51, 0x95, +0xae, 0x5e, 0x4f, 0x8d, 0xff, 0xbf, 0xd7, 0x1b, +0xba, 0xcd, 0x87, 0x87, 0xc0, 0x4f, 0xc6, 0x1e, +0x02, 0x87, 0xe0, 0xcc, 0xb7, 0x8a, 0x30, 0x31, +0x30, 0x21, 0x04, 0xac, 0xcf, 0x09, 0x4c, 0x6a, +0xe1, 0x43, 0x7e, 0x5d, 0x82, 0xc8, 0xb7, 0x6b, +0x00, 0x79, 0x77, 0xf3, 0x23, 0xcf, 0xee, 0xbe, +0xb4, 0x7e, 0x61, 0x22, 0xc6, 0xe7, 0x3b, 0x68, +0xb1, 0xd3, 0x52, 0x3a, 0x75, 0xfc, 0x14, 0x6d, +0x59, 0x99, 0x4a, 0x67, 0x4b, 0xce, 0xd2, 0x47, +0xb8, 0xa7, 0xdf, 0x38, 0x3b, 0x19, 0x06, 0x3a, +0x7f, 0xa7, 0xf7, 0xaf, 0xbe, 0x4f, 0x5f, 0x7f, +0xf1, 0x35, 0xed, 0x4d, 0xdc, 0x47, 0x17, 0x8b, +0x2f, 0x4b, 0xe0, 0x60, 0x6a, 0x24, 0xe2, 0x73, +0x7d, 0x13, 0xe9, 0x3f, 0x9f, 0x7f, 0x25, 0x4d, +0x05, 0x14, 0x5e, 0x40, 0x05, 0x0f, 0x4e, 0xeb, +0x34, 0xbb, 0x94, 0x00, 0x22, 0xf3, 0xb1, 0xc4, +0x5e, 0x3d, 0xb6, 0x2b, 0x9f, 0xa3, 0xc4, 0xe8, +0x4c, 0xca, 0x42, 0x93, 0xe7, 0xe6, 0xcf, 0x22, +0xe0, 0x73, 0xec, 0xf6, 0x79, 0xc7, 0xcf, 0xc1, +0x3f, 0xbc, 0xf3, 0xe7, 0xdd, 0x3f, 0x4f, 0x07, +0x1e, 0x81, 0x05, 0x60, 0x26, 0x60, 0xa7, 0x36, +0xe4, 0x67, 0x07, 0xfc, 0x01, 0xb8, 0xf9, 0xcf, +0x3f, 0x10, 0x67, 0x14, 0xed, 0xcb, 0xcd, 0x7f, +0xe0, 0xdd, 0x00, 0x9a, 0x7a, 0x6c, 0xa9, 0xba, +0xf9, 0x7f, 0x8b, 0x6a, 0x27, 0x5e, 0xb3, 0xa2, +0x84, 0x00, 0x10, 0x25, 0x4a, 0x94, 0x95, 0x85, +0xc0, 0xb8, 0xa7, 0x06, 0x34, 0xf6, 0x89, 0x77, +0xec, 0x6c, 0xec, 0x21, 0x10, 0x80, 0x55, 0xc1, +0xb8, 0xd6, 0x8b, 0xa5, 0xa7, 0x7f, 0x59, 0x08, +0x58, 0xc2, 0x09, 0xbc, 0x58, 0x01, 0x4e, 0xc0, +0xa9, 0x75, 0x20, 0x05, 0x76, 0x0a, 0xa5, 0x80, +0xce, 0xc1, 0x92, 0x18, 0xf0, 0xeb, 0x19, 0x44, +0x4b, 0x5d, 0x97, 0x91, 0x4f, 0x5f, 0x7f, 0x4a, +0x5f, 0x9f, 0x41, 0x29, 0x31, 0x5b, 0x28, 0x72, +0xf2, 0x3c, 0x5a, 0x1d, 0xba, 0x96, 0x66, 0x8d, +0x9f, 0x43, 0x1b, 0xe7, 0x26, 0xc1, 0x73, 0xff, +0x36, 0xc5, 0x05, 0x25, 0xd0, 0xf2, 0x19, 0x2b, +0x69, 0xdf, 0xa6, 0x02, 0x09, 0x1e, 0xfc, 0xe6, +0x8b, 0x6f, 0x68, 0xd3, 0xcc, 0x14, 0x5a, 0xed, +0xba, 0x56, 0xc3, 0x0b, 0x98, 0x80, 0x07, 0xe7, +0x8d, 0x44, 0x60, 0x50, 0x8b, 0x30, 0x25, 0x80, +0x68, 0xa8, 0x29, 0x21, 0x60, 0x82, 0x13, 0xf0, +0xe9, 0xa9, 0xf3, 0xff, 0x4f, 0x5c, 0x93, 0x4a, +0xe9, 0x68, 0xfe, 0x3c, 0xfe, 0x67, 0xaa, 0x9f, +0xe9, 0x7e, 0xa6, 0xfc, 0x0f, 0xc9, 0xc1, 0x3f, +0xa0, 0xff, 0xf9, 0x0a, 0x80, 0xaf, 0x01, 0x0e, +0x15, 0x69, 0x92, 0x02, 0x73, 0x72, 0x34, 0x53, +0x83, 0x75, 0xdb, 0x93, 0x69, 0xec, 0xad, 0x79, +0x7a, 0xd1, 0xbe, 0x7c, 0xee, 0xc7, 0xcd, 0x7f, +0xec, 0x3b, 0xb3, 0xd5, 0xcd, 0x9f, 0x6b, 0x92, +0x78, 0x9d, 0x8a, 0x12, 0x02, 0x40, 0x94, 0x28, +0x51, 0x55, 0x29, 0x04, 0x1a, 0x0f, 0x6e, 0x1a, +0x98, 0x67, 0xda, 0x43, 0x60, 0x2f, 0x8d, 0x6c, +0x39, 0x47, 0x2b, 0x02, 0x6c, 0xab, 0x84, 0x13, +0x78, 0x03, 0x22, 0xc0, 0xaf, 0x6d, 0x38, 0x85, +0x74, 0x40, 0x12, 0x60, 0xc7, 0x30, 0x49, 0x0c, +0xf8, 0x4b, 0x62, 0x20, 0x10, 0xb1, 0xbb, 0xfe, +0x14, 0x15, 0x18, 0x83, 0xa8, 0xdc, 0xed, 0x54, +0x80, 0x73, 0xba, 0x59, 0x13, 0x22, 0x69, 0xa5, +0x4f, 0x14, 0xc5, 0x04, 0xad, 0xa6, 0x77, 0xcf, +0xbf, 0x4b, 0x4b, 0x66, 0x2c, 0xa7, 0xc5, 0x0e, +0xcb, 0xe8, 0x9f, 0xf0, 0xdf, 0xdf, 0x19, 0x9f, +0x4f, 0x27, 0xf2, 0x4f, 0xd2, 0x67, 0x1f, 0xfc, +0x9d, 0x82, 0xdf, 0x0c, 0xa3, 0xd0, 0x81, 0x33, +0x25, 0xb3, 0x21, 0x05, 0x1e, 0xd4, 0xf2, 0x02, +0xa1, 0x03, 0xe6, 0xa3, 0xf1, 0x9b, 0x8b, 0x25, +0x36, 0xe6, 0x04, 0xd4, 0x26, 0x40, 0x49, 0xeb, +0x53, 0x28, 0x07, 0x13, 0x00, 0x06, 0x00, 0xf9, +0xae, 0x9f, 0xef, 0xfb, 0xf9, 0xce, 0x9f, 0xef, +0xfd, 0xf9, 0xee, 0x9f, 0xef, 0xff, 0xbf, 0x82, +0x0f, 0xc0, 0xdb, 0x30, 0xfe, 0x49, 0x81, 0xd9, +0xcf, 0x16, 0xdc, 0xfc, 0xf3, 0xbd, 0xff, 0x66, +0xec, 0xfd, 0xa7, 0x5c, 0x5d, 0x64, 0x14, 0xed, +0x3b, 0x08, 0xcd, 0x7f, 0xe8, 0x7b, 0x21, 0xe4, +0xa5, 0xbf, 0xf7, 0x5f, 0x2b, 0x5e, 0x9b, 0xa2, +0x84, 0x00, 0x10, 0x25, 0x4a, 0x54, 0x75, 0x09, +0x81, 0xb6, 0xc3, 0x9a, 0x87, 0x1f, 0xe6, 0x33, +0x41, 0x43, 0x21, 0xe0, 0xd5, 0x6b, 0x07, 0x0d, +0x6d, 0x16, 0x4a, 0x7d, 0x9f, 0xb6, 0xd1, 0x13, +0x03, 0x96, 0x71, 0x02, 0xf6, 0x65, 0x72, 0x02, +0x43, 0x01, 0x05, 0x86, 0xb7, 0x89, 0xa4, 0xf0, +0x76, 0xb3, 0x29, 0xac, 0xc3, 0x2c, 0x0a, 0xe9, +0x38, 0x93, 0x82, 0x3a, 0x41, 0x0c, 0x74, 0x0e, +0x21, 0xff, 0x2e, 0x10, 0x03, 0xdd, 0x82, 0x28, +0xa0, 0x6f, 0x10, 0x79, 0xf7, 0xf4, 0xa3, 0xb4, +0xf5, 0xe9, 0x94, 0x95, 0x94, 0x4d, 0x7b, 0x77, +0xec, 0xa3, 0xfc, 0xcc, 0x5d, 0x34, 0xc7, 0x76, +0x1e, 0x5d, 0x47, 0x33, 0x5e, 0xe6, 0xb4, 0x82, +0x76, 0x6e, 0xc8, 0xa7, 0x8f, 0x3f, 0xfc, 0x58, +0x32, 0x1a, 0xfa, 0xe0, 0xda, 0x87, 0x74, 0xff, +0xde, 0x7d, 0x3a, 0x0b, 0x8f, 0x81, 0xd9, 0xc3, +0x21, 0x00, 0x46, 0xce, 0xa3, 0x59, 0x43, 0x34, +0xf0, 0xa0, 0x5b, 0xdf, 0x59, 0x66, 0x63, 0x89, +0x0d, 0x39, 0x01, 0x24, 0x07, 0x6a, 0x3e, 0x17, +0x88, 0xff, 0x95, 0xec, 0x7f, 0x11, 0xfb, 0xcb, +0x27, 0x80, 0xec, 0xec, 0xc7, 0x0e, 0x7f, 0x59, +0x80, 0xfb, 0xd8, 0xf1, 0x8f, 0x9d, 0xff, 0xd8, +0x01, 0x90, 0x9d, 0x00, 0x39, 0xe4, 0x47, 0x3d, +0xfa, 0xf7, 0x3a, 0xb3, 0xca, 0x20, 0xda, 0x57, +0x43, 0xfc, 0x0f, 0xbc, 0xe3, 0x4f, 0x2e, 0x85, +0x7a, 0x7b, 0xff, 0xf3, 0x3e, 0x3b, 0x12, 0x7e, +0x27, 0x5e, 0x93, 0xa2, 0x84, 0x00, 0x10, 0x25, +0x4a, 0x54, 0x75, 0x0b, 0x81, 0x5e, 0xf0, 0x10, +0xb8, 0x64, 0xca, 0x43, 0xc0, 0xad, 0x47, 0x36, +0x0d, 0x6a, 0xec, 0x27, 0x09, 0x81, 0xbe, 0x26, +0x85, 0x40, 0xc5, 0x39, 0x81, 0x49, 0x8d, 0xfc, +0x28, 0xb2, 0xcd, 0x7c, 0x9a, 0xd5, 0x76, 0x1e, +0x45, 0xb4, 0x9b, 0x43, 0xe1, 0xed, 0x67, 0x53, +0x68, 0x87, 0x08, 0x45, 0x0c, 0x04, 0x48, 0x62, +0x20, 0x88, 0xfc, 0xb1, 0x22, 0x58, 0xe2, 0xb2, +0x8c, 0x12, 0x16, 0xad, 0xa7, 0xc5, 0x33, 0x96, +0x52, 0xc4, 0xd8, 0xd9, 0x74, 0x0c, 0x06, 0x3c, +0x91, 0xb6, 0x73, 0x29, 0x2d, 0x3a, 0x1d, 0x4f, +0xe1, 0x17, 0x69, 0xb5, 0xff, 0x5a, 0xfa, 0xec, +0xb3, 0xcf, 0x68, 0xef, 0xe6, 0x02, 0x3a, 0xb9, +0xe7, 0x14, 0xfd, 0xf0, 0xdd, 0x0f, 0x74, 0xf5, +0xf8, 0x35, 0xc9, 0x79, 0x30, 0x6c, 0x50, 0x84, +0x04, 0x0f, 0x4e, 0xee, 0x10, 0x66, 0x32, 0x96, +0xd8, 0x94, 0x10, 0x80, 0x11, 0x90, 0xf4, 0xff, +0x1f, 0x81, 0x0c, 0x00, 0x6e, 0xea, 0xef, 0xe1, +0xb6, 0x9f, 0x4d, 0x80, 0xd8, 0xdb, 0x9f, 0x3d, +0xfe, 0x8f, 0x22, 0xf8, 0xe7, 0x63, 0x39, 0xf8, +0x07, 0x19, 0x00, 0x5b, 0xb5, 0x21, 0x3f, 0x3b, +0x11, 0xfe, 0xc3, 0xcd, 0x7f, 0xde, 0x81, 0x75, +0x26, 0xcf, 0xfd, 0x06, 0xdc, 0xf5, 0xa7, 0xa9, +0x25, 0x7a, 0x7b, 0xff, 0xaf, 0xd0, 0xfc, 0x5b, +0x8b, 0xd7, 0xa1, 0x28, 0x21, 0x00, 0x44, 0x89, +0x12, 0x55, 0x63, 0xd5, 0xe7, 0xe9, 0x49, 0x83, +0xe0, 0x21, 0xf0, 0xa1, 0x49, 0x0f, 0x81, 0xae, +0x5b, 0xe8, 0x8d, 0x86, 0xee, 0x46, 0x42, 0xa0, +0xb2, 0x9c, 0x80, 0x5b, 0x93, 0x70, 0x9a, 0xd7, +0x6a, 0x31, 0xcd, 0x69, 0xbd, 0x50, 0x2b, 0x06, +0xe6, 0xd2, 0xcc, 0x76, 0x91, 0x8a, 0x18, 0x08, +0xee, 0x18, 0xae, 0xe5, 0x05, 0x42, 0x24, 0x5e, +0xc0, 0x07, 0xf0, 0xa0, 0x4f, 0x77, 0x7f, 0x49, +0x0c, 0x04, 0x0d, 0x0c, 0xa5, 0xb8, 0xd9, 0xf1, +0x74, 0x60, 0xdf, 0x01, 0x9a, 0x3b, 0x65, 0x3e, +0x5d, 0xc1, 0x2e, 0x3e, 0x68, 0x30, 0xac, 0x74, +0x5f, 0xf4, 0xa1, 0xeb, 0x17, 0xaf, 0xd3, 0xf5, +0x0b, 0xd7, 0x15, 0xe7, 0x41, 0x5e, 0x11, 0x04, +0xbf, 0x31, 0x93, 0x46, 0x35, 0x0f, 0x52, 0x62, +0x89, 0x15, 0x21, 0xd0, 0x40, 0x5f, 0x08, 0x0c, +0x85, 0x00, 0x90, 0xff, 0xbf, 0x67, 0x0f, 0xd6, +0xdc, 0xf2, 0xff, 0x03, 0xe7, 0x7d, 0x9c, 0xea, +0xb7, 0x0f, 0x0d, 0x9e, 0x53, 0xfe, 0xb8, 0xe9, +0x73, 0xf3, 0xe7, 0xf4, 0xbf, 0xc2, 0x3d, 0x1a, +0x9b, 0xe0, 0x5c, 0x9c, 0x07, 0x72, 0xf3, 0x5f, +0x8b, 0xbd, 0xff, 0xe8, 0x5b, 0xfa, 0xe7, 0x7e, +0xd2, 0x93, 0x3f, 0x9a, 0xff, 0xd8, 0xf3, 0x7a, +0x7b, 0xff, 0xc7, 0x68, 0xfe, 0x63, 0xc5, 0x6b, +0x4f, 0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0xaa, +0x25, 0x1e, 0x02, 0xd3, 0x26, 0x4f, 0x68, 0xbb, +0xfc, 0x9f, 0xa6, 0x3c, 0x04, 0xec, 0x3b, 0x6f, +0xa0, 0x57, 0x9f, 0x77, 0xd2, 0x0a, 0x01, 0x9b, +0x4a, 0x73, 0x02, 0xaf, 0x42, 0x04, 0x84, 0x35, +0x5d, 0x40, 0x0b, 0x5b, 0x2c, 0xa3, 0xf9, 0x2d, +0x01, 0xed, 0xb5, 0x5a, 0x24, 0x89, 0x81, 0xd9, +0x2a, 0x31, 0x10, 0xd6, 0x7e, 0x16, 0xc4, 0xc0, +0x4c, 0x95, 0x18, 0x08, 0x56, 0xc4, 0x40, 0xc0, +0x8b, 0xc1, 0xb4, 0x3a, 0x7c, 0x0d, 0x79, 0xf4, +0xf2, 0xa6, 0x82, 0xdd, 0x05, 0x92, 0x20, 0x60, +0xb3, 0xa1, 0xa3, 0x45, 0x25, 0x74, 0xe2, 0xc0, +0x49, 0xc9, 0x5f, 0xc0, 0xe7, 0x25, 0xe4, 0x11, +0xbc, 0x12, 0x88, 0x50, 0xa2, 0x20, 0xfc, 0x3b, +0x1a, 0x7e, 0xa3, 0x00, 0xc4, 0x13, 0x07, 0xaa, +0x84, 0x40, 0x90, 0x9e, 0x10, 0x18, 0xd1, 0x78, +0x96, 0xf2, 0xff, 0x3c, 0x77, 0xe4, 0x21, 0xa9, +0xb9, 0xdf, 0x41, 0xc3, 0x3f, 0x8c, 0x14, 0xc0, +0x5d, 0x79, 0x79, 0x74, 0xed, 0xd2, 0x25, 0x25, +0xf8, 0xe7, 0x38, 0xf2, 0x00, 0x38, 0xe4, 0x27, +0x15, 0xe3, 0x7f, 0x0e, 0xfa, 0xd9, 0x9c, 0x95, +0x4a, 0x93, 0xaf, 0x2e, 0xd4, 0x8f, 0xf6, 0x95, +0x88, 0x7f, 0x7f, 0xec, 0xfd, 0x83, 0xc9, 0x2b, +0x5f, 0xbd, 0xf7, 0x4f, 0x88, 0x16, 0xaf, 0x37, +0x51, 0x42, 0x00, 0x88, 0x12, 0x25, 0xaa, 0x56, +0x55, 0xcf, 0xa7, 0xc6, 0xfe, 0xfa, 0xe5, 0xe7, +0xa7, 0xfb, 0xc2, 0x43, 0xe0, 0xbf, 0xa6, 0x3c, +0x04, 0x26, 0x77, 0x58, 0x43, 0x2f, 0x3d, 0x67, +0x6f, 0x20, 0x04, 0x2a, 0xc0, 0x09, 0x60, 0x3d, +0xf0, 0x16, 0xce, 0x03, 0x17, 0x36, 0x59, 0x41, +0x4b, 0x9a, 0xad, 0xa4, 0x45, 0xcd, 0x97, 0x43, +0x0c, 0x2c, 0x95, 0xc4, 0xc0, 0x5c, 0x49, 0x0c, +0x2c, 0x80, 0x18, 0xc0, 0x8a, 0x40, 0x25, 0x06, +0xf4, 0xe0, 0xc1, 0x2e, 0x3a, 0x78, 0x30, 0x6c, +0xc8, 0x2c, 0xca, 0xde, 0x92, 0x0d, 0xfb, 0xdd, +0x3d, 0x74, 0x04, 0x8d, 0x79, 0x57, 0xf6, 0x6e, +0x49, 0x0c, 0xb8, 0xf5, 0xd3, 0xd9, 0x10, 0xfb, +0xbc, 0xec, 0x4f, 0x13, 0xda, 0xb2, 0x00, 0x90, +0xcb, 0x58, 0x08, 0x8c, 0x6a, 0x32, 0x47, 0xf9, +0x7f, 0x9d, 0x3f, 0x7e, 0xbf, 0xd4, 0xdc, 0xa5, +0xe0, 0x1f, 0x3c, 0xdd, 0xbf, 0x73, 0xf6, 0x2c, +0x7d, 0xf5, 0xe5, 0x97, 0xf4, 0x0d, 0x07, 0xff, +0x20, 0x04, 0x88, 0xcd, 0x7e, 0xd4, 0x7b, 0x7f, +0x8f, 0xb3, 0x2b, 0x8c, 0x6e, 0xfd, 0x99, 0xf8, +0x1f, 0x78, 0xdb, 0x8f, 0x5c, 0x0a, 0xe4, 0xbd, +0x7f, 0x02, 0xd7, 0x69, 0xd4, 0x6f, 0xc4, 0x6b, +0x4d, 0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0xaa, +0xad, 0x42, 0xe0, 0xf7, 0xaf, 0x37, 0x74, 0x5d, +0x04, 0x0f, 0x81, 0x7b, 0xa1, 0x2f, 0x1c, 0xd5, +0x13, 0x02, 0x41, 0xf0, 0x10, 0x98, 0xd8, 0x76, +0x05, 0xf5, 0x7f, 0x76, 0xaa, 0x22, 0x04, 0x2a, +0xca, 0x09, 0x4c, 0x78, 0xce, 0x8f, 0x56, 0x36, +0x8e, 0xa5, 0xe5, 0x4d, 0xa2, 0x69, 0x69, 0xd3, +0x55, 0x8a, 0x18, 0x58, 0x20, 0x89, 0x81, 0xc5, +0x10, 0x03, 0x58, 0x11, 0x28, 0x62, 0x40, 0xc3, +0x0b, 0x18, 0xc3, 0x83, 0x00, 0x07, 0xfb, 0x04, +0x23, 0x67, 0x20, 0x92, 0x96, 0xba, 0x2c, 0xa7, +0xa4, 0x55, 0xc9, 0xe4, 0xd6, 0xd3, 0x8b, 0x5c, +0x7b, 0x79, 0x90, 0x73, 0x6f, 0x37, 0x72, 0xed, +0xeb, 0x41, 0x53, 0x3b, 0x7b, 0xd3, 0x5b, 0x0d, +0xfd, 0x68, 0xd0, 0xf3, 0xa8, 0x06, 0xfe, 0x52, +0xc9, 0x42, 0xe0, 0x2d, 0xad, 0x10, 0x18, 0xd3, +0x6c, 0x81, 0xf2, 0xff, 0xb8, 0x70, 0x72, 0xa1, +0x14, 0x01, 0x9c, 0x03, 0xb2, 0xff, 0x54, 0x49, +0x09, 0x7d, 0x0e, 0xce, 0xe0, 0xc7, 0x1f, 0x7f, +0x94, 0x4e, 0xff, 0xb2, 0xf1, 0x76, 0x6e, 0xfe, +0xf9, 0xb0, 0x06, 0xe6, 0xe6, 0x3f, 0xf7, 0xe0, +0x3a, 0xa3, 0x68, 0x5f, 0x6e, 0xfe, 0x6f, 0xde, +0xf5, 0xa5, 0x69, 0x47, 0x97, 0xaa, 0x9b, 0xff, +0xbf, 0x51, 0x2d, 0xc4, 0xeb, 0x4b, 0x94, 0x10, +0x00, 0xa2, 0x44, 0x89, 0xaa, 0x0b, 0x42, 0xe0, +0xe9, 0x01, 0x8d, 0xbd, 0x13, 0x1d, 0xbb, 0x24, +0x3d, 0x30, 0xe4, 0x03, 0x02, 0xfa, 0x16, 0xd1, +0x18, 0x8c, 0xed, 0xfb, 0x3e, 0x63, 0x0b, 0x01, +0x30, 0xa9, 0xc2, 0x9c, 0x80, 0xfb, 0x73, 0xb3, +0x29, 0xba, 0xe1, 0x5a, 0x5a, 0xd5, 0x68, 0x35, +0xad, 0x68, 0x1c, 0xa3, 0x88, 0x81, 0xc5, 0xcd, +0x56, 0xd0, 0x22, 0xac, 0x08, 0x16, 0xb4, 0x5c, +0x2a, 0xf1, 0x02, 0x73, 0x15, 0x5e, 0x40, 0x1f, +0x1e, 0xe4, 0x15, 0x81, 0x0c, 0x0f, 0xea, 0xcc, +0x86, 0xfc, 0x25, 0xb3, 0x21, 0xc7, 0x4e, 0xde, +0x34, 0xac, 0x89, 0x37, 0x0d, 0x78, 0xde, 0x87, +0x06, 0x4a, 0xe5, 0x8b, 0x32, 0x25, 0x04, 0x02, +0x68, 0x1c, 0x44, 0x87, 0xfc, 0xff, 0xb6, 0xc4, +0x61, 0x2f, 0xa5, 0xa1, 0xf9, 0x1f, 0xc1, 0x15, +0xc0, 0x5f, 0x3f, 0xfc, 0x90, 0x1e, 0x3d, 0x7a, +0x44, 0x1f, 0xdc, 0xb9, 0x43, 0xbb, 0x61, 0x00, +0xc4, 0xcd, 0x7f, 0x2b, 0x4c, 0x7f, 0xb8, 0xf9, +0xaf, 0xd9, 0x91, 0x44, 0xa3, 0x6e, 0x47, 0xea, +0x45, 0xfb, 0xf2, 0xb9, 0xdf, 0x80, 0xbb, 0x7e, +0x34, 0xf6, 0xdc, 0x6c, 0x75, 0xf3, 0x7f, 0x84, +0x1a, 0x21, 0x5e, 0x53, 0xa2, 0x84, 0x00, 0x10, +0x25, 0x4a, 0x54, 0x5d, 0x13, 0x02, 0x4d, 0xe0, +0x21, 0xb0, 0x1d, 0x1e, 0x02, 0x46, 0xf1, 0xc3, +0xbe, 0x7d, 0xf6, 0xd0, 0x88, 0x16, 0xb3, 0xa8, +0x8f, 0x24, 0x02, 0x26, 0x95, 0x9b, 0x13, 0xe0, +0x49, 0xc0, 0xec, 0xe7, 0x56, 0xd0, 0xea, 0xe7, +0xe3, 0x29, 0xa6, 0xc1, 0x3a, 0x8a, 0x92, 0xc5, +0x40, 0x93, 0x18, 0x5a, 0xd6, 0x34, 0x8a, 0x96, +0x36, 0x83, 0x18, 0x68, 0xbe, 0x42, 0xe2, 0x05, +0x16, 0x48, 0xbc, 0x80, 0x31, 0x3c, 0x18, 0x66, +0x00, 0x0f, 0x7a, 0x75, 0x08, 0xa2, 0xb1, 0x4d, +0x7d, 0xe8, 0xcd, 0xe7, 0x3d, 0x51, 0x5e, 0x10, +0x00, 0xde, 0xda, 0x52, 0x0b, 0x01, 0x5f, 0x3d, +0x21, 0x30, 0xa9, 0xd5, 0x4a, 0xe5, 0xff, 0x69, +0x99, 0xcb, 0x6e, 0xca, 0xc1, 0x6e, 0xff, 0x36, +0xec, 0x7d, 0x7f, 0xb9, 0x7f, 0x9f, 0x3e, 0x41, +0x80, 0x51, 0x31, 0xc4, 0x00, 0xdf, 0xfb, 0x73, +0xe3, 0x97, 0xf7, 0xfe, 0x36, 0x57, 0x17, 0xe8, +0x45, 0xfb, 0x6a, 0x88, 0x7f, 0x3f, 0x1a, 0x72, +0x2d, 0x48, 0xbb, 0xf7, 0x4f, 0x90, 0x6b, 0x99, +0x78, 0x1d, 0x89, 0x12, 0x02, 0x40, 0x94, 0x28, +0x51, 0x75, 0x58, 0x08, 0x8c, 0x69, 0x3f, 0xb4, +0x79, 0xf8, 0x51, 0x53, 0x1e, 0x02, 0x9e, 0xbd, +0xb6, 0xd3, 0x90, 0xa6, 0xc1, 0x10, 0x02, 0x13, +0xb5, 0x62, 0xc0, 0x72, 0x4e, 0x60, 0xc0, 0x33, +0x4e, 0xb4, 0xea, 0x59, 0xc4, 0xfb, 0x3e, 0x97, +0x48, 0x6b, 0x9e, 0x5f, 0x4f, 0xb1, 0x0d, 0x20, +0x06, 0x1a, 0x42, 0x0c, 0x34, 0x5a, 0x83, 0x15, +0x81, 0x4e, 0x0c, 0xf0, 0x8a, 0x60, 0xb1, 0xc4, +0x0b, 0xa8, 0xe1, 0xc1, 0x05, 0x0a, 0x3c, 0x18, +0xda, 0x76, 0x36, 0x4d, 0x69, 0x16, 0x20, 0x25, +0x11, 0xca, 0xb1, 0xc4, 0x6f, 0x3c, 0xe7, 0xa9, +0x08, 0x01, 0x9d, 0x18, 0xf0, 0xd1, 0x8a, 0x01, +0x9d, 0x10, 0xb0, 0x6d, 0x13, 0xa3, 0xfc, 0xbf, +0xac, 0xf0, 0xca, 0x97, 0x3c, 0x00, 0x38, 0xe0, +0xe7, 0x0b, 0x98, 0x0f, 0x71, 0xe0, 0x4f, 0x0a, +0x9e, 0xfc, 0xd5, 0x7b, 0x7f, 0xf7, 0xb7, 0x97, +0x9b, 0x38, 0xf7, 0xf3, 0xa3, 0x01, 0xd8, 0xfb, +0xbb, 0x4a, 0x7b, 0x7f, 0xa5, 0xf9, 0x1f, 0xf7, +0xde, 0x91, 0xf0, 0x6b, 0xf1, 0xfa, 0x11, 0x25, +0x04, 0x80, 0x28, 0x51, 0xa2, 0xea, 0x83, 0x10, +0xe8, 0x0b, 0xe7, 0xc0, 0x2b, 0xde, 0xbd, 0xf3, +0x8d, 0x84, 0x80, 0x6b, 0xf7, 0x2c, 0x1a, 0xd0, +0xc8, 0x47, 0x25, 0x04, 0x26, 0x59, 0xc4, 0x09, +0x8c, 0x7d, 0xc6, 0x87, 0x12, 0x9e, 0x4e, 0xa6, +0x84, 0x67, 0x92, 0x29, 0xee, 0xd9, 0x8d, 0xb4, +0x56, 0x12, 0x03, 0x09, 0x92, 0x18, 0x88, 0x56, +0xc4, 0x80, 0x86, 0x17, 0x90, 0xc5, 0x80, 0x0c, +0x0f, 0xce, 0x83, 0x18, 0x70, 0x69, 0x1a, 0x8e, +0x66, 0xee, 0x6e, 0x32, 0x96, 0x58, 0x11, 0x02, +0xcf, 0x19, 0x0a, 0x01, 0xdd, 0x54, 0x60, 0x6a, +0xbb, 0x75, 0xca, 0xff, 0x43, 0x54, 0xe0, 0x76, +0x7a, 0x0f, 0x9e, 0xff, 0x1c, 0xf1, 0x7b, 0xe9, +0xc2, 0x05, 0xca, 0xd0, 0x9a, 0xfd, 0xec, 0x42, +0x1c, 0x30, 0x37, 0xff, 0x39, 0x07, 0xd7, 0x98, +0xbc, 0xf5, 0x7f, 0xf3, 0xae, 0x0f, 0xd9, 0x1d, +0x59, 0xaa, 0x6e, 0xfe, 0xff, 0x42, 0xf3, 0x6f, +0x2a, 0x5e, 0x33, 0xa2, 0x84, 0x00, 0x10, 0x25, +0x4a, 0x54, 0xfd, 0xf2, 0x10, 0x78, 0x66, 0xe2, +0x10, 0x78, 0x08, 0xfc, 0xd5, 0xaf, 0xaf, 0xb1, +0x87, 0xc0, 0x8c, 0xae, 0x29, 0x88, 0x1f, 0x76, +0x35, 0x21, 0x04, 0x4a, 0x5f, 0x0f, 0xb8, 0x3d, +0x35, 0x9b, 0x92, 0xfe, 0x9c, 0x4a, 0x1b, 0x9e, +0x4a, 0xa1, 0xf5, 0x4f, 0x6f, 0x82, 0x18, 0x48, +0x82, 0x18, 0xd8, 0x20, 0x89, 0x81, 0xd5, 0x92, +0x18, 0x88, 0xd3, 0xf2, 0x02, 0x3a, 0x31, 0x10, +0xd4, 0x78, 0x3e, 0x0d, 0xc7, 0x13, 0xbe, 0x3a, +0x77, 0x40, 0x4e, 0x22, 0x34, 0x2d, 0x04, 0x3c, +0x4c, 0x0a, 0x01, 0xbb, 0x0e, 0xeb, 0x95, 0xff, +0xf6, 0x98, 0xf0, 0xad, 0xf4, 0x39, 0x3c, 0xfe, +0x6f, 0xc2, 0x08, 0x68, 0xbb, 0xd6, 0xec, 0x67, +0x1b, 0xfc, 0xff, 0xb9, 0xf9, 0xaf, 0xde, 0xb1, +0x91, 0x46, 0xde, 0x9e, 0xad, 0x17, 0xed, 0x3b, +0x50, 0xdb, 0xfc, 0xc7, 0xbd, 0x3d, 0x5b, 0xdd, +0xfc, 0x1f, 0xa2, 0xf9, 0x0f, 0x16, 0xaf, 0x13, +0x51, 0x42, 0x00, 0x88, 0x12, 0x25, 0xaa, 0xde, +0x56, 0xff, 0xe7, 0xa6, 0x4e, 0x9b, 0xd0, 0x76, +0xc5, 0x17, 0x81, 0xfd, 0x0e, 0x18, 0x79, 0x08, +0xd8, 0x75, 0x5a, 0x2f, 0xc5, 0x0f, 0xf7, 0x79, +0xca, 0x32, 0x21, 0x30, 0xf7, 0x4f, 0xd1, 0xb4, +0xf9, 0x8f, 0x19, 0x94, 0xfc, 0xa7, 0x34, 0xda, +0xf8, 0xe7, 0x2d, 0x10, 0x03, 0x9b, 0x25, 0x31, +0x10, 0x0f, 0x31, 0xb0, 0x4e, 0x12, 0x03, 0xeb, +0x25, 0x5e, 0x60, 0x41, 0x83, 0x28, 0x5c, 0x11, +0xf8, 0x5b, 0x18, 0x4b, 0x6c, 0x4e, 0x08, 0x68, +0xc4, 0x80, 0x63, 0xa7, 0x64, 0xe5, 0xbf, 0x7b, +0xcd, 0x9c, 0x5c, 0x69, 0xff, 0x5f, 0x04, 0xb3, +0x1f, 0xde, 0xfb, 0xa7, 0x23, 0xe6, 0x97, 0x7d, +0xfe, 0x37, 0x65, 0x6d, 0xa1, 0x49, 0xd7, 0xe6, +0x19, 0x9c, 0xfb, 0xf9, 0x4b, 0xc4, 0xff, 0x90, +0xab, 0xb0, 0x30, 0xde, 0xa9, 0xdb, 0xfb, 0x7b, +0xef, 0x88, 0x5f, 0x20, 0x5e, 0x1b, 0xa2, 0x84, +0x00, 0x10, 0x25, 0x4a, 0x54, 0xbd, 0xaf, 0x1e, +0x7f, 0x1e, 0xfd, 0x9b, 0x97, 0x1b, 0x38, 0x06, +0xd8, 0xb6, 0x8f, 0xf9, 0xce, 0xd8, 0x43, 0xa0, +0x98, 0x26, 0xb7, 0x5f, 0x8d, 0xf8, 0xe1, 0x69, +0x5a, 0x21, 0xa0, 0xcf, 0x09, 0xa8, 0xd7, 0x03, +0xaf, 0x3e, 0x6d, 0x4f, 0xeb, 0x7e, 0x0f, 0x93, +0x9d, 0xdf, 0x67, 0x53, 0xca, 0x1f, 0x32, 0x69, +0xd3, 0x1f, 0xd3, 0x29, 0x49, 0x2b, 0x06, 0x12, +0x21, 0x06, 0x62, 0x9f, 0x4e, 0xa4, 0x19, 0xcf, +0xcc, 0xa4, 0x97, 0xe1, 0x25, 0x50, 0xde, 0x58, +0x62, 0xdd, 0x54, 0xc0, 0x5d, 0x2b, 0x06, 0x74, +0x9c, 0x80, 0x53, 0x97, 0x54, 0xe5, 0xbf, 0x37, +0x7e, 0x49, 0x2e, 0x1d, 0x3b, 0x7c, 0x98, 0xb6, +0xa0, 0xf9, 0xab, 0xf7, 0xfe, 0x6e, 0x6f, 0x2f, +0x33, 0xba, 0xf5, 0xe7, 0xe6, 0x3f, 0xe0, 0xb6, +0x0f, 0xb9, 0xee, 0x8b, 0xd5, 0x36, 0x7e, 0xa9, +0xf9, 0x17, 0xa3, 0x7e, 0x25, 0x5e, 0x17, 0xa2, +0x84, 0x00, 0x10, 0x25, 0x4a, 0xd4, 0x93, 0x24, +0x04, 0xfe, 0x80, 0xd1, 0xff, 0xd2, 0x69, 0x9d, +0x4c, 0x79, 0x08, 0x1c, 0x84, 0x21, 0xcf, 0x72, +0xea, 0x87, 0xd3, 0x41, 0x7d, 0x21, 0xa0, 0xcf, +0x09, 0x8c, 0xf8, 0xb3, 0x07, 0xa5, 0xfe, 0x36, +0x97, 0x32, 0x7e, 0x97, 0x47, 0x69, 0xff, 0x97, +0x43, 0x5b, 0x20, 0x06, 0x92, 0xff, 0x90, 0x41, +0x81, 0x7f, 0x5e, 0x44, 0x6f, 0x3c, 0x33, 0xc3, +0x84, 0xb1, 0x90, 0x43, 0x05, 0x85, 0x80, 0x6e, +0x2a, 0xe0, 0xda, 0x2d, 0x4b, 0xf9, 0xef, 0x4c, +0x8e, 0xcd, 0xa3, 0x54, 0x6d, 0xf3, 0xdf, 0x0d, +0x0b, 0x60, 0x6e, 0xfe, 0xb3, 0x0f, 0xad, 0xd1, +0x8b, 0xf6, 0xd5, 0x9c, 0xfb, 0xf9, 0xd2, 0x1b, +0x77, 0xb1, 0x3e, 0x28, 0x5e, 0xaa, 0x6e, 0xfe, +0x9f, 0xa3, 0x1a, 0x89, 0xd7, 0x82, 0x28, 0x21, +0x00, 0x44, 0x89, 0x12, 0xf5, 0xa4, 0x0a, 0x81, +0x67, 0xdf, 0x6c, 0xe4, 0x95, 0x04, 0x0f, 0x81, +0x87, 0x86, 0x7c, 0x80, 0x7f, 0xdf, 0x42, 0x1a, +0xdd, 0x6a, 0xbe, 0xd4, 0xfc, 0x4d, 0x0b, 0x01, +0x1b, 0x9a, 0xf1, 0xc7, 0x99, 0x94, 0xfd, 0xeb, +0x1d, 0x94, 0xfd, 0x9b, 0xed, 0xb4, 0xe8, 0xf7, +0x6b, 0x69, 0xc8, 0x53, 0xae, 0x16, 0xe5, 0x0e, +0x94, 0x15, 0x4b, 0x5c, 0x1a, 0x27, 0xe0, 0xd1, +0x63, 0x9b, 0xf2, 0xdf, 0xb7, 0x61, 0x4d, 0xba, +0xd4, 0xfc, 0xb7, 0xe3, 0xee, 0x9f, 0x9b, 0x7f, +0xec, 0xce, 0x8d, 0x30, 0xfb, 0x99, 0xa5, 0x3a, +0xf7, 0xd3, 0xdc, 0xfa, 0x73, 0xf3, 0x1f, 0x77, +0x76, 0xb6, 0xba, 0xf9, 0x3f, 0x40, 0xbd, 0x29, +0xfe, 0xfe, 0x45, 0x09, 0x01, 0x20, 0x4a, 0x94, +0x28, 0x21, 0x04, 0xfe, 0x3c, 0xba, 0xd9, 0x5b, +0x4d, 0xfd, 0xf3, 0x4d, 0x7a, 0x08, 0xf4, 0xde, +0x4d, 0xc3, 0x9b, 0xcf, 0xa4, 0xde, 0x4f, 0x4d, +0x80, 0x10, 0x98, 0x60, 0xc4, 0x09, 0x8c, 0xfa, +0x93, 0x27, 0x8d, 0xf9, 0x93, 0xb7, 0x85, 0x76, +0xc3, 0xe6, 0x84, 0x40, 0xd9, 0x9c, 0x80, 0x4f, +0xef, 0x5d, 0xca, 0x7f, 0xd7, 0xc6, 0x84, 0x2d, +0x94, 0x01, 0xc7, 0xbf, 0xcc, 0x2c, 0xcd, 0xde, +0x7f, 0xc2, 0x7b, 0x73, 0xf5, 0xa2, 0x7d, 0xe5, +0xe6, 0x2f, 0xef, 0xfd, 0xd1, 0xf4, 0xe5, 0x9a, +0x2d, 0xfe, 0xce, 0x45, 0x09, 0x01, 0x20, 0x4a, +0x94, 0x28, 0x51, 0xfa, 0x42, 0xa0, 0xd3, 0xd0, +0xe6, 0x61, 0xc7, 0xdd, 0x7b, 0xe6, 0x19, 0x7b, +0x08, 0xf4, 0xdc, 0x46, 0x6f, 0x35, 0x0d, 0x90, +0x84, 0x40, 0x6f, 0x45, 0x08, 0x94, 0xce, 0x09, +0x94, 0x37, 0x77, 0xc0, 0x92, 0xf5, 0x00, 0x4f, +0x25, 0xe4, 0xff, 0x9e, 0xcd, 0x9b, 0x36, 0x2b, +0x7b, 0x7f, 0x97, 0x73, 0x4b, 0x4c, 0x9e, 0xfb, +0x0d, 0xb8, 0x85, 0xbd, 0xff, 0xde, 0xd5, 0xea, +0xe6, 0xbf, 0x5f, 0xec, 0xfd, 0x45, 0x09, 0x01, +0x20, 0x4a, 0x94, 0x28, 0x51, 0xa5, 0x0b, 0x81, +0xfe, 0x23, 0x5b, 0x46, 0xbe, 0x67, 0xca, 0x43, +0xc0, 0xa5, 0x7b, 0x26, 0xbd, 0xd9, 0xc8, 0xb3, +0x14, 0x21, 0x60, 0xde, 0x6e, 0xb8, 0x6c, 0x21, +0x60, 0x9e, 0x13, 0x08, 0x46, 0xc6, 0x01, 0xff, +0x37, 0xcc, 0x7c, 0xed, 0x28, 0xed, 0x01, 0xfd, +0xcf, 0xcd, 0x7f, 0xd6, 0xe1, 0xd5, 0x26, 0xcf, +0xfd, 0x5e, 0xbf, 0xeb, 0x49, 0x76, 0x87, 0x97, +0xa9, 0x9b, 0xff, 0x27, 0xa8, 0x06, 0xe2, 0xef, +0x57, 0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0x12, +0x55, 0x46, 0xf5, 0x7e, 0x7a, 0xfc, 0x30, 0x64, +0x09, 0x7c, 0x6c, 0xca, 0x43, 0x60, 0x7a, 0x97, +0x4d, 0xf4, 0x6a, 0x03, 0xe7, 0x32, 0x84, 0x80, +0x4d, 0xb9, 0x73, 0x07, 0x4a, 0xe7, 0x04, 0x9c, +0x94, 0x3f, 0x7b, 0xf6, 0xa0, 0x62, 0xa9, 0xf9, +0xc7, 0xec, 0xdc, 0x80, 0x84, 0xbf, 0x08, 0xa3, +0x73, 0xbf, 0xd7, 0xef, 0x7a, 0xd1, 0xb8, 0x33, +0x91, 0xea, 0xe6, 0xff, 0x0b, 0xea, 0x55, 0xf1, +0x77, 0x2a, 0x4a, 0x08, 0x00, 0x51, 0xa2, 0x44, +0x89, 0x2a, 0x47, 0xf5, 0x7b, 0x76, 0xb2, 0x03, +0x2e, 0x03, 0xbe, 0x34, 0xf2, 0x10, 0xc0, 0x05, +0x01, 0x2e, 0x09, 0x10, 0x3f, 0xec, 0x00, 0x11, +0x30, 0xbe, 0x54, 0x4e, 0xa0, 0x7c, 0xb1, 0xc4, +0xa6, 0x85, 0xc0, 0xeb, 0xcf, 0xbb, 0x29, 0x7f, +0xee, 0xdc, 0x11, 0x87, 0x68, 0x53, 0x36, 0xef, +0xfd, 0xe7, 0x18, 0x9d, 0xfb, 0x71, 0xf3, 0x1f, +0x7a, 0x25, 0x90, 0xbc, 0x76, 0xc6, 0xa9, 0x05, +0x40, 0x98, 0xf8, 0x7b, 0x14, 0x25, 0x04, 0x80, +0x28, 0x51, 0xa2, 0x44, 0x55, 0xa0, 0xba, 0xff, +0x79, 0xd4, 0x6f, 0x5e, 0x7a, 0xde, 0x21, 0x04, +0x1e, 0x02, 0xdf, 0x9b, 0xf2, 0x10, 0xc0, 0xdb, +0x11, 0x3f, 0x3c, 0x45, 0x11, 0x02, 0xe5, 0xe3, +0x04, 0xca, 0x5e, 0x0f, 0x0c, 0x68, 0xe8, 0xad, +0xfc, 0x79, 0xf3, 0xc7, 0x1d, 0x24, 0xe7, 0xf3, +0x8b, 0xf5, 0xa2, 0x7d, 0x35, 0xe7, 0x7e, 0x70, +0x0e, 0xbc, 0xe5, 0x8d, 0xbd, 0x7f, 0xac, 0xba, +0xf9, 0xef, 0x11, 0x7f, 0x7f, 0xa2, 0x84, 0x00, +0x10, 0x25, 0x4a, 0x94, 0xa8, 0x4a, 0x0b, 0x81, +0x91, 0x7f, 0x7c, 0xb5, 0xa1, 0xf3, 0x8a, 0x69, +0x1d, 0xe3, 0x7f, 0x36, 0xe5, 0x21, 0x30, 0xbe, +0xcd, 0x52, 0x34, 0x7c, 0x1b, 0x33, 0x42, 0xc0, +0xf2, 0x58, 0x62, 0xb5, 0x10, 0x78, 0xab, 0x71, +0x80, 0xf2, 0xe7, 0x84, 0x4f, 0xdf, 0x23, 0xdd, +0xfa, 0x1b, 0x9e, 0xfb, 0xbd, 0x76, 0xd7, 0x83, +0xec, 0x0f, 0xe9, 0xed, 0xfd, 0xff, 0xea, 0xbd, +0x23, 0xee, 0x59, 0xf1, 0xf7, 0x26, 0x4a, 0x08, +0x00, 0x51, 0xa2, 0x44, 0x89, 0xb2, 0x9e, 0x10, +0x78, 0xee, 0xcd, 0xc6, 0x9e, 0x9b, 0x4d, 0x7b, +0x08, 0x14, 0xd0, 0xa8, 0x56, 0x73, 0xa9, 0xf7, +0xd3, 0x13, 0x2c, 0x10, 0x02, 0x96, 0xc5, 0x12, +0x0f, 0x6d, 0x1a, 0xaa, 0xfc, 0xfe, 0x6e, 0xc1, +0xd9, 0x7a, 0xd1, 0xbe, 0x72, 0xf3, 0x1f, 0x7f, +0x5a, 0x6f, 0xef, 0xff, 0x33, 0x9a, 0xff, 0x0b, +0xe2, 0xef, 0x4a, 0x94, 0x10, 0x00, 0xa2, 0x44, +0x89, 0x12, 0x55, 0x35, 0x42, 0xa0, 0xc5, 0xa0, +0xa6, 0xfe, 0x7b, 0x9c, 0xbb, 0xa5, 0x1b, 0x79, +0x08, 0xf0, 0xdd, 0x3e, 0xce, 0x0a, 0xa9, 0xd7, +0x53, 0xe3, 0xb4, 0x42, 0xa0, 0xe2, 0x9c, 0xc0, +0x88, 0xe6, 0xb3, 0x95, 0xdf, 0xd7, 0x69, 0x6e, +0xaa, 0xaa, 0xf9, 0x6b, 0x88, 0xff, 0xa1, 0x97, +0xd5, 0x7b, 0x7f, 0xfe, 0x31, 0x2e, 0x40, 0xfc, +0xfd, 0x88, 0x12, 0x02, 0x40, 0x94, 0x28, 0x51, +0xa2, 0xaa, 0x5e, 0x08, 0x74, 0x41, 0xb3, 0x3f, +0x65, 0xca, 0x43, 0xc0, 0xa3, 0xe7, 0x56, 0x1a, +0xd4, 0xc4, 0x4f, 0x12, 0x02, 0xbd, 0x54, 0x42, +0xa0, 0x3c, 0x9c, 0x00, 0xbb, 0x12, 0xca, 0xbf, +0x9f, 0xc3, 0xf2, 0x24, 0xbd, 0x73, 0xbf, 0x37, +0x6f, 0x7a, 0x93, 0xdb, 0x9e, 0xd5, 0xea, 0xe6, +0xbf, 0x43, 0xfc, 0x9d, 0x88, 0x12, 0x02, 0x40, +0x94, 0x28, 0x51, 0xa2, 0xaa, 0x57, 0x08, 0xbc, +0x34, 0xa2, 0xe5, 0xec, 0x1b, 0xa6, 0x3c, 0x04, +0x30, 0x25, 0xa0, 0x37, 0x1a, 0xb9, 0x6b, 0x85, +0xc0, 0xb8, 0x72, 0x71, 0x02, 0xcc, 0x16, 0xc8, +0xbf, 0xcf, 0xd4, 0xb5, 0xf1, 0xda, 0xe6, 0xef, +0x45, 0xaf, 0xde, 0x75, 0x27, 0x87, 0x83, 0xcb, +0xd5, 0xcd, 0xff, 0x03, 0xef, 0xed, 0x71, 0x4f, +0x8b, 0xbf, 0x0b, 0x51, 0x42, 0x00, 0x88, 0x12, +0x25, 0x4a, 0x54, 0x8d, 0x78, 0x08, 0x4c, 0x18, +0x35, 0xa6, 0xf5, 0x82, 0x4f, 0x98, 0x07, 0x30, +0x14, 0x02, 0x8e, 0x5d, 0x92, 0xe9, 0x95, 0x06, +0x33, 0xca, 0x21, 0x04, 0x6c, 0xc8, 0xa6, 0x5d, +0x94, 0xf2, 0xeb, 0x6d, 0x92, 0x63, 0x95, 0xe6, +0x3f, 0xe1, 0x54, 0xa4, 0xae, 0xf9, 0x6f, 0x8f, +0xbb, 0x87, 0xea, 0x23, 0x3e, 0xff, 0xa2, 0x84, +0x00, 0x10, 0x25, 0x4a, 0x94, 0xa8, 0x1a, 0xac, +0x6e, 0x7f, 0x1e, 0xf1, 0x2b, 0x78, 0x08, 0x38, +0xc1, 0x43, 0xe0, 0x3f, 0xa6, 0x3c, 0x04, 0xa6, +0x76, 0x8c, 0xa3, 0x17, 0x9e, 0x9b, 0xa6, 0x08, +0x81, 0x5e, 0x66, 0x38, 0x81, 0x29, 0x1d, 0xd6, +0x29, 0xbf, 0x76, 0x7c, 0xd6, 0x32, 0x40, 0x7f, +0xee, 0x34, 0xf4, 0x12, 0xef, 0xfd, 0xd7, 0xc9, +0xcd, 0x9f, 0xcb, 0x4b, 0x7c, 0xde, 0x45, 0x09, +0x01, 0x20, 0x4a, 0x94, 0x28, 0x51, 0xb5, 0x47, +0x08, 0xfc, 0xf6, 0xc5, 0xe7, 0xed, 0xc2, 0xe1, +0x15, 0xf0, 0x43, 0x30, 0x3c, 0x03, 0xd4, 0x42, +0x80, 0x3d, 0x05, 0x26, 0xb5, 0x5b, 0x45, 0x7d, +0x11, 0x3f, 0xdc, 0xeb, 0xa9, 0xb1, 0xa5, 0x72, +0x02, 0xf6, 0x9d, 0x37, 0x28, 0xbf, 0x66, 0xd4, +0xae, 0xf9, 0xf4, 0xc6, 0x4d, 0x4f, 0x72, 0xdb, +0x1d, 0xab, 0x6e, 0xfe, 0x39, 0xe2, 0x73, 0x2d, +0x4a, 0x08, 0x00, 0x51, 0xa2, 0x44, 0x89, 0xaa, +0x9d, 0x42, 0xe0, 0x4f, 0xaf, 0x36, 0x74, 0x8a, +0x86, 0x7b, 0xe0, 0x7d, 0x43, 0x0f, 0x01, 0x9e, +0x10, 0x8c, 0x6b, 0xb3, 0x18, 0xa7, 0x83, 0x13, +0x55, 0x42, 0x40, 0xb7, 0x1e, 0x98, 0xd1, 0x35, +0x45, 0xf9, 0xd8, 0xa1, 0x07, 0x22, 0xc8, 0xf1, +0xc0, 0x72, 0x75, 0xf3, 0xbf, 0x83, 0xfa, 0xb3, +0xf8, 0x1c, 0x8b, 0x12, 0x02, 0x40, 0x94, 0x28, +0x51, 0xa2, 0x6a, 0xb7, 0x10, 0x68, 0xf0, 0x46, +0x63, 0x8f, 0x54, 0x53, 0x1e, 0x02, 0x9c, 0x3b, +0x80, 0x20, 0x22, 0xad, 0x00, 0xd0, 0x09, 0x01, +0xd7, 0xee, 0x59, 0xca, 0xc7, 0x4c, 0xce, 0x5f, +0x2a, 0x37, 0x7e, 0xae, 0x1f, 0xbd, 0xb7, 0xaf, +0xeb, 0x21, 0x3e, 0xaf, 0xa2, 0x84, 0x00, 0x10, +0x25, 0x4a, 0x94, 0xa8, 0x3a, 0x23, 0x04, 0x86, +0xb7, 0x1a, 0xd8, 0xd4, 0xaf, 0xc0, 0xa5, 0xbb, +0xb1, 0x87, 0x00, 0x5f, 0x11, 0x0c, 0x69, 0x1e, +0x42, 0x3d, 0x9f, 0x1a, 0x83, 0x1a, 0x4b, 0x5e, +0xbd, 0x76, 0x3c, 0x52, 0xfc, 0x05, 0xd2, 0x13, +0x55, 0x02, 0x60, 0x9d, 0x8b, 0xf8, 0x5c, 0x8a, +0x12, 0x02, 0x40, 0x94, 0x28, 0x51, 0xa2, 0xea, +0xa6, 0x10, 0xe8, 0x36, 0xa4, 0x79, 0xe8, 0x59, +0x0f, 0x13, 0x1e, 0x02, 0xee, 0x3d, 0x73, 0x69, +0x60, 0x63, 0x1f, 0x9e, 0x0c, 0x3c, 0x50, 0xc4, +0x41, 0x5e, 0xbc, 0xdc, 0xfc, 0xd3, 0xc5, 0xe7, +0x4f, 0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0x12, +0x55, 0xd7, 0x3d, 0x04, 0x9e, 0x1a, 0xf9, 0x1a, +0x3c, 0x04, 0x6e, 0xb3, 0x83, 0xa0, 0xa1, 0x10, +0x50, 0xea, 0xd5, 0x12, 0xb9, 0xf9, 0xdf, 0x40, +0xfd, 0x51, 0x7c, 0xde, 0x44, 0x09, 0x01, 0x20, +0x4a, 0x94, 0x28, 0x51, 0xf5, 0xa4, 0x7a, 0x3d, +0x3d, 0x76, 0x1c, 0x3c, 0x04, 0x3e, 0x33, 0xe5, +0x21, 0x10, 0x3a, 0xa8, 0x98, 0x9b, 0xff, 0x0f, +0xa8, 0xae, 0xe2, 0x73, 0x25, 0x4a, 0x08, 0x00, +0x51, 0xa2, 0x44, 0x89, 0xaa, 0x67, 0xd5, 0xf5, +0x4f, 0xc3, 0xe0, 0x21, 0x60, 0xeb, 0x36, 0xa1, +0xed, 0xb2, 0xaf, 0x02, 0xfb, 0x1d, 0xd4, 0x45, +0x0f, 0x8f, 0x3e, 0xc0, 0x02, 0xc0, 0x51, 0x7c, +0x8e, 0x44, 0x09, 0x01, 0x20, 0x4a, 0x94, 0x28, +0x51, 0xf5, 0x5b, 0x08, 0xfc, 0x0e, 0x1e, 0x02, +0xb3, 0x9c, 0x7a, 0xa7, 0x9c, 0x0d, 0x19, 0xb3, +0xff, 0xa3, 0x80, 0xc8, 0xec, 0x25, 0xe2, 0xf3, +0x22, 0x4a, 0x08, 0x00, 0x51, 0xa2, 0x44, 0x89, +0x12, 0x25, 0x4a, 0x94, 0x10, 0x00, 0xa2, 0x44, +0x89, 0x12, 0x25, 0x4a, 0x94, 0x28, 0x21, 0x00, +0x44, 0x89, 0x12, 0x25, 0x4a, 0x94, 0x28, 0x51, +0x42, 0x00, 0x88, 0x12, 0x25, 0x4a, 0x94, 0x28, +0x51, 0xa2, 0x84, 0x00, 0x10, 0x25, 0x4a, 0x94, +0x28, 0x51, 0xa2, 0x44, 0x09, 0x01, 0x20, 0x4a, +0x94, 0x28, 0x51, 0xa2, 0x44, 0x89, 0x12, 0x02, +0x40, 0x94, 0x28, 0x51, 0xa2, 0x44, 0x89, 0x12, +0x25, 0x04, 0x80, 0x28, 0x51, 0xa2, 0x44, 0x89, +0x12, 0x25, 0xca, 0xda, 0xf5, 0xff, 0x9a, 0xae, +0x02, 0x82, 0x3e, 0x15, 0xc6, 0x03, 0x00, 0x00, +0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, +0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/bigimgs/appicon.png b/source/bitmaps/bigimgs/appicon.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c534d56ae9857a01f5267f4dd8d1a0bbbe703b GIT binary patch literal 85626 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ʴ#c6Ga1BJpZ=Ml`MQBhx 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 literal 0 HcmV?d00001 diff --git a/source/bitmaps/bigimgs/appicon48.cpp b/source/bitmaps/bigimgs/appicon48.cpp new file mode 100644 index 0000000..c3e6e76 --- /dev/null +++ b/source/bitmaps/bigimgs/appicon48.cpp @@ -0,0 +1,500 @@ +#include + +#ifndef BIGIMGS_APPICON48_CPP +#define BIGIMGS_APPICON48_CPP + +static unsigned char bigimgs_appicon48_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, +0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9, +0x87, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x01, 0x4c, 0x00, 0x00, 0x01, +0x4c, 0x01, 0x69, 0x86, 0xbd, 0x39, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x0e, 0xd0, 0x49, +0x44, 0x41, 0x54, 0x68, 0x81, 0xc5, 0x99, 0x79, +0x74, 0x94, 0xe5, 0xbd, 0xc7, 0xbf, 0xcf, 0xbb, +0xce, 0x9a, 0x7d, 0x25, 0x7b, 0x08, 0x49, 0x20, +0x92, 0x80, 0x0a, 0x68, 0x41, 0x34, 0x2a, 0xb5, +0x82, 0xb8, 0xa0, 0xb8, 0x51, 0xf5, 0x68, 0xed, +0x55, 0xeb, 0x55, 0x51, 0xeb, 0x42, 0x5d, 0x30, +0xea, 0xd1, 0x5a, 0x15, 0xdc, 0xea, 0xb5, 0x56, +0x3c, 0x5a, 0x6d, 0x45, 0xa9, 0xb7, 0xd5, 0xaa, +0xb7, 0xa2, 0x57, 0xac, 0x46, 0x01, 0x15, 0x30, +0x60, 0x08, 0xc1, 0xec, 0x21, 0x24, 0x99, 0xc9, +0x64, 0x26, 0x33, 0x99, 0x77, 0xde, 0xf5, 0x79, +0xee, 0x1f, 0xb3, 0x90, 0x60, 0x02, 0x24, 0x05, +0xef, 0x6f, 0xce, 0x73, 0xce, 0x9c, 0xf7, 0x24, +0xef, 0xfb, 0xfd, 0xfc, 0x7e, 0xbf, 0xef, 0xb3, +0xbc, 0x43, 0x18, 0x63, 0x98, 0x4c, 0xdc, 0x58, +0xf7, 0xa9, 0x2b, 0x0b, 0x5e, 0x7d, 0xf5, 0xea, +0xe5, 0xfa, 0xa4, 0x6e, 0x70, 0x94, 0x82, 0x9b, +0xec, 0x3f, 0x26, 0xa5, 0xb1, 0x17, 0x85, 0xca, +0xbc, 0x9d, 0x77, 0x3f, 0xfb, 0xf1, 0xda, 0xda, +0xba, 0x4f, 0x85, 0xa3, 0x29, 0x6a, 0x22, 0x41, +0x26, 0x53, 0x81, 0x5b, 0x57, 0xfd, 0xb3, 0x38, +0x67, 0x4e, 0xea, 0xa6, 0xfc, 0x13, 0x32, 0x8a, +0xb5, 0x88, 0xc9, 0xba, 0x77, 0xf4, 0x37, 0x47, +0xbc, 0xca, 0x7b, 0x76, 0xff, 0xd6, 0xbb, 0x56, +0xaf, 0x5e, 0x4d, 0x8f, 0x81, 0xce, 0x71, 0x63, +0x52, 0x15, 0x70, 0x14, 0xd8, 0xd7, 0x14, 0x9c, +0x98, 0x59, 0x4c, 0x01, 0xf0, 0x36, 0x9e, 0x14, +0x9e, 0x94, 0x53, 0x59, 0x54, 0x5b, 0x78, 0x3b, +0x2d, 0x3b, 0xed, 0xbb, 0x3b, 0x9e, 0xf9, 0xe7, +0x23, 0x04, 0x20, 0x47, 0x59, 0xe7, 0xb8, 0x31, +0xe1, 0x0a, 0xdc, 0x76, 0xff, 0x87, 0x55, 0xb9, +0x27, 0xa6, 0x7d, 0x98, 0x5b, 0x93, 0x96, 0xc7, +0x18, 0x45, 0xb2, 0xd9, 0x0f, 0x2f, 0x9f, 0x09, +0xca, 0x18, 0x2c, 0xc6, 0xa0, 0x85, 0x0c, 0xea, +0xfd, 0xce, 0xbb, 0x47, 0x1b, 0x88, 0x6c, 0x78, +0x7c, 0xe5, 0x39, 0x0f, 0x1c, 0x1b, 0xd9, 0x07, +0x62, 0xc2, 0x00, 0xf7, 0xbd, 0xf0, 0xd9, 0xfb, +0x95, 0x8b, 0xf3, 0x17, 0x53, 0xc6, 0x90, 0x6f, +0xb6, 0xe2, 0x38, 0xdb, 0x3e, 0x78, 0x34, 0x3b, +0xf6, 0x58, 0xf9, 0xf0, 0x90, 0x74, 0x58, 0x60, +0xa0, 0x8c, 0x41, 0x0b, 0xe8, 0xd4, 0xd7, 0xe4, +0x6d, 0xd2, 0xfd, 0xfa, 0x5f, 0xd6, 0xdc, 0xb2, +0xf4, 0x91, 0x63, 0xa4, 0x7f, 0x62, 0x00, 0x77, +0xd5, 0x7d, 0x7a, 0x52, 0xf6, 0x5c, 0xf7, 0xdf, +0xb3, 0x66, 0xa4, 0x64, 0x13, 0xaa, 0x62, 0x3e, +0xb7, 0x0d, 0x4e, 0xc1, 0x04, 0x03, 0x40, 0x29, +0x45, 0xa7, 0xea, 0x46, 0x13, 0x2d, 0xc4, 0x10, +0x71, 0xc1, 0x62, 0x51, 0x10, 0xd5, 0xa7, 0x59, +0xc1, 0x96, 0x81, 0x26, 0xc3, 0xaf, 0xbd, 0xba, +0x76, 0xe5, 0x05, 0x4f, 0xfc, 0xbf, 0x02, 0xdc, +0xfb, 0x52, 0xfd, 0xc7, 0xd3, 0x17, 0x4d, 0x39, +0xc3, 0x02, 0x45, 0xa9, 0xb5, 0x17, 0x15, 0x72, +0x1f, 0x00, 0x60, 0xdd, 0x2b, 0x9f, 0x40, 0x10, +0x38, 0xcc, 0xaa, 0x2e, 0x46, 0xf9, 0x8c, 0x22, +0x6c, 0x55, 0xf3, 0xd1, 0x85, 0x9c, 0x04, 0x84, +0xc5, 0x28, 0xd4, 0x01, 0xcd, 0x52, 0x5a, 0x07, +0x77, 0xd3, 0x21, 0xf3, 0x8f, 0x6b, 0x57, 0x9e, +0xff, 0xec, 0xd1, 0x02, 0x38, 0x62, 0x13, 0xaf, +0x7a, 0xf8, 0xb3, 0x9f, 0x66, 0x15, 0x27, 0xcd, +0xa2, 0x60, 0x90, 0x69, 0x18, 0xc5, 0x42, 0x3f, +0x00, 0xa0, 0xab, 0x7b, 0x00, 0x7d, 0xfd, 0x01, +0x44, 0x54, 0x1d, 0xbd, 0x7d, 0x01, 0x48, 0x1c, +0x03, 0x65, 0x04, 0x94, 0x31, 0x30, 0xc6, 0x40, +0xc1, 0xc0, 0x00, 0x88, 0xe9, 0x22, 0xef, 0x9a, +0x93, 0x35, 0x53, 0xae, 0x4e, 0x5a, 0xbb, 0xf2, +0xe5, 0xb7, 0x1b, 0x6e, 0x7c, 0xfa, 0x8d, 0xeb, +0x7e, 0x54, 0x00, 0x29, 0x57, 0xb8, 0x37, 0x6d, +0x9a, 0x33, 0x9d, 0x31, 0x86, 0x52, 0x74, 0x40, +0xe6, 0xa3, 0x95, 0x7b, 0xfa, 0xb9, 0xf7, 0x11, +0x0c, 0x2a, 0xe0, 0x08, 0x87, 0x45, 0x8b, 0x6a, +0xb0, 0x4f, 0xb5, 0xa3, 0x9b, 0x64, 0x47, 0xdb, +0x0a, 0x51, 0x08, 0xc6, 0x18, 0x28, 0x03, 0x28, +0x2c, 0x70, 0x59, 0x02, 0x2f, 0xcd, 0x4b, 0xa9, +0x96, 0xaa, 0x9c, 0xbf, 0xbf, 0x69, 0xdd, 0x1b, +0xdf, 0xfe, 0x6a, 0xed, 0xeb, 0x57, 0x1f, 0x73, +0x80, 0xbb, 0x1f, 0xfb, 0xec, 0xe2, 0x8c, 0xb2, +0xa4, 0x1a, 0x06, 0xc0, 0x45, 0x07, 0x51, 0x20, +0x0e, 0x02, 0x00, 0xbe, 0xd8, 0xd2, 0x8c, 0xd3, +0x6b, 0x8f, 0x83, 0x20, 0xf0, 0x58, 0x72, 0xf6, +0xf1, 0xa0, 0x94, 0xa1, 0xd1, 0xca, 0x8d, 0x09, +0x66, 0x60, 0x2c, 0x0a, 0x11, 0xad, 0x02, 0x05, +0x85, 0x15, 0x1b, 0x14, 0xc8, 0xe5, 0x79, 0x72, +0x92, 0xa3, 0x86, 0x54, 0x89, 0x2f, 0xde, 0xb0, +0xee, 0xd5, 0xed, 0xbf, 0x5a, 0xbb, 0xee, 0xf2, +0x63, 0x06, 0x60, 0xcf, 0x12, 0x6f, 0x4b, 0x2d, +0xb6, 0x27, 0x51, 0xc6, 0x30, 0x95, 0x74, 0x81, +0x27, 0xd1, 0xb6, 0x08, 0x05, 0x15, 0x6c, 0xfd, +0xaa, 0x05, 0x0e, 0x87, 0x8c, 0x9c, 0xdc, 0x54, +0xb4, 0x6b, 0x6e, 0x78, 0x49, 0x7a, 0x4c, 0x70, +0xec, 0xc3, 0x10, 0x6b, 0xa5, 0x98, 0x78, 0x42, +0xc1, 0x62, 0x10, 0x14, 0x16, 0xac, 0x3c, 0x08, +0xe6, 0xc9, 0xfc, 0x6c, 0x63, 0x3a, 0x79, 0xf5, +0x97, 0x2f, 0xfd, 0x71, 0xdb, 0xf5, 0xcf, 0xbe, +0xb4, 0x6c, 0x22, 0x00, 0x87, 0x35, 0xf1, 0xdd, +0x4f, 0x7c, 0x71, 0x5d, 0xe1, 0x4f, 0x92, 0xd7, +0xb8, 0xf2, 0x6c, 0x8e, 0x34, 0xb3, 0x0f, 0x73, +0xe5, 0x66, 0x10, 0x42, 0xf0, 0xd1, 0x27, 0x3b, +0xf1, 0xee, 0x3f, 0xbe, 0x46, 0x7e, 0x5e, 0x3a, +0x6e, 0xbb, 0xf5, 0x5c, 0x98, 0x0c, 0xf8, 0x50, +0xa9, 0x84, 0x9f, 0xb8, 0x12, 0xc6, 0xa5, 0x31, +0x0f, 0x58, 0xcc, 0x82, 0x09, 0x03, 0x16, 0x0c, +0x58, 0xc4, 0x84, 0x09, 0x1d, 0x16, 0x4c, 0x58, +0x30, 0xa2, 0xd7, 0x89, 0x91, 0xf8, 0xce, 0x77, +0x32, 0x43, 0xe8, 0xb1, 0x76, 0xb2, 0x30, 0x7d, +0xe0, 0xe5, 0x5b, 0x6e, 0x79, 0xef, 0x70, 0x00, +0x87, 0xad, 0x80, 0x3d, 0x5b, 0xf8, 0x0f, 0x77, +0x9e, 0xdd, 0x01, 0xc6, 0x50, 0xca, 0x75, 0x81, +0x10, 0x02, 0x55, 0x33, 0xd0, 0xde, 0xe1, 0xc1, +0x15, 0x3f, 0x3f, 0x15, 0xd3, 0x2b, 0xf3, 0xc1, +0x71, 0x04, 0xdf, 0x6b, 0xa9, 0x08, 0x10, 0xd7, +0x28, 0xe3, 0xb2, 0xd8, 0x9a, 0x10, 0xcf, 0x36, +0x25, 0x34, 0xd1, 0x42, 0x07, 0x2a, 0x62, 0x8d, +0x68, 0x2d, 0x0b, 0x6a, 0x91, 0x26, 0x0e, 0xcd, +0x8f, 0x9c, 0x10, 0x29, 0x33, 0xdf, 0xbe, 0xf2, +0xa5, 0xb5, 0x5f, 0x5f, 0xf5, 0xec, 0x13, 0x67, +0x4e, 0x1a, 0xe0, 0x9e, 0xa7, 0x37, 0xdf, 0x91, +0x5d, 0xe1, 0xae, 0x62, 0x8c, 0x21, 0xd7, 0xea, +0x46, 0xa6, 0xa4, 0x02, 0x00, 0xfe, 0xf6, 0xce, +0x56, 0x6c, 0xda, 0xf4, 0x1d, 0x36, 0x7e, 0xd4, +0x80, 0x25, 0x4b, 0x4e, 0x40, 0xd8, 0x24, 0x68, +0xa2, 0xf9, 0xe3, 0x1a, 0x97, 0xc2, 0xfc, 0x81, +0xd0, 0xb1, 0xc4, 0xc7, 0xaf, 0x59, 0xb0, 0x10, +0x2e, 0x0d, 0x4b, 0xbe, 0xf9, 0x83, 0x27, 0x2a, +0x85, 0xea, 0x07, 0x2b, 0x5e, 0x7a, 0x6c, 0xeb, +0xe5, 0xcf, 0x3f, 0xb6, 0x60, 0xc2, 0x00, 0x72, +0xba, 0x70, 0xa5, 0x33, 0x5b, 0x96, 0x09, 0x33, +0x50, 0xc2, 0xf7, 0x00, 0x00, 0x82, 0xa1, 0x08, +0xfa, 0x3d, 0x43, 0x98, 0x33, 0xa7, 0x0c, 0x0b, +0x17, 0xcc, 0x00, 0x00, 0xec, 0x55, 0xd3, 0x10, +0x81, 0x9c, 0x30, 0x2e, 0x1b, 0x65, 0xdc, 0x31, +0xb2, 0x3e, 0x81, 0x11, 0x28, 0x1f, 0x12, 0x7b, +0x17, 0xf4, 0xce, 0x55, 0xf2, 0x42, 0xff, 0x7b, +0xe9, 0x8b, 0x0f, 0x6d, 0xb9, 0xf8, 0x85, 0xba, +0xb9, 0x47, 0x04, 0x70, 0xcf, 0x73, 0x5b, 0x1e, +0xce, 0x99, 0xe1, 0xae, 0x64, 0x8c, 0xa1, 0x80, +0x76, 0x22, 0x59, 0x34, 0xb0, 0xf1, 0xe3, 0x06, +0x3c, 0xf2, 0xd8, 0xdb, 0xe8, 0xee, 0x1e, 0x40, +0x46, 0xba, 0x1b, 0xf3, 0xe7, 0x57, 0xc2, 0xaf, +0x71, 0x68, 0x46, 0xc1, 0x28, 0xe3, 0xd2, 0x51, +0xc6, 0x35, 0x47, 0x18, 0xf7, 0xf0, 0xd9, 0x1f, +0xef, 0x9a, 0xaf, 0xc2, 0x27, 0x75, 0x2e, 0xec, +0x98, 0x17, 0xce, 0x1e, 0xfe, 0xec, 0x92, 0xe7, +0x1f, 0x78, 0xed, 0x90, 0x00, 0x04, 0x20, 0xb6, +0x34, 0x61, 0xb9, 0x2d, 0x5d, 0x10, 0x04, 0x16, +0x41, 0xa9, 0x18, 0x5d, 0x71, 0x2b, 0xca, 0xa7, +0x60, 0x5f, 0xcf, 0x20, 0x76, 0x37, 0xed, 0xc3, +0x29, 0x0b, 0xa6, 0x03, 0x60, 0x68, 0x36, 0x32, +0xa1, 0x83, 0x8f, 0x4e, 0x99, 0xf1, 0xe9, 0x73, +0x44, 0xee, 0x8f, 0x28, 0xd3, 0xd4, 0x02, 0x8b, +0x18, 0x87, 0x00, 0xa2, 0xd1, 0x44, 0x80, 0x82, +0xf2, 0x16, 0x4f, 0x4c, 0xfe, 0xfd, 0xb8, 0xd6, +0x31, 0x0f, 0x22, 0xf7, 0x3c, 0xbf, 0xf5, 0xa9, +0xdc, 0x53, 0x52, 0xa6, 0x31, 0x06, 0x94, 0xb0, +0x0e, 0xd8, 0x79, 0x8a, 0xbf, 0xbc, 0x59, 0x8f, +0xb6, 0xb6, 0x3e, 0xa4, 0xa5, 0xb9, 0x30, 0x25, +0x27, 0x15, 0x85, 0x85, 0x99, 0xe8, 0x8f, 0x08, +0x68, 0x41, 0xde, 0xb8, 0xc6, 0xb5, 0x62, 0xd9, +0xa7, 0x88, 0xf6, 0x75, 0x5c, 0x18, 0xa3, 0x16, +0xec, 0x3d, 0x3a, 0x84, 0xd6, 0x30, 0x48, 0x73, +0x08, 0x74, 0xf7, 0x10, 0xc2, 0x50, 0x31, 0xf0, +0x4c, 0xee, 0xd8, 0x55, 0x18, 0x31, 0x92, 0xf6, +0xbb, 0x9a, 0xd6, 0xdf, 0x7c, 0xdf, 0xfa, 0x71, +0x01, 0xea, 0xea, 0x36, 0x48, 0xb6, 0xca, 0x92, +0xa5, 0x92, 0x9b, 0x27, 0x76, 0x16, 0x44, 0xa1, +0xe0, 0x05, 0x00, 0x4c, 0x2d, 0xcd, 0xc6, 0xe7, +0xf5, 0x4d, 0xf8, 0xbe, 0xa5, 0x17, 0x1b, 0xd6, +0xdf, 0x0e, 0xc6, 0x28, 0x9a, 0xcc, 0x1c, 0x50, +0x42, 0x40, 0x41, 0xc7, 0x30, 0xee, 0x81, 0x0c, +0x12, 0xcb, 0x42, 0x8a, 0x87, 0xc2, 0xb9, 0xcf, +0x84, 0xd4, 0xa1, 0x82, 0xb4, 0x87, 0xa1, 0x86, +0x14, 0x28, 0x91, 0x30, 0x20, 0x02, 0xc3, 0x20, +0x30, 0xbc, 0x0a, 0xf8, 0xef, 0x55, 0x18, 0xe5, +0x18, 0x37, 0xfb, 0xd9, 0xbb, 0xb2, 0x75, 0x66, +0x88, 0x37, 0x8d, 0xd4, 0xfb, 0x03, 0x00, 0x23, +0xab, 0xf0, 0x85, 0x82, 0xea, 0xa4, 0x12, 0x06, +0x86, 0x12, 0xd6, 0x0e, 0x89, 0x07, 0x3a, 0xbb, +0x06, 0x90, 0x99, 0x99, 0x04, 0x41, 0xe4, 0xb1, +0xe8, 0x8c, 0x6a, 0x24, 0x25, 0x39, 0xd0, 0x15, +0x91, 0xd1, 0x4d, 0xb2, 0x0f, 0x69, 0x5c, 0x06, +0x8a, 0x79, 0x9f, 0x8b, 0x70, 0x74, 0x53, 0x28, +0x61, 0x0d, 0x4a, 0x44, 0x87, 0xa2, 0x6a, 0x50, +0x22, 0x1a, 0x74, 0x43, 0x83, 0x66, 0xe8, 0x38, +0xef, 0x86, 0xa5, 0x18, 0x36, 0x87, 0xf1, 0xe9, +0x9f, 0xff, 0x85, 0xae, 0x1d, 0x06, 0x94, 0x72, +0x6e, 0x8c, 0xcc, 0x53, 0x30, 0x4a, 0xe1, 0xf4, +0xb8, 0xbe, 0x7d, 0xf3, 0xa6, 0xfb, 0xfe, 0x35, +0x2e, 0xc0, 0x1d, 0x4f, 0xec, 0x74, 0xa6, 0x15, +0x49, 0x8b, 0x04, 0x3b, 0x07, 0xd1, 0x0a, 0x21, +0x5f, 0xf2, 0x43, 0x37, 0x19, 0x7e, 0x79, 0xfd, +0x7f, 0xa1, 0xa4, 0x34, 0x0b, 0xa1, 0x90, 0x8a, +0x87, 0xeb, 0x2e, 0x83, 0x45, 0x29, 0x76, 0x5b, +0x79, 0x87, 0x30, 0xee, 0x81, 0x0c, 0x4a, 0x7e, +0x06, 0x5d, 0xd5, 0xa1, 0x1b, 0x31, 0xd1, 0xba, +0x06, 0x4d, 0xd7, 0x91, 0x32, 0x25, 0x05, 0x6e, +0xe6, 0x46, 0x60, 0x28, 0x00, 0x6f, 0x60, 0x00, +0xc3, 0x3d, 0x0a, 0x5c, 0xaa, 0x08, 0xef, 0x25, +0x63, 0x65, 0xdf, 0x42, 0xce, 0xce, 0x29, 0x0a, +0x81, 0x74, 0xc5, 0xc1, 0x09, 0x1f, 0x65, 0x62, +0xbb, 0xdb, 0x78, 0x39, 0xbb, 0xc6, 0x99, 0x4f, +0xc1, 0x10, 0xe1, 0x1c, 0xf8, 0x4e, 0xcb, 0x83, +0x01, 0x11, 0xcf, 0x3d, 0x73, 0x2d, 0x1a, 0x1a, +0x3a, 0xf1, 0xec, 0xda, 0x6b, 0xe0, 0x72, 0xc9, +0x68, 0x8b, 0xb8, 0xe1, 0x41, 0xea, 0x11, 0x19, +0x77, 0x7f, 0x96, 0x1a, 0x15, 0xaf, 0xeb, 0xd0, +0x74, 0x1d, 0xba, 0xae, 0x43, 0x37, 0x74, 0x14, +0x56, 0x15, 0xa0, 0xfc, 0xe4, 0x72, 0x0c, 0xfa, +0x07, 0xb1, 0xfd, 0xad, 0x1d, 0xc0, 0x00, 0x90, +0xd4, 0x28, 0x82, 0x0b, 0x1f, 0x3c, 0xed, 0x52, +0x10, 0x03, 0xc8, 0x0b, 0x64, 0xed, 0x59, 0x7f, +0xe3, 0xaa, 0xbd, 0xe3, 0x02, 0xdc, 0x51, 0xb3, +0xd1, 0x29, 0x76, 0xb3, 0x85, 0x84, 0x90, 0x44, +0x2f, 0xb7, 0x71, 0x25, 0xf8, 0xc4, 0x98, 0x05, +0x2b, 0xaf, 0x0a, 0xaf, 0xfd, 0x69, 0x25, 0x78, +0x91, 0x87, 0x66, 0x32, 0x34, 0xd2, 0xfc, 0x11, +0x2d, 0x33, 0xd6, 0x8a, 0x7b, 0x00, 0xc0, 0x93, +0x63, 0x40, 0x8b, 0x8b, 0x8f, 0x55, 0x41, 0xd7, +0x35, 0x84, 0x86, 0x86, 0xd1, 0xf2, 0x5d, 0x0b, +0x3a, 0x1b, 0xbb, 0x60, 0xf6, 0x5b, 0x90, 0x4c, +0x09, 0xb2, 0x21, 0x21, 0x65, 0x9b, 0x30, 0x22, +0x01, 0xd1, 0xec, 0x9f, 0xb0, 0xa3, 0x26, 0xf2, +0xd0, 0xf2, 0xab, 0x67, 0xb6, 0xb7, 0xb7, 0xaf, +0xaf, 0xaf, 0xaf, 0x2f, 0x1d, 0x13, 0xc0, 0x30, +0x49, 0x5d, 0x68, 0xbd, 0x96, 0xd3, 0x7e, 0x4d, +0xd0, 0x13, 0xf8, 0x58, 0x35, 0xe2, 0x3b, 0x4a, +0x15, 0x12, 0x76, 0xb2, 0x69, 0xd8, 0x93, 0xb9, +0x10, 0x5e, 0x3e, 0x13, 0xbb, 0xd4, 0x2c, 0x04, +0x63, 0x5b, 0x86, 0x43, 0x19, 0x37, 0x3e, 0x06, +0xa6, 0x58, 0xd0, 0xac, 0x78, 0xfb, 0xe8, 0x89, +0x91, 0x51, 0x9c, 0x8e, 0xac, 0x8a, 0x4c, 0xec, +0xff, 0xba, 0x0f, 0x92, 0x25, 0x45, 0x87, 0x29, +0x21, 0x73, 0xb3, 0x63, 0x54, 0xf6, 0x05, 0x45, +0x40, 0xb5, 0x7d, 0x9a, 0xe4, 0x76, 0x39, 0xc4, +0x92, 0x92, 0x92, 0x4b, 0x8a, 0x8a, 0x8a, 0xb6, +0xbd, 0xfb, 0xee, 0xbb, 0x4b, 0x46, 0x01, 0x5c, +0x59, 0xb3, 0xd1, 0x19, 0xd1, 0x02, 0x17, 0x86, +0x4c, 0x0f, 0x82, 0x3d, 0x83, 0x59, 0xfd, 0x8f, +0x85, 0xc5, 0x9e, 0xff, 0x54, 0xf6, 0x2b, 0xdb, +0x75, 0x1a, 0xdf, 0x0e, 0x07, 0x89, 0x1b, 0x9b, +0x69, 0x25, 0x9a, 0x50, 0x14, 0x6b, 0x9b, 0xb1, +0x8d, 0x3b, 0x72, 0xba, 0xb4, 0x60, 0xc1, 0x90, +0x2c, 0xf8, 0x33, 0xad, 0x44, 0xfb, 0x50, 0x58, +0xb8, 0xfc, 0xbe, 0x4b, 0xd1, 0xdf, 0xd7, 0x8f, +0x6f, 0xff, 0xd1, 0x00, 0x2e, 0xc4, 0x41, 0x34, +0xa5, 0xe8, 0xb0, 0x24, 0xe4, 0x7e, 0x99, 0x3c, +0x2a, 0x01, 0x73, 0x1a, 0x67, 0xab, 0xd7, 0x9c, +0x77, 0x16, 0x2f, 0xcb, 0x32, 0x34, 0x4d, 0x43, +0x63, 0x43, 0x43, 0x8a, 0x61, 0x18, 0x15, 0xa3, +0x00, 0x64, 0x33, 0xf0, 0x6b, 0x5f, 0xb8, 0xb3, +0x38, 0x64, 0x78, 0x10, 0x32, 0x3d, 0x08, 0x9a, +0x1e, 0x04, 0x9b, 0x03, 0x53, 0xbc, 0xf7, 0x6a, +0xd4, 0x7b, 0xbf, 0xda, 0xab, 0xb5, 0x9a, 0xb1, +0x3e, 0xc7, 0x61, 0x8d, 0x3b, 0xd6, 0x8a, 0x3b, +0x58, 0x44, 0xa1, 0x1b, 0x1a, 0x72, 0xcb, 0x73, +0xc0, 0x49, 0x1c, 0x4c, 0xce, 0x80, 0xc5, 0x59, +0x18, 0x6e, 0x09, 0x43, 0x32, 0xa5, 0x51, 0x15, +0x48, 0xe9, 0x71, 0x22, 0xa9, 0xdd, 0x06, 0x0a, +0x0b, 0xb6, 0x41, 0x3b, 0x4e, 0xca, 0xa8, 0x12, +0x25, 0x49, 0x02, 0x00, 0x34, 0x36, 0x36, 0xa2, +0x74, 0xea, 0x54, 0x78, 0xd2, 0xec, 0xbf, 0xbe, +0x7e, 0xe3, 0x2b, 0x8b, 0x12, 0xb3, 0x10, 0x67, +0x70, 0x85, 0x29, 0xf6, 0xfc, 0xa6, 0xb0, 0xe1, +0x23, 0x41, 0xd3, 0x53, 0x69, 0xe3, 0x14, 0xe8, +0x9c, 0x02, 0x1b, 0x53, 0x04, 0x79, 0xab, 0x2b, +0xd7, 0xd8, 0xee, 0x88, 0x88, 0xa7, 0x73, 0xc3, +0xf6, 0xcb, 0xb9, 0x4c, 0xa4, 0x93, 0x09, 0xaf, +0xb8, 0x43, 0xa5, 0x40, 0x92, 0xc8, 0xa1, 0xb8, +0xa6, 0x18, 0x25, 0x73, 0x8a, 0xb1, 0xf9, 0x83, +0x2d, 0x68, 0xfd, 0xb4, 0x1d, 0xa2, 0x2e, 0x26, +0x84, 0x27, 0x40, 0x4c, 0x09, 0xe9, 0xdf, 0x3b, +0xe1, 0x2d, 0xf5, 0x61, 0x5e, 0xcb, 0xec, 0xc8, +0x65, 0x57, 0xd6, 0xda, 0x01, 0xa0, 0xb9, 0xb9, +0x19, 0x02, 0x00, 0x45, 0x53, 0xd1, 0x61, 0x0f, +0x32, 0x75, 0xd8, 0xd8, 0x9f, 0x00, 0xd0, 0xa9, +0xc6, 0xe9, 0x5a, 0x68, 0xba, 0xcc, 0x39, 0x98, +0xc3, 0x96, 0xbc, 0x23, 0xac, 0xfb, 0x32, 0x74, +0x53, 0x29, 0xd0, 0xa9, 0x02, 0x1b, 0xaf, 0x40, +0xa7, 0x2e, 0xbb, 0xed, 0x43, 0x97, 0xdd, 0xaa, +0x77, 0x06, 0xf8, 0xa5, 0x94, 0x09, 0x17, 0x20, +0x95, 0xd9, 0xc7, 0x37, 0xee, 0xc1, 0x7e, 0x50, +0xa6, 0x10, 0x98, 0x0e, 0x86, 0xd6, 0x9d, 0xad, +0x28, 0x9a, 0x53, 0x80, 0xf6, 0xaf, 0x3b, 0x81, +0x21, 0x02, 0xd1, 0x92, 0x21, 0x9a, 0x12, 0x58, +0x92, 0x00, 0x6f, 0x95, 0x8a, 0xc1, 0x9a, 0x00, +0xfa, 0x8e, 0x0f, 0xa0, 0x7f, 0xda, 0x20, 0x52, +0xf6, 0xa7, 0xe0, 0x94, 0xfc, 0xd9, 0x32, 0x01, +0x41, 0x7f, 0x7f, 0x3f, 0x3a, 0x5b, 0x5b, 0x41, +0x18, 0x43, 0x53, 0x9a, 0x65, 0x0e, 0x84, 0x87, +0x56, 0xbd, 0xb2, 0xf4, 0xba, 0xc6, 0x04, 0x80, +0xc1, 0x22, 0x02, 0x25, 0x2a, 0xdc, 0xb6, 0x64, +0xe2, 0x53, 0xfc, 0xb3, 0x65, 0x3e, 0x49, 0x27, +0x22, 0xf7, 0x95, 0xa2, 0xfb, 0xca, 0x74, 0x33, +0x92, 0x96, 0xa8, 0xc8, 0xb0, 0x2b, 0x45, 0x7e, +0xd3, 0x0d, 0xf1, 0x23, 0xb9, 0x9f, 0xbb, 0x88, +0x3a, 0x71, 0x16, 0x75, 0x51, 0xfe, 0x08, 0x36, +0x66, 0xc4, 0x42, 0x6f, 0xa6, 0x82, 0x9e, 0xcf, +0xba, 0xd0, 0xb6, 0xb7, 0x0d, 0x96, 0xcc, 0x41, +0x5b, 0x28, 0x22, 0x30, 0x83, 0x20, 0x38, 0x73, +0x18, 0xa1, 0xc2, 0x81, 0x03, 0x07, 0x1e, 0x18, +0xa0, 0xc4, 0xc2, 0xdc, 0x7d, 0xc7, 0x47, 0xce, +0xbb, 0xe2, 0x24, 0xbb, 0x61, 0x18, 0x08, 0xf8, +0xfd, 0x98, 0xbf, 0x70, 0x21, 0xbe, 0xec, 0xda, +0x8d, 0x6f, 0x3d, 0xdb, 0x5f, 0x78, 0xf9, 0xcc, +0xeb, 0xff, 0x34, 0x6a, 0x21, 0xb3, 0xa8, 0xca, +0xbb, 0x25, 0x27, 0x92, 0xe5, 0x24, 0x04, 0x35, +0x3f, 0x64, 0x81, 0x48, 0x21, 0x6d, 0x78, 0xae, +0x43, 0x48, 0x1d, 0xa2, 0x1c, 0xfd, 0x6a, 0x58, +0x1b, 0xac, 0xd6, 0xa9, 0x62, 0x8b, 0x56, 0x24, +0x02, 0x79, 0xc0, 0x95, 0x6d, 0x7b, 0xd1, 0x05, +0xee, 0x03, 0x61, 0x9f, 0xb5, 0xc2, 0xc8, 0xa2, +0x3f, 0xb1, 0xa4, 0xc3, 0x6d, 0xd8, 0x86, 0x96, +0xba, 0xc0, 0x2a, 0x28, 0x7c, 0x15, 0x12, 0xb4, +0x2c, 0x8a, 0xe8, 0x09, 0x4c, 0x87, 0x45, 0xcc, +0xc4, 0x74, 0x19, 0x1f, 0xb9, 0xed, 0x39, 0x74, +0x51, 0xc5, 0x5c, 0x19, 0x00, 0xea, 0x3f, 0xff, +0x1c, 0xbd, 0x1d, 0x1d, 0xd8, 0x93, 0x9b, 0x89, +0xbf, 0xb9, 0xf7, 0x6d, 0x52, 0xbc, 0x19, 0xb7, +0xff, 0x60, 0x25, 0x66, 0xc4, 0x6c, 0xec, 0xd5, +0xfd, 0xe1, 0x9e, 0x70, 0x87, 0x33, 0xdf, 0x55, +0x82, 0x3c, 0x57, 0x1e, 0x06, 0x78, 0x0f, 0x28, +0x23, 0xc9, 0x03, 0x8a, 0x6f, 0xae, 0x4b, 0x4a, +0xd9, 0x6f, 0xc0, 0xec, 0x0b, 0x69, 0xde, 0x59, +0x3a, 0x55, 0x38, 0x1b, 0x1f, 0xab, 0x48, 0x97, +0x2b, 0x5f, 0xfe, 0x9d, 0x9b, 0x92, 0xe9, 0x42, +0x97, 0x79, 0xd5, 0x50, 0x1e, 0xad, 0xb4, 0xf8, +0xf1, 0xda, 0xc9, 0xcc, 0xe6, 0x60, 0x65, 0x3b, +0xa3, 0x19, 0x8e, 0x6f, 0x35, 0xc6, 0x39, 0xa1, +0x9d, 0xe0, 0x9b, 0xa5, 0xd5, 0xfe, 0xec, 0x38, +0x7b, 0x7b, 0x5b, 0x1b, 0xca, 0xca, 0xca, 0x50, +0x50, 0x54, 0x88, 0x3f, 0xf8, 0xea, 0xbb, 0xf9, +0x3e, 0xdc, 0xf0, 0xd6, 0xf2, 0xd1, 0xaf, 0xf3, +0x13, 0x67, 0xe2, 0x0b, 0x0a, 0x1f, 0x9f, 0x2a, +0xf2, 0xfc, 0x13, 0x61, 0x2d, 0xb0, 0x38, 0x45, +0x48, 0x96, 0x08, 0x38, 0x14, 0x27, 0x4d, 0x83, +0x5f, 0xf5, 0xc3, 0xab, 0x0c, 0x80, 0x80, 0x87, +0x4d, 0x74, 0xb5, 0xe8, 0x88, 0x68, 0xa6, 0xa1, +0x55, 0xd9, 0x38, 0x37, 0x64, 0xce, 0x05, 0x1b, +0xef, 0x82, 0xcc, 0xb9, 0x21, 0x0b, 0x2e, 0x55, +0x9f, 0x17, 0xf6, 0x0e, 0xaf, 0xe8, 0x2f, 0x30, +0x0a, 0x22, 0x48, 0x9c, 0x77, 0x63, 0xc3, 0x24, +0x23, 0xbe, 0x27, 0xce, 0xc1, 0x66, 0xe2, 0x6f, +0xe2, 0xd7, 0x0a, 0xf7, 0x14, 0x9a, 0xf7, 0x4c, +0xfb, 0x05, 0x5f, 0x98, 0x99, 0x44, 0x9a, 0x76, +0xee, 0x84, 0x28, 0x8a, 0xd8, 0x62, 0xf7, 0x18, +0xdb, 0x03, 0xfb, 0xae, 0x7a, 0x6d, 0xd1, 0xca, +0x37, 0x0e, 0x5e, 0x89, 0x7f, 0x70, 0xa8, 0xbf, +0xb8, 0x74, 0xed, 0x5c, 0x93, 0x1a, 0x8f, 0x44, +0x54, 0x7f, 0x2d, 0xcf, 0x38, 0x2e, 0x45, 0xce, +0x40, 0x49, 0x72, 0x39, 0xf6, 0x0c, 0x36, 0x82, +0x51, 0x02, 0x9e, 0x93, 0x60, 0x93, 0x9c, 0xbb, +0x54, 0x23, 0xec, 0x06, 0x45, 0xf1, 0x48, 0x08, +0x1b, 0xe7, 0x82, 0x24, 0x3b, 0x86, 0x86, 0x17, +0x79, 0x95, 0xa1, 0x4b, 0xf6, 0xe7, 0xea, 0x29, +0x51, 0x10, 0x8b, 0x8c, 0x84, 0x31, 0x13, 0xad, +0x33, 0x12, 0x32, 0x0e, 0xb0, 0x6c, 0xdb, 0xb9, +0xea, 0xdd, 0x17, 0x2f, 0xb7, 0x7d, 0xb5, 0x79, +0x33, 0x38, 0x42, 0xd0, 0x25, 0x2a, 0x78, 0x37, +0xbc, 0xfb, 0xa9, 0xd7, 0x4f, 0x5f, 0x79, 0xeb, +0xc1, 0xe2, 0xc7, 0x04, 0x88, 0xc7, 0x45, 0x53, +0xd7, 0x2c, 0xb6, 0x4c, 0x75, 0x75, 0x58, 0xf5, +0xcf, 0x75, 0xf2, 0x2e, 0xa4, 0xca, 0xe9, 0xa0, +0x8c, 0x80, 0x27, 0x22, 0xfc, 0x11, 0x3f, 0x44, +0xde, 0x66, 0x8a, 0xa2, 0xbd, 0x41, 0x37, 0xc3, +0x85, 0x1c, 0x15, 0x32, 0x6d, 0x7c, 0xac, 0x22, +0x9c, 0x0b, 0x32, 0xef, 0x02, 0xef, 0x92, 0x3d, +0xfe, 0x0b, 0x3a, 0xb9, 0xc1, 0xf3, 0xba, 0x32, +0x4c, 0x59, 0x3b, 0x48, 0xa8, 0x39, 0x66, 0x85, +0xca, 0x77, 0x55, 0xe8, 0x0f, 0x9e, 0x78, 0xad, +0xa4, 0x85, 0x7c, 0x48, 0x4f, 0x4d, 0xc5, 0xbe, +0xa1, 0x01, 0x3c, 0x35, 0xb8, 0xe9, 0xe3, 0x72, +0x2b, 0x78, 0xf6, 0xea, 0xd3, 0x56, 0x9b, 0x13, +0x02, 0x88, 0xc7, 0xb2, 0xd2, 0x35, 0x57, 0x5a, +0x66, 0xe4, 0x2e, 0x55, 0xf3, 0xcf, 0x70, 0x8b, +0x29, 0x48, 0x93, 0x33, 0x91, 0x2c, 0xa5, 0xa1, +0x25, 0xf0, 0x3d, 0x08, 0x38, 0x88, 0x9c, 0x3d, +0x2c, 0x08, 0x72, 0xa3, 0x61, 0x2a, 0x55, 0x02, +0x6c, 0xce, 0x03, 0x15, 0x89, 0x56, 0x85, 0x65, +0xb0, 0x6e, 0xcf, 0x8a, 0xe6, 0xe4, 0x81, 0xd3, +0x3b, 0x93, 0x2c, 0xce, 0x18, 0x33, 0xfb, 0x16, +0x0c, 0x50, 0x66, 0xe1, 0xe2, 0x86, 0x0b, 0xb5, +0xf3, 0xaa, 0xa7, 0xcb, 0xbb, 0xb6, 0x6d, 0x83, +0xec, 0x76, 0x61, 0x63, 0x4e, 0x4f, 0x57, 0xc4, +0x67, 0xd6, 0xae, 0x5b, 0xb2, 0xb2, 0x6d, 0x3c, +0x7d, 0x47, 0xfc, 0x72, 0xf7, 0xc2, 0xd2, 0xdf, +0xdd, 0xae, 0xeb, 0x91, 0x9b, 0x42, 0xaa, 0xa7, +0x28, 0x5d, 0xce, 0x42, 0x8a, 0x94, 0x01, 0x9e, +0x13, 0xb1, 0x7f, 0xb8, 0x07, 0x02, 0x91, 0x20, +0x8b, 0x2e, 0x0f, 0xcf, 0x0b, 0xdd, 0x86, 0xae, +0xcd, 0x92, 0x88, 0x83, 0x4f, 0x78, 0x23, 0x06, +0xa4, 0x15, 0x29, 0x6d, 0xdd, 0x57, 0xed, 0xc8, +0xf3, 0xcf, 0xe9, 0x91, 0x47, 0x55, 0x23, 0xd6, +0x3a, 0xd5, 0xdb, 0x6b, 0xd4, 0xdf, 0xcc, 0xbb, +0xd4, 0xe6, 0x94, 0x05, 0xd8, 0x1d, 0x0e, 0xac, +0xeb, 0xf8, 0x48, 0xdf, 0xe6, 0xed, 0x58, 0xf1, +0xc6, 0x4f, 0xef, 0xfc, 0xeb, 0xa1, 0x74, 0x4d, +0xe8, 0xed, 0x34, 0x21, 0x1b, 0xf8, 0x65, 0xc5, +0xed, 0x0f, 0xa9, 0x46, 0xe8, 0x9a, 0x50, 0xc4, +0x9b, 0x9d, 0x69, 0x9b, 0x82, 0x21, 0x2d, 0x00, +0x81, 0x48, 0xe0, 0x89, 0x04, 0x81, 0x93, 0x60, +0x97, 0x92, 0x3b, 0x00, 0x12, 0xb2, 0x0c, 0x63, +0xe6, 0x81, 0x4a, 0xc4, 0xaa, 0xc2, 0xbb, 0x8d, +0xe0, 0xcc, 0xfe, 0xae, 0xb6, 0xab, 0xb7, 0x14, +0x0f, 0x95, 0xf5, 0xf3, 0xf1, 0xbe, 0x27, 0x3a, +0xc3, 0xe5, 0x4d, 0x97, 0xe8, 0x35, 0x69, 0x0e, +0x49, 0x57, 0x14, 0x0c, 0x64, 0x00, 0xef, 0x69, +0xbb, 0x1f, 0x5f, 0x5f, 0x7b, 0xf7, 0x9d, 0x87, +0xd5, 0x34, 0x99, 0xdf, 0xc8, 0xce, 0xcd, 0xab, +0x73, 0x70, 0x92, 0xfc, 0x64, 0x44, 0x0f, 0x5c, +0x16, 0x8e, 0xf8, 0x92, 0x79, 0x22, 0x42, 0x20, +0xd2, 0x01, 0x10, 0x22, 0xc1, 0x21, 0xa7, 0xee, +0x66, 0xa0, 0x32, 0x4c, 0x4c, 0x95, 0x63, 0xbe, +0xb0, 0xc5, 0xda, 0x4a, 0x96, 0x9c, 0xc3, 0x7d, +0x0b, 0x9a, 0xbd, 0x7b, 0x7f, 0xfe, 0x65, 0x49, +0x38, 0xc7, 0x87, 0x39, 0xdf, 0xcc, 0x53, 0x7e, +0x51, 0xb1, 0xd0, 0x91, 0xec, 0xb0, 0xa1, 0x4f, +0x1d, 0xc2, 0xef, 0x87, 0x37, 0x7d, 0x88, 0xfe, +0x69, 0x4b, 0xde, 0x5a, 0xbe, 0xdc, 0x3a, 0x26, +0x00, 0xf1, 0x38, 0xab, 0xac, 0x2e, 0xcb, 0x61, +0x0a, 0x4f, 0x85, 0xb4, 0xc0, 0xf9, 0x11, 0x75, +0xd0, 0x1e, 0x17, 0x2f, 0x70, 0x51, 0x10, 0x91, +0xb3, 0x51, 0xa7, 0x9c, 0xd2, 0x60, 0x99, 0x66, +0x2e, 0xc7, 0x84, 0x9c, 0x91, 0x10, 0x36, 0xde, +0x05, 0x5e, 0x96, 0x07, 0x3a, 0xce, 0xf9, 0x26, +0x32, 0xbf, 0x3a, 0x3f, 0xf7, 0xd4, 0xaa, 0x02, +0xc1, 0x24, 0x0c, 0xcf, 0xab, 0x9b, 0xda, 0x75, +0xaf, 0x70, 0xda, 0xab, 0xe7, 0xdc, 0xdc, 0x75, +0x24, 0x1a, 0xfe, 0x2d, 0x80, 0x78, 0x2c, 0x9b, +0x5a, 0x57, 0x6e, 0x9a, 0xdc, 0x93, 0xc3, 0xea, +0xc0, 0x59, 0xaa, 0x1e, 0x14, 0x47, 0x56, 0x82, +0x27, 0x12, 0x24, 0xc1, 0xa1, 0x3a, 0xa4, 0xe4, +0x5d, 0x96, 0x69, 0x56, 0x8a, 0x90, 0xdd, 0x32, +0xe7, 0x4e, 0x54, 0xa4, 0xf0, 0x0c, 0xd9, 0x3b, +0x73, 0x59, 0x24, 0x13, 0x8c, 0xe2, 0x8b, 0xf4, +0x5e, 0xb5, 0x31, 0xd4, 0x73, 0xe9, 0x86, 0x33, +0xef, 0x7f, 0xe7, 0x48, 0x9f, 0x7d, 0x54, 0x00, +0x12, 0x20, 0xc5, 0x8f, 0x9e, 0xac, 0x5b, 0x91, +0x47, 0x82, 0xea, 0xc0, 0x42, 0xc3, 0x54, 0xb8, +0x83, 0x41, 0x6c, 0x82, 0xdb, 0x2f, 0x8b, 0xae, +0x56, 0x58, 0xb4, 0x5a, 0x84, 0x5d, 0x72, 0xd8, +0x92, 0xac, 0x0b, 0x7f, 0x5b, 0x41, 0x16, 0x9c, +0x5d, 0xc1, 0xfd, 0x4f, 0xe7, 0x66, 0xbc, 0xd5, +0x57, 0xff, 0xe8, 0x86, 0x33, 0xea, 0x7e, 0x33, +0x91, 0x67, 0x4e, 0xfa, 0x87, 0xee, 0xb1, 0xe2, +0xbf, 0x3b, 0x56, 0x6d, 0x7e, 0xaf, 0xfb, 0xc1, +0xda, 0x64, 0x47, 0xde, 0xf9, 0xa9, 0xae, 0x29, +0xdb, 0x28, 0xa1, 0x50, 0xad, 0x20, 0x54, 0x2b, +0x08, 0x8d, 0x05, 0x91, 0x5b, 0x60, 0xa6, 0xd6, +0xd6, 0x26, 0x9f, 0x28, 0xbb, 0x2c, 0x9f, 0xc1, +0xab, 0x3b, 0xcb, 0x97, 0xb8, 0x87, 0x02, 0x91, +0x46, 0xee, 0xa3, 0xad, 0x9f, 0xe0, 0x0d, 0xdf, +0xe7, 0xef, 0x1f, 0x57, 0xcf, 0xdd, 0x3b, 0xd1, +0x67, 0x1e, 0xd5, 0x0a, 0x1c, 0x1c, 0xe7, 0x14, +0x3f, 0x74, 0x8d, 0x69, 0x86, 0xef, 0x0c, 0x28, +0xbd, 0x15, 0xa0, 0x0c, 0xb3, 0x67, 0x66, 0x60, +0x6a, 0x65, 0x3e, 0xfc, 0x3d, 0x1a, 0xb6, 0x7d, +0xe3, 0xc7, 0xf5, 0x4f, 0x5e, 0x64, 0x56, 0xcc, +0x73, 0x0b, 0x8f, 0x0e, 0xfe, 0xb5, 0x95, 0x74, +0x73, 0xa7, 0xbe, 0xba, 0xfc, 0x9e, 0x9e, 0x89, +0x3e, 0xe3, 0x98, 0x02, 0xc4, 0xe3, 0xdc, 0xa2, +0x07, 0xef, 0x8a, 0x18, 0xc1, 0x1b, 0x8d, 0xc8, +0x60, 0xc1, 0x29, 0x52, 0x29, 0x7a, 0x53, 0xbd, +0x68, 0xf1, 0xa9, 0xb8, 0xb6, 0x6e, 0xb9, 0xd5, +0x34, 0x67, 0xaf, 0xd1, 0xe8, 0xeb, 0xbd, 0xf0, +0xef, 0x3f, 0x7b, 0xe8, 0x83, 0xc9, 0xdc, 0xfb, +0x47, 0x01, 0x00, 0x00, 0x42, 0xea, 0x84, 0x25, +0x05, 0xec, 0x51, 0x6a, 0x84, 0xaf, 0xee, 0x57, +0x3a, 0xd2, 0x39, 0x08, 0x58, 0xfc, 0xc0, 0xe2, +0xf0, 0xb7, 0xd5, 0xbb, 0xd7, 0xbc, 0x73, 0xc6, +0xa3, 0xf7, 0x4f, 0xfa, 0xbe, 0x3f, 0x16, 0x40, +0x3c, 0x6a, 0xb3, 0xea, 0x5c, 0x4e, 0x3b, 0x5d, +0xa3, 0xe8, 0x81, 0x4b, 0xb3, 0x6f, 0x2e, 0xda, +0xb2, 0x7e, 0xd5, 0x6d, 0x67, 0x31, 0x60, 0xd2, +0x22, 0x7e, 0x74, 0x80, 0x78, 0x2c, 0x29, 0xa9, +0xcb, 0x49, 0x9d, 0x5f, 0xa6, 0xbc, 0xfe, 0xfa, +0x8a, 0xe0, 0xbf, 0x73, 0x9f, 0xff, 0x03, 0x44, +0x8d, 0xcd, 0x10, 0xa4, 0x4b, 0xe2, 0x38, 0x00, +0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, +0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/bigimgs/appicon48.png b/source/bitmaps/bigimgs/appicon48.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3e2c9db2b21b45d9b67e1bda17438f5334a303 GIT binary patch literal 3923 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 hy#D%%;J + +#ifndef BIGIMGS_APPICON64_CPP +#define BIGIMGS_APPICON64_CPP + +static unsigned char bigimgs_appicon64_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x01, 0xbb, 0x00, 0x00, 0x01, +0xbb, 0x01, 0x3a, 0xec, 0xe3, 0xe2, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x16, 0x9b, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x5b, 0x79, +0x7c, 0x54, 0xd5, 0xd9, 0x7e, 0xce, 0x5d, 0x67, +0x26, 0x99, 0xc9, 0x32, 0x93, 0x75, 0x42, 0x16, +0x42, 0x4c, 0x02, 0x09, 0x10, 0x40, 0x45, 0x05, +0x15, 0xb1, 0xb2, 0x88, 0x8a, 0xe2, 0x82, 0x5a, +0xeb, 0x52, 0xeb, 0x2e, 0x55, 0xcb, 0x27, 0xd6, +0x5a, 0x29, 0xb6, 0xfa, 0x59, 0xb5, 0x16, 0x17, +0xfc, 0x44, 0x5b, 0xab, 0xb5, 0x6a, 0xd5, 0xcf, +0xaa, 0xd5, 0xba, 0xd4, 0x05, 0x45, 0x50, 0x04, +0x59, 0x04, 0x42, 0x16, 0x08, 0x81, 0x24, 0x90, +0xc9, 0x32, 0xc9, 0xec, 0x73, 0xd7, 0x73, 0xbe, +0x3f, 0x26, 0x33, 0x99, 0x2c, 0x60, 0x80, 0xd8, +0xf6, 0xf7, 0xfb, 0x5e, 0x7e, 0xc3, 0x9d, 0x3b, +0x37, 0x73, 0xef, 0x79, 0x9e, 0xf7, 0x79, 0x9f, +0x73, 0xee, 0x3b, 0x33, 0x84, 0x31, 0x86, 0xff, +0xcf, 0x21, 0x8c, 0xe6, 0xc9, 0x96, 0xae, 0xfc, +0xe8, 0x49, 0x41, 0x22, 0xd3, 0x68, 0x97, 0x79, +0xd3, 0x43, 0xcb, 0xe7, 0x6c, 0x19, 0xcd, 0x73, +0x7f, 0x5f, 0x41, 0x46, 0x4b, 0x01, 0x37, 0x3f, +0xf5, 0x59, 0x6a, 0x86, 0x15, 0xdb, 0x2a, 0x67, +0x15, 0x96, 0xee, 0xdb, 0xe0, 0xf1, 0x06, 0xbc, +0xa1, 0x06, 0xbd, 0x47, 0xbd, 0xee, 0xd1, 0x5f, +0x9e, 0x53, 0x3b, 0x2a, 0x17, 0xf8, 0x9e, 0x62, +0xd4, 0x08, 0xf8, 0xaf, 0xc7, 0x3e, 0x79, 0xa5, +0xf2, 0x8c, 0x82, 0x45, 0xb2, 0x43, 0x14, 0x29, +0x18, 0x0c, 0x9d, 0xa2, 0x65, 0x93, 0xa7, 0x3b, +0xd2, 0x1d, 0xae, 0x67, 0x7e, 0xe3, 0x9a, 0x87, +0xee, 0x59, 0xb0, 0x7b, 0x54, 0x2e, 0x34, 0xca, +0x31, 0x2a, 0x04, 0x2c, 0x5d, 0xf1, 0xae, 0xcb, +0x56, 0xec, 0xd8, 0x58, 0x31, 0xab, 0xa0, 0x84, +0x32, 0x06, 0xca, 0x18, 0x28, 0x62, 0x5b, 0x53, +0x37, 0xd1, 0xb6, 0xb1, 0xa3, 0x3b, 0xd2, 0x1b, +0xa9, 0x8d, 0x74, 0xe8, 0x57, 0xac, 0xfa, 0xcd, +0x79, 0xad, 0xa3, 0x30, 0xee, 0x51, 0x8b, 0x51, +0x21, 0xe0, 0xce, 0xc7, 0xd7, 0xbc, 0x35, 0xfe, +0x07, 0xee, 0x73, 0x44, 0x1b, 0xcf, 0xc5, 0x80, +0x63, 0x00, 0x09, 0x8c, 0x31, 0x18, 0x9a, 0x81, +0x03, 0x1b, 0x3d, 0x5e, 0xc5, 0xaf, 0x6c, 0x57, +0x7a, 0xa3, 0x97, 0xad, 0x5a, 0x7e, 0x91, 0x67, +0x14, 0xc6, 0x7f, 0xcc, 0x71, 0xcc, 0x04, 0x2c, +0x5b, 0xf1, 0x7e, 0x81, 0x6d, 0xac, 0x63, 0xfd, +0xb8, 0xd3, 0xf2, 0x0a, 0x63, 0x60, 0x29, 0xc6, +0x19, 0xb5, 0x30, 0xc1, 0xa3, 0x89, 0x14, 0x43, +0x23, 0x22, 0x58, 0x92, 0x2a, 0xf4, 0x88, 0x81, +0x8e, 0x2d, 0x1e, 0xaf, 0x12, 0x50, 0xb7, 0xe8, +0x1e, 0xdf, 0xa5, 0x4f, 0x3e, 0xf0, 0x23, 0xef, +0xe8, 0x40, 0x39, 0xba, 0x38, 0x66, 0x02, 0xee, +0x7c, 0xe2, 0xd3, 0x0f, 0x27, 0xcc, 0x1d, 0x73, +0x16, 0x2f, 0x71, 0xa0, 0x60, 0xc8, 0xd3, 0xf6, +0x62, 0xb2, 0xad, 0x15, 0x00, 0x81, 0x5f, 0xe3, +0xb1, 0x47, 0xcf, 0xc6, 0x7e, 0xbe, 0x08, 0xe6, +0x20, 0x55, 0x18, 0x11, 0x1d, 0x5d, 0x5b, 0x3c, +0xdd, 0x5a, 0x50, 0xdb, 0x64, 0xfa, 0xc2, 0x8b, +0x1f, 0x5f, 0x7e, 0x79, 0x60, 0x74, 0x20, 0x1d, +0x59, 0x1c, 0x13, 0x01, 0x3f, 0xfd, 0xcd, 0x47, +0x65, 0xae, 0x92, 0xd4, 0x35, 0x63, 0x67, 0xe4, +0xb8, 0x29, 0x18, 0x18, 0x35, 0x31, 0x9d, 0x7e, +0x85, 0x0c, 0x8b, 0x09, 0x00, 0x60, 0x7d, 0xff, +0x77, 0x44, 0x25, 0x34, 0xd2, 0x3c, 0x1c, 0x24, +0xb9, 0x43, 0x4a, 0x43, 0x0f, 0x19, 0xe8, 0xd9, +0xe6, 0xe9, 0xd6, 0xc3, 0xea, 0x06, 0x51, 0x8f, +0x2c, 0x7e, 0x78, 0xe9, 0x15, 0xe1, 0x51, 0x41, +0x36, 0xc2, 0xe0, 0x8e, 0xe5, 0xcd, 0x96, 0x4c, +0xf1, 0xd9, 0xe2, 0xe9, 0x59, 0x6e, 0x86, 0x18, +0x98, 0x42, 0xa3, 0x31, 0x01, 0x1e, 0x00, 0x56, +0x3e, 0xfe, 0x2e, 0x3c, 0x1d, 0x3e, 0xd8, 0x11, +0xc2, 0xc9, 0xd6, 0x7d, 0x38, 0x01, 0xdb, 0xe1, +0x60, 0x01, 0x30, 0x16, 0x23, 0x87, 0x02, 0xe0, +0x52, 0x78, 0x64, 0x9e, 0x92, 0xef, 0xca, 0x3c, +0xd1, 0xbd, 0x80, 0xa6, 0x39, 0xf6, 0xdd, 0xb6, +0xf2, 0x8d, 0x37, 0x96, 0x2c, 0x79, 0x42, 0x3e, +0x46, 0x5c, 0x23, 0x8e, 0xa3, 0x56, 0xc0, 0x92, +0x7b, 0xdf, 0xaf, 0xc9, 0x9e, 0x90, 0xf1, 0x7e, +0xc9, 0xf4, 0xac, 0x1c, 0x0a, 0x06, 0xde, 0x54, +0x70, 0x12, 0xd9, 0x84, 0x54, 0x29, 0x76, 0x3e, +0xca, 0x18, 0x66, 0xce, 0xba, 0x07, 0xd9, 0xd9, +0xe9, 0xe8, 0xee, 0x0e, 0xe0, 0xf3, 0x4f, 0xee, +0x03, 0x03, 0xb0, 0x27, 0x6c, 0xc3, 0xd7, 0x18, +0x9f, 0x50, 0x42, 0xcc, 0x1f, 0x90, 0x50, 0x85, +0xde, 0xa3, 0x22, 0x58, 0xdf, 0xd1, 0x45, 0x43, +0xda, 0x9a, 0x1d, 0x81, 0xdc, 0xcb, 0xd7, 0x2c, +0x3f, 0xdd, 0x18, 0x45, 0xbc, 0x43, 0xe2, 0xa8, +0x57, 0x82, 0x29, 0xf9, 0xb6, 0x55, 0xc5, 0x27, +0x66, 0xe5, 0x30, 0x00, 0x8c, 0x01, 0x45, 0xe6, +0x1e, 0xa4, 0xda, 0xe2, 0xa2, 0x07, 0xde, 0x7d, +0x6f, 0x33, 0x2e, 0xbe, 0xe8, 0x14, 0x9c, 0x36, +0x73, 0x3c, 0xfe, 0xf9, 0xd1, 0xb7, 0x88, 0xfd, +0x1d, 0x43, 0x3b, 0x4d, 0x07, 0xe3, 0x80, 0xf8, +0xfb, 0x18, 0x80, 0xb8, 0x82, 0x18, 0x18, 0xb8, +0x0c, 0x11, 0xf6, 0x93, 0xf2, 0xb2, 0x34, 0x6f, +0xe4, 0xe2, 0xea, 0xc6, 0x8e, 0x59, 0xb7, 0xfe, +0xfe, 0x95, 0x0f, 0x5d, 0x81, 0xc6, 0x2b, 0x97, +0x2f, 0x5f, 0x4e, 0x47, 0x03, 0xf0, 0xe0, 0x38, +0xaa, 0x12, 0x58, 0x7a, 0xff, 0xa7, 0xa7, 0xa6, +0xb9, 0xac, 0x65, 0x20, 0xb1, 0xcc, 0x59, 0x69, +0x00, 0x85, 0x62, 0x4f, 0xe2, 0xf8, 0xce, 0xda, +0x16, 0xbc, 0xfe, 0xc6, 0x57, 0x68, 0x6c, 0x3c, +0x88, 0xcf, 0x3e, 0xaf, 0xc5, 0xd2, 0x3b, 0xce, +0x05, 0x00, 0xb4, 0x45, 0x65, 0xb4, 0x70, 0xf9, +0x09, 0xb0, 0x2c, 0xee, 0x05, 0xf1, 0x7f, 0x0c, +0x60, 0xa0, 0xa0, 0xa0, 0xe0, 0x9c, 0x02, 0x2c, +0x27, 0xbb, 0xb2, 0xc4, 0x1a, 0xc7, 0x0f, 0xbb, +0x72, 0x4a, 0x3d, 0x37, 0xaf, 0x7c, 0xf1, 0x8f, +0x04, 0x20, 0xa3, 0x03, 0xbb, 0x3f, 0x8e, 0x8a, +0x00, 0x31, 0x4b, 0x7c, 0xb4, 0x60, 0x9a, 0xcb, +0x15, 0xcf, 0x62, 0x31, 0xdd, 0x0b, 0x8b, 0x18, +0x3b, 0x46, 0x19, 0x03, 0xa5, 0x14, 0x4d, 0x4d, +0x1e, 0xec, 0xd8, 0xd9, 0x02, 0x9e, 0xe7, 0x62, +0xf5, 0x4e, 0x19, 0xea, 0xcd, 0x38, 0xf8, 0xe4, +0xec, 0x0f, 0x54, 0x02, 0x05, 0x05, 0x83, 0xd9, +0xb7, 0xa5, 0x40, 0x16, 0x07, 0x61, 0x66, 0x7a, +0x16, 0x57, 0x65, 0xbb, 0xe6, 0xc6, 0xd5, 0x2f, +0x78, 0x6e, 0xfa, 0xfd, 0xf3, 0xff, 0x33, 0x3a, +0xd0, 0x63, 0x71, 0xc4, 0x1e, 0x70, 0xe7, 0x7f, +0xaf, 0x5b, 0xe0, 0x9a, 0x60, 0xfb, 0x73, 0xfe, +0xa4, 0xb4, 0x0c, 0xca, 0x18, 0xec, 0x46, 0x17, +0x4e, 0x94, 0x6a, 0x21, 0xf2, 0x31, 0x2e, 0xff, +0xf2, 0xca, 0x5a, 0xd4, 0xee, 0x6a, 0x85, 0xdd, +0x6e, 0xc5, 0xb4, 0x29, 0xa5, 0x38, 0x73, 0xf6, +0x44, 0x30, 0x00, 0x4d, 0x61, 0x1b, 0xbe, 0xea, +0xab, 0x7d, 0x96, 0x34, 0x13, 0x24, 0x7b, 0x41, +0x0c, 0xb6, 0x01, 0x13, 0x06, 0x28, 0x31, 0x63, +0xdb, 0xf8, 0x3e, 0x62, 0xfb, 0xac, 0x4d, 0x03, +0x6b, 0x56, 0x3a, 0x49, 0x04, 0x2f, 0x3f, 0x7d, +0xc7, 0xb5, 0xb7, 0x1f, 0x2b, 0x01, 0x47, 0xac, +0x00, 0x21, 0x0b, 0xf7, 0xbb, 0x27, 0xa5, 0x65, +0xc4, 0xb3, 0x57, 0x82, 0x7d, 0x09, 0xf0, 0xba, +0x41, 0x91, 0x96, 0x66, 0x03, 0x47, 0x08, 0x0e, +0xb6, 0xf7, 0xa2, 0xdd, 0xe3, 0x03, 0x03, 0xa0, +0x1a, 0x0c, 0x75, 0xac, 0x60, 0x80, 0xf4, 0x07, +0x2b, 0x80, 0x82, 0x0d, 0xc8, 0x3c, 0x85, 0x39, +0xcc, 0x3e, 0x85, 0x39, 0x06, 0x30, 0x4e, 0x15, +0xb2, 0xf5, 0x4a, 0x72, 0xdb, 0x4f, 0x9e, 0x7e, +0xda, 0x73, 0xdd, 0xca, 0xd5, 0x0f, 0x1e, 0x0b, +0x01, 0x47, 0xa4, 0x80, 0xa5, 0x0f, 0xad, 0xbb, +0x22, 0xbf, 0x2a, 0xe5, 0xc9, 0xec, 0x09, 0x0e, +0x07, 0x65, 0x0c, 0x4e, 0xa3, 0x15, 0xc7, 0x5b, +0xf6, 0x82, 0x90, 0x58, 0x69, 0x3e, 0xf4, 0xe8, +0xdb, 0xa0, 0x94, 0x82, 0x52, 0x86, 0xc9, 0x93, +0x4a, 0x30, 0xe7, 0xac, 0xc9, 0x00, 0x80, 0x5d, +0x21, 0x3b, 0xb6, 0x90, 0xf2, 0x44, 0xc6, 0xd9, +0xa0, 0xec, 0xc7, 0xb6, 0x49, 0x19, 0x27, 0xe6, +0x90, 0xcc, 0xc7, 0x5e, 0x1f, 0xb4, 0x0f, 0x13, +0xfc, 0x5e, 0x40, 0x6c, 0x33, 0x3d, 0x4c, 0xc1, +0xea, 0x3f, 0xde, 0x76, 0xcb, 0xaf, 0x8e, 0x94, +0x80, 0x23, 0x52, 0x80, 0xec, 0x22, 0x77, 0x65, +0x4f, 0x70, 0x38, 0x68, 0xdf, 0x2c, 0x5e, 0x4c, +0xda, 0x12, 0xe0, 0x19, 0x80, 0xca, 0x0a, 0x37, +0x54, 0xd5, 0x40, 0x7d, 0xfd, 0x01, 0x88, 0x02, +0x0f, 0x00, 0x08, 0xeb, 0x40, 0x3d, 0x0a, 0x47, +0x64, 0x7c, 0x0c, 0x14, 0x94, 0xd0, 0x81, 0xfb, +0x7d, 0x99, 0xef, 0xdf, 0x4f, 0xde, 0x9a, 0x50, +0xc7, 0x6a, 0x08, 0x9c, 0xaa, 0xe6, 0x2a, 0x25, +0xc6, 0xf2, 0xab, 0x9f, 0x5e, 0x79, 0xf0, 0xea, +0xc7, 0x9e, 0x58, 0x76, 0x24, 0x98, 0x46, 0xac, +0x80, 0x65, 0x8f, 0xac, 0x5b, 0x92, 0x37, 0xd1, +0xf1, 0x80, 0xb3, 0x3c, 0x25, 0x85, 0x32, 0x06, +0xb7, 0xd1, 0x84, 0x49, 0xd6, 0x36, 0x00, 0x04, +0x0c, 0xc0, 0x43, 0xbf, 0x7b, 0x0b, 0x6f, 0xfc, +0x6d, 0x03, 0x6e, 0xbc, 0x61, 0x0e, 0xc6, 0x57, +0x8c, 0xc1, 0xb4, 0x69, 0xa5, 0x00, 0x18, 0xb6, +0x86, 0x32, 0x51, 0x8b, 0xd2, 0xa4, 0x4c, 0xb3, +0x21, 0x3e, 0x90, 0x9c, 0x51, 0x4a, 0x86, 0xc9, +0xfc, 0x80, 0xd7, 0xfb, 0xf6, 0x93, 0x15, 0x92, +0x74, 0xcc, 0x5a, 0x6f, 0x61, 0x56, 0x0f, 0x69, +0x37, 0x0d, 0xee, 0xb7, 0x7f, 0xbe, 0xf5, 0x8e, +0xc7, 0xbf, 0x0b, 0xd7, 0x88, 0x15, 0x20, 0x66, +0x0a, 0x37, 0xbb, 0xca, 0x53, 0x52, 0x18, 0x63, +0x20, 0xcc, 0x40, 0x11, 0xd7, 0x8e, 0xfe, 0x59, +0x89, 0xe1, 0x8b, 0x75, 0x75, 0x98, 0x34, 0xa9, +0x18, 0x6b, 0xd6, 0xec, 0x44, 0x75, 0xd5, 0x18, +0x00, 0x40, 0x8f, 0xca, 0xa1, 0x01, 0x45, 0x09, +0x93, 0x4b, 0x9e, 0xef, 0x13, 0x8b, 0xa0, 0xe4, +0x8c, 0x92, 0x43, 0x65, 0xde, 0x3c, 0xb4, 0x12, +0x88, 0xd9, 0x77, 0xb6, 0xd8, 0x6b, 0xc1, 0x8a, +0x00, 0x69, 0x3f, 0xbd, 0x27, 0x3f, 0x9a, 0x1f, +0x5d, 0x79, 0xc5, 0x53, 0x0f, 0x1e, 0xb8, 0x7c, +0xd5, 0xc3, 0xd7, 0x1d, 0x33, 0x01, 0xcb, 0x1e, +0x5d, 0xb7, 0x3c, 0x77, 0x6c, 0x6a, 0x61, 0xdc, +0xb4, 0x8a, 0xf4, 0xdd, 0x48, 0x97, 0x69, 0x1f, +0x74, 0xe0, 0x99, 0x3f, 0x7c, 0x84, 0x5f, 0xde, +0x7d, 0x21, 0xac, 0x56, 0x09, 0xf3, 0xe7, 0x4e, +0x81, 0x6c, 0x91, 0x00, 0x30, 0x34, 0x6a, 0x2e, +0xe8, 0xe0, 0x87, 0x1a, 0x1f, 0x4b, 0x36, 0xbe, +0xc3, 0xc9, 0xdd, 0x3c, 0x4c, 0x59, 0x0c, 0x34, +0xc8, 0xc1, 0xa5, 0xd1, 0x3b, 0xa1, 0x97, 0x1c, +0x38, 0xc3, 0x93, 0xaf, 0x64, 0x85, 0x9e, 0xfe, +0xe1, 0x53, 0xbf, 0x69, 0xbd, 0xf4, 0xd9, 0xfb, +0xaf, 0x18, 0x0e, 0xdb, 0x77, 0x96, 0x00, 0x01, +0xc8, 0x2f, 0x9e, 0xff, 0x7a, 0x4f, 0xc5, 0x2c, +0xd7, 0x58, 0xca, 0x18, 0x04, 0x1a, 0xc1, 0x49, +0xdc, 0x66, 0xa4, 0x8a, 0x0c, 0x1f, 0x7c, 0xb8, +0x15, 0x15, 0x95, 0x6e, 0x5c, 0x79, 0xcd, 0x2a, +0x4c, 0xa9, 0x29, 0xc1, 0xdd, 0xcb, 0x2e, 0x40, +0xa6, 0xd3, 0x0e, 0x00, 0xf0, 0x44, 0x79, 0x7c, +0x42, 0x27, 0x27, 0xee, 0x02, 0x8f, 0xda, 0xf8, +0x0e, 0x27, 0xff, 0xbe, 0xa9, 0xf2, 0x70, 0xc7, +0xe2, 0xfb, 0xd9, 0xdb, 0x5c, 0xcc, 0xda, 0x23, +0xb7, 0xe9, 0x02, 0xfd, 0xd9, 0xeb, 0xd7, 0xad, +0x78, 0x7d, 0xc4, 0x0a, 0x58, 0xb6, 0xf2, 0xcb, +0x47, 0xf2, 0x8f, 0x4b, 0x1d, 0x43, 0xfb, 0xb2, +0x58, 0x6c, 0x36, 0x21, 0x55, 0x8c, 0x91, 0x96, +0x91, 0x69, 0xc7, 0xc2, 0x0b, 0x1f, 0xc6, 0x84, +0xf1, 0x05, 0x28, 0x2b, 0xcb, 0xc3, 0xda, 0x75, +0x75, 0x31, 0x55, 0x30, 0x8a, 0x7a, 0x3d, 0x17, +0x94, 0xe1, 0xd8, 0x8d, 0x8f, 0x0c, 0xcd, 0xee, +0xa1, 0x33, 0x9f, 0x5c, 0x4a, 0x03, 0xd5, 0x74, +0x70, 0x72, 0x3b, 0x69, 0x9a, 0xd9, 0x3c, 0x46, +0x8e, 0x92, 0x95, 0xc9, 0xf8, 0x0e, 0x4b, 0xc0, +0x8a, 0x15, 0xe0, 0xa4, 0x4c, 0x61, 0x91, 0xdd, +0x6d, 0x11, 0x19, 0x03, 0x6c, 0xa6, 0x0f, 0x85, +0x52, 0x6f, 0x0c, 0x24, 0x00, 0x49, 0xe2, 0x51, +0x71, 0x5c, 0x3e, 0x66, 0xce, 0xa8, 0xc4, 0xf3, +0x2f, 0xac, 0xc1, 0x82, 0xb3, 0xa7, 0x01, 0x60, +0x68, 0x8d, 0x5a, 0xd0, 0xc6, 0xe5, 0x8d, 0x60, +0xc5, 0xf7, 0x1d, 0x6e, 0x4f, 0x86, 0x03, 0x4d, +0x41, 0x7c, 0x7a, 0x82, 0xb4, 0x21, 0x6b, 0x85, +0x21, 0x84, 0xf5, 0x9f, 0xc3, 0xbd, 0xc9, 0x6d, +0xe8, 0x60, 0xd7, 0x24, 0x63, 0x3c, 0xec, 0xcd, +0x90, 0x96, 0xb9, 0x61, 0x75, 0x61, 0x65, 0x7a, +0x41, 0xdc, 0xb8, 0x8a, 0xd9, 0x3e, 0xc8, 0x02, +0xd0, 0xd2, 0xd2, 0x8d, 0xa7, 0x9e, 0xf9, 0x00, +0x17, 0x2d, 0x3a, 0x09, 0xbd, 0xbe, 0x30, 0x5e, +0x7c, 0x69, 0x2d, 0x2e, 0xbd, 0x64, 0x06, 0x04, +0x81, 0x83, 0x6e, 0x52, 0xec, 0x32, 0x0b, 0xc0, +0xc8, 0x48, 0x8c, 0xcf, 0x1c, 0x91, 0xf1, 0x89, +0x1d, 0x3a, 0x52, 0xf6, 0x2a, 0xe0, 0x77, 0x87, +0x80, 0xba, 0x10, 0xf4, 0xce, 0x30, 0xfc, 0xf3, +0x6d, 0x08, 0x5f, 0xe8, 0x18, 0x96, 0xa0, 0xe1, +0xce, 0xc1, 0xa9, 0x1c, 0xac, 0x01, 0xb9, 0xe9, +0xa5, 0xdb, 0xee, 0xfd, 0x70, 0x44, 0x04, 0x2c, +0x79, 0xe2, 0x7d, 0x39, 0x33, 0xdd, 0x35, 0xd7, +0x96, 0x2d, 0xf2, 0x94, 0x31, 0xa4, 0x1b, 0x5d, +0x28, 0x90, 0x03, 0x00, 0x08, 0xc6, 0x14, 0xba, +0xe0, 0xcc, 0xb4, 0x63, 0xc1, 0xc2, 0x07, 0x71, +0xce, 0x82, 0x69, 0xb8, 0xfa, 0xca, 0x59, 0x38, +0xe1, 0xf8, 0x32, 0x00, 0x0c, 0xfb, 0x14, 0x3b, +0xba, 0x48, 0xc6, 0x51, 0x1b, 0x1f, 0xa3, 0x26, +0x52, 0xba, 0x4d, 0x58, 0x5b, 0x75, 0xc8, 0xfb, +0x14, 0x88, 0x7b, 0x22, 0xd0, 0xfd, 0x0a, 0x14, +0x55, 0x81, 0xaa, 0x29, 0x50, 0x54, 0x15, 0xba, +0xae, 0x83, 0x6c, 0xf0, 0x81, 0x5e, 0x98, 0x7a, +0x88, 0x52, 0x1a, 0xaa, 0xa6, 0xe2, 0x8d, 0x45, +0xaa, 0x2e, 0x90, 0x8b, 0x06, 0xe3, 0x3c, 0x24, +0x01, 0xa9, 0x24, 0xe3, 0x05, 0xf7, 0x44, 0x87, +0x3b, 0x9e, 0xbd, 0xb1, 0x64, 0x3f, 0x04, 0xae, +0x7f, 0xda, 0xfb, 0x7a, 0xd3, 0x1e, 0x7c, 0xf4, +0xc1, 0xbd, 0x78, 0x7a, 0xf5, 0x3f, 0xd1, 0xeb, +0x8b, 0x35, 0x71, 0x14, 0x03, 0xd8, 0x45, 0x0b, +0xc0, 0x08, 0xfa, 0xea, 0x7f, 0xe0, 0xad, 0x2e, +0x4b, 0x80, 0xef, 0x73, 0x71, 0x42, 0xc1, 0x51, +0x8a, 0x34, 0x2f, 0xe0, 0xf0, 0x10, 0xd8, 0x0e, +0x02, 0x96, 0x56, 0x13, 0x7a, 0x48, 0x85, 0xa2, +0xa9, 0x31, 0xd0, 0xaa, 0x06, 0xdd, 0xd0, 0x61, +0x18, 0x3a, 0xc6, 0x4d, 0x1d, 0x07, 0x39, 0x4d, +0xc6, 0xba, 0xb7, 0xd6, 0x41, 0xda, 0x07, 0x70, +0x5e, 0x1d, 0x86, 0x93, 0x1d, 0x12, 0x74, 0x7c, +0x2b, 0x05, 0x25, 0xc8, 0x61, 0xb9, 0xf6, 0x2f, +0xb7, 0xdd, 0xb3, 0x63, 0x30, 0xce, 0x61, 0x3d, +0x60, 0xd9, 0x43, 0xeb, 0xed, 0x72, 0x86, 0x70, +0x9a, 0x9c, 0xce, 0x13, 0x06, 0x86, 0x6c, 0xbd, +0x15, 0xb9, 0x72, 0x04, 0x00, 0x10, 0x55, 0x34, +0x30, 0xc6, 0xb0, 0xe4, 0xe6, 0x79, 0xb8, 0xf5, +0xa7, 0x7f, 0x44, 0x67, 0xa7, 0x1f, 0xa7, 0xce, +0x18, 0x0f, 0x80, 0x61, 0x8f, 0xea, 0x40, 0x80, +0xa4, 0x0e, 0x63, 0x7c, 0x18, 0xd6, 0xf8, 0x08, +0xa3, 0x38, 0xfd, 0x03, 0x0b, 0x8e, 0xff, 0x98, +0x47, 0xd1, 0x66, 0x0a, 0xfb, 0x3e, 0x03, 0x34, +0xaa, 0x43, 0x37, 0x0c, 0xe8, 0x7a, 0x0c, 0x74, +0xfc, 0xb9, 0x3d, 0xcb, 0x8e, 0x53, 0x2f, 0x99, +0x09, 0x9b, 0xd3, 0x8a, 0x79, 0xb7, 0xcf, 0x81, +0x44, 0x44, 0x58, 0xb6, 0xea, 0x87, 0x31, 0xbe, +0xfe, 0xb2, 0x70, 0x6f, 0x29, 0x88, 0x68, 0x92, +0x79, 0xf6, 0x70, 0x58, 0x87, 0x55, 0x80, 0xe8, +0x10, 0x5f, 0x76, 0x4f, 0x72, 0xe4, 0xc6, 0xe5, +0x5b, 0xc4, 0x1d, 0x04, 0x21, 0x04, 0x91, 0xa8, +0x86, 0xa9, 0xd3, 0xef, 0xc4, 0x94, 0xc9, 0x25, +0xe8, 0xe8, 0xf2, 0xc3, 0xe5, 0xb4, 0xe3, 0xb1, +0x95, 0xd7, 0xc0, 0x6a, 0x15, 0x11, 0xd0, 0x80, +0x3a, 0xb3, 0x28, 0xd6, 0xec, 0x18, 0x62, 0x7c, +0xfd, 0xb9, 0x4f, 0x26, 0xc1, 0x24, 0x26, 0x0c, +0xd3, 0x00, 0xd1, 0x63, 0x40, 0x63, 0x80, 0x07, +0x3e, 0x64, 0xbb, 0x8c, 0x82, 0x09, 0xf9, 0x68, +0x6d, 0x3a, 0x80, 0xde, 0xde, 0x5e, 0x74, 0x79, +0xba, 0x11, 0xdd, 0x1b, 0x05, 0xaf, 0x09, 0x48, +0xdd, 0xcc, 0xd0, 0x7b, 0xe6, 0xe1, 0x97, 0xca, +0x96, 0x6e, 0x1b, 0xc4, 0x88, 0xf8, 0xf5, 0x4b, +0xb7, 0xff, 0x62, 0xd8, 0x36, 0xfc, 0x10, 0x05, +0x2c, 0x5d, 0xf1, 0x99, 0x4b, 0x4e, 0x13, 0x4e, +0x94, 0x52, 0xb9, 0x84, 0x7c, 0x7b, 0x69, 0x0a, +0x74, 0xca, 0x60, 0xb5, 0x8a, 0x58, 0x7a, 0xfb, +0xb9, 0xc8, 0xce, 0x4e, 0x03, 0x18, 0xf0, 0xcc, +0xd3, 0x37, 0x20, 0x3b, 0x2b, 0x0d, 0x00, 0xd0, +0xa8, 0x3a, 0xa1, 0x70, 0xf2, 0x10, 0xe3, 0x8b, +0x3f, 0x3f, 0x94, 0xf1, 0x79, 0xb2, 0xb5, 0x81, +0xa0, 0x75, 0x23, 0x21, 0x79, 0x5d, 0x37, 0x90, +0xe9, 0xce, 0x40, 0xaa, 0xcb, 0x8e, 0x0b, 0x7e, +0xb6, 0x10, 0x75, 0x9b, 0xea, 0xd0, 0xb1, 0xa7, +0x03, 0xcd, 0xef, 0xed, 0x83, 0x68, 0x0a, 0x48, +0xfb, 0x86, 0x07, 0x63, 0xfd, 0xab, 0xc1, 0x21, +0xab, 0x46, 0x42, 0xe1, 0xde, 0xe9, 0x0e, 0xea, +0xf0, 0x0e, 0x9b, 0xfd, 0x61, 0x09, 0x90, 0x73, +0x53, 0xfe, 0xea, 0xae, 0xb1, 0x67, 0xf5, 0xdf, +0xa6, 0x02, 0xf5, 0xfc, 0x78, 0xac, 0x57, 0xca, +0x71, 0x20, 0x6a, 0xc1, 0x55, 0x57, 0x9e, 0x8e, +0xca, 0xca, 0x02, 0xa4, 0xa7, 0xa7, 0xc0, 0xe1, +0xb0, 0x01, 0x60, 0xe8, 0x56, 0x38, 0x34, 0x90, +0xc2, 0x41, 0x72, 0xef, 0x7f, 0xff, 0xe1, 0x8c, +0xaf, 0x23, 0x57, 0x8b, 0x65, 0x5f, 0x4f, 0x26, +0xa1, 0xff, 0x39, 0xe1, 0x09, 0xe6, 0x5f, 0x37, +0x17, 0x3b, 0x36, 0xec, 0x40, 0x77, 0xbb, 0x17, +0x21, 0x4f, 0x18, 0x9c, 0xc6, 0x43, 0xa0, 0x22, +0x2c, 0x3e, 0x01, 0x29, 0x0d, 0xdc, 0x21, 0x3d, +0x20, 0xbd, 0x25, 0x03, 0x35, 0x52, 0x69, 0xe0, +0xa6, 0x9a, 0x73, 0x4f, 0x1c, 0x11, 0x01, 0x4b, +0xcb, 0x3f, 0x73, 0x71, 0x5f, 0xd2, 0xc9, 0x46, +0xbb, 0x31, 0x20, 0x7b, 0x0c, 0x0c, 0x3d, 0x9c, +0x13, 0x1b, 0x48, 0x0d, 0x36, 0x84, 0xc7, 0xe0, +0xbc, 0xcb, 0xe6, 0xe0, 0x9e, 0x9f, 0x2f, 0x02, +0xfa, 0x40, 0x36, 0xe8, 0x59, 0x30, 0xc1, 0x0f, +0x58, 0xf8, 0x0c, 0x54, 0xc2, 0x70, 0xcb, 0xda, +0xd8, 0x7e, 0x77, 0x9e, 0x09, 0xcd, 0x8c, 0x03, +0x4e, 0xca, 0x7e, 0xdf, 0xf3, 0xbc, 0xd2, 0x5c, +0xdc, 0xbb, 0xe8, 0x57, 0xd8, 0x57, 0xbf, 0x1f, +0x4a, 0x50, 0x81, 0xd2, 0xaa, 0x42, 0x30, 0x05, +0x08, 0xa6, 0x08, 0x81, 0x8a, 0x70, 0x7e, 0x2d, +0x0d, 0x2f, 0x7f, 0x62, 0xa2, 0x6a, 0x77, 0x85, +0xfa, 0xb3, 0x2b, 0x2f, 0x71, 0x97, 0x97, 0x97, +0xbf, 0x5f, 0x57, 0x57, 0xf7, 0xec, 0x7b, 0xef, +0xbd, 0x97, 0x7b, 0x58, 0x02, 0x4c, 0x51, 0x7f, +0x44, 0x5b, 0x6f, 0x3a, 0x5b, 0x97, 0x44, 0xc3, +0x9e, 0x55, 0xc1, 0xa8, 0xe6, 0x35, 0xc1, 0x90, +0xe4, 0xe8, 0x0c, 0x68, 0xe3, 0x0a, 0xf0, 0x99, +0x59, 0x03, 0x7d, 0xec, 0x34, 0x04, 0x34, 0xa0, +0x2d, 0xc2, 0x63, 0x2f, 0x29, 0x18, 0xa1, 0xf1, +0x0d, 0xcd, 0x92, 0x2e, 0x51, 0xf8, 0x5c, 0xc6, +0x90, 0xcc, 0xeb, 0xba, 0x0e, 0x5e, 0xe6, 0x51, +0x7e, 0x52, 0x39, 0xce, 0xbc, 0x76, 0x36, 0xf2, +0x27, 0xe4, 0xa1, 0x7d, 0x83, 0x07, 0x22, 0x15, +0x21, 0x9a, 0x62, 0x1f, 0x09, 0x02, 0xb2, 0x36, +0xd8, 0x86, 0x35, 0xbe, 0x9c, 0x86, 0x3c, 0x9c, +0x54, 0x3c, 0x41, 0x0a, 0x06, 0x82, 0xc8, 0xcb, +0xcb, 0xb3, 0x54, 0x56, 0x56, 0x5e, 0x5b, 0x5e, +0x5e, 0xbe, 0xf5, 0xd5, 0x57, 0x5f, 0x3d, 0x2f, +0x19, 0x73, 0xc2, 0x04, 0xaf, 0x2f, 0x7f, 0xd7, +0x25, 0x30, 0x3a, 0xd7, 0x30, 0x75, 0x18, 0x11, +0x6b, 0x8a, 0xfe, 0xa6, 0x15, 0xe1, 0x35, 0xcc, +0x9f, 0xb2, 0x90, 0xd8, 0x1c, 0xe7, 0x5b, 0x44, +0x22, 0x27, 0x9b, 0x19, 0x41, 0x03, 0x29, 0x46, +0xa3, 0xe6, 0x86, 0x01, 0x1e, 0xf1, 0x8e, 0xef, +0x48, 0x8c, 0x6f, 0x38, 0xa7, 0xf6, 0x8e, 0xa1, +0x70, 0xee, 0x19, 0x98, 0x7d, 0xc6, 0x31, 0x9c, +0x30, 0xef, 0x78, 0xbc, 0xf3, 0xec, 0xbb, 0xe8, +0xee, 0xf4, 0x02, 0x26, 0x62, 0x59, 0x37, 0x05, +0x08, 0x54, 0x80, 0x48, 0x45, 0x08, 0xa6, 0x08, +0xd7, 0x76, 0x19, 0x42, 0x90, 0xc0, 0xb0, 0x27, +0x9d, 0x93, 0x50, 0x54, 0xb6, 0x8f, 0xd3, 0xe7, +0x5d, 0x3a, 0x45, 0x74, 0x38, 0x1c, 0x7d, 0x4a, +0x65, 0x68, 0x6b, 0x69, 0xc9, 0x95, 0x65, 0x79, +0x2a, 0x80, 0xb7, 0x87, 0x28, 0x80, 0x08, 0xfa, +0xaf, 0x03, 0x91, 0xce, 0x9c, 0x88, 0xd9, 0x8b, +0xf8, 0x23, 0xda, 0x1b, 0x4a, 0xf3, 0xbf, 0x60, +0x88, 0xed, 0x37, 0x46, 0x7a, 0x02, 0xef, 0xab, +0x94, 0x1a, 0x03, 0xdd, 0xdd, 0x20, 0x42, 0x12, +0xf8, 0x91, 0x1b, 0xdf, 0x60, 0xa7, 0xee, 0x2d, +0xc2, 0x90, 0xfa, 0x3f, 0xf9, 0xbc, 0xe9, 0x70, +0xe4, 0xd8, 0xe1, 0xc8, 0x77, 0x80, 0x03, 0x41, +0xef, 0xb7, 0xbd, 0x10, 0x68, 0x9f, 0xf4, 0xfb, +0x88, 0x10, 0xa9, 0x00, 0xd1, 0x10, 0x90, 0xfb, +0xb5, 0x7d, 0xc0, 0xf4, 0x5a, 0xfc, 0x6d, 0x31, +0x9b, 0x3b, 0xe1, 0x44, 0x21, 0x0e, 0x1e, 0x00, +0x76, 0xec, 0xd8, 0x01, 0x4f, 0x6b, 0x2b, 0x74, +0x9b, 0xb5, 0x7a, 0x48, 0x09, 0x5c, 0x3f, 0x6d, +0xb3, 0xa8, 0xe9, 0xa1, 0x19, 0x71, 0xe0, 0x61, +0xc3, 0x87, 0x88, 0xe9, 0x4b, 0x10, 0xa1, 0x1c, +0x88, 0x64, 0xfa, 0x1f, 0x37, 0xb9, 0xae, 0x3b, +0x22, 0xde, 0xc8, 0x57, 0xda, 0xd0, 0x3a, 0x3f, +0x42, 0xe3, 0x1b, 0xec, 0xd4, 0xa1, 0x3c, 0x40, +0x11, 0x63, 0xd3, 0x60, 0x41, 0x65, 0x01, 0xa6, +0xcd, 0x9f, 0x8a, 0x86, 0xad, 0x8d, 0xc8, 0x2a, +0x73, 0xc1, 0xe6, 0xb4, 0x20, 0xd2, 0x19, 0x85, +0x60, 0xc6, 0xa4, 0x2f, 0x52, 0x61, 0x00, 0x11, +0xa2, 0x29, 0xa2, 0x60, 0x7d, 0xc6, 0x80, 0x6b, +0x1d, 0xe7, 0x2f, 0x31, 0xce, 0x9c, 0x51, 0x93, +0x68, 0xa1, 0x37, 0x36, 0x34, 0xc0, 0x22, 0x8a, +0x70, 0xba, 0x5c, 0xf0, 0x59, 0xd8, 0x82, 0x5b, +0x3e, 0x7a, 0xf9, 0xb5, 0xeb, 0x9f, 0x79, 0x46, +0x4c, 0x10, 0x90, 0x6e, 0x51, 0x2c, 0x12, 0xb1, +0x95, 0x67, 0xda, 0x0a, 0xb7, 0x19, 0x44, 0xef, +0x4c, 0x56, 0x41, 0x8c, 0x88, 0x18, 0x19, 0x4a, +0xa3, 0xea, 0x0c, 0xde, 0x4f, 0x8d, 0xde, 0xe5, +0x6a, 0x8f, 0x56, 0x9f, 0xec, 0x0f, 0x47, 0x66, +0x7c, 0x43, 0x94, 0x40, 0x4c, 0xf8, 0x8b, 0x63, +0xa3, 0x31, 0x99, 0x89, 0xd9, 0x97, 0xcd, 0x82, +0x35, 0xdd, 0x8a, 0xcf, 0x5f, 0x5f, 0x8b, 0x8d, +0x2f, 0x7d, 0x13, 0x33, 0xbe, 0x41, 0xa0, 0x85, +0x04, 0x11, 0x02, 0xdc, 0xdf, 0x38, 0x11, 0xbf, +0x11, 0x2a, 0xdf, 0x58, 0x41, 0xcf, 0x3f, 0x61, +0xa6, 0x18, 0x07, 0xef, 0xeb, 0xed, 0x45, 0xc0, +0xef, 0x47, 0x7b, 0x5b, 0x1b, 0xdc, 0x45, 0x45, +0x68, 0x93, 0x43, 0x82, 0xc6, 0x14, 0xdf, 0xea, +0xeb, 0xae, 0xd3, 0x13, 0x04, 0xe8, 0x34, 0x24, +0x6a, 0x46, 0x54, 0x54, 0xd5, 0xf0, 0xe4, 0x34, +0x21, 0x27, 0xd5, 0x6e, 0xcb, 0xd9, 0xac, 0xb2, +0x70, 0x38, 0x6c, 0xfa, 0x10, 0x31, 0x06, 0x91, +0xa1, 0xfb, 0x05, 0x75, 0x93, 0x9e, 0x19, 0xfa, +0x39, 0x55, 0x42, 0x2b, 0x35, 0xbf, 0xd1, 0x6e, +0x1e, 0xb1, 0xf1, 0x0d, 0x77, 0xab, 0x1b, 0x1c, +0xc7, 0xc3, 0x55, 0x94, 0x85, 0xf1, 0x27, 0x57, +0xa2, 0x6e, 0x73, 0x3d, 0x72, 0x2b, 0x72, 0xe0, +0xd9, 0xdd, 0x09, 0xad, 0xcb, 0xe8, 0x33, 0x3d, +0x31, 0x01, 0x58, 0x30, 0x05, 0x88, 0xa6, 0x08, +0x2d, 0x8b, 0x61, 0xdf, 0x7c, 0x2f, 0xbe, 0xf8, +0x79, 0x3d, 0x18, 0x28, 0x60, 0x10, 0x94, 0xaa, +0x45, 0xf4, 0x84, 0x49, 0xe5, 0x89, 0xba, 0xff, +0x62, 0xed, 0x5a, 0xd4, 0x4c, 0x99, 0x82, 0x83, +0x6d, 0x6d, 0xd8, 0xa6, 0x76, 0xe2, 0x40, 0xd8, +0xff, 0x05, 0xd9, 0x67, 0xdc, 0x3c, 0xc0, 0x04, +0x99, 0x06, 0x59, 0xa7, 0x51, 0xe8, 0x54, 0x01, +0x4c, 0xd3, 0x06, 0x83, 0x9b, 0x9a, 0x61, 0x29, +0xe8, 0xd6, 0xa1, 0x34, 0x06, 0xa3, 0x1d, 0xd5, +0x06, 0x53, 0x05, 0x91, 0xa9, 0x30, 0xa8, 0x0a, +0x91, 0x53, 0x60, 0x30, 0x05, 0xa2, 0x6a, 0xb3, +0x48, 0x1f, 0x5b, 0x2d, 0xe6, 0x06, 0x2e, 0xc0, +0xcd, 0x35, 0x04, 0x71, 0x21, 0x67, 0x63, 0xf6, +0x91, 0xdc, 0xea, 0xf6, 0x81, 0x1e, 0xe4, 0x09, +0xe1, 0xe3, 0x78, 0x34, 0xfd, 0xa9, 0x09, 0xb5, +0xdf, 0xd4, 0x82, 0x93, 0x38, 0x9c, 0xf6, 0xe3, +0x99, 0xe8, 0xde, 0xe9, 0x85, 0x6c, 0xc8, 0x09, +0xc0, 0x46, 0x3e, 0x07, 0x5f, 0xb5, 0x06, 0x5f, +0x75, 0x10, 0x5d, 0x93, 0x43, 0x08, 0xe6, 0x45, +0x12, 0x4d, 0x0f, 0x4a, 0x28, 0xaa, 0x37, 0x56, +0x1b, 0x57, 0xcc, 0x3e, 0x23, 0x61, 0xec, 0x5b, +0xb6, 0x6c, 0x41, 0x66, 0x5a, 0x1a, 0x1a, 0xeb, +0xeb, 0x91, 0x5a, 0x3a, 0x06, 0x6f, 0xab, 0x4d, +0x4d, 0xbc, 0x4a, 0xaf, 0x8e, 0x67, 0x3f, 0x41, +0x80, 0xa1, 0x6b, 0x16, 0x8d, 0x2a, 0xb0, 0xcb, +0x56, 0x8c, 0x4b, 0x2f, 0xc3, 0xb7, 0x1d, 0xdb, +0x61, 0xa8, 0x9a, 0x8b, 0x27, 0x82, 0x2b, 0xd3, +0x56, 0xd8, 0xa2, 0x98, 0xc1, 0x40, 0x44, 0xed, +0xad, 0x32, 0x88, 0x02, 0x91, 0xa9, 0x30, 0x98, +0x1a, 0xdb, 0x12, 0x05, 0x52, 0xd0, 0xea, 0x10, +0xdf, 0xb0, 0x81, 0x7e, 0x4a, 0xbc, 0x64, 0xa1, +0x61, 0xe7, 0xe6, 0x41, 0x62, 0x62, 0xbf, 0xf1, +0xb1, 0x43, 0x18, 0xdf, 0x60, 0x72, 0x8c, 0x34, +0x82, 0x68, 0x0e, 0x60, 0xee, 0x35, 0xa0, 0x84, +0x15, 0xac, 0x7b, 0x6e, 0x3d, 0x50, 0x68, 0x41, +0xa8, 0x52, 0x46, 0xd7, 0x78, 0x0e, 0xc1, 0xea, +0x28, 0xd4, 0x0c, 0x63, 0x40, 0x07, 0x28, 0xd9, +0xf8, 0x78, 0x85, 0x47, 0x29, 0x2b, 0xc4, 0x71, +0x25, 0xb1, 0x7e, 0x64, 0x73, 0x73, 0x33, 0xda, +0xf7, 0xef, 0xc7, 0xf4, 0x19, 0x33, 0xb0, 0x61, +0xf3, 0x46, 0xfc, 0x23, 0xab, 0x23, 0xc4, 0x7a, +0x8c, 0xe5, 0xab, 0xe7, 0xdd, 0xd0, 0x34, 0x64, +0x1a, 0xd4, 0x4d, 0x6a, 0xd5, 0xcd, 0x08, 0xd2, +0x6d, 0x39, 0x08, 0x6a, 0x01, 0x38, 0x2c, 0xa9, +0x88, 0xe8, 0x51, 0x58, 0x78, 0x01, 0x61, 0xc5, +0x57, 0xc8, 0x71, 0x22, 0xd2, 0x6d, 0x05, 0xf5, +0x51, 0xbd, 0x47, 0x8c, 0xe8, 0xbd, 0xa5, 0x06, +0x53, 0x20, 0x52, 0x05, 0x06, 0xa7, 0x42, 0x67, +0x2a, 0x24, 0xa6, 0x42, 0xf2, 0x5a, 0x9d, 0xe2, +0x9f, 0xac, 0x30, 0x3f, 0x66, 0x9d, 0x74, 0x11, +0x73, 0xe1, 0x54, 0xca, 0xd1, 0xbe, 0x2c, 0x0f, +0x01, 0x7d, 0x88, 0x0e, 0x90, 0x7f, 0x71, 0x3a, +0xb0, 0x0d, 0xd0, 0x8f, 0xcb, 0x84, 0xbf, 0x42, +0x82, 0x61, 0x8b, 0xb7, 0xb5, 0xcc, 0xbe, 0x96, +0xd9, 0xa1, 0x9b, 0xa3, 0x93, 0xbe, 0xa9, 0xd1, +0xaf, 0x3d, 0x67, 0x8e, 0x08, 0x00, 0x7e, 0xbf, +0x1f, 0x91, 0x48, 0x04, 0x86, 0xae, 0x23, 0x18, +0x0e, 0x61, 0x63, 0x66, 0x00, 0x5a, 0xaf, 0xfe, +0xfc, 0x73, 0x67, 0xdd, 0xf0, 0x12, 0x06, 0x45, +0x4c, 0x01, 0x54, 0xe1, 0x18, 0xc7, 0xb0, 0xbd, +0x7b, 0x13, 0x44, 0x4e, 0x46, 0x69, 0x5a, 0x05, +0xdc, 0x76, 0x37, 0x64, 0xde, 0x82, 0x8d, 0xed, +0x5f, 0xc3, 0x42, 0x6c, 0x88, 0x2a, 0x6a, 0x85, +0xc0, 0x5b, 0xa8, 0xc5, 0x9a, 0xf6, 0x6d, 0x48, +0xf5, 0xe6, 0xe8, 0xa6, 0x9a, 0x1b, 0x53, 0x82, +0x02, 0xa3, 0x8f, 0x0c, 0x91, 0xa9, 0x90, 0x5a, +0xac, 0xd9, 0xe2, 0xca, 0x14, 0x6a, 0xfe, 0x53, +0xed, 0x60, 0x97, 0x84, 0x72, 0xe8, 0xa4, 0x43, +0x79, 0xc0, 0xd0, 0x06, 0xa8, 0x51, 0x21, 0xc1, +0xac, 0xc8, 0x44, 0xbc, 0xbf, 0xc7, 0x06, 0xfd, +0xed, 0x50, 0x35, 0xc5, 0x8c, 0x4f, 0x0c, 0xca, +0x28, 0x93, 0x8b, 0x48, 0x5e, 0xb6, 0x13, 0x8c, +0x31, 0x6c, 0xff, 0xf6, 0x5b, 0x58, 0x25, 0x09, +0x25, 0x65, 0x65, 0xf8, 0xc8, 0xb3, 0x13, 0x2d, +0x51, 0xff, 0x9a, 0x88, 0xcf, 0x75, 0xdb, 0x60, +0xf0, 0x09, 0x13, 0xfc, 0xc3, 0xae, 0x4b, 0x76, +0x8a, 0xa2, 0xe5, 0xa6, 0xb4, 0xd4, 0xfc, 0xfd, +0x26, 0x31, 0x51, 0xd7, 0xb3, 0x0d, 0x7b, 0x7c, +0xbb, 0x00, 0x30, 0x54, 0x38, 0x2b, 0x30, 0xde, +0x55, 0x09, 0x91, 0x27, 0x50, 0x8c, 0x10, 0x17, +0x55, 0xfc, 0x93, 0xac, 0xbc, 0x3d, 0x3d, 0xd5, +0xea, 0xdc, 0xac, 0x21, 0xe2, 0x4f, 0x9e, 0x25, +0x92, 0x1e, 0x1c, 0xab, 0x65, 0x39, 0xd6, 0xfb, +0x9c, 0xaa, 0xf4, 0x5b, 0x47, 0x17, 0x9a, 0xb9, +0x01, 0x03, 0x3e, 0x1c, 0x09, 0x83, 0xcb, 0x24, +0xee, 0x17, 0x2c, 0xb1, 0x37, 0xb4, 0x03, 0x54, +0xb3, 0xb5, 0x46, 0xbb, 0x71, 0xe1, 0x7c, 0x01, +0x00, 0xbe, 0x5c, 0xbf, 0x1e, 0x35, 0x35, 0x35, +0xd8, 0x5d, 0x5f, 0x0f, 0x2f, 0xaf, 0x63, 0x3d, +0x6d, 0x6d, 0x94, 0x23, 0xfc, 0x55, 0xaf, 0x5d, +0x74, 0x91, 0x39, 0x1c, 0x01, 0x03, 0xba, 0xc2, +0x84, 0x10, 0x72, 0xf1, 0xd8, 0xc7, 0x96, 0x1b, +0x54, 0xbf, 0x21, 0x18, 0xf6, 0xe4, 0x08, 0x44, +0x84, 0x43, 0x4c, 0xc7, 0x78, 0xe7, 0x64, 0x04, +0x35, 0x3f, 0x42, 0x5a, 0x18, 0x01, 0x2d, 0x00, +0xcd, 0x30, 0xc0, 0x13, 0x01, 0xa2, 0x68, 0xeb, +0x05, 0x87, 0xe6, 0x88, 0xd2, 0x53, 0xc5, 0x13, +0x49, 0x92, 0x38, 0x1b, 0x24, 0x62, 0x85, 0xc8, +0x59, 0x21, 0x71, 0x7d, 0x5b, 0x62, 0x03, 0x2f, +0x8b, 0xc1, 0xe8, 0x19, 0x3e, 0x23, 0x7c, 0x71, +0x57, 0x86, 0xe1, 0x54, 0x31, 0xb0, 0xeb, 0xdb, +0xff, 0xe1, 0xc6, 0xe0, 0xce, 0x6e, 0xfc, 0x58, +0xbc, 0x2b, 0x3c, 0xdc, 0x07, 0x22, 0x56, 0x6f, +0x0a, 0x2e, 0x6e, 0x59, 0x40, 0x97, 0x2c, 0x3e, +0x97, 0x6b, 0x6e, 0x6e, 0x46, 0xfd, 0xae, 0x5d, +0xa8, 0xaa, 0xaa, 0x42, 0xed, 0xee, 0x06, 0xbc, +0x9a, 0xb6, 0x27, 0x40, 0xba, 0xf1, 0xe3, 0xe7, +0xe6, 0xdd, 0xf4, 0xbf, 0xc3, 0x81, 0x1f, 0x42, +0x40, 0x3c, 0xa6, 0x91, 0xeb, 0xc5, 0xd2, 0x92, +0x09, 0xbf, 0xd7, 0x4d, 0xe5, 0xf2, 0x40, 0xa4, +0x3d, 0xdd, 0x2e, 0xa6, 0x21, 0xd7, 0x56, 0x08, +0xbf, 0xd6, 0x8b, 0x89, 0xce, 0xa9, 0xd8, 0xe5, +0xdd, 0x89, 0x90, 0x1e, 0x06, 0x07, 0x1e, 0x3c, +0x11, 0x61, 0x91, 0xec, 0x07, 0x0c, 0x62, 0x78, +0xa3, 0x51, 0xdf, 0x44, 0x89, 0xb3, 0xf4, 0x11, +0x60, 0x83, 0x48, 0x92, 0x88, 0xe0, 0xac, 0x20, +0x76, 0xe2, 0x0d, 0x2e, 0xe8, 0x90, 0x83, 0xe7, +0x76, 0xa6, 0x9a, 0x36, 0xfd, 0x10, 0x2d, 0xf1, +0xc3, 0xb7, 0xb7, 0x07, 0x1f, 0x9b, 0xb9, 0x76, +0x86, 0xf6, 0xf0, 0x55, 0xd7, 0x4b, 0x4a, 0x34, +0x82, 0x8d, 0x1b, 0x36, 0x60, 0xdc, 0xb8, 0x71, +0x68, 0x6a, 0x6a, 0xc2, 0xc7, 0x19, 0x07, 0x59, +0x7b, 0x4f, 0x70, 0xe5, 0xf3, 0x67, 0xdd, 0x72, +0xc7, 0xa1, 0xc0, 0x27, 0x4a, 0x60, 0x70, 0x7c, +0xc3, 0x56, 0xeb, 0xaf, 0xee, 0x5d, 0x72, 0x4b, +0x50, 0x60, 0xc5, 0x4e, 0x47, 0xf1, 0x2b, 0x4c, +0x90, 0x22, 0xf5, 0xbe, 0x6d, 0xe8, 0x88, 0xb4, +0x62, 0x87, 0x77, 0x33, 0x32, 0xac, 0x19, 0xa8, +0x76, 0x55, 0x43, 0xe4, 0x39, 0xe8, 0x34, 0x8a, +0x90, 0xea, 0x75, 0xeb, 0x6a, 0x64, 0xa2, 0xdd, +0xe6, 0x6c, 0xe4, 0x24, 0xae, 0x71, 0x68, 0x49, +0xc4, 0xca, 0x44, 0xf7, 0x2b, 0x4e, 0xfb, 0x2b, +0xb9, 0xa9, 0x39, 0x4b, 0x2a, 0x3b, 0x6c, 0x1f, +0x64, 0xaa, 0xcc, 0x64, 0x49, 0x92, 0x1e, 0xea, +0x15, 0x74, 0x50, 0x97, 0x67, 0xe0, 0x1a, 0x82, +0x22, 0xbd, 0xc5, 0x89, 0x89, 0x59, 0x65, 0x82, +0x28, 0xf0, 0x68, 0x6a, 0x6a, 0x82, 0xa7, 0xb5, +0x15, 0xe9, 0x99, 0x99, 0xa8, 0x95, 0x7a, 0x70, +0x20, 0xe0, 0xfb, 0xb8, 0xe4, 0x2b, 0xef, 0xd2, +0xc3, 0x81, 0x3f, 0xa4, 0x02, 0x06, 0xc7, 0xa2, +0x82, 0x15, 0x05, 0x82, 0x9c, 0xbe, 0x3a, 0xaa, +0x05, 0x7e, 0x10, 0x8c, 0x74, 0x88, 0x84, 0xf0, +0xa8, 0xca, 0x9c, 0x0a, 0x83, 0x1a, 0x70, 0x5a, +0x73, 0x50, 0xdf, 0x53, 0x0b, 0x4a, 0x19, 0x00, +0x02, 0x9e, 0x93, 0x99, 0x2c, 0xa7, 0xec, 0x54, +0xf5, 0x50, 0x06, 0x35, 0xcc, 0x82, 0xfe, 0x52, +0xb0, 0x26, 0x94, 0x21, 0x71, 0x56, 0x88, 0xc4, +0x0a, 0xb5, 0x24, 0x78, 0xa0, 0xeb, 0xd2, 0xbd, +0xb9, 0xc1, 0xe9, 0x9d, 0xfc, 0xb0, 0xf2, 0x4f, +0x28, 0x63, 0x50, 0xc9, 0xf4, 0xa9, 0x62, 0xd6, +0xda, 0x33, 0xb4, 0xdf, 0xfd, 0xe4, 0x3a, 0x69, +0xd3, 0xc6, 0x8d, 0xb0, 0x59, 0x2c, 0x08, 0x05, +0x02, 0xf0, 0x90, 0x28, 0x5e, 0x67, 0xdb, 0x1b, +0x52, 0x3b, 0xf9, 0x59, 0xab, 0x2f, 0xb8, 0xad, +0x7d, 0x54, 0x08, 0x88, 0xc7, 0xc2, 0xd2, 0x5f, +0x57, 0x8b, 0xb0, 0xaf, 0x8a, 0xa8, 0x3d, 0xa7, +0x84, 0xa2, 0xdd, 0x5c, 0x8a, 0xe0, 0xc0, 0x94, +0xac, 0x93, 0x11, 0x31, 0xc2, 0x90, 0x38, 0x19, +0x75, 0x3d, 0xb5, 0x31, 0x12, 0x20, 0x42, 0xe4, +0x2d, 0x9a, 0x24, 0xd9, 0x76, 0x2a, 0x7a, 0xb0, +0x18, 0x14, 0x99, 0x12, 0xb1, 0x25, 0x4a, 0x21, +0x4e, 0x80, 0xc4, 0xd9, 0x20, 0xf2, 0x16, 0x23, +0x54, 0xdd, 0xdd, 0xd1, 0x7e, 0x79, 0x9d, 0x3b, +0x5c, 0xe1, 0xed, 0x07, 0x9b, 0xf4, 0x51, 0xf8, +0x90, 0xd2, 0x20, 0x06, 0x72, 0x1b, 0xdd, 0xec, +0x2a, 0x79, 0x21, 0xa6, 0x96, 0xe6, 0x11, 0x6a, +0x9a, 0xa8, 0xdf, 0xbe, 0x1d, 0x79, 0xe5, 0xa5, +0x58, 0xa9, 0xac, 0xf1, 0x09, 0x5e, 0xfe, 0xca, +0xe7, 0xe7, 0xfe, 0xf4, 0xef, 0x23, 0xc1, 0x74, +0x54, 0xdf, 0x12, 0x3b, 0xbf, 0xe4, 0xc1, 0xd3, +0x79, 0x4e, 0xfa, 0x5d, 0x28, 0xd2, 0x35, 0x45, +0xd1, 0x02, 0x10, 0x88, 0x88, 0x09, 0xce, 0xa9, +0x50, 0x0c, 0x05, 0x69, 0x72, 0x26, 0x76, 0x79, +0xb7, 0x83, 0x87, 0x00, 0x8e, 0x88, 0x90, 0xc4, +0x14, 0xbf, 0xc8, 0xcb, 0x7b, 0x14, 0xcd, 0x3f, +0x81, 0x83, 0x68, 0x49, 0x06, 0x9f, 0xac, 0x0e, +0x41, 0x94, 0x22, 0xde, 0x53, 0x5a, 0x02, 0x07, +0x17, 0xef, 0xca, 0x8d, 0xb8, 0x7d, 0x43, 0x3e, +0x25, 0x1e, 0x6c, 0x96, 0x3f, 0x58, 0x3b, 0x47, +0xfb, 0xe5, 0xe2, 0x8b, 0xa4, 0xcf, 0x3f, 0xfd, +0x14, 0xa7, 0xcc, 0x9c, 0x89, 0x2f, 0xd7, 0xaf, +0xc3, 0x27, 0x6e, 0x0f, 0xed, 0xea, 0x0a, 0x3d, +0xfc, 0xe2, 0x9c, 0x3b, 0xee, 0x1a, 0x29, 0x96, +0x63, 0xfa, 0xa2, 0xe4, 0x05, 0x25, 0xbf, 0x5d, +0x4c, 0xc0, 0xaf, 0x08, 0x44, 0x3c, 0xc7, 0xa9, +0x7a, 0x10, 0xa9, 0x62, 0x3a, 0xa6, 0x66, 0xcf, +0xc0, 0x37, 0x1d, 0xeb, 0xc1, 0x18, 0x01, 0x4f, +0x44, 0xf0, 0x44, 0xe8, 0x33, 0xca, 0xd4, 0x76, +0x8e, 0x17, 0x3a, 0x14, 0x25, 0x34, 0x51, 0x20, +0x32, 0xd7, 0xaf, 0x04, 0xdb, 0x40, 0xa3, 0xb4, +0x90, 0xde, 0xf6, 0x79, 0x0d, 0xb4, 0x6d, 0xd1, +0x4e, 0xa7, 0x96, 0x16, 0x1a, 0xd6, 0xf8, 0x8a, +0x77, 0x8c, 0xa3, 0x37, 0xb8, 0x17, 0x41, 0x56, +0x7d, 0x9c, 0x2b, 0x23, 0x03, 0x01, 0xbf, 0x1f, +0x9b, 0x24, 0x0f, 0xbe, 0x0e, 0xb7, 0xbc, 0xff, +0xf2, 0xec, 0xa5, 0x67, 0xb3, 0xf8, 0x77, 0x34, +0x47, 0x10, 0xc7, 0xf4, 0x45, 0xc9, 0xbf, 0x35, +0x2f, 0xfb, 0xeb, 0x1b, 0xcd, 0x4b, 0xcb, 0xd3, +0x6c, 0x39, 0xb7, 0x39, 0xd3, 0x4a, 0x5b, 0xa3, +0x2c, 0x8a, 0x75, 0xed, 0xef, 0x23, 0x6a, 0x06, +0xa1, 0xb1, 0x08, 0x34, 0x1a, 0x7b, 0xa8, 0x34, +0x8c, 0x90, 0xda, 0x93, 0x17, 0x8e, 0xf6, 0x4c, +0x96, 0x65, 0x5b, 0x33, 0x27, 0x71, 0x75, 0xfd, +0xe6, 0x38, 0xd0, 0x2c, 0xb5, 0x88, 0x92, 0x91, +0xf7, 0x66, 0x85, 0x73, 0xca, 0x2d, 0x0b, 0x3d, +0xf9, 0x6f, 0x8c, 0x0f, 0x40, 0xe5, 0x06, 0x18, +0x1f, 0x85, 0x89, 0x0a, 0x7f, 0x99, 0x91, 0x9b, +0xc2, 0x71, 0x07, 0xf7, 0xef, 0xc7, 0xd8, 0xb2, +0x32, 0xec, 0x56, 0x3a, 0xb0, 0xce, 0x68, 0xda, +0x25, 0xf7, 0xc8, 0x57, 0x1e, 0x09, 0x78, 0x60, +0x14, 0x7f, 0x2f, 0x40, 0x08, 0x21, 0x17, 0x14, +0x3f, 0x7c, 0x3f, 0x65, 0xfa, 0xb5, 0xde, 0xd0, +0xfe, 0x2c, 0x4a, 0x4d, 0xf0, 0x88, 0x65, 0x9f, +0xeb, 0x53, 0x01, 0x4f, 0x62, 0x65, 0x21, 0x10, +0x11, 0x36, 0x4b, 0xe6, 0x4e, 0xc3, 0xd4, 0x1c, +0xd4, 0xd0, 0x0b, 0x25, 0xce, 0x36, 0xc8, 0x28, +0xad, 0x10, 0xfb, 0xd6, 0x14, 0x91, 0x3c, 0x7f, +0x5b, 0xd3, 0xe2, 0x0d, 0xae, 0xf6, 0x59, 0x75, +0x16, 0x83, 0xd3, 0x51, 0xb1, 0xb9, 0xca, 0xf8, +0x51, 0xde, 0x6c, 0x7e, 0x8c, 0x33, 0x85, 0x74, +0x1e, 0x3c, 0x08, 0xc9, 0x95, 0x86, 0xc7, 0xf1, +0x69, 0x8f, 0xd8, 0x21, 0x5c, 0xf6, 0xd2, 0xd9, +0xcb, 0x3e, 0xfc, 0xee, 0x91, 0x7e, 0x4f, 0x04, +0xc4, 0x63, 0x3e, 0x59, 0x22, 0xdb, 0x4a, 0x8a, +0x1e, 0xd7, 0xcc, 0xc8, 0xe2, 0x9e, 0xd0, 0x7e, +0x07, 0xa3, 0x48, 0x94, 0x41, 0x9c, 0x80, 0xf8, +0xbe, 0x40, 0x64, 0x23, 0xc5, 0x9a, 0xb9, 0x5d, +0x37, 0x94, 0x31, 0xcc, 0xa0, 0x59, 0x09, 0xe0, +0x09, 0x9f, 0x48, 0xac, 0x23, 0xa8, 0xaf, 0xac, +0xbd, 0xb5, 0xe1, 0x87, 0x9f, 0x17, 0x9c, 0x14, +0x9e, 0x44, 0xcf, 0xae, 0x1e, 0x27, 0x86, 0x7d, +0x3e, 0xb8, 0xf2, 0x73, 0xb1, 0x5a, 0xfd, 0xdc, +0xec, 0xf1, 0x46, 0x1e, 0x78, 0x65, 0xce, 0x5d, +0xf7, 0x1e, 0xcd, 0x78, 0x47, 0x9d, 0x80, 0x78, +0x2c, 0x28, 0xba, 0x29, 0xc3, 0x22, 0x96, 0xae, +0x56, 0x54, 0xff, 0x82, 0x9e, 0x50, 0xab, 0x95, +0x80, 0xf4, 0x81, 0xef, 0x27, 0x80, 0xeb, 0x53, +0x88, 0x2c, 0x58, 0x43, 0xb2, 0xe4, 0xa8, 0x37, +0x74, 0xb5, 0x82, 0x30, 0x2e, 0x35, 0x99, 0x80, +0x38, 0x21, 0x12, 0xb1, 0xc2, 0x36, 0x8e, 0xf6, +0x56, 0x5d, 0xd3, 0x93, 0x71, 0xce, 0xc2, 0x39, +0x78, 0xf3, 0xb5, 0xd7, 0x70, 0xb0, 0x42, 0xc4, +0x06, 0x7f, 0xd3, 0x3b, 0x7f, 0x9d, 0x7d, 0xf7, +0xb9, 0x47, 0x3b, 0xce, 0xef, 0x8d, 0x80, 0x78, +0x9c, 0x3d, 0xf6, 0x9e, 0x22, 0x2b, 0xd2, 0x9f, +0x09, 0x6b, 0x3d, 0xb3, 0x7a, 0x43, 0x6d, 0x22, +0x47, 0xf8, 0x81, 0x65, 0x91, 0x54, 0x26, 0x16, +0xd1, 0xd1, 0x29, 0x4b, 0xd6, 0x03, 0xba, 0xaa, +0x55, 0xf3, 0x10, 0x85, 0xe4, 0x59, 0x42, 0xe2, +0xad, 0xa8, 0xba, 0x5a, 0xd4, 0xaa, 0x4e, 0x93, +0x25, 0x87, 0xc3, 0x81, 0xda, 0x60, 0x2b, 0x5e, +0xc7, 0xd6, 0x1d, 0x72, 0x40, 0x3a, 0xed, 0xa5, +0xb3, 0xef, 0xea, 0x3d, 0xda, 0xf1, 0x7d, 0xef, +0x04, 0xc4, 0x63, 0xbe, 0xfb, 0xde, 0x1a, 0x8b, +0x94, 0xba, 0x2a, 0xa4, 0x76, 0x4e, 0xf7, 0x47, +0x3c, 0x24, 0x99, 0x80, 0xe4, 0xb2, 0xe0, 0x89, +0x00, 0x9b, 0x9c, 0xd1, 0x2c, 0xf1, 0xb6, 0xb0, +0xa6, 0x85, 0xab, 0x04, 0x58, 0x20, 0x71, 0x36, +0x8c, 0x9b, 0xe9, 0x0a, 0x54, 0x9f, 0xcf, 0x1c, +0xa7, 0xcd, 0x9e, 0x89, 0x2f, 0x36, 0xae, 0xc7, +0xf3, 0xae, 0x2d, 0xdd, 0xb6, 0x4e, 0xe9, 0xe2, +0x97, 0xce, 0xbe, 0x7b, 0xcd, 0xb1, 0x8c, 0xeb, +0x98, 0x66, 0x81, 0x23, 0x89, 0xf7, 0x0e, 0xdc, +0xb7, 0xf5, 0x6f, 0xcd, 0x77, 0x9e, 0x2c, 0x8a, +0x8e, 0x39, 0x79, 0x19, 0x55, 0xdb, 0xad, 0x72, +0x5a, 0x6c, 0x96, 0x60, 0x11, 0x68, 0x34, 0xdc, +0x37, 0x63, 0x84, 0x61, 0x49, 0x35, 0x71, 0xd2, +0x74, 0x47, 0x49, 0xf5, 0x24, 0xa9, 0x8a, 0x13, +0x85, 0x5a, 0x88, 0x6c, 0xaf, 0xc2, 0x02, 0x28, +0x9f, 0x99, 0x65, 0xe3, 0x39, 0x03, 0x1d, 0x5d, +0x1d, 0x78, 0x27, 0x6b, 0x97, 0x29, 0x79, 0xf9, +0xc7, 0x8e, 0x15, 0x3c, 0xf0, 0x2f, 0x54, 0xc0, +0xe0, 0x38, 0x77, 0xec, 0xfd, 0x57, 0x70, 0x14, +0xcb, 0x7b, 0x22, 0x6d, 0xa5, 0x51, 0xd5, 0x07, +0x9e, 0x88, 0x10, 0x79, 0x01, 0x0b, 0x2f, 0x9e, +0x84, 0x68, 0x77, 0x18, 0x02, 0x15, 0xb1, 0xa7, +0x29, 0x8a, 0x03, 0x07, 0x55, 0xb3, 0xa2, 0x66, +0xe2, 0x81, 0x0b, 0xef, 0xce, 0x2f, 0x4c, 0xb1, +0xa7, 0xe0, 0x3d, 0x7d, 0x2b, 0xb6, 0x85, 0xda, +0xde, 0x7c, 0x6d, 0xf6, 0xf2, 0x0b, 0x46, 0x63, +0x1c, 0xff, 0x32, 0x05, 0x0c, 0x8e, 0xbf, 0xef, +0xfd, 0xc5, 0x8b, 0x6f, 0xed, 0xfb, 0xc5, 0xb8, +0x8c, 0xd4, 0x31, 0x77, 0xe6, 0x65, 0x4c, 0x38, +0xc0, 0xf3, 0x02, 0xa2, 0x46, 0x04, 0x9f, 0xbd, +0x51, 0x87, 0xee, 0xfd, 0x5e, 0xa8, 0x69, 0x0a, +0xc6, 0x4e, 0xb4, 0x82, 0x97, 0xa2, 0x7c, 0x9a, +0x1b, 0x8e, 0x7d, 0x4d, 0xbb, 0xd1, 0x8c, 0x6e, +0x6c, 0x54, 0xf7, 0x6e, 0x93, 0x34, 0x5c, 0x35, +0x5a, 0xe3, 0xf8, 0xb7, 0x11, 0x10, 0x8f, 0xb7, +0xf7, 0xde, 0xfd, 0xf0, 0x3b, 0xfb, 0xcd, 0xc2, +0x9c, 0xb4, 0xb2, 0x47, 0x72, 0xd3, 0xca, 0xbd, +0x9d, 0x7a, 0x18, 0x5a, 0x83, 0x15, 0xf8, 0x87, +0x88, 0x9d, 0x9f, 0xb4, 0x20, 0x10, 0x0d, 0x22, +0x35, 0x53, 0xe6, 0xd2, 0x8b, 0xf3, 0xf0, 0x9c, +0xfe, 0x49, 0xa7, 0x14, 0x90, 0x6e, 0xfd, 0xcb, +0xbc, 0xe5, 0xa3, 0xf6, 0xfb, 0xa2, 0x7f, 0x5b, +0x09, 0x0c, 0x17, 0x27, 0x8f, 0xb9, 0xc3, 0x9a, +0x2d, 0x64, 0xad, 0x32, 0x8c, 0xc8, 0x85, 0xe1, +0x40, 0x9b, 0x3d, 0x80, 0x30, 0x78, 0x22, 0x60, +0xe1, 0x35, 0xe7, 0xf9, 0x1b, 0x2e, 0x6b, 0x48, +0x8d, 0x78, 0x8d, 0xbb, 0x5f, 0x9f, 0x73, 0xdf, +0x43, 0xa3, 0x79, 0xcd, 0xff, 0x28, 0x02, 0xe2, +0x71, 0xa6, 0xe3, 0x16, 0x67, 0xaa, 0xd3, 0xfd, +0x87, 0xa8, 0xee, 0x9f, 0xdb, 0x15, 0xdc, 0x6d, +0x19, 0x3b, 0xfb, 0xf8, 0xed, 0xe6, 0x4d, 0x81, +0xfa, 0x37, 0xcf, 0x7c, 0xe0, 0x92, 0xd1, 0xbe, +0xd6, 0xa8, 0xfe, 0x78, 0x7a, 0xb4, 0xe2, 0xe3, +0xc0, 0x93, 0x5e, 0x00, 0xe7, 0xcf, 0x2e, 0xbc, +0xb3, 0xb4, 0x28, 0x73, 0xda, 0x33, 0x56, 0x92, +0x6e, 0x23, 0xed, 0xc2, 0x35, 0xdf, 0xf9, 0xc6, +0xa3, 0x88, 0xff, 0x48, 0x05, 0xfc, 0x2b, 0xe3, +0xff, 0x00, 0x37, 0xa7, 0xb9, 0x85, 0x81, 0xbd, +0xe2, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, +0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/bigimgs/appicon64.png b/source/bitmaps/bigimgs/appicon64.png new file mode 100644 index 0000000000000000000000000000000000000000..a304dd3a5f3f7fa46f68dc1b16cd5c347179eafb GIT binary patch literal 5918 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 ADF6Tf literal 0 HcmV?d00001 diff --git a/source/bitmaps/bigimgs/contactpersonicon.cpp b/source/bitmaps/bigimgs/contactpersonicon.cpp new file mode 100644 index 0000000..318cbe1 --- /dev/null +++ b/source/bitmaps/bigimgs/contactpersonicon.cpp @@ -0,0 +1,7828 @@ +#include + +#ifndef BIGIMGS_CONTACTPERSONICON_CPP +#define BIGIMGS_CONTACTPERSONICON_CPP + +static unsigned char bigimgs_contactpersonicon_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, +0x08, 0x06, 0x00, 0x00, 0x00, 0xf4, 0x78, 0xd4, +0xfa, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x20, 0x00, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xec, 0xbd, 0x69, +0x70, 0x5c, 0xd7, 0x79, 0xa7, 0xff, 0x3b, 0xe7, +0x2e, 0xdd, 0x8d, 0xc6, 0x42, 0x00, 0x14, 0x41, +0x82, 0x0b, 0x00, 0x2e, 0x12, 0x09, 0x70, 0x05, +0x25, 0x6b, 0xb5, 0xf6, 0x95, 0xda, 0xa8, 0x85, +0xda, 0x28, 0x6a, 0xdf, 0x52, 0xf3, 0x9f, 0x0f, +0xb3, 0xa4, 0x66, 0xe6, 0x43, 0xca, 0xe3, 0xca, +0xe4, 0x4b, 0x6a, 0xe6, 0x43, 0xa6, 0x92, 0x9a, +0xaa, 0x78, 0x26, 0xf1, 0x38, 0xb6, 0x63, 0x97, +0x14, 0xcb, 0x89, 0x53, 0xb1, 0x27, 0x5e, 0x12, +0x57, 0x25, 0xce, 0x4c, 0xe2, 0x25, 0x92, 0x05, +0x5a, 0x96, 0x2d, 0x12, 0x60, 0x48, 0x8a, 0x92, +0xb8, 0x83, 0x40, 0x2f, 0xf7, 0x9e, 0x73, 0xfe, +0x1f, 0x70, 0xcf, 0xe5, 0xe9, 0xdb, 0xb7, 0x81, +0x0b, 0xa0, 0x1b, 0xbd, 0xe0, 0x7d, 0xaa, 0xba, +0xba, 0xd1, 0xa0, 0xc0, 0x7b, 0x2f, 0x85, 0xfe, +0x3d, 0xf7, 0x3d, 0xef, 0x39, 0x87, 0x29, 0xa5, +0x40, 0x10, 0xc4, 0xc2, 0x60, 0x8c, 0xb1, 0x5a, +0xff, 0x1d, 0x8a, 0x7e, 0x49, 0x09, 0x82, 0xa8, +0x01, 0x8c, 0x3e, 0x5b, 0x08, 0x62, 0x6e, 0x92, +0x04, 0x7d, 0x35, 0x7f, 0x97, 0x92, 0x78, 0x05, +0x89, 0x01, 0x41, 0x10, 0x8b, 0x81, 0x04, 0x80, +0x20, 0x62, 0x98, 0x2b, 0xf0, 0xeb, 0xf1, 0x7b, +0x33, 0x97, 0x14, 0x90, 0x10, 0x10, 0x04, 0x31, +0x1f, 0x48, 0x00, 0x08, 0x22, 0x60, 0x31, 0xa1, +0xff, 0xf9, 0xcf, 0x7f, 0xbe, 0xea, 0x43, 0x01, +0x9f, 0xfb, 0xdc, 0xe7, 0x2a, 0xfe, 0x85, 0x24, +0x03, 0x04, 0x41, 0x2c, 0x16, 0x12, 0x00, 0x62, +0x59, 0xb3, 0x90, 0xd0, 0x5f, 0x48, 0xd8, 0x8f, +0x8d, 0x8d, 0x95, 0xfd, 0x37, 0x23, 0x23, 0x23, +0xf3, 0xfe, 0xe5, 0x8b, 0x93, 0x02, 0x92, 0x01, +0x82, 0x20, 0x16, 0x02, 0x09, 0x00, 0xb1, 0x2c, +0x99, 0x2d, 0xf8, 0xe7, 0x1b, 0xfa, 0xd1, 0x70, +0x3f, 0x70, 0xe0, 0xc0, 0x82, 0x8f, 0xeb, 0xcd, +0x37, 0xdf, 0x2c, 0xf9, 0x7a, 0x36, 0x49, 0x98, +0xaf, 0x0c, 0x90, 0x08, 0x10, 0x04, 0x61, 0x42, +0x02, 0x40, 0x2c, 0x2b, 0xe6, 0x13, 0xfc, 0x95, +0x42, 0xdf, 0x0c, 0xfc, 0x68, 0xd8, 0x1f, 0x3e, +0x7c, 0x78, 0xd1, 0x43, 0x01, 0xc3, 0xc3, 0xc3, +0x25, 0x07, 0x62, 0x4a, 0x41, 0x25, 0x21, 0x88, +0xca, 0x00, 0x89, 0x00, 0x41, 0x10, 0x73, 0x41, +0x02, 0x40, 0x2c, 0x0b, 0x92, 0x06, 0xff, 0x7c, +0x42, 0x3f, 0x2e, 0xec, 0x4f, 0x9e, 0x3c, 0xb9, +0x68, 0x01, 0xe8, 0xef, 0xef, 0x2f, 0xfb, 0xa5, +0xd4, 0x52, 0x30, 0x5f, 0x19, 0x20, 0x11, 0x20, +0x08, 0xa2, 0x12, 0x24, 0x00, 0x44, 0x4b, 0x93, +0x74, 0x8c, 0x3f, 0x2e, 0xf8, 0x93, 0x84, 0xbe, +0x19, 0xf8, 0x7b, 0xf7, 0xee, 0xc5, 0x47, 0x1f, +0x7d, 0xb4, 0x68, 0x01, 0x58, 0xb3, 0x66, 0x8d, +0xfa, 0xc9, 0x4f, 0x7e, 0x12, 0x7e, 0x1d, 0x15, +0x82, 0xa4, 0x32, 0x40, 0x22, 0x40, 0x10, 0xc4, +0x6c, 0x90, 0x00, 0x10, 0x2d, 0x4b, 0x92, 0xbb, +0xfe, 0x24, 0xc1, 0x6f, 0x86, 0xfe, 0x6c, 0x81, +0x7f, 0xe6, 0xcc, 0x99, 0xb2, 0x9f, 0x35, 0x39, +0x39, 0x59, 0xf2, 0xde, 0xe0, 0xe0, 0x20, 0xc6, +0xc7, 0xc7, 0x4b, 0xfe, 0x4c, 0x47, 0x47, 0x47, +0xd9, 0x2f, 0x61, 0x6f, 0x6f, 0x6f, 0xc9, 0x7b, +0x27, 0x4f, 0x9e, 0x0c, 0xbf, 0x36, 0x85, 0x60, +0x78, 0x78, 0x58, 0x25, 0x15, 0x01, 0x92, 0x00, +0x82, 0x20, 0x4c, 0x48, 0x00, 0x88, 0x96, 0xa3, +0x1a, 0xc1, 0x3f, 0x32, 0x32, 0x12, 0x1b, 0xfa, +0xfd, 0xfd, 0xfd, 0xb1, 0x81, 0x3f, 0x39, 0x39, +0xc9, 0x06, 0x07, 0x07, 0xc3, 0x9f, 0x75, 0xe1, +0xc2, 0x85, 0x79, 0x57, 0x02, 0xba, 0xba, 0xba, +0xc2, 0x5f, 0xc6, 0xf1, 0xf1, 0xf1, 0x12, 0x31, +0x30, 0x85, 0xa0, 0x92, 0x0c, 0x8c, 0x8d, 0x8d, +0x85, 0xaf, 0x49, 0x04, 0x08, 0x82, 0x98, 0x0b, +0x12, 0x00, 0xa2, 0xa5, 0x58, 0x48, 0xf8, 0xcf, +0x15, 0xfc, 0xe7, 0xce, 0x9d, 0x63, 0x23, 0x23, +0x23, 0x00, 0x2e, 0x87, 0xbe, 0x19, 0xf8, 0x3a, +0xec, 0xa7, 0xa6, 0xa6, 0x4a, 0x7e, 0x6e, 0x67, +0x67, 0x67, 0x62, 0x09, 0xb8, 0x78, 0xf1, 0x62, +0xc9, 0x2f, 0x62, 0x36, 0x9b, 0x55, 0xc0, 0x65, +0x29, 0x30, 0x85, 0x40, 0xcb, 0xc0, 0xd8, 0xd8, +0x18, 0xba, 0xbb, 0xbb, 0x15, 0x90, 0x5c, 0x04, +0x48, 0x02, 0x08, 0x82, 0xd0, 0x90, 0x00, 0x10, +0x2d, 0x43, 0xa5, 0xf0, 0x5f, 0x6c, 0xf0, 0x47, +0x43, 0x3f, 0x1a, 0xf8, 0xb9, 0x5c, 0x8e, 0xf5, +0xf5, 0xf5, 0x01, 0x00, 0xa6, 0xa7, 0xa7, 0xc3, +0x9f, 0x93, 0xcf, 0xe7, 0x13, 0x0b, 0x40, 0x3a, +0x9d, 0x0e, 0x7f, 0x11, 0xdb, 0xda, 0xda, 0x14, +0x00, 0x7c, 0xfc, 0xf1, 0xc7, 0xc8, 0x64, 0x32, +0x0a, 0x28, 0x15, 0x82, 0x38, 0x19, 0xd0, 0x55, +0x81, 0x6a, 0x89, 0x00, 0x49, 0x00, 0x41, 0xb4, +0x3e, 0x24, 0x00, 0x44, 0x4b, 0xb0, 0xd0, 0xf0, +0x37, 0xc7, 0xf8, 0x93, 0x04, 0xbf, 0x0e, 0x7d, +0x7d, 0x77, 0xaf, 0x03, 0x5f, 0x87, 0x7d, 0x36, +0x9b, 0x65, 0x00, 0x50, 0x28, 0x14, 0xca, 0x8e, +0xa7, 0x58, 0x2c, 0x86, 0xef, 0xb9, 0xae, 0x5b, +0xf6, 0x8b, 0x97, 0x4a, 0xa5, 0x14, 0x00, 0x4c, +0x4d, 0x4d, 0x29, 0xe0, 0xb2, 0x14, 0x68, 0x21, +0xd0, 0x55, 0x82, 0x6c, 0x36, 0xab, 0x92, 0x8a, +0x80, 0xd9, 0x23, 0x40, 0x12, 0x40, 0x10, 0x84, +0x09, 0x09, 0x00, 0xd1, 0xf4, 0xcc, 0x16, 0xfe, +0x49, 0xee, 0xfa, 0x67, 0x0b, 0xfe, 0xee, 0xee, +0xee, 0xf0, 0x6e, 0x5f, 0xdf, 0xe9, 0x4f, 0x4f, +0x4f, 0x33, 0x33, 0xf0, 0x75, 0xd8, 0xeb, 0x80, +0xcf, 0x64, 0x32, 0xe1, 0xdf, 0x61, 0x86, 0x7e, +0x25, 0x4c, 0x19, 0xc8, 0xe5, 0x72, 0xca, 0x7c, +0x2f, 0x95, 0x4a, 0x29, 0x53, 0x08, 0xda, 0xda, +0xda, 0x94, 0xae, 0x0c, 0xe8, 0xaa, 0xc0, 0xb9, +0x73, 0xe7, 0x94, 0x29, 0x02, 0x71, 0x43, 0x03, +0x73, 0x55, 0x03, 0x68, 0x48, 0x80, 0x20, 0x96, +0x1f, 0x24, 0x00, 0x44, 0xd3, 0x52, 0xcd, 0xbb, +0xfe, 0xfe, 0xfe, 0x7e, 0x36, 0x5b, 0xf0, 0x77, +0x74, 0x74, 0x84, 0x77, 0xfa, 0x3a, 0xf4, 0xcd, +0xc0, 0xd7, 0xaf, 0x3d, 0xcf, 0x63, 0x00, 0x90, +0x4e, 0xa7, 0x4b, 0xbe, 0x9e, 0x0d, 0xc7, 0x71, +0x54, 0xf0, 0xb3, 0x95, 0xf9, 0xb5, 0xeb, 0xba, +0xca, 0x14, 0x82, 0x38, 0x19, 0xb8, 0x78, 0xf1, +0xe2, 0x9c, 0x22, 0x10, 0x37, 0x2c, 0x40, 0xd5, +0x00, 0x82, 0x20, 0x48, 0x00, 0x88, 0xa6, 0x64, +0x3e, 0xe1, 0x9f, 0xf4, 0xae, 0xbf, 0x52, 0xf0, +0xe7, 0xf3, 0x79, 0x56, 0x28, 0x14, 0x98, 0x2e, +0xef, 0x17, 0x8b, 0x45, 0xa6, 0x43, 0xdf, 0xf3, +0x3c, 0x66, 0x86, 0xbd, 0xef, 0xfb, 0x0c, 0x00, +0x52, 0xa9, 0x14, 0x03, 0x00, 0xfd, 0xf5, 0x6c, +0xd8, 0xb6, 0xad, 0x00, 0xa0, 0x50, 0x28, 0x28, +0xfd, 0xb5, 0x29, 0x05, 0x8e, 0xe3, 0x28, 0x2d, +0x03, 0xba, 0x32, 0x30, 0x35, 0x35, 0xa5, 0x52, +0xa9, 0x94, 0x4a, 0x22, 0x02, 0xd1, 0x61, 0x81, +0x4a, 0xd5, 0x00, 0x92, 0x00, 0x82, 0x58, 0x5e, +0x90, 0x00, 0x10, 0x4d, 0x47, 0x35, 0xc2, 0x3f, +0x1a, 0xfc, 0x00, 0xd0, 0xdd, 0xdd, 0xcd, 0x2a, +0x05, 0x7f, 0xb1, 0x58, 0x64, 0x3a, 0xf8, 0x75, +0xe8, 0xeb, 0xc0, 0xf7, 0x7d, 0x9f, 0x65, 0xb3, +0x59, 0xe8, 0xd7, 0xbe, 0xef, 0xb3, 0xb6, 0xb6, +0xb6, 0x92, 0xf0, 0x17, 0x42, 0x94, 0x1d, 0xb3, +0x65, 0x59, 0xe1, 0x2f, 0x9f, 0x6d, 0xdb, 0x6a, +0x7a, 0x7a, 0x1a, 0xb6, 0x6d, 0x2b, 0xfd, 0x98, +0x9a, 0x9a, 0x0a, 0xbf, 0x76, 0x1c, 0x47, 0xc5, +0xc9, 0x80, 0x29, 0x02, 0x93, 0x93, 0x93, 0x4a, +0x0f, 0x0d, 0x9c, 0x3b, 0x77, 0x4e, 0x01, 0x33, +0x6b, 0x0c, 0xc4, 0x55, 0x03, 0x2a, 0xf5, 0x06, +0x90, 0x04, 0x10, 0xc4, 0xf2, 0x81, 0x04, 0x80, +0x68, 0x2a, 0x16, 0x12, 0xfe, 0x71, 0x77, 0xfd, +0xab, 0x57, 0xaf, 0x2e, 0x29, 0xf7, 0xcf, 0x16, +0xfc, 0xd1, 0xbb, 0xfd, 0x5c, 0x2e, 0xc7, 0x7d, +0xdf, 0x67, 0xa9, 0x54, 0x2a, 0x0c, 0x7c, 0xd7, +0x75, 0x99, 0x10, 0x82, 0xe9, 0xa0, 0x77, 0x5d, +0xb7, 0xa4, 0x02, 0x20, 0xa5, 0x2c, 0x3b, 0x6e, +0xce, 0x79, 0x78, 0xc7, 0x0f, 0x00, 0xc5, 0x62, +0x51, 0x01, 0x33, 0x62, 0x60, 0x59, 0x96, 0x2a, +0x16, 0x8b, 0xa1, 0x0c, 0x14, 0x0a, 0x85, 0xf0, +0xb5, 0x10, 0x42, 0xce, 0x47, 0x04, 0x74, 0x35, +0xe0, 0xd4, 0xa9, 0x53, 0xaa, 0x52, 0x6f, 0xc0, +0x7c, 0xfa, 0x02, 0x48, 0x02, 0x08, 0xa2, 0x35, +0x20, 0x01, 0x20, 0x9a, 0x86, 0x85, 0x34, 0xfb, +0x45, 0xc3, 0x5f, 0x8f, 0xf5, 0x47, 0xef, 0xfa, +0x3b, 0x3b, 0x3b, 0x99, 0x6e, 0xee, 0xb3, 0x6d, +0x9b, 0x9b, 0xc1, 0x3f, 0x3d, 0x3d, 0xcd, 0xd3, +0xe9, 0x34, 0xd3, 0xa1, 0x9f, 0xcf, 0xe7, 0x79, +0x34, 0xf4, 0x39, 0xe7, 0x1c, 0x98, 0x09, 0x7a, +0x21, 0x04, 0x73, 0x1c, 0x87, 0x01, 0x97, 0xef, +0xfc, 0xe3, 0x04, 0x00, 0xb8, 0x2c, 0x01, 0x96, +0x65, 0x29, 0xcf, 0xf3, 0x94, 0x65, 0x59, 0x4a, +0xbf, 0x27, 0xa5, 0x94, 0x71, 0x32, 0x20, 0x84, +0x90, 0xb6, 0x6d, 0xab, 0x7c, 0x3e, 0xaf, 0xda, +0xda, 0xda, 0x64, 0x54, 0x04, 0xba, 0xba, 0xba, +0x64, 0xa5, 0x61, 0x81, 0xd9, 0x86, 0x04, 0x48, +0x02, 0x08, 0x62, 0x79, 0x41, 0x02, 0x40, 0x34, +0x05, 0x8b, 0x0d, 0xff, 0xb8, 0xb1, 0xfe, 0xe8, +0x5d, 0xbf, 0x6e, 0xee, 0xbb, 0x74, 0xe9, 0x12, +0xd7, 0xa5, 0x7e, 0xcb, 0xb2, 0xb8, 0xef, 0xfb, +0xe1, 0x33, 0xe7, 0x9c, 0x9b, 0xa1, 0xaf, 0x03, +0x5f, 0xbf, 0x96, 0x52, 0xb2, 0x54, 0x2a, 0x05, +0x21, 0x04, 0xd3, 0x5f, 0xeb, 0xe3, 0x32, 0x5f, +0xeb, 0x90, 0xd7, 0xaf, 0xf5, 0xd7, 0xbe, 0xef, +0x2b, 0xfd, 0xb5, 0xeb, 0xba, 0xd2, 0xf3, 0x3c, +0xc5, 0x39, 0x57, 0xa6, 0x0c, 0x48, 0x29, 0x65, +0x9c, 0x08, 0x68, 0x09, 0xe8, 0xe8, 0xe8, 0x90, +0x53, 0x53, 0x53, 0x15, 0xab, 0x01, 0x71, 0x43, +0x02, 0x0b, 0xe9, 0x0b, 0x20, 0x09, 0x20, 0x88, +0xe6, 0x86, 0x04, 0x80, 0x68, 0x78, 0x6a, 0x1d, +0xfe, 0x17, 0x2e, 0x5c, 0xe0, 0xba, 0xdc, 0x6f, +0x59, 0x16, 0x9f, 0x2d, 0xf8, 0x2d, 0xcb, 0xe2, +0xc5, 0x62, 0x91, 0x9b, 0xa1, 0xef, 0x38, 0x0e, +0xf3, 0x3c, 0x8f, 0x4b, 0x29, 0x99, 0x6d, 0xdb, +0x61, 0xf0, 0xeb, 0xc0, 0xb7, 0x6d, 0xbb, 0x44, +0x02, 0xcc, 0xf0, 0xf7, 0x7d, 0x5f, 0x01, 0x97, +0x25, 0x80, 0x73, 0xae, 0x4c, 0x09, 0x90, 0x52, +0x4a, 0x53, 0x00, 0x5c, 0xd7, 0x95, 0xc5, 0x62, +0x51, 0xb9, 0xae, 0x2b, 0xa3, 0x22, 0xa0, 0x87, +0x06, 0x84, 0x10, 0xd2, 0x1c, 0x16, 0xe8, 0xe9, +0xe9, 0x91, 0xba, 0x1a, 0x10, 0x37, 0x24, 0xb0, +0x98, 0xbe, 0x00, 0x92, 0x00, 0x82, 0x68, 0x5e, +0x48, 0x00, 0x88, 0x86, 0x26, 0x69, 0xf8, 0x57, +0x9a, 0xe2, 0x57, 0x69, 0xbc, 0xdf, 0xb6, 0x6d, +0xae, 0xef, 0xfa, 0x27, 0x27, 0x27, 0x79, 0xb1, +0x58, 0x64, 0xb6, 0x6d, 0x73, 0xcf, 0xf3, 0x98, +0x6d, 0xdb, 0x61, 0xf8, 0x73, 0xce, 0x79, 0xb1, +0x58, 0xe4, 0xae, 0xeb, 0xb2, 0x62, 0xb1, 0xc8, +0x39, 0xe7, 0x5c, 0x87, 0x3d, 0xe7, 0x9c, 0xfb, +0xbe, 0xcf, 0x75, 0xe8, 0x9b, 0xaf, 0x95, 0x52, +0x4c, 0x0b, 0x81, 0x3e, 0xc6, 0xe8, 0x30, 0x40, +0xf4, 0xae, 0x9f, 0x31, 0x56, 0x22, 0x00, 0xb6, +0x6d, 0x4b, 0xdf, 0xf7, 0x95, 0x6d, 0xdb, 0x52, +0x8b, 0x80, 0xe3, 0x38, 0xd2, 0x94, 0x82, 0xa8, +0x08, 0xf8, 0xbe, 0x2f, 0x1d, 0xc7, 0x51, 0xbe, +0xef, 0xcb, 0xa4, 0xd5, 0x00, 0x73, 0x48, 0x80, +0x24, 0x80, 0x20, 0x96, 0x0f, 0x24, 0x00, 0x44, +0xc3, 0xb2, 0xd0, 0xf0, 0x8f, 0x1b, 0xef, 0x8f, +0x2b, 0xf9, 0xeb, 0xb1, 0x7e, 0xf3, 0xae, 0x3f, +0x9f, 0xcf, 0x73, 0xf3, 0xee, 0xbf, 0x58, 0x2c, +0x72, 0x2d, 0x02, 0x9e, 0xe7, 0x71, 0x1d, 0xfa, +0xfa, 0xee, 0x5f, 0xbf, 0x56, 0x4a, 0x95, 0x0c, +0x03, 0x28, 0xa5, 0x98, 0x65, 0x59, 0xa1, 0x08, +0x54, 0x3a, 0xc7, 0xb8, 0xe0, 0xd7, 0xaf, 0x2d, +0xcb, 0x92, 0x51, 0x09, 0xd0, 0xcf, 0x5a, 0x04, +0x74, 0x45, 0x40, 0x08, 0x21, 0x53, 0xa9, 0x94, +0x14, 0x42, 0xc8, 0x74, 0x3a, 0x2d, 0xf5, 0xb0, +0x80, 0x59, 0x0d, 0xe8, 0xea, 0xea, 0x92, 0x49, +0x24, 0x20, 0xb8, 0xa6, 0x65, 0x7d, 0x01, 0x24, +0x01, 0x04, 0xd1, 0x5a, 0x90, 0x00, 0x10, 0x0d, +0x49, 0x5c, 0xf8, 0xcf, 0xa7, 0xd3, 0x7f, 0xb6, +0xf0, 0xd7, 0x25, 0x7f, 0x3d, 0xd6, 0x3f, 0x3d, +0x3d, 0xcd, 0x83, 0x8a, 0x00, 0xb7, 0x2c, 0x8b, +0x9b, 0xc1, 0xaf, 0x43, 0xdf, 0x0c, 0x7e, 0xfd, +0x2c, 0x84, 0x28, 0xf9, 0x5a, 0x29, 0xc5, 0x84, +0x10, 0x3c, 0x1a, 0xfe, 0x4a, 0xa9, 0x8a, 0x02, +0xa0, 0xc3, 0x9f, 0x31, 0xa6, 0x84, 0x10, 0x8a, +0x31, 0xa6, 0x2c, 0xcb, 0x92, 0x42, 0x08, 0xc5, +0x39, 0x0f, 0x05, 0xc0, 0xb2, 0xac, 0x50, 0x00, +0x00, 0x88, 0xa8, 0x08, 0x04, 0x41, 0x1f, 0x0a, +0x40, 0xb4, 0x1a, 0xd0, 0xde, 0xde, 0x2e, 0x67, +0x1b, 0x12, 0x98, 0xad, 0x2f, 0x80, 0x24, 0x80, +0x20, 0x5a, 0x13, 0x12, 0x00, 0xa2, 0xe1, 0x98, +0xef, 0x9d, 0x7f, 0x92, 0xf0, 0xef, 0xec, 0xec, +0x64, 0x67, 0xcf, 0x9e, 0xe5, 0x85, 0x42, 0x81, +0x39, 0x8e, 0xc3, 0x33, 0x99, 0x0c, 0x9b, 0x9a, +0x9a, 0xe2, 0xe6, 0x5d, 0x7f, 0xa1, 0x50, 0x28, +0xbb, 0xdb, 0x07, 0x60, 0xe9, 0x80, 0x2f, 0x16, +0x8b, 0x96, 0x19, 0xfc, 0x42, 0x08, 0x0e, 0xc0, +0x92, 0x52, 0x72, 0xcb, 0xb2, 0x98, 0x10, 0x82, +0xeb, 0xd7, 0x66, 0xf8, 0x5b, 0x96, 0xc5, 0x82, +0xe3, 0x0f, 0x8f, 0x9d, 0x31, 0xa6, 0x00, 0x40, +0x87, 0xbe, 0x29, 0x01, 0x9c, 0x73, 0x69, 0x4a, +0x80, 0x52, 0x4a, 0x72, 0xce, 0x25, 0x00, 0x51, +0x49, 0x04, 0xa4, 0x94, 0x32, 0x95, 0x4a, 0x09, +0x2d, 0x03, 0x66, 0x35, 0xc0, 0xec, 0x0d, 0x30, +0x87, 0x04, 0x7c, 0xdf, 0x97, 0x24, 0x01, 0x04, +0xb1, 0x7c, 0x21, 0x01, 0x20, 0x1a, 0x8a, 0x5a, +0xdc, 0xf9, 0x47, 0xc7, 0xfb, 0x2d, 0xcb, 0xe2, +0x7a, 0x6a, 0x9f, 0x0e, 0x7f, 0xa5, 0x94, 0xa5, +0xef, 0xfa, 0x95, 0x52, 0x61, 0xe8, 0x23, 0x10, +0x00, 0x00, 0x96, 0x0e, 0xfc, 0xe0, 0xae, 0xbf, +0x44, 0x06, 0xa4, 0x94, 0xe1, 0xeb, 0x20, 0xfc, +0xf5, 0xb0, 0x40, 0x59, 0xf8, 0x1b, 0xe7, 0xaa, +0xa7, 0xfb, 0x69, 0x09, 0x90, 0x8c, 0x31, 0xdd, +0xf0, 0x27, 0x67, 0x7e, 0xec, 0xcc, 0x6b, 0xfd, +0xac, 0x94, 0x12, 0x4a, 0x29, 0x69, 0xdb, 0xb6, +0x08, 0x86, 0x00, 0x84, 0x94, 0xb2, 0x44, 0x06, +0x00, 0x08, 0x5d, 0x0d, 0xd0, 0x12, 0xe0, 0xfb, +0xbe, 0x34, 0x87, 0x04, 0x7c, 0xdf, 0x97, 0xba, +0x2f, 0x60, 0xe5, 0xca, 0x95, 0x92, 0x24, 0x80, +0x20, 0x96, 0x1f, 0x24, 0x00, 0x44, 0xc3, 0xb0, +0x98, 0x3b, 0xff, 0x4a, 0x9d, 0xfe, 0x3a, 0xfc, +0xcd, 0xf1, 0x7e, 0x5d, 0xf2, 0x37, 0xef, 0xfe, +0x95, 0x52, 0x96, 0xe7, 0x79, 0x61, 0xc0, 0x17, +0x8b, 0x45, 0x4b, 0xbf, 0xf6, 0x3c, 0xcf, 0x42, +0x70, 0xa7, 0x0f, 0xc0, 0x62, 0x8c, 0x59, 0x42, +0x08, 0xae, 0x9f, 0xb5, 0x00, 0x48, 0x29, 0x39, +0x63, 0x8c, 0x2b, 0xa5, 0xc2, 0xf0, 0x57, 0x4a, +0x85, 0x8f, 0x98, 0xf3, 0x55, 0xfa, 0xa1, 0x25, +0x80, 0x31, 0x26, 0x95, 0x52, 0x32, 0x18, 0x0a, +0x10, 0x66, 0xf0, 0x47, 0x9f, 0x11, 0x54, 0x04, +0x00, 0x08, 0x04, 0x02, 0x00, 0x40, 0x44, 0xab, +0x01, 0xd9, 0x6c, 0x56, 0x54, 0x1a, 0x12, 0x88, +0xf6, 0x05, 0xf8, 0xbe, 0x2f, 0x81, 0xf2, 0x19, +0x02, 0x24, 0x01, 0x04, 0xd1, 0x7a, 0x90, 0x00, +0x10, 0x0d, 0x41, 0xb5, 0xc3, 0xff, 0xf4, 0xe9, +0xd3, 0xdc, 0x6c, 0xf6, 0x8b, 0x8e, 0xf7, 0x2b, +0xa5, 0x2c, 0x5d, 0xf2, 0x07, 0x10, 0x86, 0x3f, +0x0c, 0x01, 0x60, 0x8c, 0x59, 0x98, 0xa9, 0x00, +0x58, 0x08, 0x82, 0x5f, 0xdf, 0xf9, 0xfb, 0xbe, +0x6f, 0x31, 0xc6, 0x42, 0x29, 0x50, 0x4a, 0x71, +0xc6, 0x18, 0x0f, 0xbe, 0x66, 0x33, 0x8d, 0xfa, +0x5c, 0x07, 0x7f, 0x45, 0x01, 0x00, 0x10, 0x95, +0x00, 0xa9, 0xcb, 0xfe, 0x5a, 0x06, 0x2c, 0xcb, +0x12, 0x4a, 0x29, 0xa1, 0x87, 0x01, 0x6c, 0xdb, +0x16, 0x5a, 0x00, 0x74, 0x25, 0x00, 0x80, 0x70, +0x1c, 0x47, 0xc0, 0x90, 0x01, 0xc6, 0x98, 0x10, +0x42, 0xc8, 0x4c, 0x26, 0x13, 0xca, 0x80, 0xd9, +0x1f, 0x50, 0x49, 0x02, 0x74, 0x35, 0x80, 0x24, +0x80, 0x20, 0x5a, 0x1b, 0x12, 0x00, 0xa2, 0xee, +0xd4, 0x2a, 0xfc, 0xcd, 0x66, 0xbf, 0xe8, 0x1d, +0x3f, 0xe7, 0x9c, 0xe7, 0x72, 0x39, 0xcb, 0x28, +0xff, 0x5b, 0x08, 0x04, 0x00, 0x46, 0xe8, 0xeb, +0xd7, 0x8c, 0xb1, 0x50, 0x00, 0x82, 0x3b, 0x7f, +0xf3, 0x99, 0x4b, 0x29, 0xad, 0xc8, 0xdd, 0x7f, +0x38, 0x14, 0xa0, 0x4f, 0x33, 0x38, 0x27, 0xa6, +0x4b, 0xff, 0xfa, 0x34, 0x75, 0xf9, 0x5f, 0x8f, +0xf9, 0xeb, 0xe0, 0xe7, 0x9c, 0x8b, 0xa8, 0x00, +0x04, 0x15, 0x00, 0x01, 0x40, 0x28, 0xa5, 0x84, +0xe3, 0x38, 0x3e, 0x2e, 0x87, 0x7e, 0x28, 0x00, +0x30, 0x2a, 0x02, 0x30, 0x86, 0x04, 0x18, 0x63, +0x42, 0x4b, 0x40, 0x36, 0x9b, 0x95, 0xb9, 0x5c, +0x4e, 0x79, 0x9e, 0x27, 0xe7, 0x9a, 0x21, 0x40, +0x12, 0x40, 0x10, 0xad, 0x07, 0x09, 0x00, 0x51, +0x57, 0xaa, 0x15, 0xfe, 0xbd, 0xbd, 0xbd, 0xec, +0xe4, 0xc9, 0x93, 0x3c, 0xae, 0xd3, 0xdf, 0x0c, +0x7f, 0xa5, 0x94, 0x65, 0x59, 0x56, 0x18, 0xfe, +0x08, 0x42, 0x5e, 0x0b, 0x80, 0xbe, 0xeb, 0x2f, +0x16, 0x8b, 0xb6, 0x7e, 0x0d, 0xc0, 0x36, 0x83, +0x1f, 0x80, 0x8d, 0xe0, 0xae, 0x5f, 0x8b, 0x40, +0x50, 0xfe, 0xb7, 0x94, 0x52, 0x5c, 0x4a, 0xc9, +0x53, 0xa9, 0x54, 0xaa, 0xbf, 0xbf, 0x7f, 0x6f, +0x7b, 0x7b, 0xfb, 0x88, 0x65, 0x59, 0x9d, 0x8c, +0xb1, 0x34, 0xe7, 0x3c, 0xc3, 0x18, 0x4b, 0x31, +0xc6, 0xd2, 0x8c, 0x31, 0xee, 0x79, 0xde, 0xf1, +0xe9, 0xe9, 0xe9, 0xc3, 0xe7, 0xcf, 0x9f, 0x3f, +0x7c, 0xe6, 0xcc, 0x99, 0x23, 0xbe, 0xef, 0x8b, +0xa8, 0x00, 0x04, 0x43, 0x00, 0x82, 0x73, 0x1e, +0x86, 0x7e, 0x20, 0x00, 0xbe, 0xae, 0x04, 0x30, +0xc6, 0x7c, 0xa5, 0x54, 0x28, 0x00, 0x8c, 0x31, +0x1f, 0x33, 0xa1, 0x1f, 0x56, 0x07, 0xf4, 0x90, +0x00, 0x00, 0x11, 0xd7, 0x17, 0xa0, 0x9b, 0x03, +0x2b, 0xcd, 0x10, 0x20, 0x09, 0x20, 0x88, 0xd6, +0x83, 0x04, 0x80, 0xa8, 0x1b, 0xf5, 0x0a, 0xff, +0xa0, 0xfc, 0x5f, 0x72, 0xc7, 0xaf, 0xc7, 0xf9, +0x95, 0x52, 0x76, 0xf0, 0xb5, 0x1d, 0x04, 0xba, +0x1d, 0xdc, 0xf9, 0x97, 0x3c, 0x63, 0xa6, 0x27, +0xc0, 0x0a, 0xee, 0xfc, 0x2d, 0x29, 0xa5, 0xc5, +0x39, 0xb7, 0x56, 0xaf, 0x5e, 0xbd, 0xad, 0xa7, +0xa7, 0xe7, 0xba, 0xb6, 0xb6, 0xb6, 0x3d, 0x8c, +0xb1, 0x54, 0xd2, 0x6b, 0x21, 0xa5, 0xcc, 0x15, +0x0a, 0x85, 0x5f, 0x5e, 0xba, 0x74, 0xe9, 0xbd, +0x13, 0x27, 0x4e, 0xfc, 0x63, 0xa1, 0x50, 0x98, +0x0e, 0x2a, 0x00, 0x82, 0x73, 0x1e, 0x2b, 0x00, +0xfa, 0x19, 0x33, 0x77, 0xf9, 0xbe, 0x6d, 0xdb, +0x61, 0xf8, 0x2b, 0xa5, 0x44, 0x2a, 0x95, 0x0a, +0xab, 0x03, 0x98, 0x19, 0x22, 0x08, 0x05, 0xc0, +0xec, 0x0b, 0x58, 0x88, 0x04, 0xe8, 0x05, 0x83, +0x48, 0x02, 0x08, 0xa2, 0x79, 0x21, 0x01, 0x20, +0xea, 0xc2, 0x62, 0xba, 0xfd, 0xe7, 0x0a, 0x7f, +0x73, 0x9a, 0x9f, 0x0e, 0xfd, 0x7c, 0x3e, 0x1f, +0x36, 0xf8, 0x99, 0xe1, 0x2f, 0xa5, 0xb4, 0x11, +0x94, 0xf9, 0x75, 0xf8, 0x2b, 0xa5, 0x6c, 0xdf, +0xf7, 0x6d, 0x1d, 0xfe, 0x4a, 0x29, 0x5b, 0x08, +0x51, 0x22, 0x00, 0xfa, 0x6b, 0x29, 0xa5, 0xe5, +0xba, 0x6e, 0x7a, 0x68, 0x68, 0xe8, 0x9e, 0xce, +0xce, 0xce, 0x9b, 0x2c, 0xcb, 0x5a, 0xb1, 0xd8, +0x6b, 0x23, 0xa5, 0x9c, 0xfc, 0xf4, 0xd3, 0x4f, +0xff, 0x7c, 0x62, 0x62, 0xe2, 0xef, 0xa5, 0x94, +0xbe, 0x29, 0x02, 0x30, 0x82, 0xdf, 0xb2, 0xac, +0x30, 0xfc, 0x1d, 0xc7, 0xf1, 0xcd, 0x6a, 0x00, +0x63, 0xcc, 0x77, 0x1c, 0x27, 0x14, 0x02, 0x04, +0x15, 0x01, 0xc6, 0x98, 0x00, 0x49, 0x00, 0x41, +0x10, 0x20, 0x01, 0x20, 0xea, 0xc0, 0x62, 0xc3, +0x5f, 0x2f, 0xed, 0x5b, 0x29, 0xfc, 0xf5, 0xca, +0x7e, 0xd1, 0xf0, 0x07, 0x60, 0xe5, 0xf3, 0xf9, +0xb0, 0xcc, 0x0f, 0xe3, 0x8e, 0xbf, 0x58, 0x2c, +0x96, 0x04, 0xbe, 0xef, 0xfb, 0x36, 0x66, 0x4a, +0xfd, 0xb6, 0x16, 0x00, 0x00, 0xb6, 0x94, 0xd2, +0x32, 0x9f, 0xd7, 0xac, 0x59, 0xb3, 0x6d, 0xed, +0xda, 0xb5, 0xcf, 0xd8, 0xb6, 0xbd, 0xb2, 0xda, +0xd7, 0xa9, 0x58, 0x2c, 0x1e, 0x3b, 0x71, 0xe2, +0xc4, 0x5b, 0x1f, 0x7f, 0xfc, 0xf1, 0xaf, 0x00, +0x08, 0xce, 0xb9, 0x1f, 0x54, 0x00, 0x7c, 0x94, +0x56, 0x00, 0x7c, 0xcc, 0x54, 0x00, 0xfc, 0x20, +0xf0, 0x7d, 0xcc, 0xdc, 0xf1, 0xfb, 0x88, 0x0c, +0x09, 0xc0, 0xa8, 0x08, 0x60, 0x66, 0x68, 0x40, +0x32, 0xc6, 0x44, 0xdc, 0x34, 0xc1, 0xd9, 0x24, +0x00, 0x28, 0x5d, 0x3a, 0x98, 0x24, 0x80, 0x20, +0x9a, 0x0f, 0x12, 0x00, 0x62, 0x49, 0xa9, 0x56, +0xf8, 0xdb, 0xb6, 0xcd, 0xcd, 0xd5, 0xfd, 0x2c, +0xcb, 0xe2, 0xe6, 0x1c, 0x7f, 0x5d, 0xfa, 0x9f, +0x9a, 0x9a, 0x0a, 0xc7, 0xfa, 0xcd, 0x66, 0x3f, +0x29, 0xa5, 0xbe, 0x83, 0xb7, 0x3d, 0xcf, 0xb3, +0x03, 0x11, 0x08, 0x9f, 0x4d, 0x01, 0xd0, 0xe1, +0x6f, 0xbe, 0x4e, 0xa5, 0x52, 0xed, 0x9b, 0x37, +0x6f, 0x7e, 0xac, 0xa3, 0xa3, 0xe3, 0xba, 0x5a, +0x5e, 0x2f, 0x00, 0xb8, 0x74, 0xe9, 0xd2, 0x4f, +0x8e, 0x1e, 0x3d, 0xfa, 0xcd, 0xa9, 0xa9, 0xa9, +0xd3, 0x08, 0x44, 0x00, 0x41, 0xe8, 0x6b, 0x19, +0x40, 0x20, 0x00, 0x00, 0x7c, 0xce, 0xb9, 0xa7, +0x1b, 0x04, 0x19, 0x63, 0x5a, 0x0a, 0x04, 0x63, +0xcc, 0x8f, 0x4a, 0x80, 0xeb, 0xba, 0xe1, 0x6c, +0x81, 0x8e, 0x8e, 0x0e, 0xa1, 0xd7, 0x0e, 0x30, +0xd7, 0x0a, 0x88, 0x5b, 0x30, 0x68, 0x2e, 0x09, +0x00, 0x2a, 0x6f, 0x27, 0x4c, 0x12, 0x40, 0x10, +0x8d, 0x01, 0x09, 0x00, 0xb1, 0x64, 0xd4, 0x23, +0xfc, 0x01, 0x84, 0xe3, 0xfe, 0x52, 0x4a, 0x5b, +0x0b, 0x80, 0x52, 0xca, 0xd6, 0x0f, 0xcf, 0xf3, +0x4a, 0xc2, 0x1f, 0x81, 0x00, 0x28, 0xa5, 0x1c, +0x5c, 0x0e, 0x7d, 0x27, 0x28, 0xfb, 0xdb, 0xeb, +0xd7, 0xaf, 0xdf, 0xbb, 0x66, 0xcd, 0x9a, 0xc7, +0x2d, 0xcb, 0xea, 0x98, 0xed, 0x7c, 0x33, 0x99, +0x0c, 0x76, 0xee, 0xdc, 0x89, 0xed, 0xdb, 0xb7, +0x23, 0x9b, 0xcd, 0x22, 0x95, 0x4a, 0x21, 0x95, +0x4a, 0xc1, 0x75, 0x5d, 0x5c, 0xbc, 0x78, 0x11, +0xbf, 0xfe, 0xf5, 0xaf, 0xf1, 0xab, 0x5f, 0xfd, +0x0a, 0x47, 0x8e, 0x1c, 0x41, 0x2e, 0x97, 0x9b, +0xf5, 0xda, 0x29, 0xa5, 0xbc, 0x4f, 0x3f, 0xfd, +0xf4, 0x5b, 0x1f, 0x7e, 0xf8, 0xe1, 0x0f, 0x94, +0x52, 0x61, 0xf0, 0x6b, 0x19, 0x60, 0x8c, 0x79, +0x5a, 0x00, 0x82, 0xaf, 0xc3, 0x8a, 0x80, 0xf9, +0xd0, 0x53, 0x05, 0x83, 0xff, 0xae, 0xa2, 0x04, +0xe4, 0x72, 0x39, 0xd5, 0xde, 0xde, 0x2e, 0x49, +0x02, 0x08, 0xa2, 0x75, 0x21, 0x01, 0x20, 0x96, +0x84, 0x5a, 0x85, 0xbf, 0x59, 0xf6, 0x8f, 0x0b, +0x7f, 0xf3, 0x51, 0x2c, 0x16, 0x4b, 0xc6, 0xf9, +0xf5, 0xc3, 0xf7, 0x7d, 0x5b, 0x4a, 0xe9, 0xe0, +0x72, 0xf8, 0x3b, 0xc1, 0x9f, 0x73, 0xcc, 0xf0, +0xe7, 0x9c, 0xbb, 0x23, 0x23, 0x23, 0x4f, 0x75, +0x76, 0x76, 0x56, 0xbc, 0xeb, 0xb7, 0x6d, 0x1b, +0x5b, 0xb7, 0x6e, 0xc5, 0xe8, 0xe8, 0x28, 0xb6, +0x6d, 0xdb, 0x06, 0xcb, 0xb2, 0xe6, 0xbc, 0x36, +0x52, 0x4a, 0x9c, 0x38, 0x71, 0x02, 0x7f, 0xff, +0xf7, 0x7f, 0x8f, 0x9f, 0xfd, 0xec, 0x67, 0x98, +0xed, 0x77, 0xf2, 0xe2, 0xc5, 0x8b, 0x3f, 0x1a, +0x1b, 0x1b, 0x7b, 0x13, 0x40, 0x91, 0x31, 0xe6, +0x69, 0x19, 0x60, 0x8c, 0x79, 0x08, 0x2a, 0x02, +0xfa, 0xb5, 0x6d, 0xdb, 0x3e, 0xe7, 0xdc, 0xd3, +0xe1, 0xaf, 0x7b, 0x03, 0xa2, 0xcd, 0x81, 0x4a, +0x29, 0x91, 0xc9, 0x64, 0x84, 0x96, 0x80, 0xe8, +0x5a, 0x01, 0x24, 0x01, 0x04, 0xd1, 0x9a, 0x90, +0x00, 0x10, 0x35, 0x67, 0xa9, 0xef, 0xfc, 0xa5, +0x94, 0x56, 0x2e, 0x97, 0x8b, 0x0d, 0xff, 0xb8, +0x87, 0xe7, 0x79, 0x0e, 0x66, 0x2a, 0x00, 0x0e, +0x02, 0x01, 0xd0, 0x5f, 0x0b, 0x21, 0x1c, 0xc6, +0x98, 0x6d, 0x59, 0x56, 0x76, 0xfb, 0xf6, 0xed, +0x2f, 0xb6, 0xb5, 0xb5, 0x6d, 0xad, 0x74, 0x9e, +0x5b, 0xb6, 0x6c, 0xc1, 0x63, 0x8f, 0x3d, 0x86, +0x9e, 0x9e, 0x9e, 0x05, 0x5f, 0xab, 0x63, 0xc7, +0x8e, 0xe1, 0xcf, 0xff, 0xfc, 0xcf, 0xf1, 0x2f, +0xff, 0xf2, 0x2f, 0x15, 0xff, 0x4c, 0x2e, 0x97, +0x7b, 0xff, 0xe7, 0x3f, 0xff, 0xf9, 0x17, 0x7d, +0xdf, 0x9f, 0x02, 0xe0, 0x05, 0xd5, 0x00, 0x1d, +0xfa, 0x1e, 0x82, 0x8a, 0x00, 0x66, 0x9a, 0x03, +0x3d, 0xdd, 0x17, 0xa0, 0x45, 0xc0, 0x75, 0x5d, +0x1f, 0x91, 0x2a, 0x40, 0x2a, 0x95, 0x12, 0x8c, +0x31, 0x92, 0x00, 0x82, 0x58, 0x46, 0x90, 0x00, +0x10, 0x35, 0x27, 0x2a, 0x00, 0x8b, 0x0d, 0x7f, +0xc7, 0x71, 0xc2, 0x4d, 0x7d, 0x92, 0x84, 0x7f, +0x30, 0xce, 0x5f, 0x26, 0x00, 0xfa, 0xae, 0xdf, +0xf3, 0x3c, 0x27, 0x12, 0xfe, 0xba, 0xf4, 0xef, +0x28, 0xa5, 0x9c, 0x4c, 0x26, 0xd3, 0xbd, 0x7d, +0xfb, 0xf6, 0x57, 0x5d, 0xd7, 0x5d, 0x17, 0x77, +0x7e, 0x99, 0x4c, 0x06, 0x0f, 0x3e, 0xf8, 0x20, +0xae, 0xbe, 0xfa, 0xea, 0xaa, 0x5c, 0x2f, 0xa5, +0x14, 0x7e, 0xfa, 0xd3, 0x9f, 0xe2, 0xdb, 0xdf, +0xfe, 0x36, 0x2e, 0x5e, 0xbc, 0x18, 0xfb, 0x67, +0x8a, 0xc5, 0xe2, 0xc9, 0xb1, 0xb1, 0xb1, 0x2f, +0x4c, 0x4f, 0x4f, 0x9f, 0x85, 0x21, 0x01, 0x8c, +0x31, 0xcf, 0xb2, 0xac, 0x50, 0x02, 0x82, 0x61, +0x80, 0x50, 0x02, 0x38, 0xe7, 0x9e, 0x16, 0x00, +0xdd, 0x1b, 0xa0, 0x45, 0xa0, 0x96, 0x12, 0x40, +0x8d, 0x81, 0x04, 0xd1, 0x78, 0x90, 0x00, 0x10, +0x35, 0xa5, 0x16, 0xe1, 0x1f, 0xdd, 0xd4, 0x47, +0x2f, 0xed, 0xab, 0x57, 0xf7, 0xc3, 0x2c, 0xe1, +0x2f, 0x84, 0xd0, 0x77, 0xf7, 0x25, 0xc1, 0xaf, +0xef, 0xf6, 0x83, 0xaf, 0xc3, 0xd7, 0x5d, 0x5d, +0x5d, 0x6b, 0xb6, 0x6d, 0xdb, 0xf6, 0xaa, 0x6d, +0xdb, 0xb1, 0xb7, 0xf5, 0x3b, 0x76, 0xec, 0xc0, +0x23, 0x8f, 0x3c, 0x82, 0xf6, 0xf6, 0xf6, 0xaa, +0x5f, 0xbb, 0x62, 0xb1, 0x88, 0xef, 0x7c, 0xe7, +0x3b, 0xf8, 0xbb, 0xbf, 0xfb, 0xbb, 0xd8, 0xef, +0x0b, 0x21, 0x2e, 0xfc, 0xf2, 0x97, 0xbf, 0xfc, +0x5f, 0x67, 0xcf, 0x9e, 0xfd, 0x17, 0xcc, 0x48, +0x80, 0x07, 0xc0, 0x0b, 0xaa, 0x00, 0x3a, 0xf4, +0x3d, 0xc7, 0x71, 0x3c, 0x04, 0xe1, 0x8f, 0xa0, +0x12, 0xe0, 0x38, 0x8e, 0xcf, 0x39, 0xf7, 0x2b, +0x49, 0x40, 0x74, 0xd5, 0x40, 0x92, 0x00, 0x82, +0x68, 0x3d, 0x48, 0x00, 0x88, 0x9a, 0x51, 0xa9, +0xf4, 0x3f, 0x9f, 0x79, 0xfe, 0x8b, 0x0d, 0xff, +0x42, 0xa1, 0x50, 0x72, 0xd7, 0x8f, 0x99, 0x29, +0x7c, 0x25, 0x77, 0xfe, 0x3a, 0xf4, 0xf5, 0xdd, +0x7f, 0x20, 0x09, 0xce, 0x15, 0x57, 0x5c, 0xb1, +0x79, 0xcb, 0x96, 0x2d, 0x2f, 0x72, 0xce, 0xdb, +0x62, 0xce, 0x0d, 0x0f, 0x3f, 0xfc, 0x30, 0x6e, +0xb8, 0xe1, 0x86, 0x5a, 0x5c, 0xba, 0x12, 0xfe, +0xdf, 0xff, 0xfb, 0x7f, 0x78, 0xfb, 0xed, 0xb7, +0x31, 0xb3, 0x90, 0x5f, 0x29, 0x52, 0xca, 0xc2, +0xd1, 0xa3, 0x47, 0xbf, 0x7c, 0xf2, 0xe4, 0xc9, +0x31, 0xc6, 0x98, 0x17, 0x8c, 0xf9, 0x7b, 0x96, +0x65, 0x79, 0xc1, 0x9d, 0xbf, 0xa7, 0xfb, 0x02, +0x74, 0x25, 0x80, 0x31, 0xe6, 0xe9, 0x19, 0x02, +0xb5, 0x94, 0x00, 0x5a, 0x31, 0x90, 0x20, 0x1a, +0x1b, 0x12, 0x00, 0xa2, 0x26, 0xd4, 0x33, 0xfc, +0xf5, 0xe2, 0x3e, 0x41, 0xd7, 0x7f, 0x59, 0xf8, +0xeb, 0xd0, 0x37, 0x3a, 0xfd, 0x1d, 0xdf, 0xf7, +0x5d, 0xa5, 0x94, 0xa3, 0xbf, 0xbf, 0x66, 0xcd, +0x9a, 0xad, 0x9b, 0x36, 0x6d, 0x7a, 0x91, 0x31, +0xe6, 0x44, 0xcf, 0xc3, 0x71, 0x1c, 0x3c, 0xf3, +0xcc, 0x33, 0x18, 0x19, 0x19, 0xa9, 0xd1, 0xd5, +0x2b, 0xe7, 0xfd, 0xf7, 0xdf, 0xc7, 0x97, 0xbf, +0xfc, 0x65, 0x14, 0x8b, 0xc5, 0xb8, 0x6f, 0xcb, +0x89, 0x89, 0x89, 0x3f, 0x3d, 0x76, 0xec, 0xd8, +0x4f, 0x61, 0x54, 0x02, 0x4c, 0x09, 0xb0, 0x6d, +0xdb, 0xd3, 0x7d, 0x01, 0xba, 0x12, 0xe0, 0xba, +0xae, 0xa7, 0x25, 0x20, 0x58, 0x68, 0x28, 0x14, +0x01, 0x92, 0x00, 0x82, 0x68, 0x7d, 0x48, 0x00, +0x88, 0xaa, 0xd3, 0x88, 0xe1, 0x1f, 0x84, 0xbe, +0xad, 0x94, 0x72, 0x82, 0xa6, 0xbf, 0x50, 0x04, +0x74, 0xb9, 0x5f, 0x08, 0xe1, 0x62, 0xe6, 0xce, +0x7f, 0xe3, 0x95, 0x57, 0x5e, 0xf9, 0x2a, 0xe7, +0xdc, 0x8d, 0x9e, 0x47, 0x36, 0x9b, 0xc5, 0x8b, +0x2f, 0xbe, 0x88, 0x0d, 0x1b, 0x36, 0xd4, 0xe8, +0xea, 0x55, 0xe6, 0xe4, 0xc9, 0x93, 0xf8, 0xa3, +0x3f, 0xfa, 0xa3, 0xd8, 0xbe, 0x00, 0xa5, 0x94, +0x3c, 0x76, 0xec, 0xd8, 0xd7, 0x26, 0x26, 0x26, +0x7e, 0x1a, 0xad, 0x04, 0x20, 0x18, 0x16, 0x30, +0xaa, 0x00, 0x9e, 0x96, 0x00, 0x73, 0xad, 0x00, +0x2d, 0x03, 0x00, 0x44, 0x26, 0x93, 0xf1, 0x11, +0x6c, 0x2d, 0x8c, 0x99, 0x7e, 0x01, 0x92, 0x00, +0x82, 0x68, 0x31, 0x48, 0x00, 0x88, 0xaa, 0xb2, +0x98, 0x31, 0xff, 0xb8, 0xe5, 0x7d, 0x17, 0x1a, +0xfe, 0x4a, 0x29, 0x53, 0x00, 0x2a, 0x86, 0xbf, +0xef, 0xfb, 0x2e, 0x2e, 0x8f, 0xf9, 0xbb, 0xdd, +0xdd, 0xdd, 0xeb, 0x46, 0x46, 0x46, 0x5e, 0xe7, +0x9c, 0x67, 0xa2, 0xe7, 0xd6, 0xdb, 0xdb, 0x8b, +0x57, 0x5e, 0x79, 0x05, 0xbd, 0xbd, 0xbd, 0xb5, +0xba, 0x7c, 0x73, 0x72, 0xfe, 0xfc, 0x79, 0xfc, +0xd1, 0x1f, 0xfd, 0x11, 0x4e, 0x9d, 0x3a, 0x55, +0xf6, 0x3d, 0xa5, 0x94, 0x9c, 0x98, 0x98, 0xf8, +0xba, 0x59, 0x09, 0x08, 0xaa, 0x00, 0x45, 0xc4, +0x48, 0x40, 0xd0, 0x0b, 0xe0, 0xb1, 0xc8, 0x5a, +0x01, 0x5a, 0x02, 0x5c, 0xd7, 0x15, 0x96, 0x65, +0xf9, 0x24, 0x01, 0x04, 0xd1, 0x9a, 0x90, 0x00, +0x10, 0x55, 0xa3, 0x16, 0xe1, 0x1f, 0xd7, 0xed, +0x3f, 0xdf, 0xf0, 0xd7, 0x63, 0xfe, 0x41, 0xe0, +0x3b, 0x52, 0x4a, 0xd7, 0xb8, 0xf3, 0x77, 0x75, +0xd9, 0xbf, 0xa3, 0xa3, 0xa3, 0x6f, 0xe7, 0xce, +0x9d, 0x6f, 0xc4, 0x2d, 0xf0, 0xb3, 0x7e, 0xfd, +0x7a, 0xbc, 0xf4, 0xd2, 0x4b, 0xc8, 0x66, 0xb3, +0x35, 0xbb, 0x7e, 0x49, 0xc9, 0xe7, 0xf3, 0xf8, +0xd2, 0x97, 0xbe, 0x84, 0x5f, 0xff, 0xfa, 0xd7, +0x65, 0xdf, 0xd3, 0x12, 0x30, 0x31, 0x31, 0xf1, +0x33, 0x1d, 0xfe, 0xba, 0x0a, 0x10, 0x0c, 0x05, +0x14, 0xb5, 0x00, 0x20, 0x18, 0x0e, 0x20, 0x09, +0x20, 0x88, 0xe5, 0x09, 0x9f, 0xfb, 0x8f, 0x10, +0xc4, 0xdc, 0x54, 0x3b, 0xfc, 0x3b, 0x3a, 0x3a, +0xd8, 0x62, 0xc2, 0x5f, 0x87, 0xba, 0xf1, 0xec, +0x7a, 0x9e, 0xe7, 0x1a, 0xe1, 0xef, 0x2a, 0xa5, +0x5c, 0xcc, 0x54, 0x03, 0xdc, 0x4c, 0x26, 0xd3, +0xbb, 0x7d, 0xfb, 0xf6, 0x97, 0xe3, 0xc2, 0x7f, +0xf5, 0xea, 0xd5, 0x78, 0xe5, 0x95, 0x57, 0x1a, +0x22, 0xfc, 0x01, 0x20, 0x9d, 0x4e, 0xe3, 0xa5, +0x97, 0x5e, 0xc2, 0x95, 0x57, 0x5e, 0x59, 0xf6, +0x3d, 0xc6, 0x18, 0x1f, 0x18, 0x18, 0x78, 0x72, +0x60, 0x60, 0x60, 0x8f, 0x3e, 0xc7, 0xa0, 0xbf, +0xc1, 0xd5, 0x15, 0x0f, 0x29, 0x65, 0x78, 0x1d, +0xa4, 0x94, 0x8e, 0xe7, 0x79, 0xfa, 0x3a, 0x99, +0x53, 0x24, 0xf5, 0x1e, 0x09, 0x56, 0xb0, 0x18, +0x92, 0x5e, 0x41, 0xd1, 0xb2, 0x2c, 0x8b, 0x5b, +0x96, 0xc5, 0x6d, 0xdb, 0xe6, 0x7a, 0xc7, 0xc5, +0x7c, 0x3e, 0x1f, 0x0e, 0xdb, 0x74, 0x77, 0x77, +0xb3, 0xc9, 0xc9, 0x49, 0x76, 0xe6, 0xcc, 0x19, +0xd6, 0xdf, 0xdf, 0x1f, 0xfe, 0x5b, 0x8f, 0x8c, +0x8c, 0xb0, 0x03, 0x07, 0x0e, 0x84, 0xff, 0x1f, +0x00, 0x97, 0xff, 0xff, 0x88, 0xcb, 0xfa, 0xb8, +0xa1, 0x24, 0x82, 0x20, 0xaa, 0x07, 0x09, 0x00, +0xb1, 0x68, 0x6a, 0x11, 0xfe, 0x71, 0x2b, 0xfc, +0xcd, 0x27, 0xfc, 0x51, 0xde, 0xf0, 0x67, 0x8e, +0xf9, 0x87, 0x12, 0x20, 0x84, 0x70, 0x1d, 0xc7, +0xe9, 0xda, 0xb5, 0x6b, 0xd7, 0x4b, 0x8e, 0xe3, +0x94, 0x4d, 0xf5, 0xeb, 0xe9, 0xe9, 0xc1, 0xab, +0xaf, 0xbe, 0x8a, 0x4c, 0xa6, 0x6c, 0x44, 0xa0, +0xae, 0xd8, 0xb6, 0x8d, 0x17, 0x5e, 0x78, 0x61, +0x56, 0x09, 0xd8, 0xb0, 0x61, 0x43, 0x28, 0x01, +0x46, 0xb5, 0x43, 0xbf, 0x0e, 0x1f, 0x3a, 0xfc, +0x67, 0x93, 0x00, 0xa5, 0x54, 0x78, 0xcd, 0x2f, +0x5d, 0xba, 0xb4, 0x60, 0x09, 0x38, 0x7c, 0xf8, +0xf0, 0xbc, 0x24, 0x80, 0x20, 0x88, 0xda, 0x41, +0x02, 0x40, 0x2c, 0x8a, 0x66, 0x0d, 0xff, 0xe0, +0x8e, 0xd8, 0xb5, 0x2c, 0xab, 0x7d, 0xcf, 0x9e, +0x3d, 0xcf, 0xbb, 0xae, 0xdb, 0x17, 0x3d, 0xb7, +0xce, 0xce, 0x4e, 0xbc, 0xf6, 0xda, 0x6b, 0xe8, +0xe8, 0x98, 0x75, 0xc9, 0xff, 0xba, 0x31, 0x97, +0x04, 0x0c, 0x0e, 0x0e, 0x3e, 0xb1, 0x61, 0xc3, +0x86, 0x3d, 0xc1, 0xdd, 0xbe, 0xab, 0x9b, 0x1c, +0xe3, 0x24, 0x20, 0x98, 0x12, 0x59, 0x51, 0x02, +0x10, 0xdc, 0xfd, 0x63, 0x89, 0x25, 0x80, 0xaa, +0x00, 0x04, 0x51, 0x3b, 0x48, 0x00, 0x88, 0xaa, +0xd1, 0xe0, 0xe1, 0xef, 0xea, 0xbb, 0x61, 0xfd, +0xda, 0xb6, 0xed, 0xec, 0xe8, 0xe8, 0xe8, 0x8b, +0xe9, 0x74, 0x7a, 0x7d, 0xf4, 0x5c, 0xda, 0xda, +0xda, 0xf0, 0xea, 0xab, 0xaf, 0x2e, 0x6a, 0x59, +0xdf, 0xa5, 0x20, 0x89, 0x04, 0x0c, 0x0c, 0x0c, +0xc4, 0x4a, 0x80, 0x9e, 0xfa, 0x98, 0x44, 0x02, +0xf2, 0xf9, 0xbc, 0xde, 0x43, 0x81, 0x24, 0x80, +0x20, 0x5a, 0x04, 0x6a, 0x02, 0x24, 0x16, 0x8c, +0xf9, 0xc1, 0x5c, 0xaf, 0xf0, 0xd7, 0xcd, 0x7e, +0x09, 0xc2, 0x5f, 0xdf, 0xf5, 0x3b, 0x41, 0xf8, +0xb7, 0x8f, 0x8e, 0x8e, 0x3e, 0x9f, 0xc9, 0x64, +0x06, 0xa2, 0xe7, 0xe5, 0xba, 0x2e, 0x5e, 0x7b, +0xed, 0xb5, 0xba, 0x4c, 0xf5, 0x5b, 0x28, 0xbe, +0xef, 0xe3, 0x8b, 0x5f, 0xfc, 0x22, 0x3e, 0xf8, +0xe0, 0x83, 0xb2, 0xef, 0x05, 0x8d, 0x81, 0x6f, +0x4e, 0x4c, 0x4c, 0xfc, 0x2c, 0x98, 0x1e, 0x58, +0xd4, 0xcf, 0xd1, 0xc6, 0x40, 0xbd, 0x7c, 0x30, +0xe7, 0x5c, 0x4f, 0x25, 0x2c, 0xd9, 0x52, 0x38, +0x9d, 0x4e, 0xeb, 0x65, 0x84, 0xc3, 0xcd, 0x84, +0x96, 0x6a, 0xc5, 0x40, 0x6a, 0x0a, 0x24, 0x88, +0xea, 0x42, 0x15, 0x00, 0x62, 0x41, 0x34, 0x53, +0xf8, 0x9b, 0xcf, 0x73, 0x85, 0xbf, 0x6d, 0xdb, +0x78, 0xfe, 0xf9, 0xe7, 0x9b, 0x2a, 0xfc, 0x81, +0x44, 0x3d, 0x01, 0x07, 0xcc, 0xc6, 0xc0, 0xe0, +0x5a, 0x95, 0x34, 0x06, 0x1a, 0xd7, 0xce, 0x96, +0x52, 0x3a, 0xfa, 0xa1, 0x2e, 0x2f, 0xa4, 0x64, +0xc5, 0x55, 0x02, 0x16, 0xd3, 0x18, 0x48, 0x95, +0x00, 0x82, 0xa8, 0x1f, 0x24, 0x00, 0xc4, 0xbc, +0x89, 0x0b, 0x7f, 0x93, 0x46, 0x0a, 0x7f, 0x21, +0x84, 0x63, 0x34, 0xc2, 0xb9, 0x96, 0x65, 0x65, +0xf7, 0xec, 0xd9, 0xf3, 0xdc, 0x6c, 0xe1, 0xbf, +0x65, 0xcb, 0x96, 0x1a, 0x5d, 0xb9, 0xda, 0x92, +0x44, 0x02, 0x06, 0x07, 0x07, 0x77, 0x9b, 0xd7, +0x43, 0x4b, 0x00, 0x82, 0x61, 0x81, 0xa8, 0x04, +0x44, 0x87, 0x04, 0x50, 0x41, 0x02, 0x2e, 0x5d, +0xba, 0x64, 0xe5, 0xf3, 0x79, 0x92, 0x00, 0x82, +0x68, 0x22, 0x48, 0x00, 0x88, 0x79, 0x51, 0x29, +0xfc, 0xf5, 0x07, 0xb6, 0xfe, 0x10, 0x3f, 0x70, +0xe0, 0x00, 0x80, 0x85, 0x85, 0xbf, 0x65, 0x59, +0xbc, 0xca, 0x77, 0xfe, 0xae, 0x10, 0xc2, 0xb1, +0x2c, 0x2b, 0x3b, 0x3a, 0x3a, 0xfa, 0x7c, 0x5b, +0x5b, 0xdb, 0x60, 0xf4, 0xbc, 0x6c, 0xdb, 0xc6, +0x73, 0xcf, 0x3d, 0x87, 0xab, 0xae, 0xba, 0xaa, +0x86, 0x57, 0xaf, 0xf6, 0xcc, 0x47, 0x02, 0x30, +0xb3, 0x00, 0x52, 0x38, 0x55, 0x10, 0x81, 0x04, +0x68, 0x11, 0x98, 0xaf, 0x04, 0x50, 0x25, 0x80, +0x20, 0x9a, 0x0b, 0x12, 0x00, 0x22, 0x31, 0xf3, +0x09, 0xff, 0xc3, 0x87, 0x0f, 0xb3, 0xb9, 0xc2, +0xdf, 0xb2, 0xac, 0xd8, 0xf0, 0x8f, 0x6e, 0xe9, +0xbb, 0xd0, 0xf0, 0x37, 0xa7, 0xc0, 0xcd, 0x16, +0xfe, 0x96, 0x65, 0xe1, 0xd0, 0xa1, 0x43, 0xd8, +0xba, 0x75, 0x6b, 0x6d, 0x2f, 0xe0, 0x12, 0xb1, +0xc0, 0x4a, 0x40, 0xb8, 0x2a, 0x62, 0x30, 0x35, +0xd0, 0xd5, 0x8d, 0x81, 0xf3, 0xad, 0x04, 0x90, +0x04, 0x10, 0x44, 0x73, 0x40, 0x4d, 0x80, 0x44, +0x22, 0x6a, 0x11, 0xfe, 0xd1, 0xe5, 0x7d, 0x6b, +0x1c, 0xfe, 0xcf, 0xb5, 0xb5, 0xb5, 0x0d, 0x45, +0xcf, 0xcb, 0xb2, 0x2c, 0x3c, 0xf7, 0xdc, 0x73, +0xd8, 0xb6, 0x6d, 0x5b, 0x8d, 0xaf, 0xe0, 0xd2, +0x93, 0xa4, 0x31, 0x70, 0x7c, 0x7c, 0xfc, 0x9f, +0x75, 0x43, 0xa0, 0x65, 0x59, 0x61, 0x53, 0x20, +0x82, 0x95, 0x03, 0x83, 0x9d, 0x03, 0xc3, 0xfd, +0x03, 0x82, 0x55, 0x02, 0xc3, 0xe6, 0x40, 0x04, +0x9b, 0x07, 0xb9, 0xae, 0x5b, 0xd2, 0x18, 0x98, +0x4e, 0xa7, 0xa5, 0xde, 0x4c, 0x88, 0x1a, 0x03, +0x09, 0xa2, 0x31, 0xa1, 0x0a, 0x00, 0x31, 0x27, +0x73, 0x85, 0xbf, 0xa6, 0x19, 0xc3, 0xff, 0xd0, +0xa1, 0x43, 0x2d, 0x19, 0xfe, 0x40, 0xf2, 0x4a, +0x80, 0x6e, 0x08, 0x8c, 0xab, 0x04, 0x18, 0xd3, +0x03, 0x2b, 0x56, 0x02, 0x82, 0x7f, 0x9f, 0x92, +0x4a, 0x40, 0x3e, 0x9f, 0xe7, 0xba, 0x1a, 0x40, +0x95, 0x00, 0x82, 0x68, 0x4c, 0xa8, 0x02, 0x40, +0xcc, 0x4a, 0x92, 0xf0, 0x1f, 0x1b, 0x1b, 0x63, +0x66, 0xf8, 0x03, 0x40, 0x7f, 0x7f, 0x3f, 0x6b, +0x90, 0xf0, 0x3f, 0xd4, 0xd6, 0xd6, 0xb6, 0x31, +0x7a, 0x5e, 0x3a, 0xfc, 0x87, 0x87, 0x87, 0x6b, +0x78, 0xf5, 0x1a, 0x83, 0x7a, 0x56, 0x02, 0x84, +0x10, 0xb2, 0xbd, 0xbd, 0x9d, 0x2a, 0x01, 0x04, +0xd1, 0x80, 0x90, 0x00, 0x10, 0x15, 0xa9, 0x76, +0xf8, 0x57, 0x6a, 0xf8, 0xab, 0x45, 0xf8, 0x73, +0xce, 0xdb, 0xf6, 0xee, 0xdd, 0xfb, 0x5c, 0xa5, +0xf0, 0x7f, 0xf6, 0xd9, 0x67, 0x31, 0x32, 0x32, +0x52, 0xc3, 0xab, 0xd7, 0x58, 0x90, 0x04, 0x10, +0x04, 0x11, 0x85, 0x86, 0x00, 0x88, 0x58, 0x9a, +0x3d, 0xfc, 0x67, 0xbb, 0xf3, 0x3f, 0x78, 0xf0, +0xe0, 0xb2, 0x0a, 0x7f, 0x60, 0x5e, 0xc3, 0x01, +0x15, 0x1b, 0x03, 0x17, 0x3a, 0x1c, 0x60, 0x59, +0x16, 0xd7, 0x33, 0x04, 0x68, 0xef, 0x00, 0x82, +0x68, 0x1c, 0x48, 0x00, 0x88, 0x32, 0xea, 0x15, +0xfe, 0x30, 0x24, 0xc0, 0xd8, 0xce, 0xd7, 0x46, +0xf2, 0x79, 0xfe, 0x61, 0xf8, 0x67, 0xb3, 0xd9, +0x4d, 0xd1, 0xf3, 0xe2, 0x9c, 0xe3, 0xe0, 0xc1, +0x83, 0xd8, 0xbe, 0x7d, 0x7b, 0xed, 0x2e, 0x5e, +0x03, 0x93, 0x50, 0x02, 0x76, 0xd5, 0x42, 0x02, +0xf2, 0xf9, 0x7c, 0xcd, 0x25, 0x80, 0xfa, 0x01, +0x08, 0x62, 0x7e, 0x90, 0x00, 0x10, 0x25, 0xd4, +0x33, 0xfc, 0xa5, 0x94, 0x76, 0x34, 0xfc, 0x8d, +0xa0, 0x99, 0x6d, 0x79, 0x5f, 0x33, 0xfc, 0x9f, +0xa5, 0xf0, 0xaf, 0x0c, 0x49, 0x00, 0x41, 0x10, +0x1a, 0x12, 0x00, 0x22, 0xa4, 0x45, 0xc2, 0x7f, +0x73, 0xf4, 0xbc, 0x38, 0xe7, 0x78, 0xe6, 0x99, +0x67, 0xb0, 0x63, 0xc7, 0x8e, 0x5a, 0x5e, 0xbe, +0xa6, 0x61, 0x39, 0x48, 0x00, 0x89, 0x00, 0x41, +0xcc, 0x0d, 0x09, 0x00, 0x01, 0xa0, 0x69, 0xc3, +0xdf, 0x31, 0xc2, 0xff, 0x60, 0xa5, 0xf0, 0x7f, +0xfa, 0xe9, 0xa7, 0xb1, 0x73, 0xe7, 0xce, 0x5a, +0x5e, 0xbe, 0xa6, 0xa3, 0x9e, 0x3d, 0x01, 0x4b, +0x21, 0x01, 0xc1, 0x79, 0x90, 0x04, 0x10, 0xc4, +0x2c, 0xd0, 0x2c, 0x00, 0x62, 0xc9, 0xc2, 0x7f, +0x6a, 0x6a, 0x2a, 0x76, 0xbc, 0x7f, 0x11, 0xe1, +0xef, 0x32, 0xc6, 0x32, 0x7b, 0xf7, 0xee, 0x7d, +0x36, 0x9b, 0xcd, 0x96, 0x2d, 0xe0, 0xaf, 0xc3, +0x7f, 0xd7, 0xae, 0x5d, 0x35, 0xbc, 0x7a, 0xcd, +0x4d, 0x82, 0xd9, 0x01, 0x6f, 0x05, 0xb3, 0x03, +0x8a, 0x8b, 0x99, 0x1d, 0x10, 0xb7, 0x8b, 0x20, +0x2d, 0x16, 0x44, 0x10, 0xf5, 0x85, 0x04, 0x60, +0x99, 0x52, 0xe9, 0xee, 0x48, 0x29, 0x35, 0xaf, +0x5d, 0xfd, 0x26, 0x27, 0x27, 0x99, 0xeb, 0xba, +0x75, 0x0b, 0xff, 0xd1, 0xd1, 0xd1, 0x83, 0xed, +0xed, 0xed, 0x65, 0xb7, 0xb1, 0x9c, 0x73, 0x3c, +0xf5, 0xd4, 0x53, 0xd8, 0xbd, 0x7b, 0x77, 0x2d, +0x2e, 0x5f, 0x4b, 0x51, 0x2d, 0x09, 0xd0, 0x22, +0x30, 0x1f, 0x09, 0x58, 0xcc, 0x14, 0xc1, 0xb1, +0xb1, 0x31, 0x05, 0xa0, 0x44, 0x02, 0x80, 0x19, +0x11, 0xa8, 0x74, 0xf3, 0x4f, 0x32, 0x40, 0x10, +0x97, 0xa1, 0x21, 0x80, 0x65, 0xc8, 0x72, 0x08, +0xff, 0x27, 0x9f, 0x7c, 0x92, 0xc2, 0x3f, 0x21, +0x09, 0x86, 0x03, 0x1e, 0x1f, 0x1c, 0x1c, 0xdc, +0x13, 0x19, 0x0e, 0x70, 0xa3, 0xc3, 0x01, 0x7a, +0x48, 0x60, 0x3e, 0x7b, 0x07, 0x58, 0x96, 0xb5, +0xe0, 0x15, 0x03, 0xf5, 0xff, 0x97, 0xe6, 0x70, +0x00, 0x30, 0x53, 0xb9, 0xaa, 0x94, 0xf3, 0x34, +0x2c, 0x40, 0x10, 0x97, 0x21, 0x01, 0x58, 0x66, +0xb4, 0x50, 0xf8, 0x3f, 0x13, 0x17, 0xfe, 0x8c, +0x31, 0x3c, 0xf9, 0xe4, 0x93, 0xd8, 0xb3, 0x67, +0x4f, 0x2d, 0x2e, 0x5f, 0xcb, 0x92, 0x40, 0x02, +0x1e, 0x8b, 0x48, 0x80, 0x43, 0x12, 0x40, 0x10, +0xcd, 0x0d, 0x09, 0xc0, 0x32, 0xa2, 0xc5, 0xc2, +0xbf, 0x6c, 0xdf, 0x5e, 0x0a, 0xff, 0xc5, 0x41, +0x12, 0x40, 0x10, 0xcb, 0x0b, 0xea, 0x01, 0x58, +0x26, 0x2c, 0x26, 0xfc, 0x81, 0xcb, 0x0d, 0x7f, +0xb5, 0x0a, 0x7f, 0xcc, 0x2c, 0xf6, 0xe3, 0x1a, +0xe1, 0x1f, 0x2e, 0xf0, 0x13, 0x09, 0xff, 0xa7, +0xdb, 0xdb, 0xdb, 0xcb, 0xf6, 0xed, 0x65, 0x8c, +0xe1, 0x89, 0x27, 0x9e, 0xc0, 0xde, 0xbd, 0x7b, +0xab, 0x7e, 0xed, 0x96, 0x1b, 0xb3, 0xf5, 0x04, +0x00, 0x50, 0x13, 0x13, 0x13, 0x6f, 0x1d, 0x3d, +0x7a, 0xf4, 0x67, 0x46, 0x4f, 0x80, 0xc7, 0x18, +0x2b, 0x56, 0xa3, 0x31, 0x90, 0x7a, 0x02, 0x08, +0x62, 0xe9, 0xa0, 0x0a, 0xc0, 0x32, 0xa0, 0x91, +0xc3, 0x5f, 0x5d, 0x5e, 0xe9, 0x6f, 0xce, 0xf0, +0xdf, 0xb3, 0x67, 0x0f, 0x85, 0xff, 0x12, 0x30, +0x5b, 0x25, 0x00, 0x00, 0x1b, 0x18, 0x18, 0x78, +0x7c, 0x68, 0x68, 0x28, 0xb6, 0x12, 0xa0, 0xff, +0xcd, 0x92, 0x4c, 0x11, 0xa4, 0x4a, 0x00, 0x41, +0xd4, 0x17, 0x12, 0x80, 0x16, 0xa7, 0xd1, 0xc3, +0x3f, 0xa6, 0xec, 0x5f, 0x16, 0xfe, 0x00, 0xd2, +0x7b, 0xf6, 0xec, 0x79, 0xaa, 0xa3, 0xa3, 0x23, +0x36, 0xfc, 0x0f, 0x1c, 0x38, 0x40, 0xe1, 0x5f, +0x65, 0x16, 0x2a, 0x01, 0xe6, 0x90, 0x0d, 0x49, +0x00, 0x41, 0x34, 0x36, 0x24, 0x00, 0x2d, 0x4c, +0xb3, 0x84, 0xbf, 0xe7, 0x79, 0xee, 0x6c, 0xe1, +0x3f, 0x3a, 0x3a, 0xfa, 0x74, 0x47, 0x47, 0xc7, +0xb6, 0x98, 0xf3, 0xc3, 0xe3, 0x8f, 0x3f, 0x8e, +0xab, 0xaf, 0xbe, 0xba, 0xea, 0xd7, 0x8e, 0x48, +0x2c, 0x01, 0xa3, 0x71, 0x12, 0x80, 0x79, 0x2c, +0x16, 0x44, 0x12, 0x40, 0x10, 0xf5, 0x81, 0x04, +0xa0, 0x45, 0x69, 0xa1, 0xf0, 0x7f, 0xaa, 0x52, +0xf8, 0x3f, 0xf6, 0xd8, 0x63, 0xb8, 0xe6, 0x9a, +0x6b, 0xaa, 0x7e, 0xed, 0x88, 0xcb, 0x24, 0x90, +0x80, 0xc7, 0xe2, 0x24, 0x60, 0xbe, 0x2b, 0x06, +0x92, 0x04, 0x10, 0xc4, 0xd2, 0x43, 0x4d, 0x80, +0x2d, 0x48, 0xa3, 0x84, 0x7f, 0xa1, 0x50, 0x30, +0x83, 0x3f, 0xb6, 0xec, 0x1f, 0x04, 0xc7, 0x6c, +0xe1, 0x3f, 0x1c, 0x73, 0x7e, 0x78, 0xf4, 0xd1, +0x47, 0x71, 0xed, 0xb5, 0xd7, 0x56, 0xfd, 0xda, +0x11, 0xf1, 0x24, 0x68, 0x0c, 0xfc, 0xb3, 0xa3, +0x47, 0x8f, 0xfe, 0x94, 0x1a, 0x03, 0x09, 0xa2, +0x79, 0xa0, 0x0a, 0x40, 0x8b, 0x51, 0xcd, 0xf0, +0xef, 0xee, 0xee, 0x66, 0xd1, 0xf0, 0xcf, 0x64, +0x32, 0x6c, 0x29, 0xc2, 0x3f, 0x18, 0xf3, 0xa7, +0xf0, 0x6f, 0x10, 0xa8, 0x12, 0x40, 0x10, 0xad, +0x07, 0x09, 0x40, 0x0b, 0x51, 0xed, 0xf0, 0x3f, +0x7d, 0xfa, 0x34, 0x8f, 0x86, 0xff, 0xf9, 0xf3, +0xe7, 0xad, 0x1a, 0x84, 0xbf, 0xa3, 0x4a, 0xef, +0xfc, 0x9f, 0xec, 0xec, 0xec, 0x8c, 0x0d, 0xff, +0x47, 0x1e, 0x79, 0x84, 0xc2, 0xbf, 0x4e, 0x24, +0x94, 0x80, 0xbd, 0x24, 0x01, 0x04, 0xd1, 0x1c, +0x90, 0x00, 0xb4, 0x08, 0xf3, 0x0d, 0xff, 0x03, +0x07, 0x0e, 0x00, 0x68, 0x98, 0xf0, 0x77, 0x8d, +0x3b, 0xff, 0x27, 0x3a, 0x3a, 0x3a, 0x46, 0x62, +0xce, 0x0f, 0xfb, 0xf7, 0xef, 0xc7, 0x75, 0xd7, +0x5d, 0x57, 0xed, 0x4b, 0x47, 0xcc, 0x83, 0x04, +0x12, 0xf0, 0x68, 0x25, 0x09, 0xa0, 0xd9, 0x01, +0x04, 0xd1, 0x58, 0x90, 0x00, 0xb4, 0x00, 0x0b, +0x09, 0xff, 0xb8, 0x5d, 0xfd, 0x1a, 0x20, 0xfc, +0x0f, 0x74, 0x76, 0x76, 0x6e, 0x8f, 0x3b, 0x97, +0xfd, 0xfb, 0xf7, 0xe3, 0xfa, 0xeb, 0xaf, 0xaf, +0xf2, 0x95, 0x23, 0x16, 0x42, 0x12, 0x09, 0xd8, +0xb8, 0x71, 0x63, 0x99, 0x04, 0xd0, 0xec, 0x00, +0x82, 0x68, 0x2c, 0xa8, 0x09, 0xb0, 0xc9, 0x59, +0x8a, 0xf0, 0x9f, 0x9a, 0x9a, 0x0a, 0xf7, 0x6f, +0x9f, 0x2d, 0xfc, 0x19, 0x63, 0x56, 0xf0, 0x61, +0x3f, 0xaf, 0xf0, 0x57, 0x4a, 0xa5, 0x46, 0x47, +0x47, 0x9f, 0xe8, 0xec, 0xec, 0xdc, 0x11, 0x77, +0x2e, 0xfb, 0xf7, 0xef, 0xc7, 0x0d, 0x37, 0xdc, +0x50, 0xed, 0x4b, 0x47, 0x2c, 0x92, 0xb9, 0x1a, +0x03, 0x8f, 0x1d, 0x3b, 0xf6, 0x8d, 0x23, 0x47, +0x8e, 0xfc, 0x64, 0xb1, 0x8d, 0x81, 0x9c, 0x73, +0xdf, 0x75, 0x5d, 0x6a, 0x0c, 0x24, 0x88, 0x2a, +0x43, 0x15, 0x80, 0x26, 0xa6, 0x45, 0xc2, 0xdf, +0x0d, 0xee, 0xfc, 0x29, 0xfc, 0x9b, 0x8c, 0xb9, +0x2a, 0x01, 0x1b, 0x36, 0x6c, 0x88, 0xad, 0x04, +0xcc, 0xb7, 0x27, 0x20, 0x98, 0x4a, 0x4a, 0x95, +0x00, 0x82, 0xa8, 0x32, 0x54, 0x01, 0x68, 0x52, +0x5a, 0x29, 0xfc, 0xbb, 0xba, 0xba, 0x76, 0xc5, +0x9d, 0xcb, 0xc3, 0x0f, 0x3f, 0x8c, 0x1b, 0x6f, +0xbc, 0xb1, 0xda, 0x97, 0x0e, 0xf9, 0x7c, 0x1e, +0x27, 0x4e, 0x9c, 0xc0, 0xc5, 0x8b, 0x17, 0x91, +0xcb, 0xe5, 0xe0, 0xfb, 0x3e, 0x32, 0x99, 0x0c, +0xda, 0xda, 0xda, 0xd0, 0xd7, 0xd7, 0x87, 0x95, +0x2b, 0x57, 0x56, 0xfd, 0xef, 0x6c, 0x65, 0xa8, +0x12, 0x40, 0x10, 0xcd, 0x09, 0x09, 0x40, 0x13, +0xb2, 0x1c, 0xc2, 0xff, 0xa1, 0x87, 0x1e, 0xc2, +0x4d, 0x37, 0xdd, 0x54, 0xd5, 0xeb, 0x76, 0xe4, +0xc8, 0x11, 0x8c, 0x8d, 0x8d, 0xe1, 0xd3, 0x4f, +0x3f, 0xc5, 0x6c, 0xff, 0xdf, 0xb7, 0xb5, 0xb5, +0x61, 0x68, 0x68, 0x08, 0xbb, 0x76, 0xed, 0x42, +0x26, 0x93, 0xa9, 0xea, 0x31, 0xb4, 0x2a, 0x24, +0x01, 0x04, 0xd1, 0x7c, 0x90, 0x00, 0x34, 0x19, +0xf5, 0x08, 0x7f, 0xcb, 0xb2, 0x38, 0x00, 0x4b, +0x08, 0x11, 0x96, 0x64, 0xe7, 0x19, 0xfe, 0x25, +0xc1, 0x1f, 0x84, 0xff, 0xe3, 0x5d, 0x5d, 0x5d, +0xbb, 0xe3, 0xce, 0xe5, 0xc1, 0x07, 0x1f, 0xc4, +0x67, 0x3f, 0xfb, 0xd9, 0xaa, 0x5d, 0xb3, 0x8f, +0x3f, 0xfe, 0x18, 0xff, 0xf0, 0x0f, 0xff, 0x80, +0x33, 0x67, 0xce, 0xcc, 0xeb, 0xbf, 0xb3, 0x6d, +0x1b, 0x3b, 0x76, 0xec, 0xc0, 0xee, 0xdd, 0xbb, +0xc1, 0x39, 0x8d, 0x96, 0xcd, 0x05, 0x49, 0x00, +0x41, 0x34, 0x17, 0x24, 0x00, 0x4d, 0x44, 0xa3, +0x84, 0xbf, 0xe7, 0x79, 0x96, 0x52, 0xca, 0xd6, +0xe1, 0x8f, 0x99, 0xdd, 0xfc, 0x9c, 0xa4, 0xe1, +0xbf, 0x7b, 0xf7, 0xee, 0xc7, 0x56, 0xac, 0x58, +0xb1, 0x27, 0xee, 0x5c, 0xaa, 0x1d, 0xfe, 0xef, +0xbf, 0xff, 0x3e, 0xfe, 0xe1, 0x1f, 0xfe, 0x01, +0x52, 0xca, 0x05, 0xff, 0x8c, 0xd5, 0xab, 0x57, +0xe3, 0x8e, 0x3b, 0xee, 0x40, 0x3a, 0x9d, 0xae, +0xda, 0x71, 0xb5, 0x2a, 0x4b, 0xb5, 0x62, 0x20, +0x49, 0x00, 0x41, 0x2c, 0x1e, 0x12, 0x80, 0x26, +0xa1, 0x96, 0xe1, 0x9f, 0xcd, 0x66, 0x59, 0x10, +0xf8, 0x35, 0x09, 0x7f, 0x53, 0x00, 0x76, 0xef, +0xde, 0xfd, 0xe8, 0x8a, 0x15, 0x2b, 0x46, 0xe3, +0xce, 0xe5, 0x81, 0x07, 0x1e, 0xc0, 0xcd, 0x37, +0xdf, 0x5c, 0xb5, 0x6b, 0xf6, 0x8f, 0xff, 0xf8, +0x8f, 0xf8, 0xf9, 0xcf, 0x7f, 0x5e, 0x95, 0x9f, +0xd5, 0xde, 0xde, 0x8e, 0xfb, 0xee, 0xbb, 0x0f, +0x9d, 0x9d, 0x9d, 0x55, 0xf9, 0x79, 0xad, 0xcc, +0x02, 0x24, 0xa0, 0xc8, 0x18, 0xf3, 0x48, 0x02, +0x08, 0x62, 0x69, 0x21, 0x01, 0x68, 0x02, 0x9a, +0x3d, 0xfc, 0xa5, 0x94, 0x8e, 0x94, 0x32, 0xb5, +0x94, 0xe1, 0xff, 0x7f, 0xff, 0xef, 0xff, 0xc5, +0xd8, 0xd8, 0x58, 0xd5, 0x7e, 0x1e, 0x00, 0x64, +0xb3, 0x59, 0xec, 0xdb, 0xb7, 0x8f, 0x24, 0x20, +0x01, 0x54, 0x09, 0x20, 0x88, 0xc6, 0x87, 0x04, +0xa0, 0xc1, 0x69, 0xe6, 0xf0, 0x0f, 0x16, 0xf8, +0xd1, 0xe1, 0xff, 0xc8, 0x8a, 0x15, 0x2b, 0xf6, +0xc6, 0x9d, 0xcb, 0xfd, 0xf7, 0xdf, 0x8f, 0x5b, +0x6e, 0xb9, 0xa5, 0x6a, 0xd7, 0xac, 0x16, 0xe1, +0xaf, 0x21, 0x09, 0x48, 0x4e, 0xb5, 0x24, 0x40, +0x8b, 0x00, 0x49, 0x00, 0x41, 0x54, 0x17, 0xea, +0x6c, 0x6a, 0x60, 0x1a, 0x2d, 0xfc, 0x8d, 0xb9, +0xd9, 0x61, 0xf8, 0x7b, 0x9e, 0x37, 0x67, 0xf8, +0xef, 0xda, 0xb5, 0x6b, 0x7f, 0xa5, 0xf0, 0xdf, +0xb7, 0x6f, 0x5f, 0xd3, 0x84, 0x3f, 0x00, 0x4c, +0x4d, 0x4d, 0xe1, 0xaf, 0xfe, 0xea, 0xaf, 0x70, +0xf1, 0xe2, 0xc5, 0x9a, 0xfd, 0x1d, 0xad, 0x42, +0xb5, 0x36, 0x10, 0xd2, 0xff, 0x9f, 0xd1, 0x3a, +0x01, 0x04, 0x51, 0x5d, 0x48, 0x00, 0x1a, 0x94, +0x46, 0x0c, 0xff, 0x60, 0x29, 0xd7, 0x92, 0xf0, +0x87, 0xf1, 0x41, 0x5d, 0x29, 0xfc, 0xbb, 0xbb, +0xbb, 0xaf, 0x8e, 0x3b, 0x97, 0x7d, 0xfb, 0xf6, +0xe1, 0xd6, 0x5b, 0x6f, 0xad, 0xda, 0x35, 0xab, +0x75, 0xf8, 0x6b, 0x48, 0x02, 0x92, 0x43, 0x12, +0x40, 0x10, 0x8d, 0x0b, 0x09, 0x40, 0x03, 0xd2, +0x6c, 0xe1, 0x2f, 0xa5, 0x74, 0xa3, 0xe1, 0x2f, +0x84, 0x70, 0x77, 0xed, 0xda, 0xf5, 0x70, 0xa5, +0xf0, 0xbf, 0xef, 0xbe, 0xfb, 0x9a, 0x32, 0xfc, +0x35, 0x24, 0x01, 0xc9, 0x49, 0x28, 0x01, 0x7b, +0x48, 0x02, 0x08, 0x62, 0x69, 0x21, 0x01, 0x68, +0x30, 0x1a, 0x21, 0xfc, 0x01, 0x58, 0x55, 0x0a, +0xff, 0x6b, 0xe2, 0xce, 0xe5, 0xbe, 0xfb, 0xee, +0xc3, 0x6d, 0xb7, 0xdd, 0x56, 0xb5, 0x6b, 0xb6, +0xd4, 0xe1, 0xaf, 0x21, 0x09, 0x48, 0x4e, 0x02, +0x09, 0x78, 0x9c, 0x24, 0x80, 0x20, 0x96, 0x16, +0x6a, 0x02, 0x6c, 0x20, 0x1a, 0x21, 0xfc, 0x83, +0x0f, 0x4f, 0x7b, 0xb1, 0xe1, 0xdf, 0xd3, 0xd3, +0xf3, 0x99, 0xb8, 0x73, 0xb9, 0xe7, 0x9e, 0x7b, +0x70, 0xc7, 0x1d, 0x77, 0x54, 0xed, 0x9a, 0xd5, +0x2b, 0xfc, 0x4d, 0xa8, 0x31, 0x30, 0x39, 0x09, +0x1a, 0x03, 0xdf, 0x3a, 0x7a, 0xf4, 0xe8, 0xcf, +0x9a, 0xbd, 0x31, 0x90, 0x9a, 0x02, 0x89, 0x66, +0x80, 0x2a, 0x00, 0x0d, 0x42, 0x0b, 0x85, 0xff, +0x43, 0xcb, 0x29, 0xfc, 0x01, 0xaa, 0x04, 0xcc, +0x87, 0x24, 0x95, 0x80, 0xc1, 0xc1, 0xc1, 0x9a, +0x55, 0x02, 0xf2, 0xf9, 0x3c, 0x5f, 0x8a, 0x4a, +0x00, 0x55, 0x01, 0x88, 0x66, 0x80, 0x04, 0xa0, +0x01, 0x68, 0xa1, 0xf0, 0x7f, 0xb0, 0xa7, 0xa7, +0xe7, 0xda, 0xb8, 0x73, 0xb9, 0xfb, 0xee, 0xbb, +0x5b, 0x32, 0xfc, 0x35, 0x24, 0x01, 0xc9, 0x99, +0x4b, 0x02, 0x06, 0x07, 0x07, 0x6b, 0x26, 0x01, +0x4a, 0x29, 0x8b, 0x24, 0x80, 0x20, 0x66, 0x20, +0x01, 0xa8, 0x33, 0xf5, 0x0c, 0x7f, 0xfd, 0xc1, +0x58, 0x8d, 0xf0, 0xdf, 0xb9, 0x73, 0xe7, 0x03, +0x3d, 0x3d, 0x3d, 0xd7, 0xc5, 0x9d, 0xcb, 0xdd, +0x77, 0xdf, 0x8d, 0x3b, 0xef, 0xbc, 0xb3, 0x6a, +0xd7, 0xac, 0xd1, 0xc2, 0x5f, 0x43, 0x12, 0x90, +0x9c, 0x24, 0x8d, 0x81, 0x24, 0x01, 0x04, 0x51, +0x5b, 0x48, 0x00, 0xea, 0x48, 0xbd, 0xc3, 0xdf, +0xf8, 0x70, 0x5c, 0x74, 0xf8, 0xf7, 0xf6, 0xf6, +0x5e, 0x1f, 0x77, 0x2e, 0x77, 0xdd, 0x75, 0xd7, +0xb2, 0x08, 0x7f, 0x0d, 0x49, 0x40, 0x72, 0x66, +0x93, 0x00, 0xc6, 0x18, 0x0f, 0x24, 0x60, 0x37, +0x49, 0x00, 0x41, 0xd4, 0x06, 0x12, 0x80, 0x06, +0xa3, 0x09, 0xc3, 0xff, 0xfe, 0x4a, 0xe1, 0x7f, +0xe7, 0x9d, 0x77, 0xe2, 0xae, 0xbb, 0xee, 0xaa, +0xda, 0xb5, 0x69, 0xf4, 0xf0, 0xd7, 0x90, 0x04, +0x24, 0x27, 0x81, 0x04, 0x3c, 0x4e, 0x12, 0x40, +0x10, 0xb5, 0x81, 0x04, 0xa0, 0x4e, 0xc4, 0x7d, +0x20, 0x34, 0x5b, 0xf8, 0xef, 0xd8, 0xb1, 0x63, +0x5f, 0x6f, 0x6f, 0xef, 0x0d, 0x71, 0xe7, 0x77, +0xe7, 0x9d, 0x77, 0xe2, 0xee, 0xbb, 0xef, 0xae, +0xda, 0xf5, 0x6a, 0x96, 0xf0, 0xd7, 0x90, 0x04, +0x24, 0x87, 0x24, 0x80, 0x20, 0xea, 0x03, 0x09, +0x40, 0x1d, 0x68, 0xd6, 0xf0, 0x97, 0x52, 0x3a, +0xb8, 0x1c, 0xfe, 0xf7, 0xad, 0x5c, 0xb9, 0xf2, +0xc6, 0xb8, 0xf3, 0xbb, 0xe3, 0x8e, 0x3b, 0x96, +0x75, 0xf8, 0x6b, 0x48, 0x02, 0x92, 0x93, 0x50, +0x02, 0x76, 0x91, 0x04, 0x10, 0x44, 0xf5, 0x20, +0x01, 0x58, 0x62, 0x9a, 0x39, 0xfc, 0x75, 0x05, +0x20, 0x08, 0xff, 0x9b, 0xe2, 0xce, 0xef, 0xf6, +0xdb, 0x6f, 0xc7, 0x3d, 0xf7, 0xdc, 0x53, 0xb5, +0xeb, 0xd5, 0xac, 0xe1, 0xaf, 0x21, 0x09, 0x48, +0x4e, 0x02, 0x09, 0x38, 0x40, 0x12, 0x40, 0x10, +0xd5, 0x83, 0x04, 0x60, 0x09, 0x69, 0xf5, 0xf0, +0xbf, 0xed, 0xb6, 0xdb, 0x70, 0xef, 0xbd, 0xf7, +0x56, 0xed, 0x7a, 0x35, 0x7b, 0xf8, 0x6b, 0x48, +0x02, 0x92, 0x43, 0x12, 0x40, 0x10, 0x4b, 0x07, +0x09, 0xc0, 0x12, 0xd1, 0x22, 0xe1, 0x7f, 0xef, +0x6c, 0xe1, 0x7f, 0xdf, 0x7d, 0xf7, 0x55, 0xed, +0x7a, 0xb5, 0x4a, 0xf8, 0x6b, 0x48, 0x02, 0x92, +0x43, 0x12, 0x40, 0x10, 0x4b, 0x03, 0x09, 0xc0, +0x12, 0x90, 0x24, 0xfc, 0x35, 0x0d, 0x1e, 0xfe, +0x9f, 0x8d, 0x3b, 0xbf, 0x5b, 0x6f, 0xbd, 0x95, +0xc2, 0x3f, 0x01, 0x24, 0x01, 0xc9, 0x69, 0x35, +0x09, 0x00, 0x66, 0x7e, 0xe7, 0x63, 0xce, 0x85, +0x24, 0x80, 0xa8, 0x1b, 0x24, 0x00, 0x35, 0x26, +0x69, 0xf8, 0x8f, 0x8d, 0x8d, 0xb1, 0x46, 0x0d, +0xff, 0xed, 0xdb, 0xb7, 0xcf, 0x1a, 0xfe, 0xfb, +0xf6, 0xed, 0xab, 0xda, 0xf5, 0x6a, 0xd5, 0xf0, +0xd7, 0x90, 0x04, 0x24, 0x67, 0x81, 0x12, 0xe0, +0x34, 0xa2, 0x04, 0xe8, 0xdf, 0x77, 0x92, 0x00, +0xa2, 0x91, 0x20, 0x01, 0xa8, 0x21, 0x8d, 0x16, +0xfe, 0xc1, 0x07, 0xde, 0xbc, 0xc3, 0xff, 0x8a, +0x2b, 0xae, 0x88, 0x0d, 0xff, 0x5b, 0x6e, 0xb9, +0x85, 0xc2, 0x7f, 0x01, 0x90, 0x04, 0x24, 0x67, +0x01, 0x12, 0xe0, 0x92, 0x04, 0x10, 0x44, 0x32, +0x68, 0x37, 0xc0, 0x1a, 0xb1, 0x94, 0xe1, 0x9f, +0xcf, 0xe7, 0x39, 0x8c, 0x0f, 0xad, 0x4a, 0xe1, +0x2f, 0xa5, 0x74, 0xe2, 0xc2, 0x5f, 0x7f, 0x60, +0xc6, 0x84, 0xff, 0x3d, 0x57, 0x5c, 0x71, 0xc5, +0xcd, 0x71, 0xe7, 0x77, 0xcb, 0x2d, 0xb7, 0xe0, +0xfe, 0xfb, 0xef, 0xaf, 0xda, 0xf5, 0x5a, 0x2e, +0xe1, 0x6f, 0x42, 0xbb, 0x08, 0x26, 0x67, 0xb6, +0x5d, 0x04, 0x95, 0x52, 0x72, 0x62, 0x62, 0xe2, +0xcd, 0xf1, 0xf1, 0xf1, 0x77, 0x6a, 0xb1, 0x8b, +0x20, 0x63, 0x4c, 0xa4, 0xd3, 0x69, 0x59, 0xad, +0x5d, 0x04, 0x3f, 0xf7, 0xb9, 0xcf, 0x29, 0x00, +0xa0, 0x5d, 0x04, 0x89, 0x7a, 0x43, 0x15, 0x80, +0x1a, 0xd0, 0xea, 0xe1, 0x7f, 0xf3, 0xcd, 0x37, +0x53, 0xf8, 0x57, 0x01, 0xaa, 0x04, 0x24, 0xa7, +0x95, 0x7a, 0x02, 0xa8, 0x12, 0x40, 0x34, 0x0a, +0x24, 0x00, 0x55, 0x66, 0x39, 0x84, 0xff, 0x03, +0x0f, 0x3c, 0x50, 0xb5, 0xeb, 0xb5, 0x5c, 0xc3, +0x5f, 0x43, 0x12, 0x90, 0x1c, 0x92, 0x00, 0x82, +0xa8, 0x2e, 0x24, 0x00, 0x55, 0xa4, 0x52, 0xf8, +0x47, 0x69, 0xf0, 0xf0, 0xbf, 0x9b, 0xc2, 0x7f, +0x69, 0x21, 0x09, 0x48, 0x0e, 0x49, 0x00, 0x41, +0x54, 0x0f, 0x12, 0x80, 0x2a, 0x31, 0x5b, 0xf8, +0x47, 0xe7, 0xfa, 0x37, 0x6a, 0xf8, 0x8f, 0x8c, +0x8c, 0xdc, 0x7d, 0xc5, 0x15, 0x57, 0xdc, 0x12, +0x77, 0x7e, 0x9f, 0xfd, 0xec, 0x67, 0x29, 0xfc, +0x6b, 0x08, 0x49, 0x40, 0x72, 0x9a, 0x59, 0x02, +0x0e, 0x1c, 0x38, 0x40, 0x12, 0x40, 0x34, 0x0c, +0x24, 0x00, 0x35, 0xa2, 0xda, 0xe1, 0x6f, 0x59, +0x16, 0x5f, 0x48, 0xf8, 0x03, 0xb0, 0x93, 0x86, +0xff, 0xaa, 0x55, 0xab, 0x2a, 0x86, 0xff, 0x83, +0x0f, 0x3e, 0x58, 0xb5, 0x6b, 0x43, 0xe1, 0x1f, +0x0f, 0x49, 0x40, 0x72, 0x9a, 0x55, 0x02, 0x0e, +0x1f, 0x3e, 0x3c, 0x2f, 0x09, 0x20, 0x88, 0x5a, +0x42, 0x02, 0x50, 0x05, 0xa2, 0xa6, 0x5e, 0x8b, +0xf0, 0xd7, 0x1f, 0x3a, 0xa8, 0x4d, 0xf8, 0xdf, +0x55, 0x29, 0xfc, 0x6f, 0xba, 0xe9, 0x26, 0x0a, +0xff, 0x25, 0x84, 0x24, 0x20, 0x39, 0xcd, 0xba, +0x4e, 0xc0, 0x7c, 0x24, 0x80, 0xaa, 0x00, 0x44, +0x2d, 0x21, 0x01, 0x58, 0x24, 0x8d, 0x1e, 0xfe, +0x4a, 0x29, 0x37, 0x41, 0xf8, 0xdf, 0x1a, 0x77, +0x6e, 0x37, 0xdd, 0x74, 0x13, 0x1e, 0x7a, 0xe8, +0xa1, 0xaa, 0x5d, 0x2b, 0x0a, 0xff, 0x64, 0x90, +0x04, 0x24, 0xa7, 0x59, 0xd7, 0x09, 0x20, 0x09, +0x20, 0x1a, 0x01, 0x12, 0x80, 0x45, 0xd0, 0x6c, +0xe1, 0x0f, 0xc0, 0x89, 0x84, 0xff, 0x9d, 0x95, +0xc2, 0xff, 0xc6, 0x1b, 0x6f, 0xa4, 0xf0, 0xaf, +0x23, 0x24, 0x01, 0xc9, 0x59, 0xa0, 0x04, 0x34, +0xd5, 0x70, 0x00, 0x49, 0x00, 0x51, 0x0b, 0x48, +0x00, 0x16, 0x48, 0xa3, 0x86, 0xbf, 0xfe, 0x10, +0x8b, 0x0b, 0x7f, 0xfd, 0xc1, 0x67, 0x84, 0xff, +0x6d, 0x71, 0xe7, 0x76, 0xc3, 0x0d, 0x37, 0xe0, +0xe1, 0x87, 0x1f, 0xae, 0xda, 0xb5, 0xa2, 0xf0, +0x5f, 0x18, 0x24, 0x01, 0xc9, 0x59, 0x0e, 0x3d, +0x01, 0x24, 0x01, 0x44, 0xb5, 0x21, 0x01, 0x58, +0x00, 0xad, 0x1e, 0xfe, 0xfb, 0xf7, 0xef, 0xaf, +0xda, 0xb5, 0xa2, 0xf0, 0x5f, 0x1c, 0x24, 0x01, +0xc9, 0xa9, 0xb7, 0x04, 0x5c, 0xba, 0x74, 0xc9, +0x22, 0x09, 0x20, 0x9a, 0x09, 0x12, 0x80, 0x79, +0xd2, 0xe8, 0xe1, 0x8f, 0x48, 0xc3, 0x1f, 0xca, +0xc3, 0xff, 0x0e, 0x0a, 0xff, 0xe6, 0x82, 0x24, +0x20, 0x39, 0xf5, 0x94, 0x00, 0xcb, 0xb2, 0x38, +0x49, 0x00, 0xd1, 0x4c, 0x90, 0x00, 0xcc, 0x83, +0x46, 0x0d, 0x7f, 0x54, 0xe8, 0xf6, 0x47, 0x7c, +0xf8, 0xdf, 0x1e, 0x77, 0x6e, 0xd7, 0x5f, 0x7f, +0x3d, 0x85, 0x7f, 0x03, 0x43, 0x12, 0x90, 0x9c, +0x7a, 0x4b, 0x80, 0x0a, 0xd6, 0xeb, 0x20, 0x09, +0x20, 0x1a, 0x1d, 0x12, 0x80, 0x84, 0x34, 0x7b, +0xf8, 0x0f, 0x0f, 0x0f, 0x53, 0xf8, 0x37, 0x39, +0x24, 0x01, 0xc9, 0xa9, 0xa7, 0x04, 0xe4, 0xf3, +0x79, 0x92, 0x00, 0xa2, 0x29, 0x20, 0x01, 0x48, +0x40, 0xa3, 0x87, 0xff, 0x5c, 0x63, 0xfe, 0xc3, +0xc3, 0xc3, 0xb7, 0xf7, 0xf5, 0xf5, 0xc5, 0x86, +0xff, 0x75, 0xd7, 0x5d, 0x87, 0xfd, 0xfb, 0xf7, +0xc7, 0xee, 0x4c, 0xb6, 0x10, 0x28, 0xfc, 0x6b, +0x0b, 0x49, 0x40, 0x72, 0x48, 0x02, 0x08, 0x62, +0x76, 0x48, 0x00, 0xe6, 0xa0, 0x45, 0xc2, 0xff, +0x8e, 0xb8, 0x73, 0xbb, 0xee, 0xba, 0xeb, 0xf0, +0xc8, 0x23, 0x8f, 0x50, 0xf8, 0x37, 0x19, 0x24, +0x01, 0xc9, 0x21, 0x09, 0x20, 0x88, 0xca, 0x90, +0x00, 0xcc, 0x42, 0x2b, 0x87, 0xff, 0xb5, 0xd7, +0x5e, 0x4b, 0xe1, 0xdf, 0xc4, 0x90, 0x04, 0x24, +0x27, 0xa1, 0x04, 0xec, 0x6e, 0x66, 0x09, 0x20, +0x88, 0x85, 0x40, 0x02, 0x50, 0x81, 0x46, 0x0d, +0x7f, 0xfd, 0x21, 0xcb, 0x3c, 0x22, 0x0f, 0x00, +0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x94, +0x20, 0xfc, 0x6f, 0x9b, 0x2d, 0xfc, 0x1f, 0x7d, +0xf4, 0x51, 0x0a, 0xff, 0x26, 0x87, 0x24, 0x20, +0x39, 0x09, 0x24, 0xe0, 0xf1, 0x6a, 0x49, 0x00, +0x82, 0xdf, 0x65, 0x2c, 0xa1, 0x04, 0x50, 0x15, +0x80, 0x58, 0x08, 0x8c, 0x4c, 0xb2, 0x9c, 0x46, +0x0f, 0x7f, 0xcc, 0xdd, 0xf0, 0x77, 0x5b, 0x5f, +0x5f, 0xdf, 0x9d, 0x71, 0xe7, 0x46, 0xe1, 0xdf, +0x7a, 0x64, 0xb3, 0x59, 0xec, 0xdb, 0xb7, 0x0f, +0x9d, 0x9d, 0x9d, 0xf5, 0x3e, 0x94, 0x86, 0xc7, +0xf7, 0x7d, 0x7c, 0xf1, 0x8b, 0x5f, 0xc4, 0x07, +0x1f, 0x7c, 0x50, 0xf6, 0x3d, 0xa5, 0x94, 0x9c, +0x98, 0x98, 0x78, 0x6b, 0x7c, 0x7c, 0xfc, 0x9f, +0x39, 0xe7, 0x45, 0xc6, 0x58, 0xd1, 0xb2, 0x2c, +0x8f, 0x31, 0x56, 0xb4, 0x6d, 0xbb, 0x08, 0xc0, +0x63, 0x8c, 0x85, 0x0f, 0xc7, 0x71, 0x3c, 0xce, +0xb9, 0xc7, 0x18, 0xf3, 0xf5, 0x33, 0x63, 0xcc, +0x07, 0x20, 0xd2, 0xe9, 0xb4, 0x0f, 0x40, 0x30, +0xc6, 0x04, 0x00, 0x11, 0xbc, 0x27, 0x19, 0x63, +0x42, 0x08, 0x21, 0x7d, 0xdf, 0x97, 0xed, 0xed, +0xed, 0xd2, 0xf7, 0x7d, 0x99, 0x4e, 0xa7, 0x95, +0xef, 0xfb, 0x32, 0x9b, 0xcd, 0xaa, 0x73, 0xe7, +0xce, 0xa9, 0x8e, 0x8e, 0x0e, 0xd5, 0xdb, 0xdb, +0xab, 0x4e, 0x9e, 0x3c, 0xa9, 0x00, 0xa0, 0xbf, +0xbf, 0x5f, 0x0d, 0x0f, 0x0f, 0xab, 0x37, 0xdf, +0x7c, 0x13, 0x23, 0x23, 0x23, 0xe1, 0x07, 0xf6, +0xe7, 0x3e, 0xf7, 0x39, 0x05, 0xa0, 0xe4, 0x77, +0x59, 0xd1, 0x07, 0x3a, 0x31, 0x0f, 0xa8, 0x02, +0x10, 0xc1, 0x0c, 0x7f, 0xa5, 0x54, 0xc3, 0x84, +0x3f, 0x92, 0x77, 0xfb, 0x57, 0x0c, 0xff, 0xcf, +0x7c, 0xe6, 0x33, 0x14, 0xfe, 0x2d, 0x08, 0x55, +0x02, 0x92, 0x93, 0xb0, 0x12, 0xb0, 0x67, 0xb1, +0x95, 0x80, 0x7c, 0x3e, 0x1f, 0x5b, 0x09, 0xd0, +0xbb, 0x7a, 0x52, 0x25, 0x80, 0x68, 0x04, 0xa8, +0x02, 0x60, 0x10, 0x0d, 0x7f, 0x4d, 0x23, 0x84, +0x7f, 0xb1, 0x58, 0x2c, 0xf9, 0x00, 0x5a, 0x48, +0xf8, 0x3f, 0xf6, 0xd8, 0x63, 0x14, 0xfe, 0x2d, +0x0c, 0x55, 0x02, 0x92, 0x93, 0xa0, 0x12, 0xf0, +0x67, 0xe3, 0xe3, 0xe3, 0x3f, 0x6b, 0xd6, 0x4a, +0x40, 0x70, 0x1e, 0xf4, 0xe1, 0x4e, 0xcc, 0x0a, +0x55, 0x00, 0x02, 0x1a, 0x39, 0xfc, 0x17, 0x7b, +0xe7, 0x7f, 0xcd, 0x35, 0xd7, 0x50, 0xf8, 0x2f, +0x03, 0xa8, 0x12, 0x90, 0x9c, 0x04, 0x95, 0x80, +0xc7, 0x6a, 0x59, 0x09, 0xa0, 0xd9, 0x01, 0x44, +0x23, 0x40, 0x02, 0x80, 0xc6, 0x0f, 0xff, 0x84, +0xdd, 0xfe, 0x15, 0xc3, 0xff, 0xf1, 0xc7, 0x1f, +0xa7, 0xf0, 0x5f, 0x26, 0x90, 0x04, 0x24, 0x67, +0x2e, 0x09, 0x18, 0x1c, 0x1c, 0x7c, 0x7c, 0x68, +0x68, 0x28, 0x91, 0x04, 0x28, 0xa5, 0x48, 0x02, +0x88, 0xa6, 0x63, 0xd9, 0x0e, 0x01, 0x54, 0xfa, +0xc5, 0x50, 0x4a, 0x95, 0x05, 0x3f, 0x00, 0x2c, +0x34, 0xfc, 0xf5, 0x2f, 0x79, 0xb5, 0xc2, 0x5f, +0x29, 0xe5, 0x9a, 0x5b, 0xfa, 0xce, 0x36, 0xd5, +0x8f, 0xc2, 0x7f, 0xf9, 0x42, 0xc3, 0x01, 0xc9, +0x99, 0x6d, 0x38, 0x00, 0x80, 0x9a, 0x98, 0x98, +0x78, 0xeb, 0xe8, 0xd1, 0xa3, 0x73, 0x0e, 0x07, +0x38, 0x8e, 0xe3, 0x31, 0xc6, 0xe6, 0x35, 0x1c, +0x20, 0x84, 0x90, 0xed, 0xed, 0xed, 0x0b, 0x1a, +0x0e, 0x18, 0x1b, 0x1b, 0x53, 0x00, 0x12, 0x0d, +0x07, 0x00, 0x34, 0x24, 0x40, 0x94, 0xb3, 0x2c, +0x05, 0xa0, 0x19, 0xc2, 0x3f, 0x6e, 0xcc, 0x7f, +0x3e, 0xe1, 0x4f, 0x63, 0xfe, 0x04, 0x49, 0x40, +0x72, 0x5a, 0x4d, 0x02, 0x2a, 0xfd, 0xde, 0x93, +0x04, 0x10, 0x26, 0xcb, 0x6e, 0x08, 0xa0, 0x59, +0xc3, 0x1f, 0x80, 0x43, 0xe1, 0x4f, 0xcc, 0x07, +0x1a, 0x0e, 0x48, 0xce, 0x6c, 0xc3, 0x01, 0x00, +0xd8, 0xc0, 0xc0, 0xc0, 0xe3, 0x43, 0x43, 0x43, +0xa3, 0x73, 0x0d, 0x07, 0x04, 0x55, 0xbb, 0x79, +0x0d, 0x07, 0x2c, 0x66, 0x17, 0xc1, 0x91, 0x91, +0x11, 0x06, 0xa0, 0x6c, 0x38, 0xa0, 0x52, 0xce, +0xd3, 0x90, 0x00, 0x61, 0xb2, 0xac, 0x04, 0xa0, +0x99, 0xc3, 0x3f, 0xe9, 0x0a, 0x7f, 0x14, 0xfe, +0x84, 0x09, 0x49, 0x40, 0x72, 0x12, 0x48, 0xc0, +0x63, 0xad, 0x20, 0x01, 0x04, 0xa1, 0x59, 0x36, +0x02, 0x40, 0xe1, 0x3f, 0x7f, 0x28, 0xfc, 0x5b, +0x03, 0x92, 0x80, 0xe4, 0x2c, 0x07, 0x09, 0xa0, +0x2a, 0x00, 0xa1, 0x59, 0x16, 0x02, 0xb0, 0xd4, +0xe1, 0x3f, 0x35, 0x35, 0x15, 0xfe, 0x52, 0x57, +0x39, 0xfc, 0xef, 0x98, 0x6d, 0x79, 0x5f, 0x0a, +0x7f, 0xa2, 0x12, 0x24, 0x01, 0xc9, 0x21, 0x09, +0x20, 0x96, 0x0b, 0x2d, 0x5f, 0x26, 0xaa, 0x47, +0xf8, 0x5b, 0x96, 0xc5, 0x51, 0xfd, 0x86, 0xbf, +0x3b, 0x2a, 0x6d, 0xe9, 0x4b, 0xcb, 0xfb, 0x12, +0x49, 0xa1, 0xc6, 0xc0, 0xe4, 0x24, 0x68, 0x0c, +0xfc, 0xc6, 0xd1, 0xa3, 0x47, 0x7f, 0xd2, 0xcc, +0x8d, 0x81, 0xd4, 0x14, 0xb8, 0xbc, 0x69, 0xe9, +0x0a, 0x00, 0x85, 0xff, 0xfc, 0xa1, 0xf0, 0x6f, +0x6d, 0xa8, 0x12, 0x90, 0x9c, 0x04, 0x95, 0x80, +0x47, 0x87, 0x86, 0x86, 0xf6, 0xc6, 0x55, 0x02, +0xcc, 0xe9, 0xbb, 0x4b, 0x59, 0x09, 0x00, 0x00, +0xea, 0x09, 0x20, 0x92, 0xd2, 0xb2, 0xff, 0x53, +0xb4, 0x4a, 0xf8, 0x8f, 0x8c, 0x8c, 0xdc, 0xb1, +0x6a, 0xd5, 0xaa, 0xd8, 0xf0, 0xbf, 0xee, 0xba, +0xeb, 0x68, 0x4b, 0x5f, 0x62, 0x41, 0x50, 0x25, +0x20, 0x39, 0x73, 0x55, 0x02, 0x8e, 0x1d, 0x3b, +0xf6, 0x8d, 0x23, 0x47, 0x8e, 0x34, 0x4c, 0x25, +0xa0, 0xbf, 0xbf, 0x5f, 0x01, 0x40, 0xd2, 0x4a, +0x00, 0x55, 0x01, 0x96, 0x2f, 0x2d, 0x29, 0x00, +0x8d, 0x1e, 0xfe, 0xfa, 0xae, 0x00, 0x14, 0xfe, +0x44, 0x1d, 0x21, 0x09, 0x48, 0xce, 0x52, 0x49, +0x00, 0xe7, 0xdc, 0x77, 0x5d, 0x97, 0x24, 0x80, +0x58, 0x12, 0x5a, 0x6e, 0x08, 0xa0, 0x96, 0xe1, +0xef, 0x38, 0x0e, 0x5f, 0xaa, 0xf0, 0x1f, 0x1e, +0x1e, 0xbe, 0x93, 0xc2, 0x9f, 0xa8, 0x25, 0x34, +0x1c, 0x90, 0x9c, 0xb9, 0x86, 0x03, 0x36, 0x6c, +0xd8, 0xf0, 0xe8, 0xc6, 0x8d, 0x1b, 0x63, 0x87, +0x03, 0x30, 0x8f, 0xc6, 0x40, 0xe3, 0xf3, 0x63, +0x51, 0xc3, 0x01, 0xfa, 0xf3, 0x2c, 0xe9, 0x70, +0x00, 0x35, 0x05, 0x2e, 0x4f, 0x5a, 0xaa, 0x02, +0x30, 0xdf, 0xf0, 0xd7, 0xbf, 0x1c, 0x71, 0xe1, +0xef, 0xba, 0x2e, 0xcf, 0xe5, 0x72, 0xcc, 0x0c, +0xff, 0x4c, 0x26, 0xc3, 0x2a, 0x85, 0xbf, 0x10, +0xc2, 0x06, 0x60, 0x45, 0xc3, 0x5f, 0x08, 0xe1, +0x00, 0xb0, 0xe7, 0x1b, 0xfe, 0x7d, 0x7d, 0x7d, +0xb7, 0xc5, 0x9d, 0x0b, 0x85, 0x3f, 0x51, 0x6d, +0xa8, 0x12, 0x90, 0x9c, 0x56, 0xab, 0x04, 0x00, +0xa5, 0xcb, 0x06, 0x53, 0x25, 0x60, 0x79, 0xd1, +0x32, 0x15, 0x80, 0x46, 0x08, 0x7f, 0xcc, 0x54, +0x01, 0x16, 0x15, 0xfe, 0x23, 0x23, 0x23, 0x15, +0xc3, 0xff, 0xfa, 0xeb, 0xaf, 0xa7, 0xf0, 0x27, +0xaa, 0x0e, 0x55, 0x02, 0x92, 0xd3, 0xcc, 0x95, +0x80, 0x24, 0x1b, 0x08, 0x51, 0x25, 0x60, 0x79, +0xd1, 0x12, 0x02, 0xd0, 0x28, 0xe1, 0x5f, 0x28, +0x14, 0x16, 0x1d, 0xfe, 0xab, 0x56, 0xad, 0xaa, +0x18, 0xfe, 0xfb, 0xf7, 0xef, 0xa7, 0xf0, 0x27, +0x6a, 0x02, 0x49, 0x40, 0x72, 0x9a, 0x55, 0x02, +0x92, 0xee, 0x22, 0x48, 0x12, 0xb0, 0x7c, 0x68, +0xfa, 0x21, 0x80, 0xa5, 0x08, 0xff, 0xf3, 0xe7, +0xcf, 0x5b, 0xb6, 0x6d, 0x73, 0x0a, 0x7f, 0xa2, +0xd5, 0xa1, 0xe1, 0x80, 0xe4, 0x24, 0x58, 0x27, +0xe0, 0xcf, 0x8e, 0x1e, 0x3d, 0xfa, 0xd3, 0x46, +0x99, 0x1d, 0x00, 0xcc, 0xac, 0x13, 0x30, 0x3c, +0x3c, 0xac, 0xde, 0x7c, 0xf3, 0xcd, 0xd8, 0xe1, +0x00, 0x80, 0x86, 0x04, 0x96, 0x13, 0x4d, 0x2d, +0x00, 0x8b, 0x09, 0xff, 0x73, 0xe7, 0xce, 0xb1, +0x91, 0x91, 0x11, 0xcc, 0x37, 0xfc, 0x11, 0x58, +0xb8, 0x0e, 0x7f, 0x29, 0xa5, 0xed, 0x79, 0x9e, +0x95, 0x24, 0xfc, 0xa5, 0x94, 0xe1, 0xdd, 0x40, +0x24, 0xfc, 0xef, 0x5a, 0xb5, 0x6a, 0xd5, 0xad, +0x71, 0xe7, 0x72, 0xc3, 0x0d, 0x37, 0x60, 0xff, +0xfe, 0xfd, 0x55, 0xbb, 0x66, 0x14, 0xfe, 0xc4, +0x5c, 0x90, 0x04, 0x24, 0xa7, 0x9e, 0x12, 0x90, +0x4e, 0xa7, 0x25, 0x63, 0x4c, 0x08, 0x21, 0x64, +0x36, 0x9b, 0x95, 0x5a, 0x06, 0xd2, 0xe9, 0xb4, +0x9a, 0x9c, 0x9c, 0x54, 0x2b, 0x57, 0xae, 0x94, +0xf3, 0x91, 0x00, 0x80, 0x44, 0x60, 0xb9, 0xd1, +0xb4, 0x02, 0x50, 0xeb, 0xf0, 0xb7, 0x2c, 0x8b, +0x4f, 0x4f, 0x4f, 0x73, 0x0a, 0x7f, 0x62, 0x39, +0x42, 0x12, 0x90, 0x9c, 0x46, 0x93, 0x80, 0xa9, +0xa9, 0x29, 0xd5, 0xd5, 0xd5, 0x25, 0xb5, 0x04, +0x74, 0x75, 0x75, 0xa9, 0x33, 0x67, 0xce, 0x94, +0x49, 0x00, 0x00, 0xcc, 0x55, 0x0d, 0xd0, 0xd0, +0xb4, 0xc1, 0xd6, 0xa4, 0x29, 0x05, 0xa0, 0x5e, +0xe1, 0x6f, 0x3e, 0x28, 0xfc, 0x89, 0x56, 0x87, +0x24, 0x20, 0x39, 0xd5, 0x92, 0x00, 0x2d, 0x02, +0xb5, 0x94, 0x00, 0x00, 0x30, 0x67, 0x08, 0x24, +0xa9, 0x06, 0xc4, 0x31, 0xd7, 0x90, 0x24, 0x49, +0x42, 0xe3, 0xd3, 0x74, 0x02, 0x40, 0xe1, 0x3f, +0x7f, 0x28, 0xfc, 0x89, 0x85, 0x42, 0x12, 0x90, +0x9c, 0x5a, 0x49, 0x80, 0x16, 0x01, 0xcc, 0x04, +0xbf, 0x9f, 0x54, 0x02, 0x52, 0xa9, 0x94, 0x12, +0x42, 0xc8, 0xb6, 0xb6, 0x36, 0x75, 0xf1, 0xe2, +0x45, 0xd5, 0xdf, 0xdf, 0x2f, 0xcf, 0x9c, 0x39, +0xa3, 0x00, 0x20, 0x3a, 0x4d, 0x70, 0x78, 0x78, +0x58, 0x01, 0x40, 0x9c, 0x08, 0x00, 0x73, 0xcb, +0x40, 0x25, 0xe6, 0xd3, 0xb7, 0x44, 0xc2, 0xb0, +0xf4, 0x34, 0x95, 0x00, 0x2c, 0x87, 0xf0, 0xbf, +0xf1, 0xc6, 0x1b, 0xf1, 0xf0, 0xc3, 0x0f, 0x57, +0xed, 0x9a, 0x51, 0xf8, 0x13, 0x8b, 0x85, 0x24, +0x20, 0x39, 0xb5, 0x1a, 0x0e, 0x48, 0x2a, 0x01, +0x42, 0x08, 0xc9, 0x18, 0x13, 0xd9, 0x6c, 0x56, +0xe6, 0x72, 0x39, 0xd5, 0xd1, 0xd1, 0x21, 0x4d, +0x09, 0x88, 0x36, 0x07, 0xae, 0x59, 0xb3, 0x46, +0xfd, 0xe4, 0x27, 0x3f, 0x41, 0x52, 0x11, 0x30, +0x59, 0xa8, 0x14, 0x98, 0x24, 0x11, 0x04, 0x12, +0x83, 0xda, 0xd1, 0x34, 0x02, 0x40, 0xe1, 0x3f, +0x7f, 0x9a, 0x21, 0xfc, 0x5d, 0xd7, 0x85, 0xeb, +0xba, 0x00, 0x66, 0xfe, 0x2d, 0x95, 0x52, 0x28, +0x14, 0x0a, 0x10, 0x42, 0xd4, 0xf9, 0xc8, 0x08, +0x13, 0x92, 0x80, 0xe4, 0x24, 0x90, 0x80, 0xb7, +0x8e, 0x1e, 0x3d, 0xfa, 0xb3, 0x85, 0x48, 0x80, +0xf9, 0x88, 0x4a, 0x40, 0x70, 0xf7, 0x1f, 0xce, +0x0c, 0x68, 0x6b, 0x6b, 0x93, 0x42, 0x08, 0xd9, +0xd1, 0xd1, 0x21, 0xa7, 0xa6, 0xa6, 0x54, 0x4f, +0x4f, 0x8f, 0xd4, 0x12, 0x10, 0x37, 0x24, 0x00, +0xa0, 0x4c, 0x04, 0x80, 0x19, 0x19, 0x00, 0x30, +0xa7, 0x10, 0x54, 0x62, 0x3e, 0xa2, 0x40, 0x42, +0xb0, 0xb4, 0x34, 0x85, 0x00, 0xb4, 0x50, 0xf8, +0xdf, 0xbd, 0x6a, 0xd5, 0xaa, 0x5b, 0xe2, 0xce, +0xe5, 0xa6, 0x9b, 0x6e, 0xc2, 0x43, 0x0f, 0x3d, +0x54, 0xb5, 0x6b, 0xd6, 0xa8, 0xe1, 0x9f, 0x4e, +0xa7, 0xb1, 0x72, 0xe5, 0x4a, 0xac, 0x58, 0xb1, +0x02, 0xa9, 0x54, 0xaa, 0xe2, 0x2f, 0x7c, 0xa1, +0x50, 0x40, 0x2e, 0x97, 0xc3, 0xe4, 0xe4, 0x24, +0xce, 0x9e, 0x3d, 0x0b, 0xcf, 0xf3, 0x96, 0xf8, +0x48, 0x89, 0x28, 0x24, 0x01, 0xc9, 0x59, 0xa8, +0x04, 0xe8, 0xe7, 0x24, 0x12, 0x90, 0x4a, 0xa5, +0xc2, 0x55, 0x03, 0xb5, 0x04, 0xb8, 0xae, 0x2b, +0x39, 0xe7, 0x42, 0x08, 0x21, 0x33, 0x99, 0x8c, +0x14, 0x42, 0x94, 0x48, 0x80, 0x39, 0x4d, 0xb0, +0xab, 0xab, 0x4b, 0x8d, 0x8f, 0x8f, 0x43, 0x57, +0x03, 0x00, 0x20, 0x5a, 0x11, 0x00, 0x4a, 0x65, +0x40, 0xa3, 0xa5, 0x00, 0x58, 0xb8, 0x18, 0x68, +0x66, 0x13, 0x04, 0xea, 0x33, 0xa8, 0x2d, 0x0d, +0x2f, 0x00, 0x8d, 0x12, 0xfe, 0x85, 0x42, 0xc1, +0x66, 0x8c, 0x59, 0x41, 0xb0, 0xdb, 0x98, 0x67, +0xf8, 0x6f, 0xdf, 0xbe, 0xfd, 0x9e, 0x2b, 0xae, +0xb8, 0xe2, 0xe6, 0xb8, 0x73, 0x69, 0xf5, 0xf0, +0xb7, 0x2c, 0x0b, 0x3d, 0x3d, 0x3d, 0xe8, 0xed, +0xed, 0x45, 0x7b, 0x7b, 0xfb, 0x82, 0x7e, 0xc6, +0xc5, 0x8b, 0x17, 0x71, 0xfa, 0xf4, 0x69, 0x9c, +0x3d, 0x7b, 0xb6, 0xca, 0x47, 0x47, 0xcc, 0x07, +0x92, 0x80, 0xe4, 0x2c, 0xa5, 0x04, 0x00, 0x10, +0x96, 0x65, 0xf9, 0x41, 0xf0, 0x0b, 0x29, 0xa5, +0x64, 0x8c, 0x09, 0x2d, 0x01, 0x1d, 0x1d, 0x1d, +0x72, 0x7a, 0x7a, 0x5a, 0xad, 0x58, 0xb1, 0x42, +0x5e, 0xba, 0x74, 0x49, 0x99, 0x43, 0x02, 0xba, +0x1a, 0x00, 0xcc, 0xf4, 0x06, 0x00, 0x97, 0x45, +0x00, 0x40, 0x89, 0x0c, 0x98, 0xc4, 0x89, 0x81, +0x89, 0x29, 0x09, 0xc0, 0xfc, 0x44, 0x21, 0xc9, +0x4c, 0x84, 0x28, 0x24, 0x03, 0xf3, 0xa7, 0xa1, +0x05, 0xa0, 0x91, 0xc2, 0x5f, 0x19, 0x4b, 0xfc, +0x22, 0x41, 0xf8, 0x0b, 0x21, 0x5c, 0x00, 0x8e, +0x10, 0xc2, 0xdd, 0xb1, 0x63, 0xc7, 0x7d, 0x2b, +0x57, 0xae, 0xbc, 0x29, 0xee, 0x5c, 0x5a, 0x39, +0xfc, 0x6d, 0xdb, 0xc6, 0xba, 0x75, 0xeb, 0xd0, +0xd3, 0xd3, 0x03, 0xce, 0xab, 0xb3, 0xe8, 0x64, +0x2e, 0x97, 0xc3, 0xf1, 0xe3, 0xc7, 0x71, 0xe1, +0xc2, 0x85, 0xaa, 0xfc, 0x3c, 0x62, 0xfe, 0x90, +0x04, 0x24, 0x67, 0x2e, 0x09, 0x18, 0x1f, 0x1f, +0x7f, 0x6b, 0x7c, 0x7c, 0x3c, 0xb1, 0x04, 0x44, +0x67, 0x06, 0x44, 0x25, 0x00, 0x80, 0xc8, 0x64, +0x32, 0x02, 0x80, 0x90, 0x52, 0x4a, 0x21, 0x84, +0xd4, 0xbd, 0x01, 0x66, 0x73, 0xa0, 0xae, 0x06, +0x44, 0x45, 0x40, 0x57, 0x04, 0x80, 0x52, 0x19, +0x00, 0x00, 0x2d, 0x04, 0x40, 0x65, 0x29, 0x88, +0x52, 0x49, 0x12, 0xe6, 0x53, 0x41, 0x88, 0xca, +0x00, 0x89, 0x40, 0xf5, 0x68, 0x58, 0x01, 0x68, +0xd4, 0xf0, 0x0f, 0x56, 0xf3, 0xb3, 0xe7, 0x11, +0xfe, 0xfb, 0x56, 0xae, 0x5c, 0x79, 0x63, 0xdc, +0xb9, 0x7c, 0xf6, 0xb3, 0x9f, 0xc5, 0x83, 0x0f, +0x3e, 0x58, 0xb5, 0x6b, 0xd6, 0x48, 0xe1, 0x9f, +0xcd, 0x66, 0xb1, 0x69, 0xd3, 0xa6, 0x70, 0x7c, +0xbf, 0xda, 0x5c, 0xbc, 0x78, 0x11, 0x13, 0x13, +0x13, 0x28, 0x14, 0x0a, 0x35, 0xf9, 0xf9, 0xc4, +0xec, 0x90, 0x04, 0x24, 0x67, 0x36, 0x09, 0x50, +0x4a, 0xc9, 0x89, 0x89, 0x89, 0x3f, 0x5b, 0x8c, +0x04, 0xb8, 0xae, 0x1b, 0x0e, 0x05, 0xc0, 0x90, +0x00, 0xdd, 0x10, 0xa8, 0x05, 0x40, 0x08, 0x21, +0x1d, 0xc7, 0x51, 0x42, 0x08, 0xe9, 0xba, 0x6e, +0x49, 0x35, 0xa0, 0xbd, 0xbd, 0x5d, 0x9d, 0x3c, +0x79, 0x12, 0x5a, 0x04, 0x00, 0x40, 0x57, 0x05, +0x80, 0xcb, 0x32, 0x60, 0xa2, 0xc5, 0x00, 0x28, +0x95, 0x03, 0x93, 0xd9, 0x44, 0x21, 0x2a, 0x07, +0x49, 0x7a, 0x0d, 0xe6, 0x23, 0x03, 0x24, 0x02, +0x73, 0xd3, 0x90, 0x02, 0xd0, 0x28, 0xe1, 0x1f, +0xac, 0xc5, 0x3d, 0x6b, 0xf8, 0x07, 0xeb, 0x7d, +0x3b, 0x71, 0xe1, 0xbf, 0x73, 0xe7, 0xce, 0xfb, +0x7b, 0x7b, 0x7b, 0x6f, 0x88, 0x3b, 0x97, 0x9b, +0x6f, 0xbe, 0x19, 0x0f, 0x3c, 0xf0, 0x40, 0xd5, +0xae, 0x59, 0x23, 0x85, 0x7f, 0x5f, 0x5f, 0x1f, +0xd6, 0xad, 0x5b, 0x57, 0xb5, 0xa5, 0x8b, 0x2b, +0x21, 0x84, 0xc0, 0xd1, 0xa3, 0x47, 0x71, 0xfe, +0xfc, 0xf9, 0x9a, 0xfe, 0x3d, 0x44, 0x3c, 0x24, +0x01, 0xc9, 0xa9, 0xa6, 0x04, 0x00, 0xd0, 0x33, +0x02, 0x7c, 0xcb, 0xb2, 0x3c, 0xd7, 0x75, 0x7d, +0xa5, 0x54, 0x89, 0x00, 0xa4, 0x52, 0x29, 0x81, +0xa0, 0x41, 0xd0, 0xac, 0x02, 0xe8, 0x21, 0x01, +0xd7, 0x75, 0x95, 0x9e, 0x25, 0x90, 0xc9, 0x64, +0x94, 0x16, 0x01, 0x00, 0xd0, 0x15, 0x01, 0x7d, +0x7c, 0x5a, 0x08, 0xcc, 0xea, 0x80, 0x49, 0x9c, +0x1c, 0x98, 0x98, 0xc3, 0x09, 0x26, 0x71, 0x72, +0x60, 0xce, 0x42, 0xd0, 0x54, 0x12, 0x82, 0x4a, +0xab, 0x16, 0x9a, 0x90, 0x04, 0xcc, 0x4e, 0xc3, +0x09, 0x40, 0x33, 0x84, 0xbf, 0x9a, 0x59, 0xcf, +0x7f, 0xae, 0xf0, 0x7f, 0xb0, 0xb7, 0xb7, 0xf7, +0xba, 0xb8, 0x73, 0xb9, 0xe5, 0x96, 0x5b, 0x70, +0xff, 0xfd, 0xf7, 0x57, 0xed, 0x9a, 0x35, 0x4a, +0xf8, 0x5b, 0x96, 0x85, 0xa1, 0xa1, 0x21, 0xac, +0x58, 0xb1, 0x62, 0x49, 0xff, 0xde, 0x8f, 0x3f, +0xfe, 0x18, 0xc7, 0x8f, 0x1f, 0x47, 0xa3, 0xfd, +0xbf, 0xbc, 0x1c, 0x20, 0x09, 0x48, 0xce, 0x22, +0x25, 0xc0, 0x63, 0x8c, 0x15, 0x75, 0x15, 0x00, +0x86, 0x04, 0xe8, 0x2a, 0x80, 0x5e, 0x2c, 0x48, +0x8b, 0x80, 0x96, 0x00, 0x29, 0xa5, 0x74, 0x5d, +0x57, 0x4a, 0x29, 0x43, 0x11, 0x68, 0x6b, 0x6b, +0x93, 0xf9, 0x7c, 0x5e, 0xb9, 0xae, 0xab, 0xf4, +0xb0, 0x40, 0x26, 0x93, 0x51, 0xa7, 0x4f, 0x9f, +0x86, 0x1e, 0x1a, 0x00, 0x66, 0x64, 0x00, 0x00, +0x4c, 0x21, 0x00, 0x2e, 0x4b, 0x81, 0x66, 0x7c, +0x7c, 0x1c, 0x00, 0x62, 0x05, 0x01, 0xa8, 0x5c, +0x41, 0x98, 0x6d, 0x58, 0x21, 0x2a, 0x03, 0x24, +0x02, 0xd5, 0xa7, 0xa1, 0x04, 0x60, 0xb1, 0xe1, +0xbf, 0x7a, 0xf5, 0x6a, 0x06, 0x00, 0x7a, 0x57, +0xac, 0x5c, 0x2e, 0xc7, 0x1c, 0xc7, 0xe1, 0x85, +0x42, 0x81, 0xd5, 0xf0, 0xce, 0x3f, 0x7c, 0x46, +0x10, 0xfe, 0xbb, 0x76, 0xed, 0x7a, 0xa8, 0xa7, +0xa7, 0xe7, 0xda, 0xb8, 0x73, 0xb9, 0xf5, 0xd6, +0x5b, 0xb1, 0x6f, 0xdf, 0xbe, 0xaa, 0x5d, 0xb3, +0x46, 0x0a, 0xff, 0x6d, 0xdb, 0xb6, 0x21, 0x9d, +0x4e, 0xd7, 0xe5, 0xef, 0x3f, 0x7f, 0xfe, 0x3c, +0x3e, 0xfc, 0xf0, 0x43, 0x92, 0x80, 0x3a, 0x40, +0x12, 0x90, 0x9c, 0x79, 0x4a, 0x80, 0x67, 0x59, +0x56, 0x31, 0x22, 0x01, 0x9e, 0x6d, 0xdb, 0xe6, +0xa2, 0x41, 0x3e, 0x63, 0xcc, 0x33, 0x05, 0x40, +0x3f, 0xbb, 0xae, 0x1b, 0x56, 0x01, 0x5c, 0xd7, +0x0d, 0x87, 0x01, 0xcc, 0x6a, 0x40, 0x3e, 0x9f, +0x57, 0x8e, 0xe3, 0x28, 0x5d, 0x11, 0x70, 0x5d, +0x57, 0x45, 0x65, 0x00, 0x00, 0xb4, 0x10, 0x00, +0x97, 0xa5, 0xc0, 0x24, 0x2a, 0x08, 0x40, 0xbc, +0x24, 0x44, 0x05, 0xc1, 0x14, 0x83, 0xd9, 0x84, +0x40, 0xaf, 0x56, 0xa8, 0x99, 0x6d, 0xb1, 0x22, +0x92, 0x80, 0xe4, 0x34, 0x8c, 0x00, 0xc4, 0x85, +0xbf, 0x3e, 0xb6, 0x6a, 0x87, 0xbf, 0x52, 0xca, +0xe2, 0x9c, 0xf3, 0x5c, 0x2e, 0xb7, 0xd8, 0x3b, +0x7f, 0xf3, 0xd9, 0x95, 0x52, 0x3a, 0xbb, 0x76, +0xed, 0x7a, 0xb8, 0xa7, 0xa7, 0xe7, 0x33, 0x71, +0xe7, 0x78, 0xfb, 0xed, 0xb7, 0xe3, 0xde, 0x7b, +0xef, 0xad, 0xda, 0x35, 0x6b, 0x94, 0xf0, 0x07, +0x80, 0x4d, 0x9b, 0x36, 0xa1, 0xbb, 0xbb, 0xbb, +0xae, 0xc7, 0x40, 0x12, 0x50, 0x3f, 0x48, 0x02, +0x92, 0xb3, 0x10, 0x09, 0x00, 0xe0, 0xd9, 0xb6, +0x5d, 0xac, 0x24, 0x01, 0x8e, 0xe3, 0xf8, 0x08, +0xaa, 0x01, 0x9c, 0x73, 0x5f, 0x29, 0x15, 0x0a, +0x00, 0x66, 0x16, 0x09, 0x12, 0x42, 0x08, 0x19, +0xad, 0x06, 0x14, 0x0a, 0x05, 0x95, 0xc9, 0x64, +0xa4, 0xe3, 0x38, 0x4a, 0x57, 0x04, 0x52, 0xa9, +0x94, 0x3a, 0x7f, 0xfe, 0x3c, 0xf4, 0x6b, 0x00, +0xd0, 0x42, 0x00, 0x20, 0x94, 0x02, 0x8d, 0x29, +0x07, 0x9a, 0xa8, 0x24, 0x54, 0xaa, 0x20, 0x44, +0xa5, 0x60, 0xae, 0x59, 0x08, 0x73, 0x89, 0xc0, +0x5c, 0xd5, 0x00, 0x92, 0x80, 0x52, 0x1a, 0x42, +0x00, 0xaa, 0x11, 0xfe, 0x93, 0x93, 0x93, 0xac, +0xbb, 0xbb, 0x9b, 0x55, 0x3b, 0xfc, 0xa5, 0x94, +0x0e, 0x00, 0x7b, 0xae, 0xf0, 0x57, 0x4a, 0xb9, +0xbb, 0x76, 0xed, 0xda, 0xdf, 0xdd, 0xdd, 0x7d, +0x75, 0xdc, 0x39, 0xde, 0x79, 0xe7, 0x9d, 0xb8, +0xfb, 0xee, 0xbb, 0xab, 0x76, 0xcd, 0x1a, 0x29, +0xfc, 0x57, 0xad, 0x5a, 0x85, 0x0d, 0x1b, 0x36, +0xd4, 0xfb, 0x30, 0x00, 0x90, 0x04, 0xd4, 0x13, +0x92, 0x80, 0xe4, 0xcc, 0x25, 0x01, 0xe3, 0xe3, +0xe3, 0x6f, 0x4d, 0x4c, 0x4c, 0xfc, 0x73, 0x54, +0x02, 0x2c, 0xcb, 0xf2, 0xf4, 0x7b, 0xb6, 0x6d, +0xeb, 0x21, 0x00, 0x2f, 0x18, 0x06, 0xf0, 0x00, +0x84, 0x55, 0x00, 0xc7, 0x71, 0x42, 0x01, 0x88, +0x0e, 0x07, 0x04, 0x65, 0x7f, 0x59, 0x2c, 0x16, +0x95, 0x16, 0x01, 0xdb, 0xb6, 0x95, 0x16, 0x01, +0x5d, 0x15, 0x00, 0x00, 0x53, 0x08, 0xf4, 0x31, +0x6a, 0x31, 0xd0, 0x4c, 0x4d, 0x4d, 0x95, 0x7c, +0x3d, 0x9b, 0x24, 0x98, 0x72, 0xa0, 0xc5, 0x20, +0x3a, 0x03, 0x01, 0xb8, 0x2c, 0x03, 0x7a, 0x91, +0x22, 0xa0, 0x7c, 0x13, 0x23, 0x4d, 0x25, 0x11, +0x20, 0x09, 0x98, 0x9d, 0xba, 0x0b, 0x40, 0xb3, +0x84, 0xbf, 0xe7, 0x79, 0xae, 0xae, 0x02, 0xc4, +0x85, 0xff, 0xee, 0xdd, 0xbb, 0x1f, 0x59, 0xb1, +0x62, 0xc5, 0xde, 0xb8, 0x73, 0xbc, 0xeb, 0xae, +0xbb, 0x70, 0xd7, 0x5d, 0x77, 0x55, 0xed, 0x9a, +0x35, 0x52, 0xf8, 0x67, 0xb3, 0x59, 0x6c, 0xdd, +0xba, 0xb5, 0xe6, 0x0d, 0x7f, 0xf3, 0xe1, 0xcc, +0x99, 0x33, 0x38, 0x7a, 0xf4, 0x68, 0xbd, 0x0f, +0x63, 0x59, 0x42, 0x12, 0x90, 0x9c, 0x79, 0x48, +0x40, 0x28, 0x00, 0xe6, 0x70, 0x80, 0x59, 0x05, +0x00, 0x10, 0x0a, 0x80, 0x31, 0x04, 0xe0, 0x2b, +0xa5, 0xf4, 0x02, 0x41, 0xa1, 0x00, 0x38, 0x8e, +0x23, 0x4d, 0x11, 0xb0, 0x2c, 0x4b, 0x49, 0x29, +0xa5, 0x6d, 0xdb, 0xca, 0xb6, 0x6d, 0x65, 0xca, +0x00, 0x00, 0x68, 0x21, 0xd0, 0xc7, 0x66, 0x8a, +0x40, 0x2e, 0x97, 0x2b, 0x09, 0x90, 0x4a, 0x92, +0x60, 0x0a, 0x42, 0x74, 0x58, 0x21, 0xda, 0x67, +0x50, 0x69, 0x3a, 0xe2, 0x5c, 0x22, 0x30, 0x9f, +0x6a, 0x00, 0x49, 0xc0, 0x0c, 0x0d, 0x27, 0x00, +0xd5, 0x08, 0xff, 0x6c, 0x36, 0xcb, 0x26, 0x27, +0x27, 0xe7, 0x0c, 0x7f, 0x29, 0x65, 0xb8, 0xad, +0x6f, 0xa5, 0xf0, 0x97, 0x52, 0xba, 0xbe, 0xef, +0x3b, 0x73, 0x84, 0xff, 0xa3, 0x2b, 0x56, 0xac, +0x18, 0x8d, 0x3b, 0xbf, 0xbb, 0xef, 0xbe, 0x1b, +0x77, 0xde, 0x79, 0x67, 0xd5, 0xae, 0x57, 0x23, +0x85, 0xbf, 0x65, 0x59, 0x18, 0x1e, 0x1e, 0x46, +0x2a, 0x95, 0xaa, 0xf7, 0xa1, 0x94, 0x71, 0xec, +0xd8, 0x31, 0x7c, 0xf2, 0xc9, 0x27, 0xf5, 0x3e, +0x8c, 0x65, 0x09, 0x49, 0x40, 0x72, 0x92, 0x48, +0xc0, 0xf8, 0xf8, 0xf8, 0x3b, 0x96, 0x65, 0x15, +0xcd, 0x2a, 0x80, 0x9e, 0x19, 0x60, 0x56, 0x01, +0xf4, 0x0c, 0x01, 0x3d, 0x3d, 0xd0, 0xb6, 0xed, +0xb0, 0x1f, 0x40, 0x57, 0x03, 0x82, 0xa0, 0x97, +0x08, 0x56, 0x0d, 0xf4, 0x3c, 0x4f, 0xb9, 0xae, +0x2b, 0x8b, 0xc5, 0xa2, 0x72, 0x5d, 0x57, 0xda, +0xb6, 0xad, 0x8a, 0xc5, 0xa2, 0xd2, 0x32, 0x00, +0x00, 0x5a, 0x08, 0xf4, 0x71, 0x99, 0x62, 0x10, +0x7d, 0x4f, 0x13, 0x27, 0x09, 0x66, 0x45, 0x01, +0xb8, 0x2c, 0x05, 0xa6, 0x10, 0x7c, 0xfc, 0xf1, +0xc7, 0xc8, 0x64, 0x32, 0x6a, 0x36, 0x19, 0x18, +0x1b, 0x1b, 0x43, 0x77, 0x77, 0xb7, 0x02, 0xe6, +0x27, 0x02, 0x54, 0x0d, 0x28, 0xa7, 0xae, 0x02, +0xd0, 0xc8, 0xe1, 0x6f, 0x8e, 0xf9, 0xcf, 0x11, +0xfe, 0x8f, 0xad, 0x58, 0xb1, 0x62, 0x4f, 0xdc, +0xf9, 0xdd, 0x7b, 0xef, 0xbd, 0xb8, 0xfd, 0xf6, +0xdb, 0xab, 0x76, 0xbd, 0x1a, 0x29, 0xfc, 0x01, +0x60, 0xc3, 0x86, 0x0d, 0x58, 0xb5, 0x6a, 0x55, +0xbd, 0x0f, 0x23, 0x16, 0xa5, 0x14, 0xde, 0x7f, +0xff, 0x7d, 0x4c, 0x4d, 0x4d, 0xd5, 0xfb, 0x50, +0x96, 0x25, 0x24, 0x01, 0xc9, 0x99, 0x8f, 0x04, +0x04, 0xf3, 0xff, 0xc3, 0x2a, 0x00, 0x66, 0x7a, +0x03, 0xbc, 0x60, 0x98, 0xa0, 0x64, 0x66, 0x80, +0x6d, 0xdb, 0x02, 0xc1, 0x90, 0x80, 0xe3, 0x38, +0x42, 0x57, 0x03, 0x6c, 0xdb, 0x96, 0x52, 0x4a, +0x99, 0x4a, 0xa5, 0x84, 0xe7, 0x79, 0x4a, 0x57, +0x04, 0x38, 0xe7, 0x4a, 0x0b, 0x80, 0x65, 0x59, +0xca, 0xb2, 0xac, 0xf0, 0x6b, 0x00, 0xd0, 0x12, +0x60, 0xdb, 0xb6, 0xd2, 0xbf, 0x57, 0xa6, 0x18, +0xe8, 0xd7, 0xa6, 0x0c, 0x68, 0x49, 0xd0, 0xef, +0x69, 0x09, 0x30, 0xa5, 0xc0, 0x14, 0x02, 0x53, +0x06, 0xcc, 0xca, 0x40, 0x9c, 0x08, 0x44, 0xf7, +0x2f, 0x00, 0x80, 0xb1, 0xb1, 0x31, 0x05, 0x24, +0x97, 0x00, 0x12, 0x80, 0x3a, 0x9d, 0x7f, 0xa3, +0x85, 0xbf, 0x71, 0xc7, 0x9f, 0x38, 0xfc, 0xf7, +0xec, 0xd9, 0x73, 0xa0, 0xab, 0xab, 0x6b, 0x57, +0xdc, 0xf9, 0xed, 0xdb, 0xb7, 0x0f, 0xb7, 0xde, +0x7a, 0x6b, 0xd5, 0xae, 0x57, 0xa3, 0x85, 0x3f, +0xe7, 0x1c, 0xbb, 0x76, 0xed, 0x82, 0x65, 0x59, +0xf5, 0x3e, 0x94, 0x8a, 0x14, 0x8b, 0x45, 0x1c, +0x3e, 0x7c, 0x18, 0xbe, 0xef, 0xd7, 0xfb, 0x50, +0x96, 0x25, 0xd9, 0x6c, 0x16, 0x0f, 0x3c, 0xf0, +0xc0, 0x82, 0x97, 0x7f, 0x5e, 0x4e, 0x24, 0x90, +0x80, 0x3f, 0x1b, 0x1f, 0x1f, 0x0f, 0x87, 0x03, +0x82, 0xc0, 0xf7, 0x70, 0xb9, 0x22, 0xa0, 0x87, +0x05, 0x7c, 0xcc, 0x84, 0x7e, 0xd8, 0x18, 0x88, +0x99, 0xd0, 0x0f, 0x05, 0xc0, 0x71, 0x9c, 0xb0, +0x12, 0x60, 0x3e, 0x73, 0xce, 0x95, 0x65, 0x59, +0xca, 0xf3, 0x3c, 0x65, 0x59, 0x96, 0x8a, 0x0a, +0x01, 0x00, 0xe8, 0x67, 0x2d, 0x05, 0x40, 0xa9, +0x18, 0x98, 0xef, 0x4d, 0x4d, 0x4d, 0x95, 0x7d, +0xcf, 0x71, 0x1c, 0x35, 0x39, 0x39, 0x09, 0xc7, +0x71, 0x94, 0x29, 0x05, 0x7a, 0x06, 0x02, 0x30, +0x53, 0x21, 0x30, 0x57, 0x2a, 0x34, 0xab, 0x02, +0x71, 0xfb, 0x17, 0xc4, 0x6d, 0x64, 0x14, 0x57, +0x0d, 0xa0, 0x21, 0x81, 0x72, 0xea, 0x22, 0x00, +0x4d, 0x16, 0xfe, 0xe1, 0x0a, 0x7f, 0x86, 0x00, +0xa4, 0x82, 0xf0, 0xdf, 0x19, 0x77, 0x7e, 0xf7, +0xdf, 0x7f, 0x3f, 0x6e, 0xb9, 0xe5, 0x96, 0xaa, +0x5d, 0xaf, 0x46, 0x0b, 0x7f, 0x00, 0xe8, 0xed, +0xed, 0xc5, 0xd0, 0xd0, 0x50, 0xbd, 0x0f, 0x63, +0x4e, 0xce, 0x9d, 0x3b, 0x87, 0x0f, 0x3f, 0xfc, +0xb0, 0xde, 0x87, 0xb1, 0x6c, 0xe9, 0xee, 0xee, +0xc6, 0x43, 0x0f, 0x3d, 0x04, 0xdb, 0xb6, 0xeb, +0x7d, 0x28, 0x0d, 0x4f, 0x12, 0x09, 0x38, 0x76, +0xec, 0xd8, 0x3b, 0x00, 0x8a, 0x66, 0xf8, 0x23, +0xa8, 0x02, 0x04, 0xcf, 0xbe, 0xee, 0x09, 0x30, +0x64, 0x20, 0x14, 0x80, 0xa0, 0x2a, 0xa0, 0x7b, +0x01, 0x84, 0x71, 0xe7, 0x1f, 0x4a, 0x80, 0xef, +0xfb, 0x8a, 0x73, 0xae, 0xa2, 0x42, 0x00, 0x00, +0x9c, 0xf3, 0x30, 0xd0, 0x73, 0xb9, 0x5c, 0x28, +0x04, 0xc0, 0x65, 0x39, 0x88, 0x4a, 0x82, 0x29, +0x01, 0xa6, 0x18, 0xe8, 0x3e, 0x03, 0x53, 0x08, +0xa2, 0xd3, 0x11, 0xcd, 0xaa, 0xc0, 0xe4, 0xe4, +0xa4, 0xaa, 0x24, 0x02, 0x71, 0xc3, 0x02, 0xf3, +0xa9, 0x06, 0x90, 0x00, 0x2c, 0xd5, 0x5f, 0xd8, +0xa4, 0xe1, 0xaf, 0x9f, 0x01, 0xa4, 0xf7, 0xec, +0xd9, 0x73, 0xa0, 0xb3, 0xb3, 0x73, 0x47, 0xdc, +0xf9, 0x3d, 0xf0, 0xc0, 0x03, 0xb8, 0xf9, 0xe6, +0xd8, 0x3d, 0x7f, 0x16, 0x44, 0x23, 0x86, 0x3f, +0x00, 0x5c, 0x79, 0xe5, 0x95, 0x4d, 0x53, 0xde, +0xfd, 0xd5, 0xaf, 0x7e, 0x45, 0x7b, 0x07, 0xd4, +0x91, 0xa1, 0xa1, 0xa1, 0xaa, 0x0e, 0x85, 0xb5, +0x32, 0x09, 0x24, 0xe0, 0x1b, 0xc7, 0x8e, 0x1d, +0xfb, 0x67, 0x00, 0x5e, 0x50, 0x0d, 0x28, 0xa9, +0x02, 0xe8, 0x9e, 0x00, 0xcc, 0xac, 0x12, 0xa8, +0x1b, 0x02, 0x7d, 0x53, 0x00, 0x94, 0x52, 0xc2, +0xb2, 0x2c, 0x89, 0x99, 0x0d, 0x84, 0xc2, 0xe0, +0x37, 0x65, 0xc0, 0x94, 0x80, 0xe0, 0xb8, 0xc2, +0xd7, 0x5a, 0x0c, 0x80, 0x99, 0x5d, 0x3b, 0xf5, +0xfb, 0xb3, 0x49, 0x82, 0x29, 0x07, 0x66, 0x8f, +0x81, 0x6e, 0x3a, 0xd4, 0x7f, 0x3e, 0x9f, 0xcf, +0xab, 0xb6, 0xb6, 0x36, 0x99, 0x54, 0x04, 0xce, +0x9d, 0x3b, 0xa7, 0x66, 0x1b, 0x16, 0x20, 0x09, +0x98, 0x9d, 0x25, 0x15, 0x80, 0x46, 0x09, 0x7f, +0xa5, 0x94, 0x5d, 0x2c, 0x16, 0xe7, 0x7d, 0xe7, +0x8f, 0x99, 0xf0, 0x7f, 0xa2, 0xb3, 0xb3, 0x73, +0x7b, 0xdc, 0xf9, 0x3d, 0xf4, 0xd0, 0x43, 0xb8, +0xe9, 0xa6, 0xd8, 0x3d, 0x7f, 0x16, 0x44, 0xa3, +0x86, 0x7f, 0x2a, 0x95, 0xc2, 0x8e, 0x1d, 0xb1, +0xfe, 0xd3, 0x90, 0x14, 0x0a, 0x05, 0x8c, 0x8d, +0x8d, 0x41, 0x4a, 0x59, 0xef, 0x43, 0x59, 0xb6, +0xdc, 0x73, 0xcf, 0x3d, 0x58, 0xb7, 0x6e, 0x5d, +0xbd, 0x0f, 0xa3, 0x29, 0x48, 0x22, 0x01, 0x13, +0x13, 0x13, 0xef, 0xe8, 0x1d, 0x02, 0x83, 0xbe, +0x00, 0x53, 0x06, 0xca, 0x04, 0xc0, 0xb2, 0x2c, +0x81, 0x40, 0x04, 0x82, 0xb2, 0xbf, 0x90, 0x52, +0x4a, 0x2d, 0x00, 0xa6, 0x08, 0x58, 0x96, 0x55, +0x22, 0x00, 0x95, 0x24, 0x40, 0x3f, 0x17, 0x8b, +0xc5, 0x92, 0xaf, 0x4d, 0x21, 0xd0, 0x82, 0xa0, +0x87, 0x14, 0x00, 0x40, 0x57, 0x14, 0xf4, 0xc3, +0x14, 0x02, 0x21, 0x84, 0x8c, 0x4e, 0x47, 0xd4, +0x22, 0x60, 0x6e, 0x69, 0x6c, 0x6e, 0x62, 0x04, +0x00, 0x5a, 0x04, 0xcc, 0x6a, 0x40, 0xd2, 0x21, +0x81, 0xe5, 0x2c, 0x01, 0x4b, 0x26, 0x00, 0xf5, +0x0a, 0x7f, 0x1d, 0xfc, 0xa8, 0x4e, 0xf8, 0x3f, +0xd5, 0xd9, 0xd9, 0x39, 0x1c, 0x77, 0x7e, 0x0f, +0x3f, 0xfc, 0x30, 0x6e, 0xbc, 0x31, 0x76, 0xcf, +0x9f, 0x05, 0xd1, 0xa8, 0xe1, 0x0f, 0x00, 0xfd, +0xfd, 0xfd, 0xe8, 0xef, 0xef, 0xaf, 0xf7, 0x61, +0xcc, 0x8b, 0x8f, 0x3e, 0xfa, 0x08, 0x27, 0x4e, +0x9c, 0xa8, 0xf7, 0x61, 0x2c, 0x5b, 0x7a, 0x7b, +0x7b, 0xb1, 0x7f, 0xff, 0xfe, 0x7a, 0x1f, 0x46, +0xd3, 0x30, 0x97, 0x04, 0x1c, 0x3d, 0x7a, 0xf4, +0x1b, 0xc7, 0x8e, 0x1d, 0x7b, 0x37, 0x68, 0xfa, +0xf3, 0x2c, 0xcb, 0xd2, 0x02, 0xe0, 0x1b, 0xcf, +0x61, 0x3f, 0x80, 0x16, 0x00, 0xcb, 0xb2, 0xc2, +0x0a, 0x80, 0x7e, 0x0e, 0x82, 0x3f, 0xac, 0x02, +0x30, 0xc6, 0x4a, 0xaa, 0x00, 0x8c, 0xb1, 0x30, +0xdc, 0x7d, 0xdf, 0x2f, 0x0b, 0xfa, 0xd9, 0x24, +0xc0, 0x1c, 0x52, 0xd0, 0x5f, 0x9b, 0xc3, 0x0a, +0x7a, 0x06, 0x82, 0x29, 0x03, 0xe9, 0x74, 0x5a, +0xea, 0xca, 0x80, 0xb9, 0x5a, 0x61, 0x2e, 0x97, +0x53, 0xed, 0xed, 0xed, 0x25, 0xbb, 0x19, 0x26, +0xad, 0x06, 0x90, 0x04, 0xc4, 0x53, 0x9d, 0x3d, +0x5a, 0xe7, 0xa0, 0x9a, 0xe1, 0xdf, 0xd9, 0xd9, +0x39, 0x6b, 0xf8, 0x2b, 0xa5, 0xac, 0x68, 0xf8, +0xeb, 0x79, 0xfe, 0x0b, 0x08, 0x7f, 0xbd, 0xbe, +0x7f, 0x7a, 0x74, 0x74, 0x34, 0x36, 0xfc, 0x19, +0x63, 0x78, 0xe4, 0x91, 0x47, 0x96, 0x4d, 0xf8, +0x03, 0x40, 0x57, 0x57, 0x57, 0xbd, 0x0f, 0x61, +0xde, 0xac, 0x5e, 0xbd, 0xba, 0x6e, 0xcb, 0x14, +0x13, 0x33, 0x6b, 0x33, 0x7c, 0xf4, 0xd1, 0x47, +0xf5, 0x3e, 0x8c, 0xa6, 0xc1, 0xb6, 0x6d, 0xbc, +0xf0, 0xc2, 0x0b, 0xb8, 0xf2, 0xca, 0x2b, 0xcb, +0xbe, 0xc7, 0x18, 0xe3, 0x43, 0x43, 0x43, 0x8f, +0x6e, 0xd8, 0xb0, 0x61, 0x97, 0x94, 0xd2, 0x05, +0xe0, 0x0a, 0x21, 0x5c, 0xdf, 0xf7, 0x5d, 0xa5, +0x94, 0xeb, 0xfb, 0xbe, 0x2b, 0xa5, 0x74, 0x3d, +0xcf, 0x73, 0xa5, 0x94, 0x25, 0x0f, 0x21, 0x44, +0xf8, 0xac, 0xff, 0x1b, 0xc6, 0x98, 0x7e, 0xdf, +0x61, 0x8c, 0xb9, 0x52, 0x4a, 0xc7, 0xf3, 0x3c, +0x97, 0x31, 0xe6, 0xfa, 0xbe, 0xef, 0xfa, 0xbe, +0xef, 0x0a, 0x21, 0x1c, 0x21, 0x44, 0xf8, 0x7d, +0x21, 0x84, 0xe3, 0x79, 0x9e, 0xab, 0x9f, 0x39, +0xe7, 0x0e, 0xe7, 0xdc, 0x11, 0x42, 0x38, 0xbe, +0xef, 0x97, 0x3c, 0x38, 0xe7, 0x7a, 0x11, 0x35, +0x5b, 0x4a, 0x69, 0x0b, 0x21, 0xc2, 0x67, 0xdf, +0xf7, 0x6d, 0x21, 0x84, 0x2d, 0x84, 0x08, 0x6f, +0xd4, 0x3c, 0xcf, 0xb3, 0x2f, 0x5d, 0xba, 0x64, +0x29, 0xa5, 0x2c, 0x29, 0xa5, 0xa5, 0x94, 0xb2, +0x2c, 0xcb, 0xe2, 0xb6, 0x6d, 0x73, 0x21, 0x84, +0x35, 0x39, 0x39, 0xc9, 0x6d, 0xdb, 0xe6, 0x7a, +0x7f, 0x97, 0xce, 0xce, 0x4e, 0x36, 0x35, 0x35, +0xc5, 0xba, 0xbb, 0xbb, 0x59, 0x6f, 0x6f, 0x2f, +0x9b, 0x9c, 0x9c, 0x64, 0x67, 0xce, 0x9c, 0x61, +0xfd, 0xfd, 0xfd, 0x61, 0x96, 0x1c, 0x3e, 0x7c, +0x98, 0xe9, 0x6c, 0xd1, 0x59, 0x03, 0x5c, 0xce, +0x20, 0x33, 0xf3, 0x2b, 0x2d, 0x49, 0xdf, 0x8a, +0xd4, 0x5c, 0x00, 0x16, 0x1a, 0xfe, 0xfd, 0xfd, +0xfd, 0xb1, 0xe1, 0x7f, 0xf6, 0xec, 0xd9, 0xb2, +0xf0, 0x07, 0x60, 0xe9, 0xf0, 0x2f, 0x16, 0x8b, +0x1c, 0x91, 0xf0, 0x0f, 0xbe, 0x6f, 0x17, 0x0a, +0x05, 0x67, 0x9e, 0xe1, 0xef, 0x30, 0xc6, 0x32, +0xa3, 0xa3, 0xa3, 0xcf, 0x74, 0x74, 0x74, 0x54, +0x0c, 0xff, 0xeb, 0xaf, 0xbf, 0xbe, 0x6a, 0xd7, +0xab, 0xd1, 0xc3, 0x1f, 0x40, 0x53, 0x06, 0x29, +0x63, 0xac, 0xe9, 0xaa, 0x16, 0xad, 0xc6, 0xb1, +0x63, 0xc7, 0xea, 0x7d, 0x08, 0x4d, 0x45, 0x02, +0x09, 0x78, 0x64, 0xc3, 0x86, 0x0d, 0xbb, 0x74, +0x63, 0xb2, 0x52, 0x2a, 0x15, 0x84, 0x7f, 0x2a, +0xf8, 0x5a, 0x2f, 0x51, 0x9e, 0x0a, 0x42, 0x3f, +0x25, 0xa5, 0x4c, 0x05, 0xcf, 0x6e, 0x10, 0xe6, +0x25, 0x32, 0xa0, 0x5f, 0x9b, 0x72, 0xa0, 0xdf, +0xd7, 0x22, 0x00, 0x40, 0x4b, 0x86, 0x63, 0xca, +0x81, 0x16, 0x01, 0xcb, 0xb2, 0x4a, 0xde, 0x37, +0x25, 0x40, 0x3f, 0xec, 0x99, 0xae, 0x43, 0xdb, +0xf3, 0x3c, 0xc7, 0x71, 0x9c, 0x12, 0x19, 0x50, +0x4a, 0x59, 0xfa, 0x39, 0x4e, 0x04, 0x66, 0x46, +0x2c, 0x2c, 0xae, 0x6f, 0x04, 0xcf, 0x9e, 0x3d, +0xcb, 0x6d, 0xdb, 0xe6, 0xa7, 0x4f, 0x9f, 0xe6, +0x27, 0x4f, 0x9e, 0xe4, 0xdd, 0xdd, 0xdd, 0xb1, +0x12, 0x00, 0x5c, 0xce, 0x18, 0x92, 0x80, 0x19, +0x6a, 0x2a, 0x00, 0x8b, 0x09, 0x7f, 0xbd, 0xa3, +0x5f, 0x92, 0xf0, 0xb7, 0x2c, 0x8b, 0x57, 0x0a, +0x7f, 0x3d, 0xbf, 0xbf, 0x50, 0x28, 0x84, 0x6b, +0xfa, 0x47, 0xc3, 0x3f, 0x58, 0xde, 0x77, 0xb6, +0xf0, 0xdf, 0x1a, 0x73, 0x6e, 0x78, 0xf4, 0xd1, +0x47, 0x71, 0xdd, 0x75, 0xb1, 0x1b, 0xfe, 0x2d, +0x88, 0x66, 0x08, 0x7f, 0xcb, 0xb2, 0x1a, 0x7a, +0xea, 0xdf, 0x6c, 0xf4, 0xf4, 0xf4, 0x34, 0xa5, +0xbc, 0xb4, 0x0a, 0xc7, 0x8f, 0x1f, 0xaf, 0xf7, +0x21, 0x34, 0x1d, 0x09, 0x24, 0x60, 0xbf, 0x96, +0x00, 0x2d, 0x02, 0x08, 0x02, 0x5a, 0x29, 0x95, +0x0a, 0x64, 0xc0, 0x35, 0x9e, 0xcd, 0x6a, 0x40, +0x2a, 0x78, 0xb8, 0x00, 0xa2, 0xaf, 0xc3, 0xd0, +0xe7, 0x9c, 0x97, 0x88, 0x81, 0x10, 0xc2, 0x65, +0x8c, 0x45, 0x2b, 0x04, 0xe1, 0x9f, 0xd7, 0x22, +0x10, 0x15, 0x04, 0xcb, 0xb2, 0x1c, 0x53, 0x0a, +0x74, 0x55, 0xc0, 0xf3, 0xbc, 0x92, 0x67, 0x5d, +0x0d, 0xd0, 0x95, 0x01, 0x2d, 0x02, 0x96, 0x65, +0xf1, 0xc9, 0xc9, 0x49, 0xcb, 0xb2, 0x2c, 0x7e, +0xfe, 0xfc, 0x79, 0xcb, 0xb2, 0x2c, 0x7e, 0xe6, +0xcc, 0x19, 0x4b, 0x57, 0x03, 0x3a, 0x3a, 0x3a, +0x98, 0x59, 0x0d, 0x30, 0x25, 0xe0, 0xdc, 0xb9, +0x73, 0x8c, 0x24, 0xa0, 0x9c, 0x9a, 0x09, 0xc0, +0x52, 0x87, 0x7f, 0x2e, 0x97, 0x0b, 0x4b, 0xfd, +0x30, 0xc2, 0x5f, 0x4a, 0x59, 0x12, 0xfe, 0x2a, +0x66, 0x63, 0x1f, 0x00, 0x8e, 0x2e, 0x9f, 0xe9, +0xb2, 0x7f, 0x10, 0xfe, 0x07, 0xdb, 0xdb, 0xdb, +0xaf, 0x8a, 0x39, 0x37, 0x3c, 0xfe, 0xf8, 0xe3, +0xb8, 0xf6, 0xda, 0xd8, 0x0d, 0xff, 0x16, 0x44, +0x33, 0x84, 0x3f, 0x00, 0xb8, 0xae, 0x5b, 0xef, +0x43, 0x58, 0x14, 0xab, 0x57, 0xaf, 0xae, 0xf7, +0x21, 0x2c, 0x5b, 0x2e, 0x5e, 0xbc, 0x58, 0xef, +0x43, 0x68, 0x4a, 0xe6, 0x92, 0x80, 0x8d, 0x1b, +0x37, 0x3e, 0x3c, 0x38, 0x38, 0xb8, 0x13, 0x40, +0x2a, 0x58, 0xb9, 0x34, 0xa5, 0xc3, 0xdf, 0xf7, +0xfd, 0x12, 0x09, 0xd0, 0x0f, 0x5d, 0x0d, 0x08, +0x64, 0x20, 0x15, 0x91, 0x02, 0x53, 0x0e, 0x52, +0xbe, 0xef, 0xa7, 0x00, 0xa4, 0x7c, 0xdf, 0x4f, +0xf9, 0xbe, 0x1f, 0xca, 0x81, 0xe7, 0x79, 0x29, +0xc6, 0x98, 0xcb, 0x39, 0x77, 0xcd, 0xf7, 0x23, +0x43, 0x0b, 0x8e, 0x29, 0x06, 0xfa, 0x3d, 0xcf, +0xf3, 0x5c, 0x2d, 0x04, 0xa6, 0x0c, 0xe8, 0xca, +0x80, 0xe3, 0x38, 0xb6, 0x52, 0xca, 0x42, 0x50, +0xdd, 0x15, 0x42, 0xd8, 0x9e, 0xe7, 0xd9, 0xba, +0xd2, 0xab, 0x77, 0x74, 0xd5, 0xcf, 0x7a, 0xd9, +0x77, 0x5d, 0x0d, 0x88, 0x4a, 0xc0, 0xc8, 0xc8, +0x08, 0x48, 0x02, 0xca, 0xa9, 0x89, 0x00, 0xd4, +0x22, 0xfc, 0x6d, 0xdb, 0xe6, 0xb3, 0x85, 0x3f, +0x63, 0xac, 0xa4, 0xe3, 0x5f, 0x87, 0x7f, 0xf0, +0x3f, 0xcd, 0x9c, 0xe1, 0x0f, 0x40, 0x0f, 0x01, +0xb8, 0x9c, 0xf3, 0xcc, 0xde, 0xbd, 0x7b, 0x9f, +0x6d, 0x6f, 0x6f, 0x2f, 0xfb, 0x8d, 0x63, 0x8c, +0xe1, 0xc0, 0x81, 0x03, 0xb8, 0xe6, 0x9a, 0x6b, +0xaa, 0x76, 0xbd, 0x9a, 0x25, 0xfc, 0x5b, 0x81, +0xde, 0xde, 0xde, 0xa6, 0x97, 0x98, 0x66, 0x45, +0x4a, 0x89, 0x7c, 0x3e, 0x5f, 0xef, 0xc3, 0x68, +0x4a, 0x12, 0x54, 0x02, 0x1e, 0x5a, 0xbf, 0x7e, +0xfd, 0x0e, 0x3d, 0x14, 0xa0, 0x83, 0x5c, 0x7f, +0xed, 0x79, 0x5e, 0xca, 0x14, 0x00, 0x53, 0x02, +0xcc, 0x67, 0xfd, 0x1a, 0x41, 0x45, 0xc0, 0xac, +0x18, 0x30, 0xc6, 0x52, 0xa6, 0x18, 0x98, 0x82, +0x60, 0x54, 0x04, 0x42, 0x51, 0xf0, 0x3c, 0x4f, +0xff, 0x9c, 0x50, 0x0c, 0xcc, 0x3e, 0x83, 0x20, +0xfc, 0x5d, 0xb3, 0x3a, 0xa0, 0x65, 0x40, 0x57, +0x03, 0xf4, 0xf0, 0x00, 0x02, 0x11, 0xc0, 0xcc, +0xe7, 0xbb, 0xa5, 0x94, 0xb2, 0x74, 0x35, 0x60, +0x6a, 0x6a, 0x8a, 0x07, 0xd5, 0x01, 0x6e, 0xdb, +0x36, 0xcf, 0xe7, 0xf3, 0x4c, 0x0f, 0x09, 0xb8, +0xae, 0xcb, 0x7b, 0x7b, 0x7b, 0xd9, 0x99, 0x33, +0x67, 0xd8, 0xea, 0xd5, 0xab, 0x59, 0x7f, 0x7f, +0x3f, 0x49, 0x80, 0x41, 0xd5, 0x05, 0x20, 0x69, +0xf8, 0x1f, 0x38, 0x70, 0x60, 0x5e, 0xe1, 0x5f, +0x2c, 0x16, 0x99, 0x65, 0x59, 0xdc, 0xb2, 0xac, +0x45, 0x87, 0x7f, 0x30, 0x0c, 0x50, 0x31, 0xfc, +0x47, 0x47, 0x47, 0x9f, 0xcd, 0x66, 0xb3, 0x5b, +0x62, 0xce, 0x0d, 0x4f, 0x3e, 0xf9, 0x24, 0xae, +0xbe, 0x3a, 0x76, 0xc3, 0xbf, 0x05, 0xd1, 0x6c, +0xe1, 0xdf, 0xec, 0x0d, 0xb2, 0x8c, 0x31, 0xaa, +0x02, 0xd4, 0x11, 0x5a, 0x95, 0x71, 0xe1, 0x24, +0xa8, 0x04, 0x3c, 0xb8, 0x7e, 0xfd, 0xfa, 0x1d, +0xba, 0x31, 0x30, 0xe8, 0x09, 0x48, 0xe9, 0x8a, +0x80, 0xfe, 0xda, 0xac, 0x0e, 0x08, 0x21, 0xd2, +0x46, 0xf8, 0xa7, 0x23, 0xd5, 0x81, 0x94, 0xef, +0xfb, 0x69, 0xfd, 0x10, 0x42, 0xa4, 0x2a, 0x49, +0x80, 0x7e, 0xe8, 0xbe, 0x02, 0xf3, 0x01, 0x20, +0xa5, 0x1b, 0x0d, 0xa3, 0xc3, 0x05, 0x7a, 0xa8, +0x40, 0x0f, 0x0d, 0x04, 0xc3, 0xb0, 0xb6, 0x94, +0xd2, 0x36, 0x45, 0xc0, 0x1c, 0x1a, 0x80, 0xd1, +0xf3, 0xa5, 0x1f, 0xd3, 0xd3, 0xd3, 0xdc, 0xb2, +0x2c, 0x7e, 0xe9, 0xd2, 0x25, 0x6e, 0x0e, 0x09, +0xe4, 0x72, 0x39, 0x76, 0xf2, 0xe4, 0x49, 0x7d, +0x03, 0x19, 0x0e, 0x09, 0x90, 0x04, 0xcc, 0x50, +0x55, 0x01, 0x98, 0x4f, 0xf8, 0x1f, 0x3e, 0x7c, +0x78, 0x41, 0xe1, 0xaf, 0xad, 0x6f, 0x3e, 0xe1, +0x6f, 0x8e, 0xf9, 0x7b, 0x9e, 0xe7, 0x7a, 0x9e, +0x37, 0x5b, 0xf8, 0x1f, 0xca, 0x66, 0xb3, 0x9b, +0xcb, 0x2e, 0x14, 0xe7, 0x78, 0xea, 0xa9, 0xa7, +0x30, 0x3a, 0x1a, 0xbb, 0xe7, 0xcf, 0x82, 0x68, +0xb6, 0xf0, 0x07, 0xd0, 0x12, 0x73, 0xe9, 0x57, +0xae, 0x5c, 0x49, 0x2b, 0xd3, 0xd5, 0x09, 0xea, +0xc1, 0x58, 0x1c, 0x73, 0x49, 0xc0, 0xa6, 0x4d, +0x9b, 0xee, 0x5f, 0xbf, 0x7e, 0xfd, 0x76, 0x1d, +0xc8, 0x00, 0x74, 0xf0, 0xa7, 0xcd, 0xf0, 0x97, +0x52, 0xa6, 0x75, 0xb3, 0x60, 0xf0, 0x3a, 0xad, +0xbf, 0xa7, 0x45, 0x00, 0x33, 0x43, 0x0a, 0x25, +0x15, 0x03, 0x43, 0x02, 0x4c, 0x71, 0x88, 0xad, +0x1e, 0x44, 0xab, 0x04, 0x66, 0xcf, 0x81, 0x16, +0x82, 0xa8, 0x0c, 0x98, 0x55, 0x01, 0x21, 0x84, +0xa3, 0x45, 0x40, 0x0f, 0xed, 0x0a, 0x21, 0xec, +0xa9, 0xa9, 0xa9, 0x70, 0x78, 0x40, 0x57, 0x03, +0xf4, 0x6b, 0x3d, 0x24, 0x90, 0xcd, 0x66, 0x99, +0x29, 0x01, 0x71, 0x7d, 0x01, 0x24, 0x01, 0x55, +0x14, 0x80, 0x6a, 0x86, 0xbf, 0x6d, 0xdb, 0xbc, +0xda, 0xe1, 0xaf, 0xa7, 0xc5, 0x28, 0xa5, 0x1c, +0x04, 0xa1, 0x8f, 0xd2, 0xf0, 0xcf, 0xee, 0xdd, +0xbb, 0xf7, 0xb9, 0x6c, 0x36, 0xbb, 0xa9, 0xec, +0x22, 0x05, 0xe1, 0xbf, 0x67, 0x4f, 0xec, 0x9e, +0x3f, 0x0b, 0xa2, 0x19, 0xc3, 0x1f, 0x98, 0x59, +0x5f, 0xbf, 0xd9, 0x25, 0x80, 0x73, 0x8e, 0xde, +0xde, 0xde, 0x7a, 0x1f, 0xc6, 0xb2, 0xc3, 0x75, +0x5d, 0x12, 0xaf, 0x2a, 0x30, 0x97, 0x04, 0x6c, +0xde, 0xbc, 0x79, 0xdf, 0xfa, 0xf5, 0xeb, 0x47, +0xcc, 0x80, 0xc6, 0x8c, 0x08, 0xa4, 0xa5, 0x94, +0xe1, 0xdd, 0x7c, 0xf0, 0x75, 0xb4, 0x1a, 0x90, +0x96, 0x52, 0xa6, 0x85, 0x10, 0x69, 0xcf, 0xf3, +0x4a, 0xbe, 0xd6, 0xcf, 0x3a, 0xfc, 0xb5, 0x48, +0xe8, 0xf7, 0x84, 0x10, 0xfa, 0x67, 0xa7, 0x01, +0xa4, 0xa3, 0x62, 0x10, 0x84, 0x7e, 0x54, 0x08, +0xca, 0x64, 0x40, 0x8b, 0x80, 0xae, 0x0c, 0x28, +0xa5, 0x6c, 0xdb, 0xb6, 0xcb, 0x44, 0x00, 0x80, +0x95, 0xcb, 0xe5, 0xc2, 0xd9, 0x01, 0xf9, 0x7c, +0x9e, 0x9b, 0x43, 0x02, 0xba, 0x2f, 0x20, 0x3a, +0x55, 0x90, 0x24, 0xe0, 0x32, 0x55, 0x11, 0x80, +0x6a, 0x87, 0xbf, 0x1e, 0xc3, 0x49, 0x12, 0xfe, +0xba, 0x3c, 0xa4, 0xc3, 0x5f, 0xcd, 0xbd, 0xab, +0x5f, 0x38, 0x57, 0x36, 0x12, 0xfe, 0x87, 0xda, +0xda, 0xda, 0x36, 0x96, 0x5d, 0x20, 0xce, 0xf1, +0xf4, 0xd3, 0x4f, 0x63, 0xf7, 0xee, 0xdd, 0xd5, +0xb8, 0x54, 0x00, 0x9a, 0x37, 0xfc, 0x35, 0xb9, +0x5c, 0xae, 0xde, 0x87, 0xb0, 0x68, 0x56, 0xae, +0x5c, 0x59, 0xef, 0x43, 0x58, 0x76, 0x34, 0xea, +0xce, 0x91, 0xcd, 0xc8, 0x5c, 0x12, 0xb0, 0x65, +0xcb, 0x96, 0x7b, 0x37, 0x6c, 0xd8, 0x30, 0x1c, +0x1d, 0xdf, 0x0f, 0x82, 0x3f, 0x15, 0x88, 0x40, +0x58, 0xe2, 0x37, 0x2a, 0x00, 0xe1, 0xfb, 0x3a, +0xfc, 0xa3, 0x95, 0x02, 0x2d, 0x06, 0x5a, 0x04, +0x8c, 0xaa, 0x42, 0xf4, 0x11, 0x8a, 0x42, 0x4c, +0x9f, 0x81, 0x6b, 0x08, 0x81, 0xb9, 0x46, 0x81, +0x0e, 0xfe, 0x50, 0x04, 0xcc, 0x6a, 0x80, 0xf9, +0x30, 0x7b, 0x03, 0xa2, 0x0f, 0x3d, 0x4b, 0x60, +0x72, 0x72, 0x32, 0x9c, 0x2a, 0x48, 0x12, 0x50, +0x4e, 0x55, 0x56, 0x02, 0x34, 0x2f, 0x48, 0xb5, +0xc2, 0xff, 0xd2, 0xa5, 0x4b, 0x3c, 0x93, 0xc9, +0x30, 0x29, 0xa5, 0xa5, 0xcd, 0x4e, 0xff, 0xe3, +0x16, 0x0a, 0x85, 0x92, 0x85, 0x7e, 0xcc, 0x3b, +0x7f, 0x39, 0xc7, 0x3c, 0x7f, 0x18, 0xa5, 0x7f, +0x21, 0x84, 0x6b, 0x59, 0x56, 0xfb, 0xde, 0xbd, +0x7b, 0x9f, 0xcb, 0x64, 0x32, 0x03, 0xd1, 0xf3, +0xe2, 0x9c, 0xe3, 0xe0, 0xc1, 0x83, 0x55, 0x5d, +0xf6, 0xb6, 0xd9, 0xc3, 0x1f, 0x00, 0x06, 0x06, +0x06, 0x70, 0xc5, 0x15, 0x57, 0xd4, 0xfb, 0x30, +0x16, 0xcd, 0xe1, 0xc3, 0x87, 0x31, 0x3d, 0x3d, +0x5d, 0xef, 0xc3, 0x58, 0x36, 0x5c, 0x7f, 0xfd, +0xf5, 0x18, 0x1e, 0x8e, 0x5d, 0x48, 0x93, 0x58, +0x20, 0x73, 0xad, 0x18, 0xf8, 0xc1, 0x07, 0x1f, +0x7c, 0x7f, 0x62, 0x62, 0xe2, 0x03, 0x00, 0x82, +0x31, 0x26, 0x38, 0xe7, 0x02, 0x80, 0x64, 0x8c, +0x09, 0xc6, 0x98, 0x34, 0x1f, 0x52, 0xce, 0xac, +0x02, 0xc8, 0x18, 0x93, 0x00, 0x54, 0xf4, 0xb5, +0x10, 0x02, 0xc1, 0xaa, 0x80, 0x2a, 0xee, 0xd9, +0x7c, 0x2d, 0xa5, 0x54, 0xc1, 0xcf, 0x0d, 0x7f, +0x06, 0xe7, 0x5c, 0x32, 0xc6, 0xa4, 0x52, 0x4a, +0x72, 0xce, 0x45, 0xf0, 0x7e, 0xf8, 0x1c, 0x1c, +0x9b, 0xd0, 0xab, 0x15, 0x9a, 0x3b, 0x18, 0x9a, +0xaf, 0x11, 0xec, 0x68, 0xa8, 0x5f, 0xa7, 0x52, +0xa9, 0x70, 0x83, 0x23, 0x00, 0x22, 0x9d, 0x4e, +0x4b, 0x21, 0x84, 0xf4, 0x7d, 0x5f, 0xb6, 0xb5, +0xb5, 0x49, 0x21, 0x84, 0x34, 0x97, 0x11, 0xf6, +0x7d, 0x5f, 0x9a, 0x2b, 0x07, 0xea, 0x55, 0x03, +0xa3, 0x4b, 0x07, 0x2f, 0x87, 0x15, 0x03, 0x17, +0x2d, 0x00, 0xb5, 0x0a, 0x7f, 0x3d, 0x96, 0x93, +0x34, 0xfc, 0xd5, 0xcc, 0x2a, 0x7f, 0x65, 0xe1, +0x6f, 0x08, 0x40, 0x59, 0xf8, 0xdb, 0xb6, 0xdd, +0x31, 0x3a, 0x3a, 0xfa, 0x7c, 0x26, 0x93, 0x59, +0x1f, 0x3d, 0x2f, 0xcb, 0xb2, 0x70, 0xf0, 0xe0, +0x41, 0x6c, 0xdf, 0x1e, 0xbb, 0xec, 0xff, 0x82, +0x68, 0x85, 0xf0, 0x07, 0x66, 0x76, 0x78, 0xdb, +0xb4, 0xa9, 0x6c, 0xa4, 0xa4, 0xe9, 0xf8, 0xe4, +0x93, 0x4f, 0x68, 0x71, 0x9a, 0x25, 0x82, 0x73, +0x8e, 0x27, 0x9e, 0x78, 0x02, 0xd9, 0x6c, 0xb6, +0xde, 0x87, 0xd2, 0x72, 0xcc, 0x25, 0x01, 0xbf, +0xfc, 0xe5, 0x2f, 0xff, 0x66, 0x7c, 0x7c, 0xfc, +0xd7, 0x41, 0x20, 0x0b, 0xc6, 0x98, 0x96, 0x00, +0xfd, 0xb5, 0x32, 0xbe, 0xd6, 0xaf, 0x75, 0x88, +0x87, 0x5f, 0xeb, 0x1f, 0x39, 0x9b, 0x04, 0x48, +0x29, 0x4d, 0x21, 0x28, 0x09, 0x7e, 0x1d, 0xfe, +0x8c, 0xb1, 0x50, 0x00, 0x94, 0x52, 0x82, 0x73, +0xae, 0x97, 0x25, 0xd6, 0x12, 0xe0, 0xc3, 0x10, +0x01, 0xc6, 0x58, 0xb8, 0x99, 0x11, 0x63, 0xcc, +0x77, 0x1c, 0xa7, 0x44, 0x06, 0x00, 0x08, 0xd7, +0x75, 0xf5, 0x79, 0x09, 0x21, 0x84, 0xcc, 0x66, +0xb3, 0x22, 0x2a, 0x01, 0xae, 0xeb, 0x2a, 0xdf, +0xf7, 0x25, 0x49, 0xc0, 0x65, 0x16, 0x25, 0x00, +0xcd, 0x18, 0xfe, 0x6a, 0x66, 0x3e, 0xac, 0xe3, +0x38, 0x4e, 0xe7, 0xe8, 0xe8, 0xe8, 0x0b, 0xe9, +0x74, 0x7a, 0x6d, 0xf4, 0xbc, 0x2c, 0xcb, 0xc2, +0xb3, 0xcf, 0x3e, 0x8b, 0x91, 0x91, 0x91, 0x05, +0x5f, 0x9b, 0x28, 0xad, 0x12, 0xfe, 0xc0, 0xcc, +0x87, 0xf9, 0xae, 0x5d, 0xbb, 0x9a, 0x76, 0x41, +0x20, 0x8d, 0xef, 0xfb, 0x78, 0xe7, 0x9d, 0x77, +0x9a, 0x7e, 0x66, 0x43, 0x33, 0x30, 0x3c, 0x3c, +0x5c, 0xd5, 0x15, 0x33, 0x89, 0x52, 0xe6, 0x90, +0x00, 0x75, 0xfe, 0xfc, 0xf9, 0x63, 0x41, 0xf8, +0x96, 0x84, 0x76, 0xf0, 0x80, 0x19, 0xf0, 0x91, +0xaf, 0xcd, 0xf7, 0xc2, 0xc0, 0x0b, 0x3e, 0xfa, +0xcb, 0xfe, 0x4c, 0xf4, 0x67, 0x45, 0xfe, 0x5c, +0x99, 0x30, 0xe4, 0xf3, 0xf9, 0x63, 0x27, 0x4f, +0x9e, 0xfc, 0xdb, 0xe9, 0xe9, 0xe9, 0xf3, 0x9c, +0xf3, 0xb0, 0x0a, 0x00, 0xc0, 0x0f, 0x24, 0xc1, +0x57, 0x4a, 0x09, 0xc7, 0x71, 0x7c, 0x53, 0x06, +0xd8, 0xcc, 0x26, 0x47, 0x22, 0x10, 0x08, 0xdf, +0x75, 0xdd, 0x92, 0x2a, 0x40, 0x26, 0x93, 0x11, +0x52, 0x4a, 0x29, 0x84, 0x90, 0x00, 0xc4, 0x42, +0x24, 0x20, 0x6e, 0x27, 0xc1, 0x56, 0x93, 0x80, +0x05, 0x0b, 0x40, 0x93, 0x84, 0x7f, 0xd8, 0xf4, +0x67, 0x86, 0xbf, 0xeb, 0xba, 0x5d, 0xa3, 0xa3, +0xa3, 0x2f, 0xa6, 0x52, 0xa9, 0x35, 0xd1, 0xf3, +0xb2, 0x6d, 0x1b, 0xcf, 0x3e, 0xfb, 0x6c, 0x55, +0x4b, 0x95, 0xad, 0x14, 0xfe, 0x9a, 0xa1, 0xa1, +0xa1, 0x96, 0x68, 0xa4, 0xfb, 0xf0, 0xc3, 0x0f, +0x71, 0xee, 0xdc, 0xb9, 0x7a, 0x1f, 0x46, 0x4b, +0xe3, 0x38, 0x0e, 0x0e, 0x1c, 0x38, 0x80, 0x4c, +0x26, 0x53, 0xef, 0x43, 0x69, 0x69, 0x66, 0x93, +0x80, 0x46, 0x46, 0x29, 0xe5, 0x9d, 0x3c, 0x79, +0xf2, 0x0f, 0x4e, 0x9e, 0x3c, 0xf9, 0x4e, 0x50, +0x09, 0xf0, 0x61, 0x08, 0x40, 0xf0, 0xb5, 0x00, +0xe0, 0x6b, 0x01, 0xd0, 0xaf, 0x31, 0x33, 0x84, +0x10, 0x0a, 0x00, 0x4a, 0xab, 0x02, 0x92, 0x31, +0x26, 0x82, 0x21, 0x00, 0x21, 0x84, 0x90, 0x7a, +0x43, 0x21, 0x92, 0x80, 0x19, 0x16, 0xd4, 0x04, +0x98, 0x24, 0xfc, 0x01, 0x2c, 0x2a, 0xfc, 0xcd, +0x86, 0x8e, 0xb9, 0xc2, 0x3f, 0xda, 0xf0, 0x67, +0x86, 0xbf, 0xd9, 0xf0, 0x27, 0xa5, 0x74, 0x52, +0xa9, 0xd4, 0x8a, 0xd1, 0xd1, 0xd1, 0x97, 0x2b, +0x85, 0xff, 0xf3, 0xcf, 0x3f, 0x4f, 0xe1, 0x9f, +0x80, 0xd3, 0xa7, 0x4f, 0xd7, 0xfb, 0x10, 0xaa, +0x42, 0x77, 0x77, 0x77, 0xbd, 0x0f, 0xa1, 0xe5, +0xb9, 0xe5, 0x96, 0x5b, 0x28, 0xfc, 0x97, 0x80, +0xd9, 0x1a, 0x03, 0x1b, 0x19, 0xc6, 0x98, 0xd3, +0xdf, 0xdf, 0xff, 0xff, 0xad, 0x59, 0xb3, 0x66, +0x54, 0x19, 0x2b, 0x16, 0x06, 0xaf, 0xf5, 0xa6, +0x46, 0x8e, 0x0a, 0x76, 0x66, 0xd5, 0x8d, 0x82, +0xc1, 0x7b, 0x76, 0xf0, 0x3a, 0x5c, 0x05, 0x56, +0x3f, 0x8a, 0xc5, 0x22, 0xd7, 0x33, 0x04, 0x26, +0x27, 0x27, 0xc3, 0x69, 0x82, 0x3a, 0x6b, 0x74, +0xf6, 0x2c, 0xe7, 0xc6, 0xc0, 0x79, 0x0b, 0x40, +0xd2, 0xf0, 0x9f, 0x6b, 0x91, 0x9f, 0xb9, 0xc2, +0x5f, 0xdf, 0xfd, 0x9b, 0xe1, 0x6f, 0x76, 0xfb, +0x4b, 0x29, 0x1d, 0x1d, 0xfe, 0x2a, 0xb2, 0xc8, +0x8f, 0x19, 0xfe, 0xc1, 0x34, 0x12, 0x57, 0x4a, +0xe9, 0xa6, 0xd3, 0xe9, 0x9e, 0xd1, 0xd1, 0xd1, +0x57, 0x52, 0xa9, 0x54, 0x5f, 0xf4, 0xbc, 0x1c, +0xc7, 0xc1, 0x8b, 0x2f, 0xbe, 0x88, 0xab, 0xae, +0x2a, 0x5b, 0xf9, 0x77, 0xc1, 0xb4, 0x6a, 0xf8, +0x03, 0xc0, 0xe4, 0xe4, 0x24, 0x2e, 0x5c, 0xb8, +0x50, 0xef, 0xc3, 0x58, 0x34, 0x5d, 0x5d, 0x5d, +0x68, 0xd2, 0xdf, 0xdd, 0xa6, 0x60, 0x74, 0x74, +0x14, 0x03, 0x03, 0x65, 0xfd, 0xb5, 0x44, 0x8d, +0x68, 0x62, 0x09, 0xb0, 0xd7, 0xae, 0x5d, 0xfb, +0x1b, 0xfd, 0xfd, 0xfd, 0x7b, 0x54, 0x64, 0xcf, +0x02, 0xf3, 0xa1, 0x6f, 0xf6, 0xa2, 0x12, 0x10, +0xec, 0xf2, 0x5a, 0xf6, 0x88, 0x9b, 0x26, 0x48, +0x12, 0x70, 0x99, 0x79, 0x09, 0x40, 0xbd, 0xc3, +0x9f, 0x31, 0xa6, 0x5f, 0x3b, 0xc1, 0x5c, 0xff, +0x92, 0xf0, 0x97, 0x33, 0xeb, 0x60, 0xc7, 0x86, +0x7f, 0x26, 0x93, 0xe9, 0xd9, 0xb3, 0x67, 0xcf, +0xcb, 0xae, 0xeb, 0x96, 0xb5, 0xaf, 0xbb, 0xae, +0x8b, 0x97, 0x5e, 0x7a, 0x09, 0x5b, 0xb6, 0x94, +0x2d, 0xfe, 0xb7, 0x60, 0x5a, 0x39, 0xfc, 0x35, +0xad, 0xb0, 0xb9, 0x8b, 0x65, 0x59, 0xd4, 0x98, +0x56, 0x23, 0x46, 0x46, 0x46, 0xaa, 0xba, 0x76, +0x06, 0x91, 0x0c, 0x2d, 0x01, 0xa3, 0xa3, 0xa3, +0xe0, 0x7c, 0x49, 0x76, 0x7c, 0xaf, 0x0a, 0x8c, +0x31, 0x7b, 0xdd, 0xba, 0x75, 0xaf, 0xf7, 0xf5, +0xf5, 0xed, 0x56, 0xc1, 0xaa, 0x85, 0xba, 0x12, +0x60, 0x4a, 0x81, 0xe7, 0x79, 0x8e, 0x29, 0x02, +0xd1, 0x15, 0x04, 0xcd, 0x4a, 0x00, 0x63, 0x2c, +0xac, 0x24, 0x93, 0x04, 0x94, 0x93, 0xb8, 0x07, +0xa0, 0x11, 0xc2, 0x5f, 0xff, 0x23, 0x57, 0x0a, +0xff, 0xe0, 0xfb, 0x65, 0xe1, 0xdf, 0xd6, 0xd6, +0xd6, 0xbb, 0x7b, 0xf7, 0xee, 0x97, 0x1d, 0xc7, +0xe9, 0x89, 0x9e, 0x57, 0x2a, 0x95, 0xc2, 0xcb, +0x2f, 0xbf, 0x8c, 0xc1, 0xc1, 0xc1, 0xc5, 0x5c, +0xc7, 0x12, 0x96, 0x43, 0xf8, 0x6b, 0x06, 0x07, +0x07, 0x9b, 0x7e, 0x4e, 0xfd, 0x47, 0x1f, 0x7d, +0x84, 0x13, 0x27, 0x4e, 0xd4, 0xfb, 0x30, 0x5a, +0x8a, 0x91, 0x91, 0x91, 0xaa, 0xee, 0x94, 0xd9, +0x88, 0x1c, 0x3f, 0x7e, 0x1c, 0x6b, 0xd6, 0xac, +0x69, 0xe8, 0x66, 0xd8, 0xc9, 0xc9, 0x49, 0x1c, +0x39, 0x72, 0xa4, 0x21, 0x1b, 0x5d, 0x7f, 0xf4, +0xa3, 0x1f, 0x61, 0x7c, 0x7c, 0xbc, 0xec, 0x7d, +0xa5, 0x94, 0x3f, 0x31, 0x31, 0xf1, 0xbf, 0x3e, +0xfa, 0xe8, 0xa3, 0x9f, 0x2b, 0xa5, 0x74, 0x0f, +0x80, 0x67, 0x59, 0x96, 0xcf, 0x18, 0xf3, 0x00, +0xf8, 0xb6, 0x6d, 0x7b, 0x41, 0x0f, 0x80, 0xcf, +0x39, 0xf7, 0x00, 0xf8, 0xae, 0xeb, 0xfa, 0x8c, +0xb1, 0xb0, 0x37, 0x80, 0x73, 0xae, 0x7b, 0x07, +0x44, 0x2a, 0x95, 0x12, 0x7a, 0x06, 0x84, 0x10, +0x42, 0xea, 0xa9, 0x82, 0x9c, 0x73, 0xa1, 0x1b, +0x03, 0x7b, 0x7a, 0x7a, 0xe4, 0xc5, 0x8b, 0x17, +0x95, 0xd9, 0x13, 0x70, 0xea, 0xd4, 0x29, 0xd5, +0xdd, 0xdd, 0x5d, 0xb1, 0x27, 0x40, 0xf7, 0x03, +0x00, 0xcd, 0xd9, 0x13, 0x90, 0x48, 0x00, 0xea, +0x11, 0xfe, 0xda, 0xe2, 0xa2, 0xe1, 0x1f, 0x08, +0x80, 0xb9, 0xb5, 0xaf, 0x1b, 0x8c, 0x0d, 0x99, +0xe1, 0xaf, 0x4b, 0x45, 0x6e, 0x7b, 0x7b, 0xfb, +0xaa, 0x9d, 0x3b, 0x77, 0xbe, 0xe8, 0x38, 0x4e, +0xd9, 0x60, 0x6f, 0x3a, 0x9d, 0xc6, 0x2b, 0xaf, +0xbc, 0x82, 0x0d, 0x1b, 0x36, 0x2c, 0xfa, 0x42, +0x6a, 0x96, 0x53, 0xf8, 0x03, 0x33, 0x77, 0xd0, +0xc3, 0xc3, 0xc3, 0x48, 0xa5, 0x52, 0xf5, 0x3e, +0x94, 0x05, 0x33, 0x3d, 0x3d, 0x8d, 0xc3, 0x87, +0x0f, 0xd7, 0xfb, 0x30, 0x5a, 0x86, 0x56, 0x0e, +0x7f, 0xa5, 0x14, 0xbe, 0xfb, 0xdd, 0xef, 0xe2, +0x0f, 0xfe, 0xe0, 0x0f, 0xf0, 0xf8, 0xe3, 0x8f, +0xe3, 0xd0, 0xa1, 0x43, 0xf5, 0x3e, 0xa4, 0xa6, +0xa5, 0x58, 0x2c, 0xe2, 0x7f, 0xfe, 0xcf, 0xff, +0x59, 0x51, 0x02, 0x8e, 0x1d, 0x3b, 0xf6, 0xc7, +0xc7, 0x8f, 0x1f, 0x7f, 0xcf, 0xb2, 0x2c, 0x0f, +0x80, 0x07, 0xc0, 0x0f, 0x5e, 0xfb, 0x8c, 0x31, +0xcf, 0x71, 0x9c, 0xf0, 0xb5, 0x96, 0x01, 0xc7, +0x71, 0x7c, 0xc6, 0x98, 0xcf, 0x39, 0x2f, 0x13, +0x81, 0x38, 0x09, 0xe0, 0x9c, 0x0b, 0x73, 0x76, +0xc0, 0x5c, 0x12, 0xd0, 0x6a, 0xd3, 0x03, 0xe7, +0xac, 0x0f, 0xd5, 0x3b, 0xfc, 0x95, 0x52, 0x76, +0x34, 0xfc, 0xa5, 0xb1, 0xbc, 0xaf, 0x0e, 0xff, +0xe0, 0x75, 0x49, 0xf8, 0x77, 0x74, 0x74, 0xf4, +0xed, 0xda, 0xb5, 0xeb, 0xe5, 0xb8, 0xf0, 0xcf, +0x64, 0x32, 0x78, 0xed, 0xb5, 0xd7, 0x28, 0xfc, +0x17, 0x89, 0x10, 0xa2, 0x61, 0xef, 0x30, 0x92, +0xd2, 0xd6, 0xd6, 0x46, 0x3b, 0x04, 0x56, 0x89, +0x56, 0x0d, 0xff, 0x0b, 0x17, 0x2e, 0xe0, 0xf7, +0x7e, 0xef, 0xf7, 0xb0, 0x75, 0xeb, 0x56, 0xdc, +0x73, 0xcf, 0x3d, 0xb8, 0xfe, 0xfa, 0xeb, 0x29, +0xfc, 0x17, 0x89, 0xeb, 0xba, 0x78, 0xe5, 0x95, +0x57, 0x62, 0xab, 0xaf, 0x8c, 0x31, 0x7b, 0xc3, +0x86, 0x0d, 0x2f, 0xae, 0x5d, 0xbb, 0x76, 0x47, +0x30, 0xac, 0x1b, 0x0e, 0x05, 0x20, 0x58, 0xc2, +0x5d, 0x7f, 0xfe, 0xeb, 0xe1, 0x00, 0x00, 0xe1, +0x32, 0xf0, 0x3a, 0x3b, 0x60, 0x34, 0x8f, 0x17, +0x0a, 0x85, 0xd8, 0xe1, 0x00, 0xcb, 0xb2, 0x78, +0xb1, 0x58, 0x64, 0x71, 0x2b, 0x06, 0x02, 0x33, +0xff, 0x4f, 0xeb, 0xad, 0x84, 0x0f, 0x1f, 0x3e, +0xcc, 0x0e, 0x1c, 0x38, 0xd0, 0x32, 0x43, 0x01, +0xb3, 0x56, 0x00, 0x1a, 0x21, 0xfc, 0xcd, 0x87, +0x19, 0xfe, 0xfa, 0xa1, 0xc3, 0x1f, 0xc1, 0xe2, +0x3e, 0x3a, 0xfc, 0x3b, 0x3b, 0x3b, 0xd7, 0xec, +0xd8, 0xb1, 0xe3, 0x45, 0xdb, 0xb6, 0x3b, 0xa3, +0xe7, 0x95, 0xcd, 0x66, 0xf1, 0xea, 0xab, 0xaf, +0xa2, 0xbf, 0xbf, 0xbf, 0x5a, 0xd7, 0x71, 0x59, +0x86, 0xbf, 0x49, 0x5f, 0x5f, 0x1f, 0xd6, 0xaf, +0x2f, 0x5b, 0x4f, 0xa9, 0x69, 0x18, 0x1f, 0x1f, +0x6f, 0x99, 0x99, 0x0d, 0xf5, 0xa2, 0x15, 0xc3, +0xff, 0xbd, 0xf7, 0xde, 0xc3, 0xef, 0xff, 0xfe, +0xef, 0xe3, 0xcb, 0x5f, 0xfe, 0x32, 0xa6, 0xa6, +0xa6, 0x00, 0x00, 0xff, 0xfa, 0x5f, 0xff, 0x6b, +0xfc, 0xf7, 0xff, 0xfe, 0xdf, 0xeb, 0x7c, 0x64, +0xad, 0xc3, 0x5c, 0x95, 0x80, 0xf1, 0xf1, 0xf1, +0x2f, 0x99, 0x95, 0x00, 0xcb, 0xb2, 0xbc, 0xe0, +0xae, 0x3f, 0x1c, 0x16, 0x30, 0x1e, 0xbe, 0xeb, +0xba, 0xba, 0x32, 0x90, 0xa8, 0x12, 0x00, 0x63, +0x9d, 0x00, 0xbd, 0x62, 0xa0, 0xe7, 0x79, 0x32, +0x93, 0xc9, 0xa8, 0x62, 0xb1, 0x28, 0xcd, 0xe9, +0x81, 0x00, 0xd0, 0x4a, 0x95, 0x80, 0x8a, 0x02, +0x50, 0xad, 0xf0, 0x8f, 0xee, 0xea, 0x27, 0xa5, +0xb4, 0x6a, 0x18, 0xfe, 0xae, 0x94, 0xd2, 0xe9, +0xea, 0xea, 0xea, 0xdf, 0xb1, 0x63, 0xc7, 0x4b, +0x96, 0x65, 0xb5, 0x47, 0xcf, 0xab, 0xbd, 0xbd, +0x1d, 0xaf, 0xbd, 0xf6, 0x5a, 0x55, 0xb7, 0x84, +0x5d, 0xee, 0xe1, 0xaf, 0x69, 0xe6, 0x25, 0x82, +0x0b, 0x85, 0x02, 0x2e, 0x5d, 0xba, 0x04, 0x29, +0x25, 0x84, 0x10, 0xe1, 0x73, 0xa5, 0xd7, 0xe6, +0x33, 0xd1, 0x7a, 0xe1, 0xff, 0x4f, 0xff, 0xf4, +0x4f, 0xf8, 0xcd, 0xdf, 0xfc, 0x4d, 0xfc, 0xf0, +0x87, 0x3f, 0x2c, 0x79, 0xff, 0x89, 0x27, 0x9e, +0xc0, 0x9f, 0xfe, 0xe9, 0x9f, 0x36, 0x55, 0x73, +0x5d, 0x33, 0x90, 0x50, 0x02, 0xc6, 0x38, 0xe7, +0x3a, 0xf8, 0x3d, 0x00, 0x1e, 0x63, 0xcc, 0x0b, +0xfa, 0x01, 0x3c, 0xdd, 0x1f, 0xc0, 0x39, 0xf7, +0xe2, 0x24, 0xa0, 0x52, 0x4f, 0x00, 0x63, 0x4c, +0x98, 0x2b, 0x06, 0x7a, 0x9e, 0x27, 0xbb, 0xba, +0xba, 0xe4, 0xe4, 0xe4, 0xa4, 0x5a, 0xb9, 0x72, +0xa5, 0x4c, 0xba, 0x46, 0x40, 0xcb, 0x08, 0x40, +0xb4, 0x7c, 0x11, 0x15, 0x80, 0xb8, 0xf0, 0x3f, +0x77, 0xee, 0x1c, 0x5b, 0xbd, 0x7a, 0xf5, 0x9c, +0x5b, 0xfa, 0x56, 0x5a, 0xdb, 0xbf, 0x5a, 0xe1, +0xdf, 0xdd, 0xdd, 0xbd, 0x6e, 0x64, 0x64, 0xe4, +0x45, 0xcb, 0xb2, 0xca, 0x5a, 0xbb, 0x3b, 0x3b, +0x3b, 0xf1, 0xda, 0x6b, 0xaf, 0x55, 0x75, 0x53, +0x12, 0x0a, 0xff, 0x52, 0x9a, 0x59, 0x02, 0x16, +0x82, 0x52, 0x0a, 0x42, 0x08, 0x14, 0x0a, 0x05, +0xe4, 0xf3, 0xf9, 0xf0, 0x59, 0x3f, 0x96, 0x83, +0x20, 0xb4, 0x5a, 0xf8, 0xbf, 0xf7, 0xde, 0x7b, +0xb8, 0xf9, 0xe6, 0x9b, 0xcb, 0x16, 0x88, 0xba, +0xfd, 0xf6, 0xdb, 0xf1, 0x57, 0x7f, 0xf5, 0x57, +0x4d, 0xdd, 0xef, 0xd2, 0xc8, 0xcc, 0x25, 0x01, +0x47, 0x8f, 0x1e, 0xfd, 0x93, 0xe3, 0xc7, 0x8f, +0x8f, 0x45, 0x2b, 0x01, 0x00, 0x3c, 0xc7, 0x71, +0x8a, 0x5a, 0x00, 0x18, 0x63, 0x9e, 0xd1, 0x18, +0xe8, 0xc5, 0x49, 0x80, 0x7e, 0xd6, 0x2b, 0x06, +0x2e, 0x57, 0x09, 0x98, 0x53, 0x00, 0x2a, 0xdd, +0xfd, 0xeb, 0x55, 0xfe, 0x74, 0xf8, 0x8f, 0x8c, +0x8c, 0xe0, 0xcc, 0x99, 0x33, 0xe1, 0x74, 0x0a, +0x1d, 0xfe, 0xd9, 0x6c, 0x96, 0x4d, 0x4e, 0x4e, +0x86, 0x63, 0x2d, 0xe6, 0xae, 0x7e, 0x71, 0xdd, +0xfe, 0x8b, 0x09, 0xff, 0x9e, 0x9e, 0x9e, 0x0d, +0xc3, 0xc3, 0xc3, 0x2f, 0x58, 0x96, 0xd5, 0x16, +0x3d, 0xa7, 0xae, 0xae, 0x2e, 0xbc, 0xfe, 0xfa, +0xeb, 0x55, 0xed, 0x58, 0xa7, 0xf0, 0x8f, 0x67, +0xb9, 0x49, 0xc0, 0x6c, 0x14, 0x8b, 0x45, 0x5c, +0xba, 0x74, 0x09, 0x93, 0x93, 0x93, 0x98, 0x9c, +0x9c, 0x44, 0x3e, 0x9f, 0xaf, 0xf7, 0x21, 0x55, +0x95, 0x56, 0x0b, 0xff, 0x89, 0x89, 0x09, 0xdc, +0x70, 0xc3, 0x0d, 0x38, 0x79, 0xf2, 0x64, 0xc9, +0xfb, 0x37, 0xdd, 0x74, 0x13, 0xbe, 0xf3, 0x9d, +0xef, 0xd0, 0x94, 0xd1, 0x1a, 0x33, 0x97, 0x04, +0x1c, 0x39, 0x72, 0xe4, 0x2b, 0x27, 0x4e, 0x9c, +0x78, 0xcf, 0xa8, 0x04, 0xe8, 0xe0, 0x2f, 0xa9, +0x04, 0x68, 0x09, 0x08, 0x9a, 0x05, 0xcb, 0x2a, +0x01, 0x66, 0x35, 0x20, 0x93, 0xc9, 0x08, 0xdd, +0x0c, 0xc8, 0x18, 0x13, 0xd9, 0x6c, 0x36, 0xdc, +0x4c, 0x28, 0x6e, 0xb5, 0xc0, 0xf9, 0x36, 0x05, +0x36, 0x95, 0x00, 0xcc, 0x37, 0xfc, 0x01, 0x40, +0x97, 0xfe, 0x75, 0xf8, 0xe7, 0x72, 0x39, 0xe6, +0x38, 0xce, 0x92, 0x86, 0x7f, 0x6f, 0x6f, 0xef, +0xe0, 0xf0, 0xf0, 0xf0, 0xf3, 0x9c, 0xf3, 0xb2, +0x25, 0xc7, 0x56, 0xac, 0x58, 0x81, 0x37, 0xde, +0x78, 0x03, 0x3d, 0x3d, 0x65, 0xb3, 0x00, 0x17, +0x0c, 0x85, 0xff, 0xec, 0xac, 0x5b, 0xb7, 0xae, +0xaa, 0xc3, 0x2c, 0xad, 0x82, 0xef, 0xfb, 0xa1, +0x0c, 0x5c, 0xb8, 0x70, 0x01, 0x85, 0x42, 0xa1, +0xde, 0x87, 0xb4, 0x60, 0x5a, 0x2d, 0xfc, 0x4f, +0x9f, 0x3e, 0x8d, 0x1b, 0x6f, 0xbc, 0xb1, 0x6c, +0x29, 0xdd, 0x6b, 0xaf, 0xbd, 0x16, 0xdf, 0xfd, +0xee, 0x77, 0xd1, 0xd1, 0xd1, 0x51, 0xa7, 0x23, +0x5b, 0x5e, 0xcc, 0x21, 0x01, 0xe2, 0xc8, 0x91, +0x23, 0x5f, 0xd6, 0x95, 0x00, 0xc6, 0x58, 0x51, +0x3f, 0x63, 0x0e, 0x09, 0x08, 0xfe, 0x5c, 0x59, +0x15, 0x40, 0x3f, 0xb2, 0xd9, 0x6c, 0xd8, 0x17, +0xe0, 0xfb, 0xbe, 0xd4, 0x4b, 0x06, 0x9b, 0x33, +0x03, 0x7c, 0xdf, 0x97, 0x73, 0xf5, 0x03, 0x83, +0xd0, 0xa9, 0x91, 0x00, 0x00, 0x20, 0x00, 0x49, +0x44, 0x41, 0x54, 0x34, 0x53, 0x15, 0xa0, 0x44, +0x00, 0x16, 0x13, 0xfe, 0x93, 0x93, 0x93, 0xcc, +0x75, 0x5d, 0x1e, 0x17, 0xfe, 0xd3, 0xd3, 0xd3, +0x1c, 0x40, 0xc5, 0xf0, 0x47, 0xb0, 0xbc, 0x6f, +0xa5, 0x6e, 0xff, 0xd9, 0xc2, 0x5f, 0x08, 0xe1, +0xae, 0x5a, 0xb5, 0x6a, 0x68, 0xeb, 0xd6, 0xad, +0xcf, 0x73, 0xce, 0xcb, 0x6a, 0x73, 0x3d, 0x3d, +0x3d, 0x78, 0xfd, 0xf5, 0xd7, 0xab, 0xba, 0xe4, +0x2b, 0x85, 0x7f, 0x32, 0x56, 0xac, 0x58, 0x81, +0xa1, 0xa1, 0xa1, 0x86, 0x9e, 0x27, 0x5d, 0x6f, +0x2e, 0x5d, 0xba, 0x84, 0x33, 0x67, 0xce, 0xe0, +0xdc, 0xb9, 0x73, 0xf0, 0x7d, 0xbf, 0xde, 0x87, +0x93, 0x98, 0x56, 0x0b, 0xff, 0x4b, 0x97, 0x2e, +0xe1, 0xb6, 0xdb, 0x6e, 0xc3, 0x8f, 0x7f, 0xfc, +0xe3, 0x92, 0xf7, 0x47, 0x47, 0x47, 0xf1, 0xfd, +0xef, 0x7f, 0x1f, 0x2b, 0x56, 0xac, 0xa8, 0xd3, +0x91, 0x2d, 0x4f, 0x16, 0x2b, 0x01, 0x9c, 0xf3, +0xa2, 0xd9, 0x18, 0xc8, 0x18, 0xf3, 0x52, 0xa9, +0x94, 0x7e, 0x5d, 0x52, 0x05, 0x30, 0xf6, 0x1a, +0x10, 0x8c, 0x31, 0x61, 0xae, 0x11, 0xa0, 0x9b, +0x02, 0xb5, 0x04, 0x44, 0x9b, 0x02, 0x9b, 0x7d, +0x28, 0x20, 0xec, 0x64, 0x99, 0xcf, 0xfa, 0xfe, +0x71, 0xe1, 0xdf, 0xdd, 0xdd, 0xcd, 0x72, 0xb9, +0x1c, 0xeb, 0xe8, 0xe8, 0x60, 0x85, 0x42, 0xa1, +0x24, 0xfc, 0x75, 0xd7, 0xff, 0x6c, 0xe1, 0xaf, +0x2b, 0x00, 0x9e, 0xe7, 0xcd, 0x2b, 0xfc, 0xfb, +0xfa, 0xfa, 0x36, 0x6d, 0xdd, 0xba, 0xf5, 0x85, +0xb8, 0xf0, 0x5f, 0xb9, 0x72, 0x25, 0x7e, 0xe3, +0x37, 0x7e, 0x83, 0xc2, 0xbf, 0x4e, 0x9c, 0x3f, +0x7f, 0x1e, 0x87, 0x0f, 0x1f, 0xc6, 0xf4, 0xf4, +0x74, 0xbd, 0x0f, 0xa5, 0x61, 0x69, 0x6f, 0x6f, +0xc7, 0xc0, 0xc0, 0x00, 0x76, 0xed, 0xda, 0x85, +0x2d, 0x5b, 0xb6, 0xa0, 0xa7, 0xa7, 0xa7, 0xe1, +0x1b, 0xcc, 0x5a, 0x2d, 0xfc, 0x0b, 0x85, 0x02, +0x1e, 0x79, 0xe4, 0x91, 0xb2, 0xf0, 0xdf, 0xb9, +0x73, 0x27, 0xbe, 0xfb, 0xdd, 0xef, 0x52, 0xf8, +0xd7, 0x81, 0x39, 0xa6, 0x08, 0x5a, 0x1b, 0x37, +0x6e, 0x7c, 0x76, 0xdd, 0xba, 0x75, 0x23, 0x46, +0x16, 0x98, 0xbb, 0xbe, 0x86, 0x53, 0xc4, 0x83, +0x87, 0x0d, 0xc0, 0x2e, 0x16, 0x8b, 0x76, 0xb1, +0x58, 0x0c, 0xa7, 0x07, 0xea, 0x87, 0x52, 0xaa, +0xe4, 0x75, 0x3e, 0x9f, 0xe7, 0xe9, 0x74, 0x9a, +0x05, 0x55, 0x6b, 0x9e, 0xcd, 0x66, 0xd9, 0xf4, +0xf4, 0x34, 0xcb, 0xe5, 0x72, 0x15, 0x57, 0x0a, +0x3c, 0x70, 0xe0, 0x40, 0xc9, 0x31, 0x9a, 0xd9, +0xd9, 0xc8, 0x24, 0xfa, 0xa4, 0x89, 0x36, 0xfd, +0x01, 0xe5, 0xe1, 0x7f, 0xfa, 0xf4, 0x69, 0xde, +0xd1, 0xd1, 0xc1, 0x2e, 0x5c, 0xb8, 0xc0, 0x1d, +0xc7, 0x29, 0x09, 0x7f, 0xa5, 0x94, 0xc5, 0x39, +0xe7, 0xc5, 0x62, 0x91, 0x7b, 0x9e, 0xc7, 0x51, +0x7a, 0xf1, 0x4b, 0xc2, 0xdf, 0xfc, 0x07, 0x03, +0x60, 0xcf, 0x56, 0xf6, 0x5f, 0xbd, 0x7a, 0xf5, +0x96, 0xab, 0xae, 0xba, 0xea, 0x39, 0xce, 0x79, +0xd9, 0x24, 0xee, 0x55, 0xab, 0x56, 0xe1, 0x8d, +0x37, 0xde, 0x40, 0x57, 0x57, 0x57, 0x35, 0xae, +0x13, 0x00, 0xe0, 0xc7, 0x3f, 0xfe, 0x31, 0x85, +0xff, 0x3c, 0x29, 0x14, 0x0a, 0x78, 0xff, 0xfd, +0xf7, 0xf1, 0xc9, 0x27, 0x9f, 0xd4, 0xfb, 0x50, +0x1a, 0x1a, 0xc6, 0x18, 0xba, 0xba, 0xba, 0xb0, +0x71, 0xe3, 0x46, 0xec, 0xd8, 0xb1, 0x03, 0x7d, +0x7d, 0x7d, 0x0d, 0x29, 0x02, 0xad, 0x16, 0xfe, +0xc5, 0x62, 0x11, 0x8f, 0x3e, 0xfa, 0x28, 0xbe, +0xf7, 0xbd, 0xef, 0x95, 0xbc, 0xbf, 0x6d, 0xdb, +0x36, 0x7c, 0xef, 0x7b, 0xdf, 0xab, 0xea, 0xb0, +0x21, 0x31, 0x3f, 0xe6, 0x2b, 0x01, 0x7a, 0xd3, +0x37, 0x04, 0x12, 0x60, 0xde, 0x40, 0x1a, 0x37, +0x94, 0xb6, 0xef, 0xfb, 0x56, 0xb1, 0x58, 0xb4, +0x0b, 0x85, 0x42, 0x28, 0x02, 0x3c, 0x40, 0x0f, +0x57, 0xe7, 0x72, 0x39, 0x3e, 0x3d, 0x3d, 0xcd, +0x2d, 0xcb, 0xe2, 0x85, 0x42, 0x81, 0x5d, 0xb8, +0x70, 0x81, 0x77, 0x74, 0x74, 0xb0, 0xe8, 0x72, +0xc1, 0xb3, 0xad, 0x0f, 0x00, 0x34, 0xfe, 0xda, +0x00, 0x4c, 0x29, 0x35, 0xeb, 0xdd, 0xff, 0x7c, +0xe6, 0xfa, 0x5f, 0xb8, 0x70, 0x81, 0x67, 0xb3, +0x59, 0x66, 0x59, 0x16, 0x3f, 0x7f, 0xfe, 0xbc, +0xa5, 0xef, 0xfc, 0xa7, 0xa6, 0xa6, 0xc2, 0xc0, +0x8f, 0x76, 0xfb, 0xcf, 0xb6, 0xa5, 0xaf, 0x5e, +0xde, 0x37, 0x2e, 0xfc, 0xd7, 0xac, 0x59, 0xb3, +0x75, 0xcb, 0x96, 0x2d, 0x07, 0x19, 0x63, 0x4e, +0xf4, 0xa4, 0xfa, 0xfa, 0xfa, 0xf0, 0xfa, 0xeb, +0xaf, 0xa3, 0xbd, 0xbd, 0x6c, 0x16, 0xe0, 0x82, +0xf9, 0xf5, 0xaf, 0x7f, 0x5d, 0x36, 0x25, 0x88, +0x98, 0x1f, 0x6d, 0x6d, 0x6d, 0x18, 0x18, 0x18, +0xa0, 0x46, 0xaa, 0x84, 0xf8, 0xbe, 0x8f, 0x53, +0xa7, 0x4e, 0xe1, 0x93, 0x4f, 0x3e, 0x69, 0x88, +0xd9, 0x04, 0xad, 0x16, 0xfe, 0x9e, 0xe7, 0xe1, +0xb1, 0xc7, 0x1e, 0xc3, 0xb7, 0xbe, 0xf5, 0xad, +0x92, 0xf7, 0xb7, 0x6c, 0xd9, 0x82, 0x1f, 0xfe, +0xf0, 0x87, 0x58, 0xb3, 0xa6, 0x6c, 0xc3, 0x50, +0xa2, 0x0e, 0x24, 0x18, 0x0e, 0xf8, 0x4a, 0x30, +0x1c, 0x50, 0x34, 0x87, 0x03, 0x18, 0x63, 0xc5, +0xe8, 0x70, 0x00, 0xe7, 0x5c, 0xf7, 0x05, 0xf8, +0xc6, 0x73, 0x38, 0x1c, 0x90, 0xcd, 0x66, 0x75, +0x7f, 0x40, 0x6c, 0x53, 0xa0, 0x1e, 0x0a, 0xe8, +0xef, 0xef, 0x97, 0x67, 0xce, 0x9c, 0x99, 0xf7, +0x50, 0x40, 0xa3, 0x0d, 0x03, 0xf0, 0xb9, 0x4a, +0xff, 0xc0, 0xe5, 0xf2, 0x86, 0xee, 0xf8, 0xaf, +0xb4, 0xd0, 0x4f, 0x36, 0x9b, 0x65, 0x97, 0x2e, +0x5d, 0xe2, 0x53, 0x53, 0x53, 0x3c, 0x2e, 0xfc, +0xa3, 0x0f, 0xf3, 0xce, 0x1f, 0x15, 0xc2, 0x5f, +0x29, 0xe5, 0x20, 0x12, 0xfe, 0xfd, 0xfd, 0xfd, +0x23, 0x5b, 0xb6, 0x6c, 0x79, 0x36, 0x2e, 0xfc, +0xd7, 0xac, 0x59, 0x83, 0x37, 0xde, 0x78, 0xa3, +0xaa, 0xe1, 0x7f, 0xf6, 0xec, 0x59, 0xfc, 0xdd, +0xdf, 0xfd, 0x5d, 0xd5, 0x7e, 0xde, 0x72, 0x65, +0x7a, 0x7a, 0x1a, 0xbf, 0xf8, 0xc5, 0x2f, 0x30, +0x31, 0x31, 0x01, 0x21, 0x44, 0xbd, 0x0f, 0xa7, +0xe1, 0xb1, 0x6d, 0x1b, 0xeb, 0xd6, 0xad, 0xc3, +0xce, 0x9d, 0x3b, 0xb1, 0x7a, 0xf5, 0xea, 0xba, +0x56, 0x04, 0x5a, 0x2d, 0xfc, 0x7d, 0xdf, 0xc7, +0x93, 0x4f, 0x3e, 0x59, 0x16, 0xfe, 0x43, 0x43, +0x43, 0xf8, 0xc1, 0x0f, 0x7e, 0x40, 0xe1, 0xdf, +0x40, 0x24, 0xa8, 0x04, 0x1c, 0x5c, 0xb7, 0x6e, +0xdd, 0x70, 0x64, 0x38, 0x40, 0xef, 0x0c, 0x1b, +0xbe, 0xc6, 0x4c, 0x45, 0x39, 0x1c, 0x02, 0x50, +0x4a, 0xd9, 0x8c, 0xb1, 0x30, 0x8f, 0x38, 0xe7, +0x3c, 0x97, 0xcb, 0x59, 0xb9, 0x5c, 0xce, 0x8a, +0xae, 0x12, 0xa8, 0x57, 0x0a, 0xd4, 0x43, 0x01, +0x17, 0x2e, 0x5c, 0x48, 0x34, 0x14, 0x10, 0x73, +0xbc, 0x0d, 0x55, 0x05, 0x08, 0x3f, 0x51, 0x92, +0x8e, 0xfb, 0x8f, 0x8c, 0x8c, 0x00, 0x00, 0xcc, +0xb9, 0xfe, 0x95, 0x56, 0xf9, 0x9b, 0x9a, 0x9a, +0xb2, 0x2c, 0xcb, 0x2a, 0x29, 0xf9, 0x23, 0x12, +0xfc, 0xba, 0xec, 0x1f, 0x37, 0xe6, 0xaf, 0xca, +0xd7, 0xf6, 0x77, 0xd6, 0xaf, 0x5f, 0xbf, 0x63, +0xf3, 0xe6, 0xcd, 0xcf, 0x30, 0xc6, 0xec, 0xe8, +0xc9, 0xac, 0x5d, 0xbb, 0x16, 0xaf, 0xbf, 0xfe, +0x7a, 0xd5, 0xef, 0x30, 0xff, 0xe9, 0x9f, 0xfe, +0x89, 0x02, 0xab, 0x8a, 0x7c, 0xfa, 0xe9, 0xa7, +0xf8, 0xf9, 0xcf, 0x7f, 0xde, 0x30, 0x77, 0xb6, +0x8d, 0x8e, 0x16, 0x81, 0xe1, 0xe1, 0xe1, 0xba, +0x54, 0x4f, 0x5a, 0x31, 0xfc, 0x9f, 0x7e, 0xfa, +0x69, 0xbc, 0xfd, 0xf6, 0xdb, 0x25, 0xef, 0xaf, +0x5f, 0xbf, 0x1e, 0x3f, 0xf8, 0xc1, 0x0f, 0xb0, +0x6e, 0xdd, 0xba, 0x3a, 0x1d, 0x19, 0x51, 0x89, +0x84, 0xc3, 0x01, 0xc3, 0x3a, 0x37, 0x74, 0x4f, +0x80, 0x21, 0x01, 0xe6, 0x96, 0xf1, 0xa1, 0x08, +0x98, 0x3b, 0x07, 0x22, 0x90, 0x00, 0x9d, 0x59, +0xbe, 0xef, 0x33, 0x53, 0x04, 0x26, 0x27, 0x27, +0x79, 0x74, 0x28, 0x20, 0x7a, 0x2c, 0x87, 0x0f, +0x1f, 0x2e, 0xa9, 0x9c, 0x37, 0x7a, 0x2f, 0x40, +0xc5, 0x5b, 0x8a, 0xb9, 0xc6, 0xfd, 0xf5, 0x74, +0x3f, 0x3d, 0xd7, 0xbf, 0x58, 0x2c, 0xb2, 0x4c, +0x26, 0xc3, 0xa2, 0x6b, 0x2c, 0x23, 0xb8, 0xa8, +0x30, 0xa6, 0xfb, 0x99, 0xcd, 0x18, 0xc6, 0x3f, +0x88, 0x69, 0x6d, 0xd1, 0x2d, 0x7d, 0x1d, 0x29, +0xa5, 0xbb, 0x7e, 0xfd, 0xfa, 0x5d, 0x43, 0x43, +0x43, 0x4f, 0x07, 0xd6, 0x56, 0xc2, 0xfa, 0xf5, +0xeb, 0xf1, 0xda, 0x6b, 0xaf, 0xa1, 0xad, 0xad, +0x6c, 0x09, 0x80, 0x45, 0x71, 0xea, 0xd4, 0xa9, +0x96, 0xd8, 0xf6, 0xb6, 0xd1, 0xf0, 0x7d, 0x1f, +0xc7, 0x8e, 0x1d, 0xc3, 0xbb, 0xef, 0xbe, 0x8b, +0x53, 0xa7, 0x4e, 0x91, 0x60, 0x25, 0x20, 0x9d, +0x4e, 0x63, 0xeb, 0xd6, 0xad, 0x58, 0xbb, 0x76, +0x2d, 0x96, 0xea, 0x46, 0xa2, 0xd5, 0xc2, 0x5f, +0x08, 0x81, 0x43, 0x87, 0x0e, 0xe1, 0xad, 0xb7, +0xde, 0x2a, 0x79, 0x7f, 0xf5, 0xea, 0xd5, 0xf8, +0xfe, 0xf7, 0xbf, 0x5f, 0xd5, 0x5d, 0x41, 0x89, +0xea, 0xb2, 0x90, 0xc6, 0x40, 0xcc, 0xec, 0x1b, +0xe0, 0xf8, 0xbe, 0xef, 0xf8, 0xbe, 0x1f, 0x66, +0x0e, 0x00, 0x9b, 0x31, 0xa6, 0xb7, 0x0b, 0x2e, +0x93, 0x00, 0x4d, 0x2a, 0x95, 0x62, 0xb9, 0x5c, +0x8e, 0x7b, 0x9e, 0x17, 0x56, 0x01, 0xf2, 0xf9, +0x3c, 0xd3, 0xfb, 0x05, 0xf4, 0xf6, 0xf6, 0x26, +0xaa, 0x02, 0x34, 0x58, 0xe5, 0x3f, 0x84, 0x03, +0x95, 0x4b, 0xff, 0xb3, 0x8d, 0xfb, 0xeb, 0x8e, +0xff, 0xe8, 0x5c, 0x7f, 0xbd, 0xc4, 0x2f, 0x8c, +0xae, 0x4a, 0x6d, 0x59, 0x9e, 0xe7, 0x59, 0xbe, +0xef, 0x5b, 0x46, 0x19, 0xa6, 0xe4, 0x1f, 0x24, +0xf8, 0x47, 0x8a, 0xdd, 0xd2, 0x77, 0x60, 0x60, +0x60, 0x74, 0x68, 0x68, 0xe8, 0x49, 0xc6, 0x58, +0x99, 0xb4, 0x0c, 0x0c, 0x0c, 0xe0, 0xd5, 0x57, +0x5f, 0x45, 0x26, 0x53, 0xb6, 0x04, 0xc0, 0xa2, +0x89, 0xce, 0x09, 0x26, 0xaa, 0x8b, 0xef, 0xfb, +0x38, 0x7e, 0xfc, 0x38, 0xde, 0x7d, 0xf7, 0x5d, +0x9c, 0x38, 0x71, 0xa2, 0xa9, 0xa6, 0xc2, 0xd5, +0x03, 0xc6, 0x18, 0xd6, 0xac, 0x59, 0x83, 0xe1, +0xe1, 0xe1, 0xaa, 0xcb, 0x6e, 0x94, 0x56, 0x0b, +0x7f, 0x29, 0x25, 0x9e, 0x7f, 0xfe, 0x79, 0x7c, +0xed, 0x6b, 0x5f, 0x2b, 0x79, 0x7f, 0xe5, 0xca, +0x95, 0xf8, 0xde, 0xf7, 0xbe, 0x87, 0x2d, 0x5b, +0xb6, 0xd4, 0xe9, 0xc8, 0x88, 0xa4, 0x24, 0x95, +0x80, 0x60, 0x73, 0x20, 0xc7, 0x1c, 0x46, 0x0e, +0x2a, 0x03, 0xb6, 0xef, 0xfb, 0x61, 0xf5, 0xb9, +0x58, 0x2c, 0xda, 0xbe, 0xef, 0x5b, 0x9e, 0xe7, +0x59, 0xc5, 0x62, 0xd1, 0x2a, 0x16, 0x8b, 0x56, +0xa1, 0x50, 0xb0, 0x3c, 0xcf, 0xe3, 0x7a, 0x28, +0x20, 0x95, 0x4a, 0x31, 0xcb, 0xb2, 0x78, 0x26, +0x93, 0x29, 0x19, 0x0a, 0x00, 0x00, 0x3d, 0x14, +0x60, 0x1e, 0x87, 0xae, 0x02, 0x68, 0xa2, 0x9b, +0x05, 0x35, 0xd2, 0x30, 0x40, 0x18, 0xa6, 0x71, +0xf3, 0xfd, 0x81, 0xca, 0xe3, 0xfe, 0xba, 0xe3, +0xdf, 0x9c, 0xee, 0x97, 0xcb, 0xe5, 0x42, 0x11, +0xe0, 0x9c, 0x73, 0xcf, 0xf3, 0xb8, 0x71, 0x51, +0xa3, 0x0b, 0xfd, 0x94, 0x94, 0xfd, 0xcd, 0xe0, +0xc7, 0xe5, 0x7f, 0x38, 0x57, 0x4a, 0xe9, 0x0e, +0x0e, 0x0e, 0x5e, 0x3d, 0x38, 0x38, 0x78, 0x20, +0x2e, 0xfc, 0x37, 0x6e, 0xdc, 0x88, 0x57, 0x5f, +0x7d, 0x15, 0xe9, 0x74, 0xba, 0x26, 0x17, 0x88, +0xee, 0xfe, 0x97, 0x06, 0x21, 0x04, 0x3e, 0xfa, +0xe8, 0x23, 0xbc, 0xfb, 0xee, 0xbb, 0x38, 0x72, +0xe4, 0x08, 0x2e, 0x5e, 0xbc, 0x58, 0xef, 0x43, +0x6a, 0x68, 0x32, 0x99, 0x0c, 0xb6, 0x6d, 0xdb, +0x56, 0xb3, 0xc5, 0x96, 0x5a, 0x31, 0xfc, 0x5f, +0x7a, 0xe9, 0x25, 0x7c, 0xe5, 0x2b, 0x5f, 0x29, +0x79, 0x7f, 0xc5, 0x8a, 0x15, 0xf8, 0xeb, 0xbf, +0xfe, 0xeb, 0x70, 0x68, 0x93, 0x68, 0x7c, 0x12, +0xf6, 0x04, 0x8c, 0x44, 0x86, 0x03, 0x4a, 0x7a, +0x01, 0x10, 0xdc, 0x7c, 0xea, 0x1e, 0x00, 0xf3, +0x75, 0x74, 0x46, 0x40, 0x3e, 0x9f, 0xe7, 0xbe, +0xef, 0xb3, 0xe9, 0xe9, 0x69, 0x9e, 0xc9, 0x64, +0x58, 0xa1, 0x50, 0x28, 0xa9, 0x02, 0x0c, 0x0e, +0x0e, 0x22, 0xae, 0x0a, 0x10, 0x9d, 0x11, 0x00, +0x34, 0x9e, 0x04, 0xf0, 0x68, 0x69, 0x62, 0x3e, +0xe3, 0xfe, 0xd9, 0x6c, 0x96, 0x65, 0x32, 0x19, +0xe6, 0x79, 0x1e, 0xd3, 0x63, 0xff, 0xba, 0x91, +0x42, 0xcf, 0xf5, 0x37, 0x1f, 0xd1, 0x3b, 0x7f, +0x04, 0xff, 0x10, 0x3a, 0xfc, 0x01, 0x38, 0x98, +0x99, 0xc2, 0xe1, 0x02, 0x70, 0xa4, 0x94, 0xce, +0xc6, 0x8d, 0x1b, 0x3f, 0x33, 0x30, 0x30, 0xf0, +0x18, 0x80, 0xb2, 0x0b, 0xb6, 0x79, 0xf3, 0x66, +0xbc, 0xfc, 0xf2, 0xcb, 0x35, 0xdb, 0xca, 0xf5, +0xec, 0xd9, 0xb3, 0xc8, 0xe5, 0x72, 0x35, 0xf9, +0xd9, 0x44, 0x3c, 0x52, 0x4a, 0x9c, 0x3d, 0x7b, +0x16, 0x1f, 0x7c, 0xf0, 0x01, 0xde, 0x79, 0xe7, +0x1d, 0x1c, 0x3f, 0x7e, 0xbc, 0xe5, 0x96, 0xcf, +0xad, 0x16, 0x8c, 0x31, 0xac, 0x5b, 0xb7, 0x0e, +0x83, 0x83, 0x83, 0x55, 0x1d, 0x12, 0x68, 0xb5, +0xf0, 0x07, 0x80, 0x37, 0xde, 0x78, 0x03, 0xff, +0xfb, 0x7f, 0xff, 0xef, 0x92, 0xf7, 0x3a, 0x3a, +0x3a, 0xf0, 0x9d, 0xef, 0x7c, 0x07, 0x7b, 0xf6, +0xec, 0xa9, 0xd3, 0x51, 0x11, 0x0b, 0x65, 0xae, +0xad, 0x84, 0x87, 0x86, 0x86, 0xc2, 0x4a, 0x00, +0x63, 0xcc, 0xd6, 0xc3, 0xcf, 0x08, 0x32, 0x07, +0x86, 0x04, 0x98, 0x43, 0x00, 0x7a, 0xb8, 0x1a, +0x46, 0x3f, 0x80, 0x7e, 0x4e, 0xa7, 0xd3, 0x6c, +0x6a, 0x6a, 0x8a, 0x2f, 0xa6, 0x0a, 0xd0, 0x68, +0x70, 0xa0, 0x72, 0xe9, 0x1f, 0xa8, 0x3c, 0xee, +0xaf, 0x9b, 0xfe, 0xa6, 0xa6, 0xa6, 0x42, 0x53, +0x9a, 0x9a, 0x9a, 0xb2, 0x72, 0xb9, 0x5c, 0x59, +0xe3, 0x5f, 0xe4, 0xce, 0xdf, 0x1c, 0xfb, 0x2f, +0x2b, 0xf9, 0xeb, 0x71, 0x1b, 0x21, 0x84, 0x3b, +0x34, 0x34, 0xf4, 0x99, 0xf5, 0xeb, 0xd7, 0x3f, +0x82, 0x98, 0xf0, 0xbf, 0xf2, 0xca, 0x2b, 0xf1, +0xd2, 0x4b, 0x2f, 0xc1, 0x71, 0xca, 0x26, 0x02, +0x54, 0x0d, 0xbd, 0xfd, 0x27, 0x51, 0x1f, 0x3c, +0xcf, 0xc3, 0xa9, 0x53, 0xa7, 0xf0, 0xde, 0x7b, +0xef, 0xe1, 0x17, 0xbf, 0xf8, 0x05, 0x4e, 0x9d, +0x3a, 0x45, 0x42, 0x16, 0xc3, 0xca, 0x95, 0x2b, +0xb1, 0x79, 0xf3, 0xe6, 0xaa, 0xcc, 0x12, 0x68, +0xc5, 0xf0, 0xff, 0xf7, 0xff, 0xfe, 0xdf, 0xe3, +0x0b, 0x5f, 0xf8, 0x42, 0xc9, 0x7b, 0x6d, 0x6d, +0x6d, 0xf8, 0xcb, 0xbf, 0xfc, 0x4b, 0x5c, 0x7b, +0xed, 0xb5, 0x75, 0x3a, 0x2a, 0x62, 0xb1, 0x24, +0x90, 0x80, 0x43, 0x66, 0x25, 0xc0, 0x1c, 0x02, +0x30, 0x6f, 0x46, 0x75, 0x2f, 0x80, 0x1e, 0x0a, +0xf0, 0x7d, 0x9f, 0xfb, 0xbe, 0xaf, 0x2b, 0xd8, +0xbc, 0x58, 0x2c, 0xf2, 0x7c, 0x3e, 0xcf, 0xf3, +0xf9, 0x3c, 0xf7, 0x3c, 0x8f, 0x2d, 0xb6, 0x0a, +0xd0, 0x48, 0x94, 0x7c, 0x62, 0xcc, 0x55, 0xfa, +0x37, 0x57, 0xfa, 0xd3, 0x4d, 0x7f, 0xe9, 0x74, +0x9a, 0xe9, 0x8b, 0x63, 0x36, 0xfe, 0xc1, 0xe8, +0xf6, 0x87, 0x21, 0x01, 0xba, 0xec, 0xef, 0xfb, +0xbe, 0x6d, 0x4e, 0xd1, 0x30, 0xba, 0x36, 0x5d, +0x21, 0x84, 0x3b, 0x30, 0x30, 0xb0, 0x77, 0xc3, +0x86, 0x0d, 0x8f, 0x22, 0x26, 0xfc, 0xb7, 0x6d, +0xdb, 0x86, 0x17, 0x5e, 0x78, 0x01, 0xb6, 0x5d, +0x36, 0x11, 0xa0, 0xaa, 0x50, 0xd8, 0x34, 0x0e, +0x53, 0x53, 0x53, 0x38, 0x7e, 0xfc, 0x38, 0xc6, +0xc6, 0xc6, 0xf0, 0xee, 0xbb, 0xef, 0x62, 0x62, +0x62, 0x02, 0xe7, 0xcf, 0x9f, 0xa7, 0x59, 0x04, +0x01, 0x5d, 0x5d, 0x5d, 0xd8, 0xba, 0x75, 0xeb, +0xa2, 0x84, 0xb8, 0x15, 0xc3, 0xff, 0xb7, 0x7f, +0xfb, 0xb7, 0xf1, 0xdf, 0xfe, 0xdb, 0x7f, 0x2b, +0x79, 0xcf, 0x71, 0x1c, 0xbc, 0xfd, 0xf6, 0xdb, +0xb8, 0xf9, 0xe6, 0x9b, 0xeb, 0x74, 0x54, 0x44, +0xb5, 0x98, 0x4b, 0x02, 0x06, 0x07, 0x07, 0x9f, +0x5b, 0xb7, 0x6e, 0xdd, 0xf6, 0xe0, 0xc6, 0x52, +0xf7, 0x9b, 0x39, 0x42, 0x08, 0x5b, 0x4a, 0x69, +0x09, 0x21, 0x2c, 0xcf, 0xf3, 0x6c, 0xdf, 0xf7, +0xcb, 0x2a, 0xd6, 0x66, 0x33, 0xa0, 0xeb, 0xba, +0x2c, 0x95, 0x4a, 0xb1, 0xd9, 0xaa, 0x00, 0xd1, +0xbf, 0x3f, 0x5a, 0x05, 0x68, 0x44, 0x2c, 0x73, +0x5c, 0xfd, 0xd3, 0x4f, 0x3f, 0x65, 0x7a, 0x6c, +0x62, 0x72, 0x72, 0x92, 0x6d, 0xda, 0xb4, 0x89, +0xe5, 0x72, 0x39, 0x96, 0xcd, 0x66, 0xf9, 0xd4, +0xd4, 0x14, 0xcb, 0x64, 0x32, 0x3c, 0x9f, 0xcf, +0xb3, 0x74, 0x3a, 0xcd, 0x5d, 0xd7, 0xe5, 0x93, +0x93, 0x93, 0x96, 0x94, 0x92, 0x6b, 0x83, 0x62, +0x8c, 0x95, 0x6d, 0xe7, 0x8b, 0xc8, 0xfc, 0xfe, +0x60, 0x99, 0xc6, 0x70, 0x8a, 0x86, 0x31, 0xcd, +0xcf, 0x0c, 0xff, 0x3d, 0x03, 0x03, 0x03, 0x4f, +0xc4, 0x8d, 0xf9, 0x8f, 0x8c, 0x8c, 0xe0, 0xd0, +0xa1, 0x43, 0x35, 0x0f, 0x7f, 0x00, 0x38, 0x73, +0xe6, 0x0c, 0x8e, 0x1d, 0x3b, 0x56, 0xf3, 0xbf, +0x87, 0x98, 0x1f, 0x42, 0x08, 0x4c, 0x4f, 0x4f, +0xe3, 0xec, 0xd9, 0xb3, 0x38, 0x75, 0xea, 0x14, +0x2e, 0x5d, 0xba, 0x84, 0x74, 0x3a, 0x5d, 0xb3, +0xa1, 0xa0, 0x66, 0xc1, 0x71, 0x1c, 0xf4, 0xf4, +0xf4, 0xe0, 0xfc, 0xf9, 0xf3, 0xf3, 0x9e, 0x55, +0xd1, 0x8a, 0xe1, 0xff, 0x7b, 0xbf, 0xf7, 0x7b, +0xf8, 0x0f, 0xff, 0xe1, 0x3f, 0x94, 0xbd, 0xff, +0x87, 0x7f, 0xf8, 0x87, 0x73, 0xce, 0xd7, 0x26, +0x9a, 0x07, 0xcb, 0xb2, 0xb0, 0x6b, 0xd7, 0x2e, +0x1c, 0x39, 0x72, 0x04, 0xe7, 0xcf, 0x9f, 0x2f, +0xf9, 0x1e, 0x63, 0x8c, 0x77, 0x75, 0x75, 0xed, +0x54, 0x4a, 0x9d, 0xbc, 0x70, 0xe1, 0xc2, 0x69, +0x00, 0x8a, 0x73, 0xae, 0x18, 0x63, 0xe1, 0x83, +0x73, 0x5e, 0xf6, 0x10, 0x42, 0x28, 0xcc, 0xac, +0xdb, 0xa3, 0xa4, 0x94, 0x50, 0x4a, 0x29, 0xdf, +0xf7, 0x21, 0x84, 0x40, 0x36, 0x9b, 0x55, 0xae, +0xeb, 0x2a, 0xcf, 0xf3, 0x50, 0x2c, 0x16, 0xb1, +0x62, 0xc5, 0x0a, 0x28, 0xa5, 0xd4, 0x85, 0x0b, +0x17, 0x20, 0x84, 0xc0, 0xe9, 0xd3, 0xa7, 0xe1, +0xfb, 0x3e, 0x3a, 0x3a, 0x3a, 0xf0, 0xe9, 0xa7, +0x9f, 0x86, 0xdb, 0xcf, 0xff, 0xf0, 0x87, 0x3f, +0x64, 0xb7, 0xde, 0x7a, 0x2b, 0x3e, 0xff, 0xf9, +0xcf, 0x03, 0x00, 0xfe, 0xf3, 0x7f, 0xfe, 0xcf, +0x4b, 0x7b, 0xa1, 0x62, 0x08, 0x03, 0x36, 0x7a, +0xf7, 0x6f, 0x96, 0xfe, 0x01, 0x20, 0x97, 0xcb, +0x95, 0xcc, 0xf7, 0x9f, 0x9a, 0x9a, 0x0a, 0xd7, +0x4b, 0xd6, 0xcb, 0xfc, 0x16, 0x0a, 0x85, 0xb0, +0x93, 0x52, 0x77, 0xfc, 0x17, 0x8b, 0x45, 0x3b, +0x30, 0x2c, 0xdb, 0xf7, 0xfd, 0x70, 0x79, 0x5f, +0xcc, 0x8c, 0xc1, 0x84, 0x25, 0x7f, 0x04, 0x63, +0xfe, 0xeb, 0xd7, 0xaf, 0xdf, 0x39, 0x30, 0x30, +0x10, 0xdb, 0xed, 0xbf, 0x63, 0xc7, 0x0e, 0x1c, +0x3a, 0x74, 0x68, 0xc9, 0x36, 0x97, 0xa9, 0xc5, +0xac, 0x02, 0xa2, 0xba, 0x28, 0xa5, 0x70, 0xf1, +0xe2, 0x45, 0x5c, 0xba, 0x74, 0xa9, 0xde, 0x87, +0xd2, 0x10, 0x14, 0x0a, 0x05, 0x78, 0x9e, 0x37, +0xaf, 0xff, 0xa6, 0x15, 0xc3, 0xff, 0x8f, 0xff, +0xf8, 0x8f, 0xf1, 0x6f, 0xfe, 0xcd, 0xbf, 0x29, +0x7b, 0xff, 0xdf, 0xfd, 0xbb, 0x7f, 0x87, 0x97, +0x5f, 0x7e, 0xb9, 0x0e, 0x47, 0x44, 0xd4, 0x92, +0xb9, 0x2a, 0x01, 0x03, 0x03, 0x03, 0x2f, 0xac, +0x5d, 0xbb, 0x76, 0x3b, 0x00, 0x5b, 0x08, 0x61, +0x0b, 0x21, 0xc2, 0xea, 0xb4, 0x10, 0xc2, 0x52, +0xc1, 0x12, 0xc1, 0xc1, 0x83, 0x9b, 0x0d, 0x81, +0x8e, 0xe3, 0x30, 0xb3, 0x0a, 0xa0, 0xa7, 0x04, +0x9a, 0x55, 0x00, 0x73, 0x5d, 0x00, 0xb3, 0xa1, +0xb4, 0xd1, 0x87, 0x01, 0x4a, 0x42, 0x36, 0x5a, +0xb2, 0x88, 0x76, 0xfd, 0x9b, 0xa5, 0x7f, 0xb3, +0x43, 0xb2, 0x58, 0x2c, 0x86, 0xf3, 0xfd, 0xcd, +0x26, 0x0a, 0xdd, 0x59, 0x69, 0xcc, 0xb5, 0x0c, +0xc3, 0x3f, 0xba, 0x4a, 0x93, 0x10, 0xc2, 0x59, +0xbb, 0x76, 0xed, 0xf6, 0x60, 0x9e, 0x7f, 0x59, +0xf8, 0x0f, 0x0f, 0x0f, 0xe3, 0x99, 0x67, 0x9e, +0x59, 0xd2, 0xd5, 0xd0, 0x68, 0xc9, 0xda, 0xe6, +0xa1, 0x51, 0xe7, 0xd9, 0x2e, 0x25, 0x93, 0x93, +0x93, 0xf8, 0xd5, 0xaf, 0x7e, 0x35, 0xaf, 0x61, +0x91, 0x56, 0x0c, 0xff, 0xb7, 0xde, 0x7a, 0x0b, +0xaf, 0xbe, 0xfa, 0x6a, 0xd9, 0xff, 0x13, 0x0f, +0x3c, 0xf0, 0x00, 0x7e, 0xf7, 0x77, 0x7f, 0xb7, +0x4e, 0x47, 0x45, 0xd4, 0x9a, 0x04, 0x12, 0xf0, +0x52, 0x7f, 0x7f, 0xff, 0x0e, 0x04, 0x0d, 0x80, +0x5a, 0x04, 0x82, 0xd7, 0x61, 0xe0, 0x33, 0xc6, +0x2c, 0xce, 0x39, 0x37, 0x7b, 0x01, 0xa4, 0x94, +0xac, 0x58, 0x2c, 0x72, 0xdf, 0xf7, 0x99, 0xef, +0xfb, 0x2c, 0xae, 0x17, 0x00, 0x98, 0xc9, 0xcc, +0xa4, 0xc7, 0xdb, 0x08, 0x33, 0x01, 0x38, 0x50, +0xf9, 0xee, 0x1f, 0x00, 0xe2, 0xba, 0xfe, 0xa7, +0xa7, 0xa7, 0xb9, 0xb9, 0x4a, 0x12, 0x22, 0xdd, +0x93, 0xe6, 0xf2, 0x8a, 0xe6, 0x50, 0x00, 0x22, +0x1b, 0xfc, 0xc0, 0xb8, 0xf3, 0xef, 0xef, 0xef, +0x1f, 0xde, 0xb8, 0x71, 0xe3, 0xc1, 0xb8, 0x45, +0x7e, 0xae, 0xbc, 0xf2, 0x4a, 0x3c, 0xfb, 0xec, +0xb3, 0x4b, 0xbe, 0xad, 0x6c, 0x4f, 0x4f, 0x0f, +0x55, 0x01, 0x9a, 0x84, 0xe5, 0xde, 0x0b, 0x40, +0xe1, 0x3f, 0xc3, 0xff, 0xf9, 0x3f, 0xff, 0x07, +0x07, 0x0f, 0x1e, 0x2c, 0x1b, 0x02, 0xd9, 0xb1, +0x63, 0x07, 0xbe, 0xfa, 0xd5, 0xaf, 0x36, 0xe4, +0x06, 0x4b, 0x44, 0xf5, 0x98, 0x4b, 0x02, 0x36, +0x6c, 0xd8, 0xf0, 0x4a, 0x7f, 0x7f, 0xff, 0x4e, +0x29, 0x65, 0xc9, 0x32, 0xc0, 0x08, 0x72, 0xcb, +0xf7, 0x7d, 0x4b, 0x08, 0xc1, 0x7d, 0xdf, 0xe7, +0x51, 0x84, 0x10, 0x4c, 0x2f, 0x0e, 0x94, 0x4e, +0xa7, 0xc3, 0x2a, 0xc0, 0xca, 0x95, 0x2b, 0x01, +0xcc, 0x64, 0xa5, 0x6e, 0x06, 0x8c, 0x6e, 0x12, +0xa4, 0xf9, 0xfc, 0xe7, 0x3f, 0xcf, 0x54, 0x03, +0x6d, 0x10, 0x14, 0xfe, 0x36, 0x54, 0xba, 0xfb, +0x07, 0x80, 0xe9, 0xe9, 0x69, 0xa6, 0x57, 0xfb, +0x8b, 0x96, 0xfe, 0x8d, 0x21, 0x00, 0x0b, 0xc1, +0x62, 0x3f, 0x88, 0x74, 0xfe, 0xc3, 0x08, 0x7e, +0xdf, 0xf7, 0xcd, 0x4e, 0x7f, 0x47, 0x08, 0xe1, +0xac, 0x5e, 0xbd, 0xfa, 0xaa, 0x4d, 0x9b, 0x36, +0x1d, 0x8a, 0x5b, 0xde, 0x77, 0xf3, 0xe6, 0xcd, +0x78, 0xfe, 0xf9, 0xe7, 0x97, 0x64, 0xcc, 0x3f, +0x0e, 0x5a, 0x16, 0xb4, 0x39, 0x58, 0xce, 0x02, +0x40, 0xe1, 0x3f, 0xc3, 0x7b, 0xef, 0xbd, 0x87, +0x03, 0x07, 0x0e, 0xa0, 0x58, 0x2c, 0x96, 0xbc, +0xbf, 0x6a, 0xd5, 0x2a, 0x7c, 0xeb, 0x5b, 0xdf, +0x42, 0x47, 0x47, 0x47, 0x9d, 0x8e, 0x8c, 0x58, +0x4a, 0xe6, 0x92, 0x80, 0xf5, 0xeb, 0xd7, 0xbf, +0xba, 0x76, 0xed, 0xda, 0x9d, 0xba, 0x02, 0x20, +0xa5, 0xb4, 0x74, 0x43, 0x20, 0x02, 0x11, 0x60, +0x8c, 0x85, 0x22, 0xa0, 0xab, 0x00, 0x96, 0x65, +0x71, 0x21, 0x04, 0xd3, 0xb3, 0x01, 0x3c, 0xcf, +0x63, 0x2b, 0x56, 0xac, 0x40, 0x2e, 0x97, 0x2b, +0x6b, 0x06, 0x8c, 0xae, 0x2b, 0x31, 0xdb, 0x2e, +0x81, 0xf5, 0x84, 0x57, 0xba, 0xfb, 0x1f, 0x1c, +0x1c, 0x2c, 0xb9, 0xfb, 0x2f, 0x14, 0x0a, 0xe1, +0x9c, 0x7f, 0xdd, 0xf5, 0xaf, 0xa7, 0x48, 0x78, +0x9e, 0xc7, 0x75, 0xc9, 0x04, 0x33, 0x6b, 0x28, +0x6b, 0x93, 0xb2, 0x84, 0x10, 0x96, 0x1e, 0xff, +0xd7, 0x3d, 0x00, 0x08, 0xca, 0x2f, 0x00, 0x9c, +0xbe, 0xbe, 0xbe, 0x2d, 0x9b, 0x37, 0x6f, 0x7e, +0x21, 0x6e, 0x63, 0x9f, 0xc1, 0xc1, 0x41, 0xbc, +0xf0, 0xc2, 0x0b, 0x35, 0x9d, 0xea, 0x37, 0x17, +0x57, 0x5e, 0x79, 0x65, 0xdd, 0xfe, 0x6e, 0x22, +0x39, 0x8d, 0xf2, 0x0b, 0xb5, 0xd4, 0x50, 0xf8, +0xcf, 0xf0, 0xc9, 0x27, 0x9f, 0xe0, 0xc1, 0x07, +0x1f, 0xc4, 0xe4, 0xe4, 0x64, 0xc9, 0xfb, 0xa9, +0x54, 0x0a, 0x6f, 0xbf, 0xfd, 0x36, 0x06, 0x06, +0x06, 0xea, 0x74, 0x64, 0x44, 0x3d, 0x98, 0x4b, +0x02, 0xd6, 0xad, 0x5b, 0xf7, 0xc6, 0xda, 0xb5, +0x6b, 0x77, 0x46, 0xab, 0x00, 0x52, 0x4a, 0x2e, +0x84, 0xe0, 0x42, 0x88, 0x92, 0xbb, 0x7f, 0xc7, +0x71, 0x98, 0x10, 0x82, 0x09, 0x21, 0x98, 0xae, +0x7e, 0xa7, 0xd3, 0x69, 0x56, 0x28, 0x14, 0x16, +0x3c, 0x0c, 0xd0, 0x08, 0x9f, 0x59, 0x1c, 0x88, +0xbf, 0xfb, 0xbf, 0x70, 0xe1, 0x02, 0xd3, 0x66, +0x13, 0xbd, 0xfb, 0x4f, 0xa5, 0x52, 0xcc, 0x75, +0x5d, 0xc6, 0x39, 0xe7, 0x4a, 0xa9, 0x92, 0xf2, +0x3f, 0x8c, 0x72, 0x4a, 0xb4, 0xf4, 0x8f, 0x48, +0xf9, 0x7f, 0xe5, 0xca, 0x95, 0x1b, 0x37, 0x6f, +0xde, 0xfc, 0x12, 0x63, 0xac, 0xac, 0x7d, 0x7b, +0xc3, 0x86, 0x0d, 0x35, 0x5d, 0xe4, 0x27, 0x29, +0xab, 0x57, 0xaf, 0xa6, 0x2a, 0x40, 0x13, 0xb0, +0x1c, 0x2b, 0x00, 0x14, 0xfe, 0x33, 0x14, 0x0a, +0x05, 0x3c, 0xf2, 0xc8, 0x23, 0xb1, 0xdb, 0xc5, +0x7e, 0xe1, 0x0b, 0x5f, 0xc0, 0x0d, 0x37, 0xdc, +0xb0, 0xf4, 0x07, 0x45, 0xd4, 0x9d, 0x04, 0x12, +0xf0, 0xaf, 0xfa, 0xfa, 0xfa, 0xb6, 0xe9, 0x0a, +0x80, 0x52, 0x8a, 0x9b, 0x77, 0xff, 0xfa, 0x21, +0xa5, 0x64, 0xfa, 0x26, 0x37, 0xae, 0x19, 0x10, +0x98, 0x59, 0x8b, 0xc3, 0xe4, 0xcc, 0x99, 0x33, +0x6c, 0xef, 0xde, 0xbd, 0x00, 0x1a, 0x7b, 0x3a, +0x20, 0x9f, 0x6d, 0xec, 0xbf, 0xaf, 0xaf, 0x0f, +0xfa, 0xee, 0x5f, 0xaf, 0x84, 0x64, 0xde, 0xfd, +0x7b, 0x9e, 0xc7, 0x7d, 0xdf, 0xe7, 0xc5, 0x62, +0x31, 0xec, 0x9c, 0x34, 0x9b, 0xfe, 0x02, 0xbb, +0x0a, 0xc3, 0xdf, 0x5c, 0x8d, 0x29, 0x9d, 0x4e, +0xf7, 0x6c, 0xd9, 0xb2, 0xe5, 0x79, 0xce, 0x79, +0x2a, 0x7a, 0x50, 0xeb, 0xd6, 0xad, 0xc3, 0xcb, +0x2f, 0xbf, 0x8c, 0x54, 0xaa, 0xec, 0x5b, 0x75, +0xe1, 0x9a, 0x6b, 0xae, 0x59, 0xf2, 0xfe, 0x03, +0x62, 0x7e, 0x34, 0x82, 0x4d, 0x2f, 0x25, 0x14, +0xfe, 0x97, 0x79, 0xf9, 0xe5, 0x97, 0xf1, 0xa3, +0x1f, 0xfd, 0xa8, 0xec, 0xfd, 0xff, 0xf4, 0x9f, +0xfe, 0x13, 0x0e, 0x1d, 0x3a, 0x54, 0x87, 0x23, +0x22, 0x1a, 0x85, 0x38, 0x09, 0x60, 0x8c, 0xe9, +0x87, 0xdd, 0xd7, 0xd7, 0xf7, 0x90, 0x94, 0xd2, +0x62, 0x8c, 0x71, 0x21, 0x44, 0x58, 0x01, 0x30, +0xf1, 0x7d, 0x9f, 0x4b, 0x29, 0x99, 0x7e, 0xe8, +0x2a, 0x80, 0x6e, 0x06, 0x6c, 0x6b, 0x6b, 0x0b, +0x6f, 0x96, 0x75, 0x1f, 0x00, 0x00, 0x7c, 0xf4, +0xd1, 0x47, 0xe1, 0xa2, 0x40, 0x95, 0xa8, 0xf7, +0xe7, 0x56, 0x6c, 0x47, 0x4c, 0xdc, 0xd8, 0xbf, +0x1e, 0xf3, 0xd0, 0x1b, 0x23, 0x44, 0x61, 0x8c, +0x85, 0x53, 0xff, 0x74, 0xf9, 0xdf, 0x2c, 0xfd, +0x07, 0xd3, 0x2e, 0xf4, 0x0c, 0x80, 0xd4, 0xc8, +0xc8, 0xc8, 0x73, 0x96, 0x65, 0x75, 0x46, 0xff, +0xee, 0x35, 0x6b, 0xd6, 0xe0, 0x95, 0x57, 0x5e, +0x69, 0xa8, 0xe6, 0xbb, 0x9e, 0x9e, 0x1e, 0xdc, +0x78, 0xe3, 0x8d, 0xf5, 0x3e, 0x0c, 0x62, 0x16, +0x96, 0x53, 0x05, 0x80, 0xc2, 0xff, 0x32, 0xbf, +0xf3, 0x3b, 0xbf, 0x53, 0xb6, 0xbe, 0x3f, 0x00, +0x3c, 0xf6, 0xd8, 0x63, 0xf8, 0x9d, 0xdf, 0xf9, +0x9d, 0x3a, 0x1c, 0xd1, 0xfc, 0x39, 0x79, 0xf2, +0x24, 0x7e, 0xeb, 0xb7, 0x7e, 0x0b, 0x7f, 0xfd, +0xd7, 0x7f, 0x5d, 0xef, 0x43, 0x69, 0x49, 0x4c, +0x09, 0x88, 0xf6, 0xdc, 0xa5, 0x52, 0xa9, 0x6d, +0x6d, 0x6d, 0x6d, 0x9d, 0x5a, 0x02, 0x10, 0x0c, +0x03, 0x68, 0x11, 0x30, 0x9b, 0x01, 0x75, 0xf8, +0x0b, 0x21, 0xc2, 0x1f, 0xa2, 0x87, 0x01, 0xcc, +0x9f, 0x19, 0xb7, 0x28, 0x10, 0x50, 0xde, 0x07, +0xd0, 0x08, 0x70, 0x5d, 0x9e, 0x88, 0xce, 0xfb, +0x9f, 0x6d, 0xec, 0x5f, 0x08, 0xc1, 0xf4, 0xdd, +0xbf, 0x2e, 0xff, 0x47, 0xa7, 0x00, 0x9a, 0xd5, +0x00, 0x44, 0xaa, 0x00, 0x23, 0x23, 0x23, 0x0f, +0xa7, 0xd3, 0xe9, 0xa1, 0xe8, 0xc1, 0xf4, 0xf5, +0xf5, 0xd5, 0x64, 0x4b, 0xdf, 0x6a, 0xb0, 0x65, +0xcb, 0x16, 0x6c, 0xdf, 0xbe, 0xbd, 0xde, 0x87, +0x41, 0x54, 0xa0, 0xde, 0x26, 0xbd, 0x54, 0x50, +0xf8, 0x5f, 0xe6, 0xad, 0xb7, 0xde, 0xc2, 0x6f, +0xfd, 0xd6, 0x6f, 0x95, 0xbd, 0xbf, 0x6f, 0xdf, +0x3e, 0x7c, 0xf5, 0xab, 0x5f, 0x5d, 0xb2, 0x2d, +0x93, 0x17, 0xca, 0x8f, 0x7e, 0xf4, 0x23, 0x3c, +0xfd, 0xf4, 0xd3, 0x18, 0x1c, 0x1c, 0xc4, 0x89, +0x13, 0x27, 0x70, 0xf7, 0xdd, 0x77, 0xd7, 0xfb, +0x90, 0x5a, 0x16, 0x2d, 0x01, 0xe6, 0xa6, 0x71, +0x41, 0x15, 0x80, 0x31, 0xc6, 0x52, 0x41, 0xe8, +0x5b, 0x4a, 0x29, 0xb3, 0xeb, 0x9f, 0x2b, 0xa5, +0x98, 0x52, 0x8a, 0x49, 0x29, 0x99, 0xee, 0x05, +0x70, 0x5d, 0x97, 0xe9, 0x61, 0x00, 0xfd, 0xb3, +0x16, 0x33, 0x1d, 0xb0, 0x9e, 0x70, 0x60, 0xa6, +0xfc, 0xaf, 0xdf, 0xd0, 0xcd, 0x7f, 0xe6, 0xdd, +0x7f, 0xb1, 0x58, 0x64, 0xd1, 0xb1, 0x7f, 0xb3, +0x3c, 0x22, 0x84, 0xe0, 0xfa, 0xee, 0x3f, 0xe8, +0xa4, 0x2c, 0x5b, 0x6b, 0x59, 0x97, 0xff, 0x07, +0x07, 0x07, 0xaf, 0x59, 0xb1, 0x62, 0xc5, 0x67, +0xa3, 0x07, 0xd2, 0xde, 0xde, 0x8e, 0x57, 0x5e, +0x79, 0xa5, 0xa1, 0xe7, 0xde, 0x5f, 0x7b, 0xed, +0xb5, 0xd8, 0xb6, 0x6d, 0x5b, 0xbd, 0x0f, 0x83, +0x88, 0x61, 0x39, 0x54, 0x00, 0x28, 0xfc, 0x2f, +0xf3, 0xe3, 0x1f, 0xff, 0x18, 0xcf, 0x3d, 0xf7, +0x5c, 0x99, 0xf8, 0xdd, 0x7d, 0xf7, 0xdd, 0xf8, +0xc6, 0x37, 0xbe, 0x51, 0xf7, 0xde, 0xa1, 0x4a, +0x14, 0x0a, 0x05, 0x7c, 0xe9, 0x4b, 0x5f, 0xc2, +0xd5, 0x57, 0x5f, 0x8d, 0x1b, 0x6f, 0xbc, 0x11, +0x5f, 0xfb, 0xda, 0xd7, 0xb0, 0x6d, 0xdb, 0x36, +0xfc, 0xfe, 0xef, 0xff, 0x7e, 0xbd, 0x0f, 0xad, +0xe5, 0x71, 0x5d, 0x37, 0x9c, 0x4d, 0x66, 0xca, +0xa1, 0x52, 0x8a, 0x05, 0x19, 0xc5, 0xcd, 0xbb, +0xff, 0xb8, 0x61, 0x00, 0xb3, 0xfc, 0xaf, 0x87, +0x00, 0x74, 0x46, 0xea, 0x9f, 0x37, 0x35, 0x35, +0xc5, 0x80, 0x99, 0x3e, 0x00, 0xfd, 0xde, 0xa7, +0x9f, 0x7e, 0x1a, 0xbe, 0x6e, 0xa4, 0x8d, 0x81, +0x4a, 0xe6, 0xd6, 0x4d, 0x4e, 0x4e, 0x32, 0xdb, +0xb6, 0xf5, 0x9a, 0xff, 0xd0, 0x77, 0xff, 0x53, +0x53, 0x53, 0x4c, 0x9b, 0x50, 0xd0, 0xe9, 0x1f, +0x1a, 0x11, 0x66, 0x76, 0x14, 0xe4, 0x4a, 0x29, +0x1e, 0x19, 0x4b, 0x31, 0x1f, 0x36, 0x00, 0xbb, +0xb7, 0xb7, 0x77, 0x7d, 0x7f, 0x7f, 0xff, 0x13, +0xd1, 0x83, 0xe0, 0x9c, 0xe3, 0xe0, 0xc1, 0x83, +0xe8, 0xea, 0xea, 0x5a, 0xa2, 0xd3, 0x5e, 0x38, +0xba, 0xa1, 0xe8, 0x17, 0xbf, 0xf8, 0x45, 0x9d, +0x8f, 0x84, 0x30, 0x69, 0x75, 0x01, 0xa0, 0xf0, +0x9f, 0x41, 0x29, 0x85, 0xa3, 0x47, 0x8f, 0xe2, +0xe1, 0x87, 0x1f, 0x2e, 0xdb, 0xab, 0xe3, 0xce, +0x3b, 0xef, 0xc4, 0x37, 0xbf, 0xf9, 0xcd, 0x86, +0xe9, 0x1d, 0x32, 0x39, 0x79, 0xf2, 0x24, 0xfe, +0xc7, 0xff, 0xf8, 0x1f, 0xf8, 0xc3, 0x3f, 0xfc, +0x43, 0x7c, 0xf2, 0xc9, 0x27, 0xe1, 0xfb, 0xbd, +0xbd, 0xbd, 0xf8, 0xe6, 0x37, 0xbf, 0xd9, 0x90, +0x55, 0xcf, 0x56, 0x44, 0x8f, 0xff, 0x9b, 0x48, +0x29, 0xb9, 0xbe, 0xf3, 0x67, 0x8c, 0x71, 0x29, +0x25, 0x07, 0xc0, 0x39, 0xe7, 0x4c, 0x4a, 0xc9, +0x18, 0x63, 0xcc, 0xb6, 0xed, 0xb0, 0x07, 0x80, +0x31, 0xc6, 0x84, 0x10, 0xe1, 0x6b, 0x2d, 0x9b, +0xd9, 0x6c, 0xb6, 0x62, 0xb0, 0xdf, 0x7a, 0xeb, +0xad, 0x18, 0x1b, 0x1b, 0xab, 0xe9, 0xb9, 0x2d, +0x04, 0x0e, 0x00, 0x7b, 0xf7, 0xee, 0x85, 0x9e, +0xfa, 0x07, 0xcc, 0x94, 0xe2, 0xf3, 0xf9, 0x3c, +0x03, 0x00, 0xf3, 0xee, 0x5f, 0x77, 0x40, 0x9a, +0x56, 0x64, 0x3c, 0xc2, 0x55, 0x94, 0xf4, 0x58, +0x8a, 0x2e, 0xff, 0x33, 0xc6, 0x6c, 0xc7, 0x71, +0xda, 0x37, 0x6d, 0xda, 0x14, 0xdb, 0xf1, 0x7f, +0xff, 0xfd, 0xf7, 0x63, 0xd3, 0xa6, 0x4d, 0x4b, +0x77, 0xd6, 0x8b, 0xe4, 0x86, 0x1b, 0x6e, 0xa0, +0x4a, 0x40, 0x83, 0xd1, 0xca, 0x43, 0x00, 0xcb, +0x39, 0xfc, 0x8b, 0xc5, 0x22, 0xbe, 0xf2, 0x95, +0xaf, 0xe0, 0xe6, 0x9b, 0x6f, 0x46, 0x57, 0x57, +0x17, 0x2c, 0xcb, 0xc2, 0xa6, 0x4d, 0x9b, 0x70, +0xf2, 0xe4, 0xc9, 0xf0, 0xcf, 0x30, 0xc6, 0xf0, +0x1f, 0xff, 0xe3, 0x7f, 0xc4, 0xb7, 0xbf, 0xfd, +0xed, 0x86, 0xea, 0x1d, 0xd2, 0xfc, 0xe4, 0x27, +0x3f, 0xc1, 0xc6, 0x8d, 0x1b, 0xf1, 0x5f, 0xfe, +0xcb, 0x7f, 0x29, 0x09, 0x7f, 0xcb, 0xb2, 0xf0, +0xf5, 0xaf, 0x7f, 0x1d, 0x43, 0x43, 0x65, 0xa3, +0xa1, 0xc4, 0x12, 0xa0, 0x65, 0x20, 0x18, 0xdf, +0xe7, 0xa6, 0x08, 0x58, 0x96, 0xc5, 0x8c, 0x8a, +0x00, 0x93, 0x91, 0x26, 0xc0, 0x68, 0x1f, 0x40, +0x26, 0x93, 0x09, 0xfb, 0xe6, 0x80, 0xcb, 0x55, +0x00, 0xe0, 0x72, 0x85, 0x3d, 0xba, 0x20, 0xd0, +0x92, 0x9d, 0xe8, 0x2c, 0xd8, 0xc1, 0xc1, 0x95, +0x94, 0x2f, 0x6c, 0xdb, 0x66, 0xd9, 0x6c, 0x96, +0x4d, 0x4e, 0x4e, 0x86, 0x27, 0xad, 0x94, 0xd2, +0x27, 0xce, 0x75, 0x25, 0xc0, 0xb6, 0x6d, 0xe6, +0xfb, 0x7e, 0x58, 0x01, 0xf0, 0x7d, 0x3f, 0x7a, +0xe7, 0x6f, 0x49, 0x29, 0x2d, 0x00, 0xf6, 0xf0, +0xf0, 0xf0, 0x73, 0xb6, 0x6d, 0xaf, 0x8c, 0x1e, +0xc0, 0xee, 0xdd, 0xbb, 0xf1, 0xd9, 0xcf, 0x96, +0x8d, 0x08, 0x34, 0x3c, 0x54, 0x09, 0x68, 0x2c, +0x5a, 0xb5, 0x02, 0xb0, 0x9c, 0xc3, 0xff, 0x9d, +0x77, 0xde, 0xc1, 0xc1, 0x83, 0x07, 0x67, 0xbd, +0x73, 0x5a, 0xbd, 0x7a, 0x35, 0xfe, 0xe4, 0x4f, +0xfe, 0x04, 0x77, 0xde, 0x79, 0xe7, 0x12, 0x1e, +0x59, 0x72, 0x2e, 0x5c, 0xb8, 0x80, 0x27, 0x9f, +0x7c, 0x12, 0x85, 0x42, 0xa1, 0xec, 0x7b, 0xbf, +0xfb, 0xbb, 0xbf, 0x8b, 0x3b, 0xee, 0xb8, 0xa3, +0x0e, 0x47, 0x45, 0x44, 0x86, 0x00, 0xcc, 0x2a, +0xb6, 0xbe, 0xf3, 0xe7, 0xfa, 0xae, 0x9f, 0x31, +0xc6, 0x39, 0xe7, 0xcc, 0xb6, 0x6d, 0x16, 0x64, +0x1e, 0x03, 0xc0, 0xda, 0xda, 0xda, 0x18, 0xe7, +0x9c, 0x79, 0x9e, 0xc7, 0x2c, 0xcb, 0x42, 0xa1, +0x50, 0x60, 0xd1, 0x05, 0xeb, 0xce, 0x9d, 0x3b, +0xc7, 0xba, 0xbb, 0xbb, 0xc3, 0xbb, 0x93, 0xcf, +0x7d, 0xee, 0x73, 0xe1, 0x66, 0x40, 0x8d, 0x40, +0xc9, 0x2c, 0x80, 0x68, 0xf7, 0xa2, 0xb6, 0x1a, +0xbd, 0xf0, 0x81, 0xb1, 0x10, 0x42, 0x18, 0xfe, +0x41, 0xa7, 0xa4, 0xa5, 0xc7, 0x4c, 0x8c, 0xbb, +0xff, 0x70, 0x5a, 0xe0, 0xe6, 0xcd, 0x9b, 0xef, +0xce, 0x64, 0x32, 0x65, 0x1d, 0x74, 0xab, 0x57, +0xaf, 0x6e, 0xea, 0x5d, 0xb9, 0xa8, 0x12, 0xd0, +0x38, 0xb4, 0xa2, 0x00, 0x2c, 0xd7, 0xf0, 0x57, +0x4a, 0xe1, 0xbf, 0xfe, 0xd7, 0xff, 0x8a, 0xcf, +0x7c, 0xe6, 0x33, 0x15, 0xc3, 0x9f, 0x31, 0x86, +0xa7, 0x9f, 0x7e, 0x1a, 0xef, 0xbc, 0xf3, 0x4e, +0xc3, 0x86, 0xbf, 0x52, 0x0a, 0x2f, 0xbd, 0xf4, +0x12, 0x3e, 0xfc, 0xf0, 0xc3, 0xb2, 0xef, 0x3d, +0xfb, 0xec, 0xb3, 0xf8, 0xb7, 0xff, 0xf6, 0xdf, +0xd6, 0xe1, 0xa8, 0x96, 0x37, 0x95, 0x86, 0x00, +0x82, 0x35, 0x6d, 0x74, 0xc3, 0x1f, 0xd7, 0x8d, +0x7f, 0xb6, 0x6d, 0x33, 0xcb, 0xb2, 0x58, 0x50, +0x11, 0x08, 0xdf, 0xcb, 0x64, 0x32, 0x08, 0x44, +0xa0, 0x8c, 0x5c, 0x2e, 0x17, 0xbe, 0x1f, 0x5d, +0x11, 0xb0, 0xd1, 0x08, 0x05, 0x20, 0xae, 0xfb, +0x3f, 0xda, 0xfc, 0xe7, 0xba, 0x2e, 0x73, 0x1c, +0x87, 0x99, 0xe1, 0xaf, 0xcb, 0x25, 0x46, 0x19, +0xc5, 0xd2, 0xfd, 0x00, 0x52, 0x4a, 0xab, 0xad, +0xad, 0xad, 0xa7, 0xa7, 0xa7, 0xe7, 0xbe, 0xe8, +0x5f, 0x9c, 0xc9, 0x64, 0xf0, 0xfc, 0xf3, 0xcf, +0xd7, 0x75, 0x95, 0xbf, 0x6a, 0x40, 0x12, 0xd0, +0x18, 0xb4, 0xda, 0x10, 0xc0, 0x72, 0x0d, 0xff, +0xe3, 0xc7, 0x8f, 0xe3, 0x8e, 0x3b, 0xee, 0xc0, +0x6f, 0xfe, 0xe6, 0x6f, 0x96, 0x2d, 0xe9, 0xab, +0xb9, 0xf7, 0xde, 0x7b, 0xf1, 0xd3, 0x9f, 0xfe, +0x14, 0x5f, 0xfd, 0xea, 0x57, 0xc3, 0xad, 0x56, +0x1b, 0x91, 0xdf, 0xfe, 0xed, 0xdf, 0xc6, 0x37, +0xbe, 0xf1, 0x8d, 0xb2, 0xf7, 0xf7, 0xee, 0xdd, +0x8b, 0x2f, 0x7c, 0xe1, 0x0b, 0x75, 0x38, 0x22, +0xc2, 0x44, 0xcb, 0x80, 0x71, 0xe7, 0xaf, 0x2b, +0x01, 0x65, 0xe5, 0x7f, 0x2d, 0x04, 0x52, 0xca, +0xf0, 0xa6, 0xd8, 0x7c, 0xd6, 0x4d, 0x80, 0x7a, +0xe8, 0x7c, 0xdd, 0xba, 0x75, 0xb1, 0x33, 0x01, +0xde, 0x7c, 0xf3, 0xcd, 0x86, 0x28, 0xfd, 0x6b, +0xb8, 0x39, 0xfe, 0xaf, 0xc7, 0x2d, 0x56, 0xae, +0x5c, 0x19, 0x9e, 0x90, 0xe7, 0x79, 0xcc, 0xf7, +0xfd, 0xb0, 0xfb, 0x51, 0x57, 0x00, 0xa4, 0x94, +0xcc, 0xb2, 0x2c, 0x16, 0xac, 0x94, 0xa4, 0x57, +0x4d, 0x2a, 0x19, 0xff, 0x67, 0x8c, 0x59, 0x83, +0x83, 0x83, 0x0f, 0x46, 0xc7, 0xfd, 0x19, 0x63, +0x78, 0xea, 0xa9, 0xa7, 0xd0, 0xdb, 0xdb, 0x5b, +0x87, 0x53, 0xae, 0x3e, 0x24, 0x01, 0xf5, 0x67, +0xbe, 0x5b, 0xe0, 0x36, 0x32, 0xcb, 0x35, 0xfc, +0xbf, 0xfe, 0xf5, 0xaf, 0x63, 0xc7, 0x8e, 0x1d, +0xf8, 0x9b, 0xbf, 0xf9, 0x9b, 0xb2, 0xef, 0x39, +0x8e, 0x83, 0xfb, 0xef, 0xbf, 0x1f, 0x7f, 0xfb, +0xb7, 0x7f, 0x8b, 0x6f, 0x7f, 0xfb, 0xdb, 0xd8, +0xbd, 0x7b, 0x77, 0x1d, 0x8e, 0x30, 0x39, 0x6f, +0xbf, 0xfd, 0x76, 0xec, 0x7e, 0xef, 0x57, 0x5d, +0x75, 0x15, 0xfe, 0xe2, 0x2f, 0xfe, 0xa2, 0x64, +0x3a, 0x1a, 0xb1, 0xf4, 0x44, 0x67, 0x01, 0x60, +0xa6, 0xb1, 0x9d, 0x73, 0xce, 0x99, 0x59, 0x0d, +0x30, 0xa7, 0x01, 0x9a, 0x12, 0xa0, 0x7b, 0x01, +0x80, 0x99, 0x8c, 0x04, 0x2e, 0x4b, 0x40, 0x14, +0xbd, 0x22, 0x60, 0x23, 0xc2, 0x3f, 0xfa, 0xe8, +0xa3, 0x92, 0x83, 0x9e, 0x9e, 0x9e, 0x66, 0xba, +0x84, 0xa1, 0xc3, 0x5f, 0x5b, 0x8e, 0x59, 0x02, +0xd1, 0xf3, 0x24, 0x8d, 0x31, 0x92, 0x70, 0xec, +0x44, 0x1b, 0x55, 0x77, 0x77, 0xf7, 0xba, 0xf6, +0xf6, 0xff, 0x9f, 0xbd, 0x33, 0x8f, 0x8f, 0xa2, +0xbc, 0xff, 0xf8, 0xe7, 0x79, 0x66, 0x76, 0x37, +0x9b, 0x25, 0x86, 0x10, 0xce, 0x00, 0x2a, 0x02, +0x51, 0x08, 0x84, 0xab, 0x20, 0x78, 0x0b, 0x1e, +0xa0, 0xd6, 0x82, 0x88, 0x50, 0x95, 0x2a, 0x6d, +0x95, 0x2a, 0x45, 0x5b, 0x7e, 0x28, 0x88, 0x5a, +0x04, 0x6f, 0x94, 0x6a, 0x8b, 0x0a, 0x6a, 0x11, +0x54, 0xac, 0x28, 0xca, 0x59, 0x54, 0x50, 0xf0, +0x00, 0xe4, 0x46, 0x02, 0x26, 0x12, 0x2e, 0x91, +0x23, 0x01, 0x72, 0x91, 0x6c, 0x92, 0xbd, 0x66, +0xe6, 0xf9, 0xfd, 0x91, 0x7d, 0xc6, 0xd9, 0xd9, +0x23, 0x9b, 0xb0, 0x67, 0x98, 0xf7, 0xeb, 0x35, +0xaf, 0x25, 0x3b, 0x7b, 0x7c, 0x27, 0x4b, 0xf6, +0xfb, 0x79, 0xbe, 0xd7, 0xd3, 0x6c, 0x90, 0xfe, +0x4d, 0x9b, 0xa2, 0xc3, 0x6c, 0x8a, 0xd7, 0x94, +0x4c, 0x28, 0x8a, 0xe2, 0xb7, 0x03, 0x5c, 0x32, +0x72, 0xae, 0x3a, 0xff, 0x49, 0x93, 0x26, 0x61, +0xcc, 0x98, 0x31, 0x38, 0x73, 0xe6, 0x8c, 0xdf, +0xb9, 0x69, 0xd3, 0xa6, 0xa1, 0xb8, 0xb8, 0x18, +0xff, 0xfb, 0xdf, 0xff, 0x70, 0xf5, 0xd5, 0x57, +0xc7, 0xc1, 0xba, 0x86, 0xb1, 0x77, 0xef, 0xde, +0x80, 0x2d, 0x8a, 0xb9, 0xb9, 0xb9, 0xf8, 0xee, +0xbb, 0xef, 0x90, 0x95, 0x95, 0x15, 0x27, 0xcb, +0x0c, 0x02, 0xa5, 0x00, 0x00, 0x10, 0xc6, 0x18, +0xf5, 0xde, 0x12, 0xc6, 0x18, 0x11, 0x04, 0xc1, +0x4f, 0x00, 0xf0, 0xd5, 0x3f, 0xbf, 0x05, 0x7e, +0x8d, 0x00, 0x70, 0x11, 0x00, 0xd4, 0x15, 0xd1, +0x6b, 0x27, 0x02, 0x72, 0x12, 0x71, 0x24, 0xb0, +0x5a, 0xb1, 0x10, 0x28, 0xff, 0x4f, 0x29, 0x45, +0x55, 0x55, 0x15, 0xbf, 0x48, 0x62, 0x32, 0x99, +0xd4, 0xa2, 0x07, 0xfe, 0x0b, 0xd1, 0x08, 0x01, +0xaa, 0x75, 0xfe, 0x8c, 0x31, 0xda, 0xbe, 0x7d, +0xfb, 0x5b, 0xa1, 0xab, 0x33, 0xb0, 0x5a, 0xad, +0xb8, 0xfe, 0xfa, 0xeb, 0x63, 0x73, 0x75, 0x31, +0xc6, 0x28, 0x0c, 0x8c, 0x2f, 0x1e, 0x8f, 0x27, +0xa9, 0x47, 0x36, 0x9f, 0xab, 0xce, 0x7f, 0xdd, +0xba, 0x75, 0x78, 0xf3, 0xcd, 0x37, 0x41, 0x29, +0xf5, 0xbb, 0xf6, 0xec, 0xec, 0x6c, 0xcc, 0x9c, +0x39, 0x33, 0x69, 0x3e, 0xd7, 0xd2, 0xd2, 0x52, +0xdc, 0x7a, 0xeb, 0xad, 0xa8, 0xae, 0xae, 0xf6, +0xb9, 0x7f, 0xc0, 0x80, 0x01, 0xf8, 0xe2, 0x8b, +0x2f, 0x90, 0x91, 0x91, 0x11, 0x27, 0xcb, 0x0c, +0x02, 0xc1, 0x53, 0x00, 0x1a, 0x67, 0x4f, 0xf5, +0x22, 0xc0, 0xeb, 0xe7, 0x54, 0xe7, 0x4f, 0x29, +0x85, 0x77, 0xf5, 0x4f, 0x44, 0x51, 0x84, 0x24, +0x49, 0xea, 0xae, 0xbe, 0x36, 0x9b, 0x8d, 0xef, +0x0c, 0x98, 0x14, 0x39, 0x49, 0x1f, 0xe7, 0xac, +0xcd, 0xff, 0x03, 0x75, 0xaa, 0xc6, 0x62, 0xb1, +0x90, 0xd4, 0xd4, 0x54, 0x98, 0xcd, 0x66, 0xb5, +0xfd, 0x81, 0x87, 0x43, 0x44, 0x51, 0xf4, 0x51, +0x49, 0xbc, 0x08, 0x90, 0x52, 0x4a, 0x6d, 0x36, +0x5b, 0xba, 0xd5, 0x6a, 0xed, 0xa5, 0x7f, 0xc3, +0x21, 0x43, 0x86, 0x34, 0xe9, 0x9e, 0x57, 0x23, +0x12, 0x10, 0x3f, 0x82, 0xe5, 0x8c, 0x93, 0x81, +0x73, 0xd5, 0xf9, 0x3b, 0x1c, 0x0e, 0xfc, 0xdf, +0xff, 0xfd, 0x1f, 0x52, 0x53, 0x53, 0x03, 0x5e, +0xfb, 0x53, 0x4f, 0x3d, 0x95, 0x34, 0xce, 0xdf, +0xe3, 0xf1, 0xe0, 0xf6, 0xdb, 0x6f, 0xf7, 0xdb, +0x94, 0xe8, 0xe6, 0x9b, 0x6f, 0xc6, 0x57, 0x5f, +0x7d, 0x65, 0x38, 0xff, 0x04, 0x42, 0x17, 0x09, +0x20, 0x3c, 0x0d, 0xa0, 0x0f, 0xfd, 0x0b, 0x82, +0x40, 0x4c, 0x26, 0x13, 0xb8, 0xbf, 0xe3, 0x9d, +0x01, 0xfc, 0x89, 0x3c, 0x02, 0x90, 0x96, 0x96, +0x86, 0xe6, 0xcd, 0x9b, 0x07, 0x7c, 0xaf, 0x70, +0xf6, 0x04, 0x88, 0x17, 0x22, 0x50, 0x57, 0x00, +0xa8, 0xff, 0xcf, 0xe9, 0x76, 0xbb, 0x09, 0xff, +0xc3, 0xe3, 0x69, 0x00, 0xee, 0xfc, 0x35, 0xf9, +0x7f, 0x55, 0x21, 0x79, 0x07, 0x28, 0xa8, 0xbf, +0xb8, 0x76, 0xed, 0xda, 0x5d, 0x0a, 0x9d, 0xc0, +0xc8, 0xc8, 0xc8, 0x38, 0x27, 0x66, 0xea, 0x1b, +0x91, 0x80, 0xf8, 0x90, 0xac, 0x75, 0x00, 0xe7, +0xaa, 0xf3, 0x07, 0x80, 0x99, 0x33, 0x67, 0x22, +0x2f, 0x2f, 0x2f, 0xe0, 0xb9, 0xce, 0x9d, 0x3b, +0x63, 0xf4, 0xe8, 0xd1, 0x31, 0xb6, 0xa8, 0x61, +0x6c, 0xdf, 0xbe, 0x1d, 0x6b, 0xd6, 0xac, 0xc1, +0xde, 0xbd, 0x7b, 0xb1, 0x6b, 0xd7, 0x2e, 0x1c, +0x3c, 0x78, 0x50, 0x3d, 0x67, 0x36, 0x9b, 0xf1, +0xe2, 0x8b, 0x2f, 0xe2, 0xe1, 0x87, 0x1f, 0x4e, +0xf8, 0xb1, 0xc4, 0xe7, 0x0a, 0x81, 0x52, 0x00, +0xde, 0xe5, 0x3b, 0xf1, 0x4e, 0x04, 0xf4, 0x0b, +0xfd, 0x7b, 0x5b, 0x00, 0xe1, 0xf5, 0x7b, 0x30, +0x9b, 0xcd, 0x10, 0x04, 0x81, 0x0b, 0x02, 0x98, +0xcd, 0x66, 0xf0, 0xa8, 0xb8, 0xbe, 0x0d, 0xb0, +0xac, 0xac, 0x8c, 0x64, 0x66, 0x66, 0x26, 0x6c, +0x34, 0x40, 0x0c, 0x75, 0xd2, 0xe3, 0xf1, 0x70, +0x65, 0xa4, 0xc2, 0x6b, 0x00, 0xb4, 0xce, 0x5f, +0x10, 0x04, 0x22, 0x49, 0x92, 0xcf, 0x2f, 0x2e, +0x2d, 0x2d, 0xcd, 0xef, 0xdb, 0xa9, 0x6f, 0xdf, +0xbe, 0x49, 0xa3, 0xe6, 0xcf, 0x16, 0x43, 0x04, +0xc4, 0x9e, 0x64, 0x8c, 0x00, 0x9c, 0xcb, 0xce, +0xbf, 0xa2, 0xa2, 0x02, 0x73, 0xe6, 0xcc, 0x09, +0x7a, 0xfe, 0xe1, 0x87, 0x1f, 0x46, 0xdd, 0xb0, +0xd1, 0xc4, 0xc3, 0x6e, 0xb7, 0x63, 0xea, 0xd4, +0xa9, 0x98, 0x3b, 0x77, 0x6e, 0xc0, 0x0e, 0x94, +0xae, 0x5d, 0xbb, 0x62, 0xf1, 0xe2, 0xc5, 0xe8, +0xdb, 0xb7, 0x6f, 0x1c, 0xac, 0x33, 0x08, 0x17, +0xaf, 0x18, 0xf0, 0xf1, 0x5d, 0xfa, 0x9f, 0xf5, +0x29, 0x00, 0x2e, 0x04, 0x80, 0xba, 0xc5, 0xb1, +0xb7, 0x70, 0xd0, 0xef, 0xb5, 0xbd, 0x69, 0xf5, +0x84, 0x75, 0xfe, 0x40, 0x80, 0xdd, 0x00, 0xb5, +0x1d, 0x00, 0x1c, 0xed, 0xca, 0x5f, 0x3b, 0x63, +0x9b, 0x3b, 0x7f, 0x2e, 0x12, 0xf8, 0x2f, 0x4f, +0x14, 0x45, 0x8b, 0xc9, 0x64, 0xba, 0x40, 0xff, +0xda, 0x89, 0x5e, 0xb9, 0x1b, 0x69, 0x8c, 0x74, +0x40, 0x6c, 0x49, 0xb6, 0x08, 0xc0, 0xb9, 0xec, +0xfc, 0x01, 0x60, 0xde, 0xbc, 0x79, 0xa8, 0xa9, +0xa9, 0x09, 0x78, 0xae, 0x79, 0xf3, 0xe6, 0x18, +0x37, 0x6e, 0x5c, 0x8c, 0x2d, 0x0a, 0x8f, 0x55, +0xab, 0x56, 0xa1, 0x7b, 0xf7, 0xee, 0x78, 0xe3, +0x8d, 0x37, 0xfc, 0x9c, 0x7f, 0x6a, 0x6a, 0x2a, +0xa6, 0x4d, 0x9b, 0x86, 0x5d, 0xbb, 0x76, 0x19, +0xce, 0x3f, 0x81, 0xd1, 0x46, 0x02, 0xb8, 0xdf, +0x82, 0xbf, 0x10, 0x80, 0xbe, 0x0b, 0x80, 0x3f, +0x9f, 0x77, 0xc5, 0x05, 0x7a, 0x6d, 0xa7, 0xd3, +0x49, 0xb4, 0xb3, 0x00, 0x12, 0x19, 0x0a, 0xfc, +0xba, 0x01, 0x50, 0xa0, 0x07, 0xe8, 0x2f, 0x52, +0xdb, 0x06, 0xc1, 0xef, 0xd3, 0xe7, 0x4d, 0x9a, +0x37, 0x6f, 0xde, 0x16, 0x9a, 0xe9, 0x82, 0x40, +0xdd, 0x1f, 0x74, 0x9b, 0x36, 0x6d, 0xa2, 0x70, +0x09, 0x89, 0x8d, 0x21, 0x02, 0x62, 0x87, 0xd3, +0xe9, 0x8c, 0xb7, 0x09, 0x61, 0x73, 0xae, 0x3b, +0x7f, 0xb7, 0xdb, 0x1d, 0x72, 0xf5, 0x7f, 0xdf, +0x7d, 0xf7, 0xa1, 0x59, 0xb3, 0x66, 0x31, 0xb4, +0xa8, 0x7e, 0x4e, 0x9d, 0x3a, 0x85, 0xd1, 0xa3, +0x47, 0xe3, 0xd6, 0x5b, 0x6f, 0xc5, 0xf1, 0xe3, +0xc7, 0x7d, 0xce, 0x89, 0xa2, 0x88, 0xf1, 0xe3, +0xc7, 0xe3, 0xe0, 0xc1, 0x83, 0x78, 0xf6, 0xd9, +0x67, 0x13, 0xce, 0x76, 0x83, 0x5f, 0x09, 0xd2, +0x05, 0xe0, 0xb3, 0xfa, 0xd7, 0xdc, 0xaa, 0x04, +0xf2, 0x7d, 0x1c, 0xbe, 0x29, 0x90, 0x7e, 0x6b, +0xe0, 0x44, 0x47, 0xf4, 0xe6, 0x28, 0x00, 0xd4, +0xb5, 0x00, 0x0a, 0x82, 0xa0, 0x16, 0x00, 0xea, +0xc3, 0xf5, 0x16, 0x8b, 0xc5, 0x67, 0x95, 0xa5, +0x19, 0x8b, 0x08, 0xed, 0x2f, 0x2b, 0x35, 0x35, +0xb5, 0x9d, 0xfe, 0x8d, 0x5a, 0xb5, 0x6a, 0x15, +0x95, 0x0b, 0x48, 0x06, 0x8c, 0x74, 0x40, 0x6c, +0xa8, 0xad, 0xad, 0x8d, 0xb7, 0x09, 0x61, 0x71, +0xae, 0x3b, 0x7f, 0x00, 0xf8, 0xe0, 0x83, 0x0f, +0x50, 0x5c, 0x5c, 0x1c, 0xf0, 0x9c, 0x28, 0x8a, +0x98, 0x38, 0x71, 0x62, 0x8c, 0x2d, 0x0a, 0xcd, +0x3b, 0xef, 0xbc, 0x83, 0xc9, 0x93, 0x27, 0xa3, +0xa2, 0xa2, 0xc2, 0xe7, 0xfe, 0xe6, 0xcd, 0x9b, +0x63, 0xd4, 0xa8, 0x51, 0x98, 0x3c, 0x79, 0x32, +0xb2, 0xb3, 0xb3, 0xe3, 0x64, 0x9d, 0x41, 0xb8, +0x04, 0xc8, 0xff, 0xc3, 0x5b, 0xc0, 0xae, 0x0d, +0xe5, 0xfb, 0x15, 0x03, 0x06, 0x12, 0x03, 0x7c, +0x53, 0x20, 0x6d, 0x17, 0x40, 0xb2, 0x11, 0xb2, +0x06, 0x20, 0xd0, 0xea, 0xbf, 0x9e, 0xd7, 0x23, +0x8c, 0x31, 0x62, 0x36, 0x9b, 0x5b, 0xe8, 0x4f, +0x9c, 0xcb, 0x02, 0x00, 0x30, 0x44, 0x40, 0x2c, +0x90, 0x24, 0x09, 0x1e, 0x8f, 0x27, 0xa1, 0xa7, +0x4b, 0x1a, 0xce, 0xff, 0xd7, 0x51, 0xbf, 0xc1, +0x18, 0x35, 0x6a, 0x14, 0x3a, 0x76, 0xec, 0x18, +0x43, 0x8b, 0x82, 0x73, 0xea, 0xd4, 0x29, 0xdc, +0x79, 0xe7, 0x9d, 0x58, 0xbf, 0x7e, 0xbd, 0xdf, +0xb9, 0x09, 0x13, 0x26, 0x60, 0xf6, 0xec, 0xd9, +0x09, 0xb9, 0xfb, 0xa0, 0x41, 0x68, 0x02, 0x45, +0x01, 0xf8, 0x41, 0x29, 0x85, 0x20, 0x08, 0x7e, +0x91, 0x6d, 0x5d, 0x4d, 0x40, 0xec, 0x8d, 0x8e, +0x02, 0x51, 0xb9, 0x0a, 0x45, 0x51, 0x92, 0x2b, +0x19, 0x1b, 0x23, 0x8c, 0x74, 0x40, 0xf4, 0xd1, +0x6f, 0x11, 0x9b, 0x48, 0x18, 0xce, 0xbf, 0x8e, +0xd5, 0xab, 0x57, 0xa3, 0xa0, 0xa0, 0x20, 0xe8, +0xf9, 0xbf, 0xff, 0xfd, 0xef, 0x31, 0xb4, 0x26, +0x38, 0x8c, 0x31, 0x8c, 0x1d, 0x3b, 0x16, 0x5f, +0x7f, 0xfd, 0x35, 0xb2, 0xb3, 0xb3, 0xa1, 0xad, +0xf0, 0xee, 0xd9, 0xb3, 0xa7, 0xe1, 0xfc, 0x93, +0x14, 0xbd, 0xf3, 0x0f, 0xb0, 0xd2, 0xe7, 0x6d, +0xee, 0xe0, 0x07, 0x50, 0x17, 0x99, 0x0a, 0xb4, +0x2b, 0x20, 0xef, 0x92, 0xe3, 0x69, 0x80, 0x38, +0x5c, 0x52, 0xa3, 0xf1, 0x11, 0x00, 0xa9, 0xa9, +0xa9, 0x3e, 0x15, 0x2d, 0xa2, 0x28, 0xfa, 0xfc, +0x4c, 0x29, 0xad, 0xaf, 0xa2, 0x91, 0x11, 0x42, +0x98, 0x2c, 0xcb, 0x7e, 0xb1, 0xd8, 0x44, 0xfe, +0x62, 0x8e, 0x25, 0x86, 0x08, 0x88, 0x2e, 0x89, +0x9a, 0x06, 0x30, 0x9c, 0xff, 0xaf, 0xcc, 0x9a, +0x35, 0x2b, 0xe8, 0xb9, 0x2b, 0xae, 0xb8, 0x02, +0xfd, 0xfb, 0xf7, 0x8f, 0xa1, 0x35, 0xc1, 0x79, +0xf9, 0xe5, 0x97, 0x91, 0x91, 0x91, 0x81, 0x7b, +0xee, 0xb9, 0x07, 0xc7, 0x8f, 0x1f, 0x87, 0x24, +0x49, 0x00, 0xea, 0xda, 0xfb, 0x16, 0x2d, 0x5a, +0x64, 0x38, 0xff, 0x24, 0x24, 0x50, 0x0a, 0x40, +0xdb, 0x06, 0x88, 0x20, 0xe1, 0x7f, 0x5e, 0xec, +0x6e, 0x32, 0x99, 0x60, 0x36, 0x9b, 0x43, 0x7e, +0xf6, 0x2e, 0x97, 0x8b, 0x38, 0x9d, 0x4e, 0x52, +0x53, 0x53, 0x43, 0xec, 0x76, 0x3b, 0x29, 0x2b, +0x2b, 0x23, 0x15, 0x15, 0x15, 0x09, 0x29, 0x0c, +0x44, 0x6f, 0x8f, 0xa2, 0x6a, 0x9c, 0xd5, 0x6a, +0x65, 0x76, 0xbb, 0x1d, 0x26, 0x93, 0x89, 0x29, +0x8a, 0x02, 0x51, 0x14, 0x99, 0xbe, 0xba, 0x9a, +0x52, 0xca, 0x64, 0x59, 0x86, 0x24, 0x49, 0x8c, +0x10, 0xa2, 0x1e, 0xfc, 0xbc, 0x24, 0x49, 0x7e, +0xa5, 0xbd, 0xda, 0x7d, 0xb0, 0xcf, 0x75, 0x8c, +0x74, 0x40, 0xf4, 0x48, 0x44, 0xa1, 0x69, 0x38, +0xff, 0x5f, 0xd9, 0xba, 0x75, 0x2b, 0x36, 0x6c, +0xd8, 0x10, 0xf4, 0xfc, 0xff, 0xfd, 0xdf, 0xff, +0xc5, 0xd0, 0x9a, 0xe0, 0xec, 0xd8, 0xb1, 0x03, +0x4b, 0x96, 0x2c, 0xc1, 0xd1, 0xa3, 0x47, 0x71, +0xea, 0xd4, 0x29, 0x9f, 0x73, 0xb3, 0x66, 0xcd, +0x42, 0x6e, 0x6e, 0x6e, 0x9c, 0x2c, 0x33, 0x88, +0x14, 0xfa, 0x41, 0x40, 0xfa, 0x19, 0x00, 0xfa, +0x36, 0x40, 0xed, 0xcf, 0xb2, 0x2c, 0xab, 0x1b, +0xe3, 0xa5, 0xa4, 0xa4, 0x80, 0xa7, 0x0d, 0x4c, +0x26, 0x13, 0x64, 0x59, 0x86, 0xd7, 0x3f, 0xfa, +0xbc, 0x1f, 0x1f, 0x06, 0x94, 0x9f, 0x9f, 0x8f, +0x9c, 0x9c, 0x9c, 0x84, 0x68, 0x0f, 0xa4, 0x00, +0x70, 0xe4, 0xc8, 0x11, 0xd8, 0x6c, 0xb6, 0x7a, +0x0d, 0x72, 0xb9, 0x5c, 0x90, 0x24, 0x89, 0x01, +0xfe, 0xd1, 0x00, 0xad, 0x10, 0xa8, 0xaa, 0xaa, +0x3a, 0xa6, 0x7f, 0xee, 0x89, 0x13, 0x27, 0x50, +0x55, 0x55, 0x15, 0x29, 0xbb, 0x93, 0x1e, 0x23, +0x12, 0x10, 0x1d, 0x12, 0x2d, 0x02, 0x60, 0x38, +0x7f, 0x5f, 0x02, 0xad, 0xfe, 0x09, 0x21, 0xb8, +0xe5, 0x96, 0x5b, 0xb0, 0x71, 0xe3, 0x46, 0x0c, +0x1f, 0x3e, 0x3c, 0x0e, 0x56, 0xd5, 0xe1, 0x72, +0xb9, 0xb0, 0x73, 0xe7, 0x4e, 0xcc, 0x9f, 0x3f, +0x1f, 0xa3, 0x47, 0x8f, 0xc6, 0xf6, 0xed, 0xdb, +0x03, 0x3a, 0xff, 0x87, 0x1f, 0x7e, 0x38, 0x4e, +0x16, 0x1a, 0x44, 0x82, 0x20, 0xfb, 0x01, 0x40, +0x9b, 0x02, 0x40, 0x80, 0x59, 0x00, 0xc1, 0x3a, +0x00, 0xb4, 0x29, 0x00, 0x7d, 0x17, 0x80, 0x7e, +0x3f, 0x00, 0x4e, 0x7e, 0x7e, 0x3e, 0x99, 0x31, +0x63, 0x46, 0xdc, 0xa3, 0x02, 0x7e, 0x35, 0x00, +0xa5, 0xa5, 0xa5, 0x30, 0x9b, 0xcd, 0x3e, 0xce, +0x5d, 0x10, 0x04, 0x46, 0x29, 0x65, 0xdc, 0xe9, +0x6b, 0x6f, 0x65, 0x59, 0xd6, 0x47, 0x01, 0x98, +0xdd, 0x6e, 0x2f, 0x93, 0x24, 0xe9, 0x84, 0xfe, +0xb5, 0x43, 0xe5, 0xfd, 0xce, 0x45, 0x0c, 0x11, +0x10, 0x79, 0x1c, 0x0e, 0x87, 0x9f, 0xf2, 0x8e, +0x17, 0x86, 0xf3, 0xf7, 0xe5, 0xc0, 0x81, 0x03, +0x58, 0xbe, 0x7c, 0xb9, 0xfa, 0xb3, 0x20, 0x08, +0xb8, 0xeb, 0xae, 0xbb, 0x90, 0x97, 0x97, 0x87, +0x55, 0xab, 0x56, 0xc5, 0x6d, 0x4a, 0x68, 0x71, +0x71, 0x31, 0xa6, 0x4e, 0x9d, 0x8a, 0xb6, 0x6d, +0xdb, 0xe2, 0x37, 0xbf, 0xf9, 0x0d, 0xfe, 0xfc, +0xe7, 0x3f, 0xe3, 0xf0, 0xe1, 0xc3, 0x3e, 0x8f, +0xc9, 0xcc, 0xcc, 0xc4, 0xc2, 0x85, 0x0b, 0xf1, +0xc8, 0x23, 0x8f, 0xc4, 0xc5, 0x46, 0x83, 0xc8, +0x10, 0xac, 0x0b, 0x00, 0x9a, 0x22, 0xc0, 0x70, +0x3a, 0x00, 0x78, 0x14, 0x40, 0xbb, 0x59, 0x1e, +0x87, 0xa7, 0x00, 0xce, 0x3b, 0xef, 0x3c, 0x52, +0x59, 0x59, 0x49, 0xba, 0x76, 0xed, 0x8a, 0x9c, +0x9c, 0x9c, 0x80, 0xf6, 0xcc, 0x98, 0x31, 0x83, +0xc4, 0xb3, 0x85, 0x20, 0x64, 0x11, 0xa0, 0xc9, +0x64, 0x62, 0x81, 0xea, 0x00, 0xdc, 0x6e, 0xb7, +0xba, 0xe2, 0x0f, 0x24, 0x02, 0x08, 0x21, 0xcc, +0xe1, 0x70, 0xec, 0xd5, 0xbf, 0xde, 0x86, 0x0d, +0x1b, 0x1a, 0xf4, 0x65, 0x78, 0x2e, 0x60, 0x88, +0x80, 0xc8, 0x53, 0x59, 0x59, 0x19, 0x6f, 0x13, +0x0c, 0xe7, 0x1f, 0x80, 0xd9, 0xb3, 0x67, 0x43, +0x51, 0x14, 0xa4, 0xa4, 0xa4, 0xe0, 0xc1, 0x07, +0x1f, 0xc4, 0x81, 0x03, 0x07, 0xb0, 0x68, 0xd1, +0x22, 0xf4, 0xec, 0xd9, 0x33, 0x2e, 0xf6, 0xd8, +0xed, 0x76, 0x8c, 0x1f, 0x3f, 0x1e, 0x17, 0x5e, +0x78, 0x21, 0x5e, 0x7c, 0xf1, 0xc5, 0x80, 0x3b, +0x11, 0x5a, 0x2c, 0x16, 0x4c, 0x9e, 0x3c, 0x19, +0x07, 0x0f, 0x1e, 0xc4, 0x3d, 0xf7, 0xdc, 0x13, +0x07, 0x2b, 0x0d, 0xa2, 0x85, 0x3e, 0x05, 0x10, +0xee, 0x11, 0x28, 0x1a, 0x10, 0xaa, 0x08, 0xb0, +0xbc, 0xbc, 0x9c, 0x00, 0xa1, 0xb7, 0x05, 0x8e, +0x97, 0x08, 0xa0, 0x00, 0x90, 0x96, 0x96, 0xa6, +0x3a, 0xf9, 0x94, 0x94, 0x14, 0x06, 0xc0, 0x27, +0x0a, 0x20, 0x8a, 0x22, 0x13, 0x45, 0x91, 0x69, +0x23, 0x01, 0xb2, 0x2c, 0x33, 0x4a, 0xa9, 0x2a, +0x02, 0x14, 0x45, 0x61, 0x8c, 0x31, 0x85, 0x52, +0xaa, 0x10, 0x42, 0x94, 0xf2, 0xf2, 0xf2, 0xed, +0xfa, 0x37, 0x2b, 0x29, 0x29, 0xc1, 0xee, 0xdd, +0xbb, 0x63, 0x71, 0x5d, 0x49, 0x85, 0x21, 0x02, +0x22, 0x4b, 0xbc, 0x05, 0x80, 0xe1, 0xfc, 0xfd, +0x39, 0x7d, 0xfa, 0x34, 0x96, 0x2f, 0x5f, 0x8e, +0xc7, 0x1e, 0x7b, 0x0c, 0x47, 0x8e, 0x1c, 0xc1, +0xeb, 0xaf, 0xbf, 0x8e, 0x4e, 0x9d, 0x3a, 0xc5, +0xcd, 0x9e, 0x82, 0x82, 0x02, 0xf4, 0xef, 0xdf, +0x1f, 0x6f, 0xbd, 0xf5, 0x56, 0xd0, 0x11, 0xd2, +0xa3, 0x47, 0x8f, 0xc6, 0x4f, 0x3f, 0xfd, 0x84, +0x97, 0x5e, 0x7a, 0x29, 0xe8, 0x46, 0x2f, 0x06, +0xc9, 0x87, 0x3e, 0x05, 0xc0, 0x77, 0x01, 0xc4, +0xaf, 0x6d, 0x80, 0x84, 0x52, 0x4a, 0x04, 0x41, +0x50, 0x6f, 0xb5, 0x07, 0xdf, 0x14, 0x08, 0xa8, +0x8b, 0x06, 0xe8, 0xa7, 0x02, 0x06, 0x1a, 0x08, +0x54, 0x56, 0x56, 0x46, 0x8a, 0x8b, 0x8b, 0xc9, +0xd5, 0x57, 0x5f, 0x8d, 0x51, 0xa3, 0x46, 0x05, +0xb3, 0x2b, 0xe6, 0x22, 0xc0, 0x67, 0x0e, 0x40, +0x55, 0x55, 0x15, 0x13, 0x45, 0x91, 0x58, 0x2c, +0x16, 0x26, 0x49, 0x12, 0x4c, 0x26, 0x13, 0xab, +0xaa, 0xaa, 0xe2, 0x45, 0x80, 0xcc, 0x64, 0x32, +0x31, 0x00, 0x4c, 0x51, 0x14, 0xa6, 0x28, 0x0a, +0x93, 0x24, 0x89, 0x09, 0x82, 0xa0, 0x30, 0xc6, +0x14, 0xc6, 0x98, 0xe2, 0xbd, 0x5f, 0x61, 0x8c, +0x29, 0xa7, 0x4f, 0x9f, 0x3e, 0xdc, 0xb6, 0x6d, +0xdb, 0x02, 0x8b, 0xc5, 0xd2, 0x5d, 0xfb, 0x1e, +0x6b, 0xd7, 0xae, 0x45, 0x4e, 0x4e, 0x8e, 0x51, +0x41, 0xab, 0xc3, 0x28, 0x0c, 0x8c, 0x1c, 0x95, +0x95, 0x95, 0x60, 0x8c, 0xc5, 0x65, 0x03, 0x16, +0xc3, 0xf9, 0x07, 0xa6, 0xb6, 0xb6, 0x16, 0xfb, +0xf7, 0xef, 0xc7, 0x79, 0xe7, 0x9d, 0x17, 0x6f, +0x53, 0xb0, 0x7c, 0xf9, 0x72, 0xdc, 0x7d, 0xf7, +0xdd, 0x41, 0xc7, 0x10, 0x5f, 0x76, 0xd9, 0x65, +0x98, 0x3d, 0x7b, 0x76, 0x93, 0xff, 0x4c, 0xce, +0x45, 0x02, 0xa5, 0x00, 0x50, 0xb7, 0x10, 0xe6, +0x3b, 0xda, 0xfa, 0xa4, 0x02, 0xf8, 0xad, 0xa2, +0x28, 0x14, 0x00, 0xdf, 0xf8, 0x8e, 0x28, 0x8a, +0x42, 0x4c, 0x26, 0x93, 0x2a, 0x08, 0x08, 0x21, +0xc4, 0x6c, 0x36, 0x93, 0xda, 0xda, 0x5a, 0x75, +0x30, 0x10, 0xff, 0x77, 0x7a, 0x7a, 0xba, 0xba, +0x98, 0xde, 0xbf, 0x7f, 0x3f, 0x29, 0x2e, 0x2e, +0xc6, 0xa8, 0x51, 0xa3, 0x58, 0xa0, 0x94, 0xb8, +0xb7, 0x10, 0x31, 0x66, 0x05, 0x82, 0x6a, 0x0a, +0x40, 0x6b, 0x24, 0x00, 0x38, 0x1c, 0x0e, 0x66, +0xb7, 0xdb, 0x01, 0xd4, 0x45, 0x00, 0x04, 0x41, +0x60, 0x1e, 0x8f, 0x87, 0x79, 0x3c, 0x1e, 0x46, +0x29, 0x65, 0xa2, 0x28, 0x2a, 0x94, 0x52, 0x26, +0x49, 0x92, 0x9a, 0x02, 0xf0, 0xae, 0xfe, 0x19, +0x21, 0x44, 0x21, 0x84, 0x28, 0xc5, 0xc5, 0xc5, +0x2b, 0xf5, 0x6f, 0x58, 0x5e, 0x5e, 0x8e, 0x4f, +0x3e, 0xf9, 0x24, 0xea, 0x17, 0x96, 0x8c, 0x18, +0x91, 0x80, 0xc8, 0x20, 0xcb, 0x72, 0xd0, 0x2f, +0xf7, 0x68, 0x62, 0x38, 0xff, 0xe0, 0x5c, 0x78, +0xe1, 0x85, 0x09, 0xe1, 0xfc, 0x77, 0xef, 0xde, +0x8d, 0x3b, 0xef, 0xbc, 0x33, 0xe0, 0xff, 0x8f, +0x8b, 0x2e, 0xba, 0x08, 0x4b, 0x96, 0x2c, 0xc1, +0xa6, 0x4d, 0x9b, 0xce, 0x89, 0xcf, 0x04, 0xa8, +0x2b, 0x7c, 0xfc, 0xf1, 0xc7, 0x1f, 0xe3, 0x6d, +0x46, 0x5c, 0xd0, 0xee, 0x05, 0xc0, 0x9d, 0x7f, +0xa8, 0xb0, 0xbf, 0x2c, 0xcb, 0x54, 0xdf, 0x09, +0xc0, 0x0f, 0xa0, 0x2e, 0x0d, 0x90, 0x92, 0x92, +0x42, 0xd2, 0xd3, 0xd3, 0x61, 0xb3, 0xd9, 0x88, +0xd3, 0xe9, 0x24, 0x40, 0xdd, 0xa6, 0x40, 0x76, +0xbb, 0xdd, 0x47, 0x79, 0x14, 0x14, 0x14, 0x90, +0xe9, 0xd3, 0xa7, 0xf3, 0xf7, 0xd7, 0xdb, 0x15, +0xb3, 0x95, 0x8b, 0xd8, 0xae, 0x5d, 0x3b, 0x56, +0x56, 0x56, 0xa6, 0x1d, 0xe3, 0xcb, 0x28, 0xa5, +0xda, 0x56, 0x40, 0xc6, 0xea, 0x96, 0xf7, 0x8c, +0xa3, 0x28, 0x8a, 0xc2, 0x57, 0xff, 0x00, 0x14, +0x00, 0x8a, 0x24, 0x49, 0x0a, 0x63, 0x4c, 0x11, +0x04, 0x41, 0xe6, 0xf7, 0x95, 0x94, 0x94, 0x1c, +0x6c, 0xdb, 0xb6, 0x6d, 0x41, 0x4a, 0x4a, 0x8a, +0x4f, 0x14, 0x20, 0x2f, 0x2f, 0x0f, 0x17, 0x5c, +0x70, 0x01, 0xae, 0xb8, 0xe2, 0x8a, 0x58, 0x5d, +0x67, 0xd2, 0x60, 0x44, 0x02, 0x22, 0x43, 0x65, +0x65, 0x65, 0x4c, 0xe7, 0xb1, 0x1b, 0xce, 0x3f, +0xf1, 0x39, 0x73, 0xe6, 0x0c, 0x46, 0x8e, 0x1c, +0x19, 0xb0, 0x55, 0xd4, 0x6a, 0xb5, 0xe2, 0xeb, +0xaf, 0xbf, 0xc6, 0xf9, 0xe7, 0x9f, 0x1f, 0x07, +0xcb, 0x62, 0xcf, 0xfe, 0xfd, 0xfb, 0xf1, 0xf6, +0xdb, 0x6f, 0xa3, 0x45, 0x8b, 0x16, 0x09, 0xd3, +0x7a, 0x19, 0x2b, 0x82, 0xf8, 0x57, 0xc2, 0x18, +0xa3, 0xda, 0x43, 0x51, 0x14, 0x4a, 0x08, 0xa1, +0xbc, 0x3d, 0xd0, 0x9b, 0x12, 0xa0, 0x82, 0x20, +0x10, 0x45, 0x51, 0x88, 0x24, 0x49, 0x6a, 0xda, +0x00, 0xde, 0xd4, 0x01, 0x1f, 0x0f, 0x2c, 0xcb, +0x32, 0x69, 0xdd, 0xba, 0x35, 0x14, 0x45, 0x21, +0xde, 0xee, 0x37, 0xad, 0x9f, 0x65, 0x00, 0xb0, +0x64, 0xc9, 0x12, 0x32, 0x7d, 0xfa, 0x74, 0x06, +0xc0, 0x2f, 0x62, 0x19, 0xab, 0x48, 0x00, 0xdd, +0xb9, 0x73, 0x27, 0x32, 0x33, 0x33, 0x99, 0xb6, +0x15, 0x90, 0x77, 0x02, 0x98, 0xcd, 0x66, 0xc6, +0x0b, 0x01, 0x83, 0xd5, 0x01, 0x78, 0x6b, 0x01, +0x14, 0x41, 0x10, 0x14, 0x4a, 0xa9, 0xc2, 0x53, +0x00, 0x8c, 0x31, 0x19, 0x80, 0x7c, 0xe4, 0xc8, +0x91, 0xff, 0x32, 0xc6, 0xfc, 0xfe, 0xe2, 0x56, +0xaf, 0x5e, 0x8d, 0xa3, 0x47, 0x8f, 0x46, 0xfb, +0xfa, 0x92, 0x12, 0x23, 0x12, 0x70, 0xf6, 0xe8, +0x67, 0xb6, 0x47, 0x13, 0xc3, 0xf9, 0x27, 0x07, +0xf7, 0xdd, 0x77, 0x9f, 0x5f, 0x75, 0x3f, 0xe7, +0xd1, 0x47, 0x1f, 0x6d, 0xf2, 0xce, 0xdf, 0xed, +0x76, 0xe3, 0xa3, 0x8f, 0x3e, 0xc2, 0xe0, 0xc1, +0x83, 0x31, 0x78, 0xf0, 0x60, 0x0c, 0x1d, 0x3a, +0x14, 0x8f, 0x3d, 0xf6, 0x18, 0xb4, 0x3b, 0xbc, +0x36, 0x75, 0x02, 0x39, 0x7f, 0xaf, 0x93, 0x57, +0xd3, 0x00, 0xda, 0xe1, 0x3f, 0x5e, 0xa7, 0x4e, +0x29, 0xa5, 0x54, 0x00, 0x49, 0xe9, 0x6f, 0x00, +0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x1b, +0x09, 0xe0, 0x75, 0x00, 0x26, 0x93, 0x89, 0x98, +0xcd, 0x66, 0xe2, 0x76, 0xbb, 0xa9, 0x7e, 0x22, +0xa0, 0xc3, 0xe1, 0x20, 0xb5, 0xb5, 0xb5, 0x24, +0x2b, 0x2b, 0x0b, 0x19, 0x19, 0x19, 0xea, 0x1b, +0xf3, 0x79, 0x00, 0x40, 0x9d, 0x08, 0xe0, 0xed, +0x80, 0xf1, 0x88, 0x04, 0xa8, 0x29, 0x00, 0x5e, +0x08, 0x58, 0x55, 0x55, 0xc5, 0x52, 0x52, 0x52, +0x98, 0xc5, 0x62, 0x61, 0x00, 0xe0, 0x74, 0x3a, +0x99, 0xcb, 0xe5, 0x62, 0x6e, 0xb7, 0x9b, 0xb9, +0xdd, 0x6e, 0xe6, 0xf1, 0x78, 0x98, 0x24, 0x49, +0x4c, 0x14, 0x45, 0x45, 0x10, 0x04, 0x45, 0x10, +0x04, 0x45, 0x0b, 0xa5, 0x54, 0xa1, 0x94, 0xca, +0x84, 0x10, 0x85, 0x52, 0x2a, 0xdb, 0xed, 0xf6, +0x53, 0x45, 0x45, 0x45, 0xef, 0xeb, 0xdf, 0x58, +0x96, 0x65, 0x2c, 0x5a, 0xb4, 0x28, 0xe1, 0xfa, +0xb6, 0x13, 0x05, 0x43, 0x04, 0x9c, 0x1d, 0x4e, +0xa7, 0x33, 0x26, 0x73, 0x27, 0x0c, 0xe7, 0x9f, +0x1c, 0x7c, 0xf7, 0xdd, 0x77, 0x41, 0x53, 0x8f, +0x1d, 0x3b, 0x76, 0xc4, 0xa3, 0x8f, 0x3e, 0x1a, +0x63, 0x8b, 0x62, 0xc7, 0xe1, 0xc3, 0x87, 0x31, +0x75, 0xea, 0x54, 0x74, 0xec, 0xd8, 0x11, 0x63, +0xc6, 0x8c, 0x81, 0xcb, 0xe5, 0xc2, 0x8e, 0x1d, +0x3b, 0x30, 0x64, 0xc8, 0x90, 0x78, 0x9b, 0x16, +0x57, 0x34, 0xc5, 0x80, 0x3c, 0xd7, 0x4f, 0x19, +0x63, 0x94, 0xd6, 0x79, 0x7d, 0xaa, 0x28, 0x8a, +0x36, 0x22, 0x40, 0x14, 0x45, 0xa1, 0xde, 0x83, +0x48, 0x92, 0x44, 0x15, 0x45, 0x21, 0x1e, 0x8f, +0x87, 0xca, 0xb2, 0x4c, 0xcc, 0x66, 0x33, 0x31, +0x9b, 0xcd, 0xc4, 0x62, 0xb1, 0xa8, 0x69, 0x00, +0xde, 0x0e, 0x58, 0x5d, 0x5d, 0x4d, 0x00, 0x20, +0x33, 0x33, 0x93, 0xf0, 0x28, 0x40, 0x51, 0x51, +0x11, 0x29, 0x28, 0x28, 0x50, 0x1d, 0x7c, 0xbc, +0x44, 0x80, 0x4f, 0x1b, 0x60, 0xa0, 0x3a, 0x00, +0x6d, 0x04, 0x40, 0x10, 0x04, 0x66, 0x32, 0x99, +0x14, 0x51, 0x14, 0x7d, 0x9c, 0xbe, 0x20, 0x08, +0x8a, 0x28, 0x8a, 0xb2, 0x28, 0x8a, 0x32, 0x00, +0xf5, 0x60, 0x8c, 0xc9, 0x8c, 0x31, 0xf9, 0xd8, +0xb1, 0x63, 0x3f, 0x54, 0x56, 0x56, 0x7e, 0xa3, +0x7f, 0xf3, 0x33, 0x67, 0xce, 0xe0, 0xc3, 0x0f, +0x3f, 0xf4, 0xbb, 0x68, 0x83, 0x3a, 0x0c, 0x11, +0x70, 0x76, 0xe8, 0x87, 0xb8, 0x44, 0x1a, 0xc3, +0xf9, 0x27, 0x07, 0x8c, 0x31, 0x4c, 0x9e, 0x3c, +0x39, 0xe8, 0xf9, 0x17, 0x5f, 0x7c, 0x11, 0xa9, +0xa9, 0xa9, 0x31, 0xb4, 0x28, 0x36, 0x1c, 0x3d, +0x7a, 0x14, 0xbf, 0xfd, 0xed, 0x6f, 0xd1, 0xa5, +0x4b, 0x17, 0xbc, 0xf8, 0xe2, 0x8b, 0x38, 0x7d, +0xfa, 0x34, 0xee, 0xbb, 0xef, 0x3e, 0x7c, 0xfd, +0xf5, 0xd7, 0x68, 0xdb, 0xb6, 0x6d, 0xbc, 0xcd, +0x8b, 0x1b, 0x01, 0xba, 0x00, 0xa8, 0xd6, 0xf9, +0xeb, 0xd3, 0x00, 0xfc, 0xe0, 0x91, 0x00, 0x0e, +0x17, 0x01, 0x7c, 0xf5, 0xef, 0x72, 0xb9, 0x28, +0x8f, 0x00, 0xd4, 0xd4, 0xd4, 0xd0, 0xd4, 0xd4, +0x54, 0xd2, 0xb2, 0x65, 0x4b, 0xd4, 0xd6, 0xd6, +0x92, 0x9a, 0x9a, 0x1a, 0x75, 0x26, 0x40, 0x56, +0x56, 0x56, 0x40, 0xa7, 0x1e, 0x0f, 0x11, 0x40, +0xb3, 0xb2, 0xb2, 0x58, 0x51, 0x51, 0x91, 0xfa, +0x8e, 0x36, 0x9b, 0x8d, 0xa5, 0xa6, 0xa6, 0xb2, +0x9a, 0x9a, 0x1a, 0xc6, 0x5b, 0x01, 0xb9, 0x08, +0xb0, 0x58, 0x2c, 0x8a, 0x36, 0x0d, 0xc0, 0xa3, +0x00, 0x3a, 0x31, 0x20, 0x53, 0x4a, 0x7d, 0x0e, +0x00, 0xd2, 0xbe, 0x7d, 0xfb, 0x96, 0xba, 0x5c, +0xae, 0x23, 0x7a, 0x03, 0x0a, 0x0b, 0x0b, 0xb1, +0x6e, 0xdd, 0xba, 0x68, 0x5d, 0x5f, 0xd2, 0x63, +0x88, 0x80, 0xc6, 0x53, 0x59, 0x59, 0x09, 0x97, +0xcb, 0x15, 0x95, 0xd7, 0xae, 0xae, 0xae, 0x36, +0x9c, 0x7f, 0x92, 0xb0, 0x78, 0xf1, 0x62, 0x6c, +0xdf, 0xee, 0xd7, 0x95, 0x0c, 0xa0, 0xee, 0xef, +0xeb, 0xf7, 0xbf, 0xff, 0x7d, 0x8c, 0x2d, 0x8a, +0x3e, 0x0b, 0x17, 0x2e, 0x44, 0xcf, 0x9e, 0x3d, +0xf1, 0xbf, 0xff, 0xfd, 0x0f, 0x8c, 0x31, 0x98, +0x4c, 0x26, 0xbc, 0xf1, 0xc6, 0x1b, 0x78, 0xeb, +0xad, 0xb7, 0xce, 0xa9, 0x90, 0x7f, 0x38, 0x04, +0xca, 0xfd, 0xeb, 0x6a, 0x00, 0xd4, 0x88, 0x80, +0x2c, 0xcb, 0xea, 0xc1, 0x11, 0x04, 0x81, 0x0a, +0x82, 0x40, 0xcd, 0x66, 0x33, 0x91, 0x24, 0x89, +0x38, 0x9d, 0x4e, 0xca, 0xa7, 0x02, 0x9e, 0x39, +0x73, 0x86, 0x36, 0x6b, 0xd6, 0x8c, 0x9c, 0x77, +0xde, 0x79, 0x04, 0xf8, 0x75, 0x26, 0x00, 0x17, +0x01, 0x05, 0x05, 0x05, 0x24, 0x3f, 0x3f, 0x3f, +0x6e, 0x91, 0x00, 0x35, 0x02, 0x90, 0x99, 0x99, +0xc9, 0xca, 0xca, 0xca, 0xfc, 0xd2, 0x00, 0x66, +0xb3, 0x99, 0x69, 0xd3, 0x00, 0xb2, 0x2c, 0x2b, +0x7a, 0xb8, 0x10, 0x10, 0x45, 0x51, 0xe6, 0x35, +0x00, 0xf8, 0x35, 0x12, 0x20, 0x79, 0x45, 0x80, +0xbb, 0xb0, 0xb0, 0x70, 0x81, 0xa2, 0x28, 0x7e, +0xe5, 0xb7, 0x5f, 0x7e, 0xf9, 0x25, 0x36, 0x6f, +0xde, 0x1c, 0x8d, 0xeb, 0x6b, 0x12, 0x18, 0x22, +0xa0, 0xf1, 0x44, 0x63, 0x0f, 0x8a, 0xea, 0xea, +0x6a, 0xec, 0xdf, 0xbf, 0xdf, 0x70, 0xfe, 0x49, +0x80, 0xcb, 0xe5, 0xc2, 0xb4, 0x69, 0xd3, 0x02, +0x9e, 0x23, 0x84, 0xe0, 0xd5, 0x57, 0x5f, 0x8d, +0xb1, 0x45, 0xd1, 0xa5, 0xbc, 0xbc, 0x1c, 0x23, +0x46, 0x8c, 0xc0, 0xb8, 0x71, 0xe3, 0xd4, 0x14, +0x58, 0xeb, 0xd6, 0xad, 0xb1, 0x6e, 0xdd, 0x3a, +0x3c, 0xf0, 0xc0, 0x03, 0x71, 0xb6, 0x2e, 0xb1, +0xe0, 0x91, 0x00, 0xbd, 0x00, 0x60, 0x8c, 0x51, +0x4d, 0xde, 0x9f, 0x8b, 0x01, 0x41, 0xbb, 0xfa, +0xe7, 0x22, 0x40, 0x92, 0x24, 0xca, 0x8b, 0xfe, +0x5c, 0x2e, 0x17, 0xa5, 0x94, 0x52, 0x9e, 0x06, +0x70, 0xbb, 0xdd, 0x3e, 0xb5, 0x00, 0xe9, 0xe9, +0xe9, 0xa4, 0xb2, 0xb2, 0x52, 0x4d, 0x03, 0xb4, +0x6b, 0xd7, 0x8e, 0x00, 0x75, 0xdb, 0x5f, 0x87, +0x23, 0x02, 0xa2, 0x81, 0xdf, 0x24, 0x40, 0x6d, +0x1a, 0xa0, 0xbc, 0xbc, 0x3c, 0x60, 0x1a, 0xc0, +0x6c, 0x36, 0x2b, 0x3c, 0x15, 0x20, 0x8a, 0xa2, +0xc2, 0x43, 0xfd, 0xbc, 0xf0, 0x0f, 0x80, 0x24, +0x08, 0x82, 0x24, 0x08, 0x82, 0xe4, 0xbd, 0x4f, +0x02, 0x20, 0xd5, 0xd4, 0xd4, 0x94, 0x1e, 0x3b, +0x76, 0x6c, 0x11, 0xbc, 0x55, 0x90, 0x1c, 0xc6, +0x18, 0x96, 0x2f, 0x5f, 0x6e, 0x88, 0x80, 0x10, +0x18, 0x22, 0xa0, 0x71, 0x94, 0x96, 0x96, 0x46, +0x74, 0xfa, 0xa4, 0xe1, 0xfc, 0x93, 0x8b, 0x39, +0x73, 0xe6, 0xe0, 0xc8, 0x91, 0x23, 0x01, 0xcf, +0x8d, 0x1d, 0x3b, 0x36, 0x61, 0x76, 0x1e, 0x8c, +0x04, 0x85, 0x85, 0x85, 0x18, 0x38, 0x70, 0xa0, +0xcf, 0xb8, 0xe5, 0x7e, 0xfd, 0xfa, 0x61, 0xc7, +0x8e, 0x1d, 0xb8, 0xf2, 0xca, 0x2b, 0xe3, 0x68, +0x59, 0xe2, 0xa1, 0x5b, 0x50, 0x13, 0x00, 0x94, +0x10, 0xc2, 0x1d, 0xbe, 0xc0, 0x18, 0x13, 0x14, +0x45, 0xe1, 0x07, 0x25, 0x84, 0x50, 0x59, 0x96, +0x05, 0x59, 0x96, 0x69, 0x5d, 0xa9, 0x9b, 0x3f, +0x3c, 0x1d, 0xe0, 0x74, 0x3a, 0xa9, 0xd3, 0xe9, +0xa4, 0x82, 0x20, 0x50, 0xab, 0xd5, 0x4a, 0xb4, +0xb5, 0x00, 0xe9, 0xe9, 0xe9, 0x84, 0xd7, 0x02, +0x14, 0x17, 0x17, 0x93, 0x76, 0xed, 0xda, 0xa9, +0xb5, 0x00, 0xf5, 0x89, 0x80, 0x68, 0x44, 0x01, +0x28, 0x00, 0x68, 0xd3, 0x00, 0xbc, 0x1b, 0x20, +0x35, 0x35, 0x55, 0x8d, 0x00, 0xf0, 0x28, 0x80, +0x2c, 0xcb, 0x0a, 0x2f, 0x06, 0xe4, 0xab, 0x7f, +0x00, 0xea, 0xaa, 0x3f, 0x50, 0x2d, 0x80, 0x28, +0x8a, 0x92, 0x20, 0x08, 0x12, 0xa5, 0x54, 0x02, +0x20, 0x9d, 0x38, 0x71, 0xe2, 0xc7, 0xf2, 0xf2, +0xf2, 0x2f, 0xf5, 0x86, 0x30, 0xc6, 0xb0, 0x6c, +0xd9, 0x32, 0x7c, 0xff, 0xfd, 0xf7, 0x91, 0xbe, +0xc6, 0x26, 0x83, 0x21, 0x02, 0x1a, 0x8e, 0x2c, +0xcb, 0x28, 0x29, 0x29, 0x89, 0xc8, 0x6b, 0x19, +0xce, 0x3f, 0xb9, 0x28, 0x2d, 0x2d, 0xc5, 0xb3, +0xcf, 0x3e, 0x1b, 0xf0, 0x9c, 0xcd, 0x66, 0xc3, +0xf3, 0xcf, 0x3f, 0x1f, 0x63, 0x8b, 0xa2, 0xc7, +0x57, 0x5f, 0x7d, 0x85, 0x81, 0x03, 0x07, 0xe2, +0xc0, 0x81, 0x03, 0xea, 0x7d, 0x77, 0xdd, 0x75, +0x17, 0x36, 0x6c, 0xd8, 0x80, 0x8e, 0x1d, 0x3b, +0xc6, 0xd1, 0xb2, 0xc4, 0x22, 0xd0, 0x46, 0x40, +0xdc, 0xe9, 0x03, 0xa0, 0x8a, 0xa2, 0x08, 0x3c, +0xdc, 0xcf, 0xff, 0x4d, 0x08, 0x11, 0x64, 0x59, +0x16, 0xbc, 0x29, 0x00, 0x41, 0x92, 0x24, 0x81, +0xaf, 0xfe, 0x25, 0x49, 0xa2, 0x6e, 0xb7, 0x5b, +0xf0, 0x78, 0x3c, 0xaa, 0x10, 0xe0, 0xc5, 0x80, +0xbc, 0x1b, 0x20, 0x35, 0x35, 0x95, 0xd8, 0x6c, +0x36, 0x52, 0x5b, 0x5b, 0x4b, 0xaa, 0xab, 0xab, +0x49, 0x65, 0x65, 0xa5, 0x8f, 0x08, 0x00, 0x80, +0x9c, 0x9c, 0x9c, 0xb8, 0x88, 0x00, 0xda, 0xbd, +0x7b, 0x77, 0xf5, 0xd5, 0x33, 0x33, 0x33, 0x59, +0xa0, 0x6e, 0x00, 0x87, 0xc3, 0xc1, 0x52, 0x53, +0x53, 0x15, 0x51, 0x14, 0x59, 0x4a, 0x4a, 0x8a, +0x62, 0x36, 0x9b, 0x15, 0x4a, 0x29, 0xd3, 0x46, +0x01, 0x44, 0x51, 0x94, 0xb5, 0x91, 0x00, 0xed, +0xca, 0x9f, 0x1f, 0x94, 0x52, 0x89, 0x52, 0x2a, +0xed, 0xdb, 0xb7, 0xef, 0x33, 0xbb, 0xdd, 0xbe, +0x23, 0x90, 0x41, 0xcb, 0x97, 0x2f, 0x37, 0x44, +0x40, 0x08, 0x0c, 0x11, 0xd0, 0x70, 0x8a, 0x8a, +0x8a, 0xa0, 0xdf, 0xd2, 0xba, 0xa1, 0x18, 0xce, +0x3f, 0xf9, 0x98, 0x32, 0x65, 0x4a, 0xc0, 0xf9, +0xfe, 0x00, 0x30, 0x75, 0xea, 0x54, 0x64, 0x65, +0x65, 0xc5, 0xd8, 0xa2, 0xe8, 0x30, 0x77, 0xee, +0x5c, 0x0c, 0x1b, 0x36, 0xcc, 0xe7, 0x5a, 0x9f, +0x7e, 0xfa, 0x69, 0x2c, 0x5a, 0xb4, 0x08, 0x56, +0xab, 0x35, 0x8e, 0x96, 0x25, 0x36, 0x9a, 0x14, +0x80, 0xc0, 0xc3, 0xfc, 0x7c, 0xf5, 0xcf, 0x18, +0xe3, 0x42, 0x40, 0x90, 0x65, 0x59, 0xf0, 0xa6, +0x05, 0x04, 0x4a, 0x29, 0x05, 0x20, 0x10, 0x42, +0xd4, 0x83, 0xdf, 0x07, 0x40, 0xf0, 0x78, 0x3c, +0x94, 0x47, 0x01, 0x78, 0x6d, 0x80, 0xdd, 0x6e, +0xa7, 0x76, 0xbb, 0x9d, 0x0a, 0x82, 0x40, 0xb5, +0x05, 0x81, 0x40, 0xdd, 0x88, 0x60, 0xde, 0x16, +0x18, 0x0f, 0x11, 0x10, 0x70, 0x33, 0xa0, 0x8a, +0x8a, 0x0a, 0x06, 0xd4, 0x0d, 0x05, 0xe2, 0xc5, +0x80, 0x7c, 0x26, 0x80, 0xcb, 0xe5, 0x52, 0x57, +0xff, 0xda, 0x28, 0x00, 0x74, 0xd5, 0xff, 0x26, +0x93, 0x49, 0x12, 0x04, 0x41, 0x16, 0x04, 0x41, +0x15, 0x00, 0x84, 0x10, 0x0f, 0xbf, 0xdd, 0xb3, +0x67, 0xcf, 0x7f, 0xab, 0xaa, 0xaa, 0x82, 0x8a, +0x80, 0x4d, 0x9b, 0x36, 0x45, 0xea, 0x1a, 0x9b, +0x1c, 0x86, 0x08, 0x68, 0x18, 0xb2, 0x2c, 0xe3, +0xd8, 0x31, 0xbf, 0x1d, 0xaa, 0xc3, 0xc6, 0x70, +0xfe, 0xc9, 0xc7, 0x96, 0x2d, 0x5b, 0xb0, 0x60, +0xc1, 0x82, 0x80, 0xe7, 0xce, 0x3f, 0xff, 0xfc, +0x26, 0x31, 0xfc, 0x46, 0x96, 0x65, 0x3c, 0xf4, +0xd0, 0x43, 0x78, 0xf0, 0xc1, 0x07, 0x7d, 0x76, +0xc0, 0x7c, 0xe6, 0x99, 0x67, 0xf0, 0xc4, 0x13, +0x4f, 0xc4, 0xd1, 0xb2, 0xc4, 0x47, 0xe7, 0x43, +0xa9, 0xde, 0xe9, 0x13, 0x42, 0xd4, 0x34, 0x00, +0x21, 0x44, 0x00, 0x20, 0x78, 0x53, 0x00, 0xea, +0xcf, 0x92, 0x24, 0x09, 0x1e, 0x8f, 0x47, 0xf0, +0x78, 0x3c, 0x82, 0x24, 0x49, 0x54, 0x1b, 0x05, +0x10, 0x04, 0x81, 0x3a, 0x9d, 0x4e, 0xea, 0x70, +0x38, 0x7c, 0x52, 0x01, 0xbc, 0x20, 0xb0, 0xa6, +0xa6, 0x86, 0x64, 0x66, 0x66, 0xaa, 0x05, 0x81, +0xf1, 0x12, 0x01, 0x74, 0xc9, 0x92, 0x25, 0xf0, +0x1a, 0xc1, 0x8a, 0x8a, 0x8a, 0x18, 0x8f, 0x02, +0xd8, 0x6c, 0x36, 0xa6, 0x8f, 0x02, 0xc8, 0xb2, +0xac, 0xa4, 0xa4, 0xa4, 0x28, 0xa2, 0x28, 0x32, +0xb3, 0xd9, 0xac, 0x98, 0xcd, 0x66, 0x9f, 0x42, +0x40, 0x93, 0xc9, 0x24, 0xf3, 0x14, 0x80, 0x26, +0x02, 0x20, 0x8b, 0xa2, 0x28, 0xf1, 0x54, 0x00, +0x21, 0xc4, 0xc3, 0x8f, 0x3d, 0x7b, 0xf6, 0x2c, +0xae, 0xaa, 0xaa, 0xda, 0x19, 0xc8, 0xb0, 0x15, +0x2b, 0x56, 0x60, 0xe3, 0xc6, 0x8d, 0x91, 0xb8, +0xc6, 0x26, 0x89, 0x21, 0x02, 0x1a, 0x46, 0x79, +0x79, 0x79, 0xa3, 0xe6, 0x02, 0x18, 0xce, 0x3f, +0xf9, 0x50, 0x14, 0x05, 0x0f, 0x3e, 0xf8, 0x60, +0xc0, 0x22, 0xaa, 0xce, 0x9d, 0x3b, 0x63, 0xfe, +0xfc, 0xf9, 0x49, 0xbf, 0x32, 0xae, 0xac, 0xac, +0xc4, 0xcd, 0x37, 0xdf, 0x8c, 0x39, 0x73, 0xe6, +0xf8, 0xdc, 0x3f, 0x73, 0xe6, 0x4c, 0x3c, 0xfe, +0xf8, 0xe3, 0x71, 0xb2, 0x2a, 0xf1, 0x09, 0x92, +0x02, 0x10, 0xf4, 0x87, 0x77, 0xe5, 0x2f, 0x02, +0x10, 0xf9, 0xbf, 0xbd, 0x8e, 0x5f, 0xe4, 0x69, +0x00, 0x00, 0x6a, 0x61, 0x20, 0xbc, 0x11, 0x00, +0x41, 0x10, 0x28, 0x00, 0xc1, 0xed, 0x76, 0xab, +0x42, 0x80, 0xb7, 0x05, 0x0a, 0x82, 0x40, 0xcf, +0x9c, 0x39, 0x43, 0xcb, 0xcb, 0xcb, 0x29, 0xdf, +0x2a, 0x98, 0xa7, 0x02, 0xe2, 0x25, 0x02, 0x28, +0x00, 0x68, 0xd3, 0x00, 0x9c, 0x60, 0x51, 0x00, +0x5e, 0x0b, 0xa0, 0x28, 0x8a, 0x22, 0xcb, 0xb2, +0x62, 0x32, 0x99, 0x14, 0xb3, 0xd9, 0xec, 0x13, +0x01, 0x00, 0x20, 0x13, 0x42, 0x24, 0x42, 0x88, +0x4f, 0x0a, 0x00, 0xde, 0x34, 0x00, 0x63, 0x4c, +0x02, 0xe0, 0x21, 0x84, 0xb8, 0xf3, 0xf2, 0xf2, +0x82, 0x8a, 0x80, 0x95, 0x2b, 0x57, 0x1a, 0x22, +0x20, 0x04, 0x86, 0x08, 0x68, 0x18, 0x47, 0x8f, +0x1e, 0x6d, 0x50, 0x65, 0xad, 0xe1, 0xfc, 0x93, +0x93, 0xb9, 0x73, 0xe7, 0xe2, 0x87, 0x1f, 0x7e, +0xf0, 0xb9, 0xef, 0xda, 0x6b, 0xaf, 0xc5, 0x8a, +0x15, 0x2b, 0xb0, 0x7f, 0xff, 0x7e, 0x5c, 0x77, +0xdd, 0x75, 0x71, 0xb2, 0x2c, 0x32, 0x1c, 0x3e, +0x7c, 0x18, 0x83, 0x06, 0x0d, 0xc2, 0x9a, 0x35, +0x6b, 0x7c, 0xee, 0x9f, 0x3e, 0x7d, 0x3a, 0x9e, +0x7c, 0xf2, 0xc9, 0x38, 0x59, 0x95, 0x9c, 0x10, +0x42, 0xd0, 0xbe, 0x7d, 0xfb, 0x0e, 0x1a, 0xe7, +0x2f, 0x12, 0x42, 0x04, 0x45, 0x51, 0x44, 0x4d, +0x14, 0x40, 0xf4, 0xd6, 0x01, 0x88, 0xf0, 0x3a, +0x7a, 0x1e, 0xfe, 0x67, 0x8c, 0x89, 0xa8, 0x0b, +0xfd, 0x0b, 0x92, 0x24, 0x51, 0x97, 0xcb, 0x25, +0x78, 0x3c, 0x1e, 0x55, 0x04, 0x68, 0x53, 0x01, +0xda, 0x7a, 0x80, 0xf2, 0xf2, 0x72, 0x2a, 0x08, +0x02, 0xe5, 0xfb, 0x04, 0xc4, 0x4b, 0x04, 0xd0, +0x9c, 0x9c, 0x1c, 0x16, 0x28, 0x0a, 0x00, 0xd4, +0xcd, 0x04, 0x08, 0x56, 0x0b, 0x20, 0xcb, 0xb2, +0xc2, 0x0f, 0x2d, 0x8c, 0x31, 0xd9, 0xeb, 0xf8, +0x65, 0xcd, 0xbf, 0xd5, 0x14, 0x00, 0x21, 0xc4, +0x23, 0x8a, 0xa2, 0x1a, 0x05, 0xa0, 0x94, 0xba, +0xf3, 0xf2, 0xf2, 0x3e, 0xaa, 0xac, 0xac, 0x0c, +0x2a, 0x02, 0xbe, 0xf9, 0xe6, 0x9b, 0xb3, 0xb9, +0xc6, 0x26, 0x8d, 0x21, 0x02, 0xc2, 0xc7, 0xe9, +0x74, 0xe2, 0xe4, 0xc9, 0x93, 0x61, 0x3d, 0xd6, +0x70, 0xfe, 0xc9, 0xc9, 0xe9, 0xd3, 0xa7, 0xd5, +0xf0, 0xb7, 0xc5, 0x62, 0xc1, 0xb8, 0x71, 0xe3, +0x90, 0x97, 0x97, 0x87, 0xf5, 0xeb, 0xd7, 0xe3, +0xd6, 0x5b, 0x6f, 0x45, 0xdd, 0x62, 0x2d, 0x79, +0xf9, 0xe1, 0x87, 0x1f, 0x30, 0x60, 0xc0, 0x00, +0xbf, 0xbd, 0x42, 0x9e, 0x78, 0xe2, 0x09, 0x3c, +0xf5, 0xd4, 0x53, 0xf1, 0x31, 0x2a, 0x89, 0x48, +0x4b, 0x4b, 0x03, 0xe0, 0x1b, 0x09, 0xe8, 0xd9, +0xb3, 0xe7, 0x55, 0xd9, 0xd9, 0xd9, 0x5d, 0x35, +0xab, 0x7f, 0x91, 0xdf, 0x72, 0xa7, 0xaf, 0xbd, +0x95, 0x65, 0x59, 0x94, 0x24, 0x49, 0x94, 0x24, +0x49, 0x90, 0x24, 0x49, 0x70, 0xbb, 0xdd, 0xaa, +0x30, 0xe0, 0x07, 0x8f, 0x0a, 0xf0, 0x54, 0x00, +0x17, 0x02, 0xbc, 0x1e, 0x80, 0x17, 0x05, 0x0a, +0x82, 0x40, 0x33, 0x32, 0x32, 0xe2, 0x26, 0x02, +0xd4, 0xbf, 0x06, 0x7d, 0x14, 0x20, 0x2d, 0x2d, +0x8d, 0x55, 0x54, 0x54, 0x30, 0x9b, 0xcd, 0xc6, +0xec, 0x76, 0xbb, 0x1a, 0x05, 0xe0, 0xa9, 0x00, +0xde, 0x16, 0xc8, 0x5b, 0x02, 0x2d, 0x16, 0x8b, +0x0c, 0x40, 0x36, 0x9b, 0xcd, 0x32, 0x4f, 0x05, +0x98, 0xcd, 0x66, 0xc9, 0x64, 0x32, 0x49, 0x7a, +0x11, 0x00, 0xc0, 0x23, 0x08, 0x82, 0x07, 0x80, +0x07, 0xbf, 0x46, 0x02, 0x3e, 0xae, 0xaa, 0xaa, +0xda, 0x15, 0xc8, 0xc8, 0xcf, 0x3e, 0xfb, 0x0c, +0xab, 0x56, 0xad, 0x32, 0x26, 0x06, 0x06, 0xc1, +0x10, 0x01, 0xe1, 0x53, 0x54, 0x54, 0x84, 0xea, +0xea, 0xea, 0x90, 0x8f, 0x31, 0x9c, 0x7f, 0xf2, +0x32, 0x65, 0xca, 0x14, 0xa4, 0xa4, 0xa4, 0x60, +0xc6, 0x8c, 0x19, 0x38, 0x76, 0xec, 0x18, 0xde, +0x79, 0xe7, 0x1d, 0xe4, 0xe6, 0xe6, 0xc6, 0xdb, +0xac, 0x88, 0x90, 0x97, 0x97, 0x87, 0xeb, 0xae, +0xbb, 0x0e, 0x65, 0x65, 0x65, 0x3e, 0xf7, 0x4f, +0x9b, 0x36, 0x0d, 0x4f, 0x3f, 0xfd, 0x74, 0x9c, +0xac, 0x4a, 0x2e, 0xfa, 0xf6, 0xed, 0xeb, 0x97, +0x02, 0xa0, 0x94, 0x92, 0x5e, 0xbd, 0x7a, 0x0d, +0xce, 0xce, 0xce, 0xbe, 0x58, 0xeb, 0xfc, 0xbd, +0x35, 0x01, 0xa2, 0xa2, 0x28, 0xea, 0xc1, 0xf3, +0xff, 0xde, 0x43, 0xd4, 0x16, 0x03, 0x6a, 0xcf, +0xb9, 0xdd, 0x6e, 0xc1, 0x3b, 0x47, 0x40, 0x60, +0x8c, 0x09, 0x82, 0x20, 0xf8, 0xd4, 0x03, 0xd8, +0xed, 0x76, 0xda, 0xac, 0x59, 0x33, 0xc2, 0x8b, +0x02, 0xe3, 0x25, 0x02, 0xa8, 0xf7, 0x4d, 0x02, +0x46, 0x01, 0x78, 0x47, 0x80, 0xd5, 0x6a, 0x65, +0x29, 0x29, 0x29, 0x4c, 0x92, 0x24, 0xa5, 0x59, +0xb3, 0x66, 0x8a, 0xc9, 0x64, 0x62, 0x92, 0x24, +0xf9, 0x45, 0x00, 0xb4, 0xa9, 0x00, 0x42, 0x88, +0x3a, 0x03, 0x40, 0x14, 0x45, 0xc9, 0x64, 0x32, +0x79, 0x78, 0x2d, 0x00, 0x5f, 0xfd, 0x0b, 0x82, +0xe0, 0x11, 0x04, 0x41, 0x8d, 0x04, 0xec, 0xde, +0xbd, 0xfb, 0xe3, 0xca, 0xca, 0xca, 0x80, 0x22, +0x60, 0xc3, 0x86, 0x0d, 0x58, 0xbc, 0x78, 0x31, +0x64, 0x59, 0x6e, 0xcc, 0x75, 0x36, 0x79, 0x0c, +0x11, 0x10, 0x1e, 0x8c, 0x31, 0x1c, 0x3c, 0x78, +0x30, 0xe8, 0x84, 0x40, 0xc3, 0xf9, 0x27, 0x2f, +0xa7, 0x4f, 0x9f, 0xc6, 0x90, 0x21, 0x43, 0xf0, +0xcb, 0x2f, 0xbf, 0xe0, 0x1f, 0xff, 0xf8, 0x07, +0x5a, 0xb5, 0x6a, 0x15, 0x6f, 0x93, 0x22, 0xc6, +0x9e, 0x3d, 0x7b, 0x30, 0x64, 0xc8, 0x10, 0x94, +0x97, 0x97, 0xfb, 0xdc, 0x3f, 0x65, 0xca, 0x94, +0xa0, 0xad, 0x8e, 0x06, 0xfe, 0xf4, 0xee, 0xdd, +0x1b, 0x9d, 0x3b, 0x77, 0x56, 0x7f, 0xe6, 0x7e, +0x93, 0x10, 0x42, 0x73, 0x73, 0x73, 0xaf, 0xcb, +0xce, 0xce, 0xbe, 0xd8, 0x9b, 0x06, 0xf0, 0x71, +0xfc, 0x00, 0x44, 0xd4, 0xe5, 0xff, 0xd5, 0x83, +0x31, 0xe6, 0x73, 0xb8, 0xdd, 0x6e, 0xd1, 0xe3, +0xf1, 0x08, 0x6e, 0xb7, 0x5b, 0x00, 0x20, 0xf0, +0x74, 0x80, 0x20, 0x08, 0x6a, 0x3d, 0x80, 0xc3, +0xe1, 0xa0, 0x35, 0x35, 0x35, 0xd4, 0x6a, 0xb5, +0xfa, 0x4c, 0x09, 0xd4, 0x8b, 0x80, 0x8a, 0x8a, +0x8a, 0x90, 0x22, 0x20, 0x10, 0x8d, 0x11, 0x01, +0x3e, 0xf1, 0x30, 0x6d, 0x14, 0x20, 0x3f, 0x3f, +0x1f, 0x40, 0x5d, 0x2d, 0x00, 0x8f, 0x02, 0xf0, +0x54, 0x80, 0x2c, 0xcb, 0x4a, 0x6a, 0x6a, 0xaa, +0x92, 0x92, 0x92, 0xa2, 0xc8, 0xb2, 0xac, 0x00, +0x90, 0xb9, 0x10, 0x80, 0xa6, 0x0e, 0xc0, 0xdb, +0xfb, 0xaf, 0xd6, 0x03, 0x68, 0x52, 0x00, 0x3e, +0xc5, 0x80, 0x82, 0x20, 0xb8, 0x09, 0x21, 0x6e, +0x4a, 0xa9, 0x2b, 0x2f, 0x2f, 0x2f, 0xa8, 0x08, +0xf8, 0xe1, 0x87, 0x1f, 0xf0, 0xce, 0x3b, 0xef, +0xc0, 0xed, 0x76, 0x37, 0xf4, 0x3a, 0xcf, 0x09, +0x0c, 0x11, 0x10, 0x1e, 0x92, 0x24, 0xe1, 0xc0, +0x81, 0x03, 0x7e, 0x62, 0xd2, 0x70, 0xfe, 0xc9, +0x4d, 0xeb, 0xd6, 0xad, 0x71, 0xf7, 0xdd, 0x77, +0x37, 0xb9, 0x51, 0xb7, 0x3f, 0xfe, 0xf8, 0x63, +0xc0, 0x95, 0xff, 0x23, 0x8f, 0x3c, 0x82, 0x17, +0x5e, 0x78, 0x21, 0x4e, 0x56, 0x25, 0x27, 0x82, +0x20, 0x60, 0xd4, 0xa8, 0x51, 0xe8, 0xdc, 0xb9, +0x73, 0xa0, 0x48, 0x00, 0xcd, 0xcd, 0xcd, 0xbd, +0x31, 0x3b, 0x3b, 0xbb, 0x1b, 0x77, 0xfa, 0xda, +0x5b, 0xaf, 0xd3, 0x37, 0x41, 0x23, 0x06, 0x24, +0x49, 0x12, 0x3d, 0x1e, 0x8f, 0xc8, 0x8b, 0x02, +0x79, 0x0d, 0x01, 0x34, 0xe9, 0x00, 0x87, 0xc3, +0x21, 0x38, 0x1c, 0x0e, 0xa1, 0x6e, 0x52, 0x7e, +0x5d, 0x3d, 0x40, 0xa0, 0xa2, 0x40, 0xad, 0x08, +0x68, 0xdb, 0xb6, 0x6d, 0x48, 0x11, 0x10, 0xa9, +0x91, 0xc1, 0xaa, 0x00, 0xd0, 0x47, 0x01, 0x32, +0x32, 0x32, 0xd4, 0x28, 0x40, 0x45, 0x45, 0x05, +0xb3, 0x5a, 0xad, 0x3e, 0x7b, 0x04, 0x68, 0xbb, +0x02, 0x52, 0x52, 0x52, 0x54, 0xc7, 0xaf, 0x15, +0x01, 0xda, 0x7a, 0x00, 0x6d, 0x51, 0xa0, 0xd7, +0xe9, 0xab, 0xe9, 0x00, 0x7e, 0x0b, 0x4d, 0x3a, +0xa0, 0xbc, 0xbc, 0x3c, 0xe0, 0x30, 0x80, 0x03, +0x07, 0x0e, 0x60, 0xde, 0xbc, 0x79, 0xf5, 0x86, +0x71, 0xcf, 0x55, 0x0c, 0x11, 0x10, 0x1e, 0x4e, +0xa7, 0x13, 0x87, 0x0e, 0x1d, 0x52, 0xff, 0x80, +0x0c, 0xe7, 0x6f, 0x90, 0x88, 0x14, 0x14, 0x14, +0x60, 0xc8, 0x90, 0x21, 0x7e, 0xc3, 0xac, 0x26, +0x4d, 0x9a, 0x84, 0x59, 0xb3, 0x66, 0xc5, 0xc9, +0xaa, 0xe4, 0x46, 0x14, 0x45, 0x8c, 0x1a, 0x35, +0x0a, 0x17, 0x5d, 0x74, 0x11, 0x00, 0xdf, 0x7a, +0x00, 0x42, 0x08, 0xed, 0xd1, 0xa3, 0xc7, 0xb0, +0x8b, 0x2f, 0xbe, 0xb8, 0xbb, 0xa2, 0x28, 0x26, +0x6f, 0x04, 0x80, 0x3b, 0x7d, 0x93, 0x57, 0x08, +0x98, 0xb4, 0x42, 0x00, 0x80, 0x1a, 0x05, 0x00, +0x20, 0x78, 0x45, 0x83, 0x8f, 0x08, 0xf0, 0x16, +0x01, 0xfa, 0xec, 0x1d, 0xc0, 0x45, 0x00, 0x2f, +0x0a, 0xd4, 0x8a, 0x00, 0xa0, 0xee, 0xfb, 0x45, +0x2b, 0x02, 0x46, 0x8d, 0x1a, 0xe5, 0x73, 0x1d, +0x91, 0x18, 0x19, 0x4c, 0xa7, 0x4f, 0x9f, 0xee, +0xf3, 0xec, 0xfc, 0xfc, 0x7c, 0xf5, 0xe7, 0x60, +0x05, 0x81, 0x81, 0x52, 0x01, 0x16, 0x8b, 0x45, +0x31, 0x9b, 0xcd, 0x8a, 0xc5, 0x62, 0x91, 0x79, +0x3d, 0x00, 0x02, 0x74, 0x04, 0x68, 0x45, 0x80, +0x28, 0x8a, 0x1e, 0x93, 0xc9, 0xe4, 0x86, 0xb7, +0x26, 0x40, 0x14, 0x45, 0x37, 0x21, 0xc4, 0x4d, +0x08, 0x71, 0xef, 0xdd, 0xbb, 0x77, 0xe5, 0xc9, +0x93, 0x27, 0xd7, 0x06, 0x32, 0xfa, 0xf8, 0xf1, +0xe3, 0x78, 0xfd, 0xf5, 0xd7, 0xfd, 0xc2, 0x61, +0x06, 0x75, 0x18, 0x22, 0x20, 0x3c, 0xaa, 0xaa, +0xaa, 0x70, 0xf4, 0xe8, 0x51, 0xc3, 0xf9, 0x1b, +0x24, 0x24, 0x3f, 0xfd, 0xf4, 0x13, 0x06, 0x0f, +0x1e, 0xec, 0xb7, 0x9f, 0xc5, 0xa4, 0x49, 0x93, +0x30, 0x7b, 0xf6, 0xec, 0x38, 0x59, 0xd5, 0x34, +0xe0, 0x22, 0x40, 0x9b, 0x0e, 0xe0, 0x50, 0x4a, +0x69, 0x8f, 0x1e, 0x3d, 0x6e, 0xba, 0xf8, 0xe2, +0x8b, 0x73, 0x34, 0xa9, 0x00, 0xd5, 0xf9, 0x43, +0xb3, 0xfa, 0x57, 0x14, 0xc5, 0xe4, 0x75, 0xfe, +0xaa, 0x20, 0xe0, 0x62, 0x40, 0x93, 0x3e, 0x10, +0xbc, 0x93, 0x06, 0x85, 0xda, 0xda, 0x5a, 0xa1, +0xba, 0xba, 0x5a, 0xe0, 0x45, 0x81, 0x6e, 0xb7, +0x9b, 0xf0, 0xa2, 0xc0, 0xf2, 0xf2, 0x72, 0xea, +0x70, 0x38, 0xd4, 0x19, 0x01, 0x65, 0x65, 0x65, +0x24, 0x27, 0x27, 0x07, 0xc0, 0xaf, 0xdb, 0x07, +0x87, 0xb3, 0x6f, 0x40, 0x43, 0xa2, 0x00, 0x3e, +0x29, 0x80, 0x9c, 0x9c, 0x1c, 0x06, 0xd4, 0xa5, +0x02, 0xb2, 0xb2, 0xb2, 0xd4, 0x57, 0xd4, 0x17, +0x04, 0xa6, 0xa4, 0xa4, 0xb0, 0x9a, 0x9a, 0x1a, +0x35, 0x15, 0x10, 0xac, 0x1e, 0xc0, 0x6c, 0x36, +0xab, 0xce, 0x5f, 0xdb, 0x11, 0x40, 0x29, 0xf5, +0x68, 0x53, 0x00, 0xde, 0xae, 0x00, 0x55, 0x08, +0x78, 0xd3, 0x01, 0xee, 0xc2, 0xc2, 0xc2, 0xf5, +0x47, 0x8f, 0x1e, 0x5d, 0xea, 0xdd, 0x5c, 0xc8, +0x87, 0xb2, 0xb2, 0x32, 0xbc, 0xf6, 0xda, 0x6b, +0x38, 0x71, 0xe2, 0x44, 0xb8, 0xd7, 0x7a, 0x4e, +0x61, 0x88, 0x80, 0xf0, 0x28, 0x29, 0x29, 0x41, +0x61, 0x61, 0xa1, 0xe1, 0xfc, 0x0d, 0x12, 0x8a, +0xc2, 0xc2, 0x42, 0x0c, 0x1e, 0x3c, 0xd8, 0x6f, +0x4b, 0xeb, 0x27, 0x9e, 0x78, 0xc2, 0x70, 0xfe, +0x11, 0x42, 0x14, 0x45, 0xdc, 0x7e, 0xfb, 0xed, +0x41, 0x23, 0x01, 0x39, 0x39, 0x39, 0xb7, 0x64, +0x67, 0x67, 0xf7, 0x08, 0xe0, 0xfc, 0x79, 0x04, +0xc0, 0xa4, 0xed, 0x0a, 0xf0, 0x78, 0x3c, 0x6a, +0x3a, 0xc0, 0xed, 0x76, 0xfb, 0xa5, 0x02, 0x18, +0x63, 0x02, 0x8f, 0x00, 0x30, 0xc6, 0x04, 0xfd, +0xb4, 0x40, 0x9b, 0xcd, 0x46, 0xd2, 0xd2, 0xd2, +0x88, 0xc3, 0xe1, 0x20, 0x45, 0x45, 0x45, 0x54, +0x5b, 0x14, 0x08, 0xfc, 0x2a, 0x02, 0x80, 0xc8, +0x15, 0x05, 0x52, 0x00, 0xd0, 0x47, 0x01, 0x82, +0x15, 0x04, 0xa6, 0xa7, 0xa7, 0x33, 0xab, 0xd5, +0xca, 0xec, 0x76, 0xbb, 0xba, 0x4f, 0x80, 0x77, +0x16, 0x00, 0x4b, 0x49, 0x49, 0x51, 0x08, 0x21, +0xda, 0x55, 0xbf, 0x4f, 0x57, 0x00, 0x21, 0x44, +0x32, 0x9b, 0xcd, 0x7e, 0x91, 0x00, 0x68, 0xda, +0x03, 0xbd, 0x87, 0x5b, 0x5b, 0x18, 0xf8, 0xf3, +0xcf, 0x3f, 0x6f, 0x3b, 0x74, 0xe8, 0xd0, 0x07, +0x8c, 0x31, 0xbf, 0x59, 0xae, 0xd5, 0xd5, 0xd5, +0x98, 0x37, 0x6f, 0x1e, 0x0e, 0x1e, 0x3c, 0x18, +0xce, 0xb5, 0x9e, 0x73, 0x18, 0x22, 0x20, 0x3c, +0x1a, 0x12, 0x42, 0x33, 0x9c, 0xbf, 0x41, 0xb4, +0xd9, 0xbf, 0x7f, 0x3f, 0xae, 0xbd, 0xf6, 0x5a, +0xbf, 0x96, 0xd5, 0xe7, 0x9e, 0x7b, 0xce, 0xa8, +0xf6, 0x8f, 0x30, 0x5c, 0x04, 0x04, 0x8b, 0x04, +0xe4, 0xe4, 0xe4, 0xdc, 0xda, 0xad, 0x5b, 0xb7, +0x1e, 0x8a, 0xa2, 0x98, 0x08, 0x21, 0xaa, 0xf3, +0xe7, 0xb5, 0x01, 0x8c, 0x31, 0x35, 0x1d, 0xe0, +0xfd, 0xb7, 0x1a, 0x05, 0xd0, 0x16, 0x05, 0xf2, +0xc2, 0x40, 0x78, 0x85, 0x00, 0x77, 0xfc, 0x0e, +0x87, 0x83, 0xd6, 0xd6, 0xd6, 0xaa, 0x22, 0xa0, +0xb2, 0xb2, 0x92, 0x72, 0x11, 0xa0, 0xef, 0x0c, +0xe0, 0x76, 0x85, 0xea, 0x0c, 0x68, 0x28, 0x94, +0x0b, 0x05, 0x2e, 0x02, 0x78, 0x14, 0x20, 0x50, +0x2a, 0xa0, 0xac, 0xac, 0x8c, 0xd9, 0x6c, 0x36, +0x66, 0xb5, 0x5a, 0x59, 0x8b, 0x16, 0x2d, 0x14, +0x49, 0x92, 0x14, 0xb3, 0xd9, 0xac, 0xa6, 0x01, +0x78, 0x3d, 0x00, 0x8f, 0x06, 0x40, 0x93, 0x06, +0xb0, 0x58, 0x2c, 0x12, 0x21, 0x44, 0x6d, 0x0b, +0xf4, 0x3a, 0x78, 0x9f, 0x28, 0x80, 0x37, 0x05, +0xc0, 0x45, 0x80, 0x9b, 0x8b, 0x80, 0x13, 0x27, +0x4e, 0xe4, 0x17, 0x14, 0x14, 0x2c, 0x90, 0x65, +0xb9, 0x56, 0x7f, 0x01, 0x2e, 0x97, 0x0b, 0xf3, +0xe7, 0xcf, 0xc7, 0xee, 0xdd, 0xbb, 0x1b, 0x73, +0xfd, 0x4d, 0x1e, 0x43, 0x04, 0x44, 0x0e, 0xc3, +0xf9, 0x1b, 0x44, 0x9b, 0x83, 0x07, 0x0f, 0xe2, +0xda, 0x6b, 0xaf, 0x45, 0x71, 0x71, 0xb1, 0x7a, +0x9f, 0xd9, 0x6c, 0xc6, 0xdc, 0xb9, 0x73, 0xf1, +0xd8, 0x63, 0x8f, 0xc5, 0xd1, 0xb2, 0xd8, 0xc3, +0x18, 0xc3, 0xc7, 0x1f, 0x7f, 0x8c, 0x11, 0x23, +0x46, 0x44, 0xf5, 0x7d, 0x44, 0x51, 0xc4, 0xc8, +0x91, 0x23, 0x83, 0x46, 0x02, 0xba, 0x77, 0xef, +0xfe, 0xbb, 0x4b, 0x2e, 0xb9, 0xa4, 0xa7, 0xb7, +0x16, 0xc0, 0xc4, 0x6f, 0x65, 0x59, 0xf6, 0x11, +0x02, 0xfc, 0x96, 0xd7, 0x0c, 0x68, 0x3b, 0x04, +0x14, 0x45, 0x11, 0xdd, 0x6e, 0xb7, 0xe0, 0x72, +0xb9, 0x04, 0x97, 0xcb, 0xa5, 0x46, 0x03, 0x18, +0x63, 0x82, 0x28, 0x8a, 0xb4, 0xb6, 0xb6, 0x96, +0x5a, 0xad, 0x56, 0x62, 0xb3, 0xd9, 0x08, 0x17, +0x01, 0x8d, 0xe9, 0x0c, 0x68, 0x68, 0x14, 0x20, +0xe0, 0x54, 0x8c, 0x40, 0xa9, 0x00, 0x7d, 0x57, +0x80, 0xbe, 0x1e, 0x40, 0x9b, 0x06, 0xb0, 0xd9, +0x6c, 0x7e, 0x93, 0x01, 0xa1, 0xe9, 0x0c, 0xd0, +0xce, 0x06, 0xd0, 0xa7, 0x03, 0xf8, 0xea, 0x5f, +0x2f, 0x02, 0x4a, 0x4b, 0x4b, 0x0f, 0xef, 0xdd, +0xbb, 0xf7, 0x3f, 0x92, 0x24, 0xf9, 0xed, 0xee, +0x21, 0xcb, 0x32, 0x3e, 0xfc, 0xf0, 0x43, 0x63, +0x6a, 0x60, 0x10, 0x0c, 0x11, 0x70, 0xf6, 0x18, +0xce, 0xdf, 0x20, 0xda, 0xec, 0xdb, 0xb7, 0x0f, +0xd7, 0x5c, 0x73, 0x0d, 0x8a, 0x8a, 0x8a, 0xd4, +0xfb, 0xb2, 0xb3, 0xb3, 0xb1, 0x65, 0xcb, 0x16, +0xfc, 0xe5, 0x2f, 0x7f, 0x89, 0xa3, 0x65, 0xb1, +0x67, 0xc5, 0x8a, 0x15, 0xe8, 0xdd, 0xbb, 0x37, +0x46, 0x8f, 0x1e, 0x8d, 0x2e, 0x5d, 0xba, 0x44, +0xfd, 0xfd, 0xf4, 0x22, 0x40, 0x8b, 0x37, 0x12, +0x30, 0xfc, 0x92, 0x4b, 0x2e, 0xc9, 0xd5, 0x3a, +0x7f, 0xbe, 0xfa, 0x97, 0x24, 0x49, 0x3d, 0xa0, +0xab, 0x03, 0xe0, 0x87, 0x3e, 0x1d, 0xe0, 0xf1, +0x78, 0xa8, 0xc3, 0xe1, 0x50, 0x53, 0x02, 0xa2, +0x28, 0xd2, 0x9a, 0x9a, 0x1a, 0x5a, 0x5d, 0x5d, +0x4d, 0x6d, 0x36, 0x1b, 0x71, 0x3a, 0x9d, 0xc4, +0x7b, 0x5f, 0xd0, 0xce, 0x80, 0x70, 0x8a, 0x02, +0xeb, 0x13, 0x01, 0xd4, 0xfb, 0x20, 0x00, 0xa1, +0x53, 0x01, 0xfa, 0xae, 0x00, 0x7d, 0x3d, 0x00, +0xdf, 0x2c, 0x48, 0x5b, 0x14, 0x68, 0xb5, 0x5a, +0x7d, 0xda, 0x01, 0x29, 0xa5, 0x12, 0x21, 0x44, +0xe2, 0x22, 0xc0, 0x6c, 0x36, 0x7b, 0xa0, 0x13, +0x01, 0x94, 0x52, 0x77, 0x00, 0x11, 0xe0, 0xa6, +0x94, 0xba, 0x2b, 0x2b, 0x2b, 0x8b, 0x76, 0xed, +0xda, 0xf5, 0xb6, 0xcb, 0xe5, 0xf2, 0x4d, 0x8c, +0x79, 0x2f, 0x7a, 0xe5, 0xca, 0x95, 0xf8, 0xfa, +0xeb, 0xaf, 0x43, 0x5d, 0xef, 0x39, 0x8b, 0x21, +0x02, 0x1a, 0x8f, 0xe1, 0xfc, 0x0d, 0xa2, 0xc9, +0x96, 0x2d, 0x5b, 0xf0, 0xe0, 0x83, 0x0f, 0xe2, +0xd2, 0x4b, 0x2f, 0xc5, 0x89, 0x13, 0x27, 0x90, +0x92, 0x92, 0x02, 0x00, 0xb8, 0xf7, 0xde, 0x7b, +0xb1, 0x6b, 0xd7, 0x2e, 0xf4, 0xe9, 0xd3, 0x27, +0xce, 0x16, 0xc6, 0x8e, 0x35, 0x6b, 0xd6, 0x60, +0xc0, 0x80, 0x01, 0x18, 0x3e, 0x7c, 0x38, 0xf6, +0xec, 0xd9, 0x83, 0x3e, 0x7d, 0xfa, 0x60, 0xfa, +0xf4, 0xe9, 0x31, 0x79, 0x6f, 0x2e, 0x02, 0x3a, +0x75, 0xea, 0x04, 0x20, 0x60, 0x24, 0x60, 0xc4, +0x25, 0x97, 0x5c, 0x92, 0x2b, 0xcb, 0xb2, 0x49, +0x7b, 0x00, 0x50, 0x57, 0xff, 0x1e, 0x8f, 0xc7, +0xe4, 0xf1, 0x78, 0x4c, 0x92, 0x24, 0xf9, 0x45, +0x00, 0xf8, 0x2d, 0x74, 0x2d, 0x82, 0x35, 0x35, +0x35, 0x6a, 0x4a, 0x40, 0x14, 0x45, 0x5a, 0x5d, +0x5d, 0x4d, 0x45, 0x51, 0xa4, 0x4e, 0xa7, 0xd3, +0x6f, 0x46, 0x80, 0xb6, 0x33, 0x20, 0x54, 0x51, +0x60, 0xb8, 0xa8, 0x11, 0x80, 0xfa, 0x52, 0x01, +0xfa, 0x7a, 0x80, 0x8a, 0x8a, 0x0a, 0xd6, 0xb2, +0x65, 0x4b, 0xc5, 0x6e, 0xb7, 0xb3, 0xf4, 0xf4, +0x74, 0xc5, 0xe3, 0xf1, 0x28, 0xda, 0xa2, 0x40, +0x42, 0x88, 0xec, 0x2d, 0x06, 0xf4, 0x4b, 0x07, +0x70, 0x11, 0xc0, 0x53, 0x02, 0xde, 0xb9, 0x00, +0x52, 0x08, 0x11, 0xa0, 0x16, 0x06, 0x3a, 0x1c, +0x8e, 0xb2, 0x9d, 0x3b, 0x77, 0xfe, 0xc7, 0xe1, +0x70, 0xfc, 0x12, 0xe8, 0x82, 0x3e, 0xff, 0xfc, +0x73, 0x43, 0x04, 0x04, 0xc1, 0x10, 0x01, 0x0d, +0xc7, 0x70, 0xfe, 0x06, 0xd1, 0x62, 0xcd, 0x9a, +0x35, 0xe8, 0xde, 0xbd, 0x3b, 0x06, 0x0d, 0x1a, +0x84, 0xb9, 0x73, 0xe7, 0xa2, 0xaa, 0xaa, 0x0a, +0xcd, 0x9a, 0x35, 0xc3, 0xa0, 0x41, 0x83, 0xb0, +0x7e, 0xfd, 0x7a, 0x2c, 0x58, 0xb0, 0x00, 0x36, +0x9b, 0x2d, 0xde, 0x66, 0xc6, 0x84, 0x6f, 0xbf, +0xfd, 0x16, 0x57, 0x5e, 0x79, 0x25, 0x86, 0x0e, +0x1d, 0x8a, 0xed, 0xdb, 0xb7, 0x03, 0x00, 0x2e, +0xbc, 0xf0, 0x42, 0x7c, 0xf6, 0xd9, 0x67, 0x68, +0xd6, 0xac, 0x59, 0xcc, 0xec, 0x08, 0x23, 0x12, +0x70, 0xdb, 0x25, 0x97, 0x5c, 0xd2, 0x0b, 0x80, +0x59, 0x96, 0x65, 0x33, 0x7e, 0x8d, 0x06, 0x98, +0xf5, 0xf5, 0x00, 0x1e, 0x8f, 0xc7, 0xa4, 0xe9, +0x12, 0xf0, 0x73, 0xfe, 0xf0, 0xb6, 0x07, 0xf2, +0x71, 0xc1, 0xd5, 0xd5, 0xd5, 0x82, 0x5e, 0x04, +0x68, 0x3b, 0x03, 0x80, 0xba, 0xed, 0x83, 0xf5, +0x9d, 0x01, 0x40, 0xe3, 0x53, 0x01, 0x21, 0x07, +0x63, 0x6b, 0x53, 0x01, 0xfc, 0x3e, 0xbd, 0x08, +0xd0, 0x16, 0x05, 0xea, 0x45, 0x80, 0x2c, 0xcb, +0x0a, 0x21, 0x44, 0xb6, 0x5a, 0xad, 0x7c, 0x77, +0x40, 0x9f, 0xe1, 0x40, 0x94, 0x52, 0xbe, 0xfa, +0xe7, 0xce, 0xdf, 0x47, 0x04, 0xe8, 0x6a, 0x02, +0x54, 0x11, 0xe0, 0xf1, 0x78, 0xaa, 0xb6, 0x6f, +0xdf, 0xbe, 0xd0, 0x6e, 0xb7, 0xff, 0x14, 0xc8, +0x6e, 0x43, 0x04, 0x04, 0xc7, 0x10, 0x01, 0xe1, +0x63, 0x38, 0x7f, 0x83, 0x68, 0x50, 0x54, 0x54, +0x84, 0x3b, 0xee, 0xb8, 0x03, 0x43, 0x87, 0x0e, +0xf5, 0x9b, 0xe9, 0xff, 0xc2, 0x0b, 0x2f, 0x60, +0xfd, 0xfa, 0xf5, 0xb8, 0xf6, 0xda, 0x6b, 0xe3, +0x64, 0x5d, 0xf4, 0x39, 0x70, 0xe0, 0x00, 0xc6, +0x8d, 0x1b, 0x87, 0x57, 0x5e, 0x79, 0x05, 0xdf, +0x7e, 0xfb, 0x2d, 0xae, 0xbb, 0xee, 0x3a, 0x5c, +0x73, 0xcd, 0x35, 0x3e, 0x29, 0xdc, 0xcc, 0xcc, +0x4c, 0x7c, 0xf1, 0xc5, 0x17, 0x68, 0xdb, 0xb6, +0x6d, 0xcc, 0xed, 0x13, 0x45, 0x11, 0xb7, 0xdd, +0x76, 0x5b, 0xd0, 0x48, 0x40, 0x4e, 0x4e, 0xce, +0x6d, 0xdd, 0xba, 0x75, 0xeb, 0x85, 0x3a, 0xe7, +0x6f, 0x66, 0x8c, 0x99, 0xb5, 0xd1, 0x00, 0xad, +0x10, 0xf0, 0xee, 0x19, 0x20, 0x7a, 0x3c, 0x1e, +0xbe, 0xb9, 0x50, 0xc0, 0xf6, 0x40, 0x68, 0xf6, +0x0d, 0xe0, 0xe3, 0x82, 0xdd, 0x6e, 0x37, 0xd1, +0x76, 0x06, 0x84, 0x5b, 0x14, 0xd8, 0x90, 0x54, +0x00, 0x61, 0x8c, 0xf9, 0x9c, 0xe4, 0x4f, 0xd2, +0x86, 0x12, 0xf2, 0xf3, 0xf3, 0xc9, 0xa8, 0x51, +0xa3, 0x50, 0x50, 0x50, 0x40, 0x8a, 0x8a, 0x8a, +0x48, 0x45, 0x45, 0x05, 0xc9, 0xc9, 0xc9, 0x41, +0x59, 0x59, 0x19, 0x39, 0x79, 0xf2, 0x24, 0xcd, +0xc8, 0xc8, 0x20, 0x0e, 0x87, 0x83, 0x98, 0x4c, +0x26, 0x6a, 0xb3, 0xd9, 0x88, 0xdd, 0x6e, 0xa7, +0x82, 0x20, 0xd0, 0xda, 0xda, 0x5a, 0x75, 0x43, +0x04, 0x3e, 0x13, 0xd9, 0xe5, 0x72, 0x09, 0xd0, +0x0c, 0x4b, 0xd0, 0x14, 0x48, 0xa8, 0xfd, 0x94, +0x9a, 0x5b, 0x9e, 0x63, 0xe1, 0xea, 0xca, 0xcc, +0xd5, 0x96, 0xb7, 0x35, 0xc3, 0xd2, 0xbb, 0x77, +0xef, 0xe1, 0x19, 0x19, 0x19, 0x7d, 0x03, 0x5d, +0xdc, 0xb0, 0x61, 0xc3, 0x9a, 0xf4, 0x1f, 0xd2, +0xd9, 0xf0, 0xfd, 0xf7, 0xdf, 0xfb, 0x7d, 0xf9, +0x18, 0xfc, 0x8a, 0xe1, 0xfc, 0x0d, 0xa2, 0x41, +0x41, 0x41, 0x01, 0xae, 0xb8, 0xe2, 0x0a, 0x54, +0x54, 0x54, 0xf8, 0x9d, 0xa3, 0x94, 0xa2, 0xaa, +0xaa, 0xaa, 0xc9, 0xae, 0xfa, 0x8f, 0x1e, 0x3d, +0x8a, 0x99, 0x33, 0x67, 0xe2, 0xdd, 0x77, 0xdf, +0x45, 0xb3, 0x66, 0xcd, 0x70, 0xe6, 0x8c, 0x5f, +0x39, 0x17, 0x80, 0xba, 0x9d, 0x1b, 0xdf, 0x7d, +0xf7, 0x5d, 0x74, 0xec, 0xd8, 0x31, 0xc6, 0x16, +0xfa, 0x22, 0x49, 0x12, 0x96, 0x2d, 0x5b, 0x86, +0x9f, 0x7f, 0xfe, 0x59, 0xbd, 0x8f, 0xbb, 0x4a, +0xc6, 0x98, 0x52, 0x50, 0x50, 0xf0, 0xc9, 0xbe, +0x7d, 0xfb, 0x76, 0x03, 0x50, 0x53, 0xd5, 0x84, +0x10, 0x75, 0xe1, 0x4a, 0x29, 0x55, 0x6f, 0x29, +0xa5, 0x6a, 0xba, 0xdb, 0xbb, 0x98, 0x95, 0x2c, +0x16, 0x8b, 0xc4, 0x17, 0xc4, 0xde, 0xc1, 0x78, +0x32, 0x21, 0x44, 0xe6, 0x11, 0xf3, 0xd4, 0xd4, +0x54, 0x45, 0x96, 0x65, 0xc5, 0xe3, 0xf1, 0x28, +0xe9, 0xe9, 0xe9, 0x8a, 0xdd, 0x6e, 0x67, 0x2d, +0x5b, 0xb6, 0x54, 0x2a, 0x2a, 0x2a, 0x58, 0x5a, +0x5a, 0x1a, 0x3b, 0x79, 0xf2, 0x24, 0xcb, 0xc8, +0xc8, 0x60, 0x59, 0x59, 0x59, 0xac, 0x7b, 0xf7, +0xee, 0x6c, 0xc9, 0x92, 0x25, 0xea, 0xa2, 0x1d, +0xf8, 0x35, 0x9a, 0xaf, 0xb1, 0xd9, 0xaf, 0xdd, +0x89, 0xea, 0x4f, 0x04, 0xaa, 0x07, 0xe0, 0x53, +0x02, 0x79, 0x51, 0x60, 0x46, 0x46, 0x06, 0xe3, +0x45, 0x81, 0x36, 0x9b, 0x4d, 0xed, 0x0c, 0xf0, +0x78, 0x3c, 0x0a, 0xaf, 0x07, 0xe0, 0x91, 0x00, +0x78, 0xc7, 0x04, 0xf3, 0x8b, 0xe3, 0x43, 0x82, +0xf4, 0x91, 0x00, 0xb3, 0xd9, 0xec, 0x31, 0x99, +0x4c, 0x92, 0xc9, 0x64, 0xf2, 0xe8, 0x0b, 0x03, +0xbd, 0xbf, 0x58, 0x8f, 0xe6, 0x97, 0xeb, 0x16, +0x04, 0xc1, 0x4d, 0x29, 0x75, 0xed, 0xde, 0xbd, +0x7b, 0x79, 0x45, 0x45, 0xc5, 0x8e, 0x40, 0x1f, +0xa0, 0x11, 0x09, 0x08, 0x8e, 0x11, 0x09, 0x08, +0x4e, 0xb2, 0x3a, 0x7f, 0x97, 0xcb, 0x85, 0x8f, +0x3e, 0xfa, 0x08, 0xdb, 0xb6, 0x6d, 0x8b, 0xb7, +0x29, 0x06, 0x01, 0x38, 0x75, 0xea, 0x14, 0x6e, +0xba, 0xe9, 0xa6, 0x80, 0xce, 0x1f, 0xa8, 0x1b, +0x65, 0xdc, 0x14, 0x9d, 0xff, 0xc9, 0x93, 0x27, +0x31, 0x71, 0xe2, 0x44, 0x74, 0xed, 0xda, 0x15, +0xf3, 0xe7, 0xcf, 0x87, 0x24, 0x49, 0x01, 0x9d, +0xbf, 0xc5, 0x62, 0xc1, 0x4b, 0x2f, 0xbd, 0x84, +0x75, 0xeb, 0xd6, 0xc5, 0xdd, 0xf9, 0x03, 0x75, +0x91, 0x80, 0x11, 0x23, 0x46, 0xa0, 0x53, 0xa7, +0x4e, 0x3e, 0x51, 0x00, 0x40, 0x8d, 0x04, 0xdc, +0xde, 0xad, 0x5b, 0xb7, 0x5e, 0xde, 0xc5, 0xa8, +0x4f, 0x77, 0x80, 0x76, 0x5a, 0x60, 0xb0, 0xce, +0x00, 0x97, 0xcb, 0x25, 0xf2, 0x16, 0x41, 0xde, +0x19, 0xc0, 0x5b, 0x04, 0xf5, 0x9d, 0x01, 0x4e, +0xa7, 0x93, 0x68, 0x3b, 0x03, 0x80, 0xba, 0xef, +0x29, 0x20, 0x74, 0x2a, 0x40, 0x4b, 0xa0, 0x28, +0x40, 0xc0, 0x14, 0x40, 0xb8, 0x45, 0x81, 0x27, +0x4f, 0x9e, 0xf4, 0x29, 0x0a, 0xd4, 0xb7, 0x07, +0xea, 0xf7, 0x0c, 0xa8, 0x4f, 0x04, 0xf0, 0x74, +0x00, 0x74, 0x85, 0x81, 0x9a, 0x16, 0x41, 0x37, +0xbc, 0xe3, 0x82, 0x51, 0x37, 0x34, 0x88, 0x8b, +0x80, 0x95, 0x86, 0x08, 0x68, 0x38, 0x86, 0x08, +0xf0, 0x27, 0x19, 0x9d, 0xff, 0xe1, 0xc3, 0x87, +0xf1, 0xe8, 0xa3, 0x8f, 0xa2, 0x7d, 0xfb, 0xf6, +0x18, 0x33, 0x66, 0x0c, 0x2e, 0xbd, 0xf4, 0x52, +0x5c, 0x74, 0xd1, 0x45, 0x98, 0x32, 0x65, 0x0a, +0x36, 0x6c, 0xd8, 0x60, 0x6c, 0xa0, 0x95, 0x20, +0xfc, 0xf6, 0xb7, 0xbf, 0xc5, 0x2f, 0xbf, 0x04, +0x2c, 0x5d, 0x02, 0x00, 0x64, 0x65, 0x65, 0xc5, +0xd0, 0x9a, 0xe8, 0x53, 0x5e, 0x5e, 0x8e, 0x29, +0x53, 0xa6, 0xa0, 0x73, 0xe7, 0xce, 0x78, 0xed, +0xb5, 0xd7, 0x82, 0xee, 0xe1, 0x22, 0x08, 0x02, +0xc6, 0x8d, 0x1b, 0x87, 0xc2, 0xc2, 0x42, 0x4c, +0x9e, 0x3c, 0xd9, 0x6f, 0x46, 0x7f, 0x3c, 0xd1, +0x8a, 0x00, 0x2d, 0x5e, 0x41, 0x40, 0xbb, 0x77, +0xef, 0x3e, 0x2a, 0x27, 0x27, 0xa7, 0xb7, 0x37, +0x15, 0xe0, 0x93, 0x06, 0x90, 0x24, 0xc9, 0x27, +0x1d, 0xa0, 0x9d, 0x11, 0x00, 0x6f, 0xd8, 0x5f, +0x5b, 0x17, 0xe0, 0xf1, 0x78, 0xa8, 0xdb, 0xed, +0xa6, 0x2e, 0x97, 0x8b, 0x0a, 0x82, 0x40, 0x53, +0x52, 0x52, 0x08, 0xef, 0x0c, 0xe0, 0x45, 0x81, +0xbc, 0x1e, 0x20, 0x54, 0x2a, 0x80, 0x13, 0xce, +0xa8, 0x60, 0x55, 0x00, 0x04, 0x0a, 0x0f, 0x68, +0x09, 0x54, 0x14, 0x18, 0x48, 0x04, 0x54, 0x55, +0x55, 0xf9, 0x89, 0x00, 0x4a, 0xa9, 0xdc, 0x10, +0x11, 0x10, 0xa8, 0x3b, 0x20, 0xc0, 0xa0, 0x20, +0x1f, 0x11, 0x90, 0x97, 0x97, 0xb7, 0xc2, 0x10, +0x01, 0x0d, 0xc7, 0x10, 0x01, 0xbf, 0x92, 0x6c, +0xce, 0x7f, 0xf5, 0xea, 0xd5, 0xb8, 0xe9, 0xa6, +0x9b, 0xd0, 0xa5, 0x4b, 0x17, 0xbc, 0xf4, 0xd2, +0x4b, 0x3e, 0x9b, 0xc5, 0xfc, 0xfc, 0xf3, 0xcf, +0x98, 0x35, 0x6b, 0x16, 0xae, 0xba, 0xea, 0x2a, +0xb4, 0x6c, 0xd9, 0x12, 0xa3, 0x47, 0x8f, 0xc6, +0xbb, 0xef, 0xbe, 0xeb, 0x37, 0x56, 0xd6, 0x20, +0x36, 0x94, 0x94, 0x94, 0xa8, 0xc5, 0x6d, 0xc1, +0xe8, 0xda, 0xb5, 0x6b, 0x8c, 0xac, 0x89, 0x2e, +0x76, 0xbb, 0x1d, 0x33, 0x66, 0xcc, 0x40, 0xa7, +0x4e, 0x9d, 0x30, 0x6b, 0xd6, 0x2c, 0xd4, 0xd6, +0xfa, 0x8d, 0x6f, 0x01, 0x50, 0xe7, 0x44, 0x47, +0x8f, 0x1e, 0x8d, 0x82, 0x82, 0x02, 0xbc, 0xf3, +0xce, 0x3b, 0xb8, 0xe0, 0x82, 0x0b, 0x62, 0x6c, +0x69, 0x78, 0x88, 0xa2, 0x88, 0xe1, 0xc3, 0x87, +0x87, 0x8a, 0x04, 0x8c, 0xea, 0xd1, 0xa3, 0x47, +0x6f, 0x45, 0x51, 0xcc, 0x8c, 0x31, 0xb3, 0x24, +0x49, 0x66, 0xd4, 0x75, 0x06, 0x98, 0x24, 0x49, +0x32, 0x69, 0x37, 0x11, 0xaa, 0xaf, 0x3d, 0x10, +0x9a, 0x5a, 0x00, 0x7d, 0x3d, 0x80, 0xcb, 0xe5, +0x0a, 0x58, 0x0f, 0xa0, 0x6f, 0x0d, 0x6c, 0x48, +0x14, 0xc0, 0x27, 0x02, 0x10, 0x4e, 0x2a, 0x00, +0x08, 0x4f, 0x04, 0xf0, 0x19, 0x01, 0x7c, 0xe3, +0xa0, 0x86, 0x88, 0x00, 0xef, 0xad, 0x9f, 0x08, +0xf0, 0x8e, 0x0c, 0xf6, 0x49, 0x05, 0x68, 0x5b, +0x05, 0x0d, 0x11, 0xd0, 0x38, 0x0c, 0x11, 0x90, +0x5c, 0xce, 0x7f, 0xf5, 0xea, 0xd5, 0xe8, 0xd7, +0xaf, 0x1f, 0x6e, 0xb9, 0xe5, 0x16, 0x7c, 0xfe, +0xf9, 0xe7, 0xf5, 0x4e, 0x32, 0x3c, 0x73, 0xe6, +0x0c, 0x3e, 0xfe, 0xf8, 0x63, 0xcc, 0x9b, 0x37, +0x0f, 0x55, 0x55, 0x55, 0x31, 0xb2, 0xd2, 0x40, +0x4b, 0x38, 0xd3, 0x4a, 0xfb, 0xf5, 0xeb, 0x17, +0x03, 0x4b, 0xa2, 0x4b, 0x49, 0x49, 0x09, 0x3a, +0x75, 0xea, 0x84, 0xa7, 0x9e, 0x7a, 0x2a, 0xe4, +0xff, 0xb5, 0x5b, 0x6f, 0xbd, 0x15, 0xbb, 0x77, +0xef, 0xc6, 0xe2, 0xc5, 0x8b, 0x91, 0x9d, 0x9d, +0x1d, 0x43, 0x0b, 0x1b, 0x07, 0x17, 0x01, 0x17, +0x5e, 0x78, 0xa1, 0xcf, 0xfd, 0xfa, 0x48, 0x40, +0xa0, 0x39, 0x01, 0xde, 0x68, 0x80, 0xe8, 0xf1, +0x78, 0x7c, 0x44, 0x00, 0x02, 0x6c, 0x1c, 0x44, +0x29, 0x55, 0xeb, 0xe6, 0xb8, 0x10, 0xe0, 0x93, +0x02, 0x83, 0x0d, 0x09, 0x0a, 0x95, 0x0a, 0xa8, +0x2f, 0x0a, 0xe0, 0x97, 0x02, 0x68, 0xac, 0x08, +0xd0, 0xcf, 0x08, 0x90, 0x24, 0x49, 0xd1, 0x0e, +0x0a, 0x6a, 0x68, 0x24, 0x80, 0xcf, 0x09, 0x20, +0x01, 0x26, 0x06, 0x12, 0xef, 0xee, 0x81, 0xa2, +0x28, 0xaa, 0x29, 0x01, 0xaf, 0x08, 0x30, 0x22, +0x01, 0x8d, 0xe4, 0x5c, 0x16, 0x01, 0xc9, 0xe2, +0xfc, 0x8f, 0x1c, 0x39, 0x82, 0x81, 0x03, 0x07, +0xe2, 0x96, 0x5b, 0x6e, 0xc1, 0xae, 0x5d, 0x01, +0x77, 0xcc, 0x0e, 0x88, 0x28, 0x8a, 0x98, 0x39, +0x73, 0x26, 0x36, 0x6e, 0xdc, 0x18, 0x93, 0xa1, +0x2a, 0x06, 0xfe, 0x1c, 0x3a, 0x74, 0xa8, 0xde, +0xc7, 0x34, 0x05, 0x01, 0xb0, 0x7a, 0xf5, 0x6a, +0xbf, 0x6d, 0x8b, 0xf5, 0x2c, 0x59, 0xb2, 0x04, +0x2b, 0x56, 0xac, 0x40, 0x6e, 0x6e, 0x6e, 0x8c, +0xac, 0x8a, 0x0c, 0x5a, 0x11, 0x10, 0x24, 0x12, +0x70, 0x47, 0x8f, 0x1e, 0x3d, 0x7a, 0x73, 0xe7, +0xaf, 0xad, 0x05, 0xe0, 0x11, 0x00, 0x3e, 0x23, +0x40, 0xbb, 0x8d, 0xb0, 0x7e, 0x64, 0xb0, 0xc7, +0xe3, 0xa1, 0xfa, 0x7a, 0x00, 0x8f, 0xc7, 0x43, +0xb4, 0x43, 0x82, 0xf8, 0x7c, 0x00, 0xa0, 0xae, +0x35, 0x50, 0x9b, 0x0a, 0xd0, 0x0f, 0x08, 0xd2, +0xa3, 0x8d, 0x02, 0x04, 0xac, 0x01, 0x68, 0x8c, +0x08, 0xd0, 0xb7, 0x07, 0xea, 0x45, 0x40, 0x63, +0xd2, 0x01, 0xde, 0xb6, 0x40, 0x9f, 0xb1, 0xc1, +0x94, 0x52, 0xb7, 0xc9, 0x64, 0x72, 0x53, 0x4a, +0xdd, 0xf0, 0x8a, 0x00, 0x1e, 0x09, 0xf0, 0x8a, +0x04, 0x43, 0x04, 0x34, 0x92, 0x73, 0x51, 0x04, +0x24, 0x8b, 0xf3, 0x2f, 0x29, 0x29, 0xc1, 0x8d, +0x37, 0xde, 0x88, 0xad, 0x5b, 0xb7, 0x36, 0xe8, +0x79, 0x97, 0x5c, 0x72, 0x09, 0xb6, 0x6c, 0xd9, +0x82, 0x27, 0x9f, 0x7c, 0x12, 0x82, 0x20, 0x44, +0xc9, 0x3a, 0x83, 0xfa, 0xa8, 0x2f, 0x02, 0x40, +0x08, 0x41, 0xdf, 0xbe, 0x01, 0x9b, 0x99, 0x92, +0x8a, 0xbc, 0xbc, 0xbc, 0x90, 0xe7, 0x4d, 0x26, +0x13, 0x86, 0x0e, 0x1d, 0x1a, 0x23, 0x6b, 0x22, +0x4f, 0x18, 0x91, 0x80, 0xd1, 0x3d, 0x7a, 0xf4, +0xe8, 0xc3, 0x23, 0x01, 0xf0, 0x46, 0x03, 0xe0, +0xad, 0x0b, 0x40, 0x80, 0x3d, 0x03, 0x02, 0xa5, +0x01, 0xf4, 0xf5, 0x00, 0xfa, 0x54, 0x40, 0x6d, +0x6d, 0x6d, 0xd0, 0x54, 0x40, 0x43, 0xa2, 0x00, +0x41, 0xe7, 0x00, 0x44, 0x4b, 0x04, 0x04, 0x4b, +0x07, 0x68, 0xe7, 0x04, 0xe8, 0x27, 0x06, 0xea, +0x45, 0x00, 0x8f, 0x04, 0x70, 0x11, 0xc0, 0x6b, +0x02, 0xf8, 0xe8, 0x60, 0x43, 0x04, 0x34, 0x9e, +0x73, 0x49, 0x04, 0x24, 0x8b, 0xf3, 0x77, 0x3a, +0x9d, 0xb8, 0xf9, 0xe6, 0x9b, 0xb1, 0x7f, 0xff, +0xfe, 0xb0, 0x9f, 0x43, 0x08, 0xc1, 0xc4, 0x89, +0x13, 0xb1, 0x6b, 0xd7, 0xae, 0x26, 0xb1, 0xb2, +0x4c, 0x76, 0x0e, 0x1c, 0x38, 0x10, 0xf2, 0xfc, +0x35, 0xd7, 0x5c, 0x83, 0xe6, 0xcd, 0x9b, 0xc7, +0xc8, 0x9a, 0xe8, 0x51, 0xdf, 0x75, 0x0e, 0x1c, +0x38, 0x30, 0xa6, 0x83, 0x7d, 0xa2, 0x81, 0x28, +0x8a, 0xf8, 0xdd, 0xef, 0x7e, 0x17, 0x2a, 0x12, +0x30, 0xba, 0x5b, 0xb7, 0x6e, 0xbd, 0xf4, 0xe3, +0x82, 0xb5, 0x91, 0x00, 0xe8, 0x8a, 0x02, 0x03, +0x09, 0x01, 0x6d, 0x1a, 0x40, 0x9f, 0x0a, 0x70, +0x3a, 0x9d, 0xa4, 0x4d, 0x9b, 0x36, 0xa8, 0xa9, +0xa9, 0x21, 0x5c, 0x8c, 0xf0, 0x54, 0x00, 0x50, +0x7f, 0x14, 0x80, 0x13, 0x72, 0x10, 0x50, 0x24, +0x45, 0x00, 0x2f, 0x0c, 0xd4, 0xa6, 0x03, 0xd2, +0xd2, 0xd2, 0xd4, 0x16, 0x41, 0xed, 0xb0, 0x20, +0x04, 0x18, 0x1b, 0x4c, 0x02, 0x0c, 0x0b, 0xe2, +0x22, 0x40, 0x5b, 0x18, 0xa8, 0xe9, 0xc7, 0x34, +0x44, 0x40, 0x23, 0x39, 0x17, 0x44, 0x40, 0xb2, +0x38, 0x7f, 0xa0, 0x2e, 0x64, 0x5a, 0x5f, 0x01, +0x99, 0x96, 0xf6, 0xed, 0xdb, 0x63, 0xcd, 0x9a, +0x35, 0xf8, 0xf7, 0xbf, 0xff, 0x0d, 0xab, 0xd5, +0x1a, 0x45, 0xcb, 0x0c, 0xc2, 0xa5, 0xbe, 0xcf, +0xef, 0x9e, 0x7b, 0xee, 0x89, 0x91, 0x25, 0x91, +0xc7, 0xe5, 0x72, 0xa9, 0xff, 0xae, 0x4f, 0x00, +0xdc, 0x70, 0xc3, 0x0d, 0xd1, 0x36, 0x27, 0x26, +0x68, 0x45, 0x00, 0x87, 0x8b, 0x01, 0x42, 0x08, +0xed, 0xd9, 0xb3, 0xe7, 0x98, 0xce, 0x9d, 0x3b, +0x67, 0xf3, 0xf6, 0x40, 0x42, 0x88, 0xe8, 0xdd, +0x52, 0x58, 0x84, 0x57, 0x00, 0x78, 0x0f, 0xbf, +0xd5, 0x3f, 0xd5, 0x61, 0x36, 0x9b, 0x89, 0xc5, +0x62, 0x21, 0xfa, 0x54, 0x00, 0x8f, 0x02, 0x54, +0x56, 0x56, 0x06, 0x8c, 0x02, 0x68, 0x0b, 0x02, +0x83, 0x45, 0x01, 0x42, 0x0a, 0x00, 0xef, 0x13, +0x22, 0x22, 0x02, 0x02, 0x75, 0x07, 0xc8, 0xb2, +0xac, 0xe8, 0x45, 0x00, 0x4f, 0x07, 0x40, 0x23, +0x02, 0x04, 0x41, 0xf0, 0x58, 0x2c, 0x16, 0x4f, +0xb0, 0x48, 0x80, 0xbe, 0x3b, 0x80, 0xdf, 0x1a, +0x22, 0xa0, 0xf1, 0x34, 0x65, 0x11, 0x90, 0x4c, +0xce, 0x1f, 0x00, 0x16, 0x2e, 0x5c, 0x18, 0xf4, +0x9c, 0x20, 0x08, 0x38, 0x7c, 0xf8, 0x30, 0xde, +0x7d, 0xf7, 0x5d, 0xdc, 0x7e, 0xfb, 0xed, 0xb8, +0xfb, 0xee, 0xbb, 0xb1, 0x77, 0xef, 0x5e, 0x5c, +0x7f, 0xfd, 0xf5, 0xb1, 0x33, 0xd0, 0x20, 0x24, +0x25, 0x25, 0x25, 0x21, 0x1d, 0xa3, 0xcd, 0x66, +0xc3, 0xc8, 0x91, 0x23, 0x63, 0x68, 0xd1, 0xd9, +0x73, 0xfa, 0xf4, 0x69, 0xcc, 0x9b, 0x37, 0x0f, +0x43, 0x86, 0x0c, 0x41, 0xfb, 0xf6, 0xed, 0x51, +0x53, 0x53, 0x03, 0x59, 0x96, 0x7d, 0x86, 0xe6, +0x04, 0xa2, 0xa9, 0x08, 0x00, 0xa0, 0x4e, 0x04, +0xdc, 0x7a, 0xeb, 0xad, 0x6a, 0x24, 0x40, 0x0b, +0x21, 0x44, 0xec, 0xdb, 0xb7, 0xef, 0x1f, 0x3a, +0x74, 0xe8, 0x70, 0x01, 0x00, 0x51, 0x1f, 0x0d, +0xd0, 0xd6, 0x02, 0x78, 0x0f, 0x81, 0x1f, 0xda, +0xd9, 0x00, 0x3c, 0x15, 0xe0, 0x74, 0x3a, 0xa9, +0x24, 0x49, 0x24, 0x25, 0x25, 0x85, 0x58, 0xad, +0x56, 0xa2, 0xdd, 0x3a, 0x38, 0xd0, 0x6c, 0x80, +0xfa, 0xe0, 0x75, 0x00, 0x24, 0xdc, 0xbd, 0xd0, +0xb5, 0x85, 0x03, 0xc1, 0xa6, 0x05, 0x7a, 0x0d, +0x20, 0x40, 0x5d, 0x45, 0x62, 0x56, 0x56, 0x16, +0x29, 0x2b, 0x2b, 0x23, 0x76, 0xbb, 0x9d, 0x64, +0x64, 0x64, 0x90, 0x9a, 0x9a, 0x1a, 0x72, 0xde, +0x79, 0xe7, 0x91, 0xf2, 0xf2, 0x72, 0x2a, 0x8a, +0x22, 0x75, 0xbb, 0xdd, 0x84, 0x87, 0x39, 0xec, +0x76, 0xbb, 0x3a, 0x31, 0xd0, 0xed, 0x76, 0x53, +0x68, 0x2a, 0x24, 0xf9, 0xad, 0xdb, 0xed, 0xe6, +0x33, 0x95, 0x4d, 0x00, 0x44, 0xef, 0x9c, 0x65, +0x7d, 0x88, 0x45, 0x9d, 0x16, 0xa8, 0x99, 0xd1, +0x6c, 0xe9, 0xd5, 0xab, 0xd7, 0xef, 0x32, 0x32, +0x32, 0x7e, 0x13, 0xe8, 0xda, 0x8c, 0x89, 0x81, +0xc1, 0x69, 0x6a, 0x13, 0x03, 0x93, 0xcd, 0xf9, +0x1f, 0x3d, 0x7a, 0x14, 0x17, 0x5e, 0x78, 0x61, +0xd0, 0x2a, 0xde, 0xde, 0xbd, 0x7b, 0xe3, 0x87, +0x1f, 0x7e, 0x88, 0xb1, 0x55, 0x06, 0x0d, 0x61, +0xe5, 0xca, 0x95, 0xf8, 0xdd, 0xef, 0x7e, 0x17, +0xf0, 0x5c, 0x66, 0x66, 0x26, 0x66, 0xcc, 0x98, +0x81, 0x09, 0x13, 0x26, 0xc4, 0xd8, 0xaa, 0x86, +0x73, 0xfa, 0xf4, 0x69, 0x2c, 0x5d, 0xba, 0x14, +0x4b, 0x96, 0x2c, 0xc1, 0xb7, 0xdf, 0x7e, 0xeb, +0x33, 0x5f, 0x62, 0xf2, 0xe4, 0xc9, 0xb8, 0xff, +0xfe, 0xfb, 0x43, 0x56, 0xf4, 0xb7, 0x68, 0xd1, +0x02, 0x25, 0x25, 0x25, 0xa8, 0x2b, 0x74, 0x6f, +0x3a, 0x48, 0x92, 0x84, 0x95, 0x2b, 0x57, 0xaa, +0x33, 0x1e, 0xb4, 0x62, 0x40, 0x92, 0xa4, 0xea, +0xef, 0xbe, 0xfb, 0xee, 0xf5, 0xd2, 0xd2, 0xd2, +0x62, 0x6f, 0xf7, 0x9a, 0x8b, 0x47, 0xad, 0xbd, +0x13, 0x02, 0xf9, 0xe1, 0xe1, 0x87, 0x20, 0x08, +0x1e, 0x41, 0x10, 0x3c, 0x3c, 0x1d, 0xae, 0x9d, +0x12, 0xc8, 0x0f, 0xed, 0x2e, 0xbc, 0x1e, 0x8f, +0x47, 0xd1, 0x4e, 0x08, 0x74, 0xb9, 0x5c, 0x0a, +0x50, 0xb7, 0x18, 0xef, 0xde, 0xbd, 0x3b, 0x2b, +0x28, 0x28, 0x60, 0x80, 0xef, 0xc2, 0x9d, 0x10, +0x02, 0xc6, 0x18, 0x0b, 0xfb, 0x93, 0x08, 0x37, +0x12, 0xc0, 0xf7, 0x0d, 0x08, 0x27, 0x12, 0x90, +0x96, 0x96, 0xa6, 0x6e, 0x21, 0x0c, 0xcd, 0xc4, +0x40, 0xb3, 0xd9, 0xac, 0x40, 0xb7, 0x8b, 0xa0, +0x77, 0x5a, 0x60, 0x58, 0x2d, 0x82, 0x3c, 0x0d, +0x60, 0xa4, 0x03, 0xce, 0x9e, 0xa6, 0x14, 0x09, +0x48, 0x36, 0xe7, 0x0f, 0x00, 0xef, 0xbf, 0xff, +0x7e, 0xc8, 0x36, 0xbf, 0x41, 0x83, 0x06, 0xc5, +0xd0, 0x1a, 0x83, 0xc6, 0xb0, 0x76, 0xed, 0x5a, +0xbf, 0xfb, 0xba, 0x74, 0xe9, 0x82, 0xd7, 0x5f, +0x7f, 0x1d, 0xc7, 0x8e, 0x1d, 0x4b, 0x68, 0xe7, +0x5f, 0x55, 0x55, 0xa5, 0xae, 0xf4, 0xb3, 0xb2, +0xb2, 0xf0, 0xc0, 0x03, 0x0f, 0x60, 0xfd, 0xfa, +0xf5, 0x7e, 0xc3, 0xa5, 0xfe, 0xf9, 0xcf, 0x7f, +0xe2, 0x1f, 0xff, 0xf8, 0x47, 0xc8, 0xd7, 0xba, +0xe3, 0x8e, 0x3b, 0x9a, 0x9c, 0xf3, 0x07, 0x7e, +0x8d, 0x04, 0x64, 0x65, 0x65, 0xf9, 0x45, 0x02, +0x4c, 0x26, 0x53, 0xb3, 0x2b, 0xaf, 0xbc, 0xf2, +0xbe, 0xf4, 0xf4, 0xf4, 0x16, 0xf0, 0x46, 0x02, +0x02, 0xa4, 0x01, 0x02, 0xa6, 0x02, 0xdc, 0x6e, +0xb7, 0x20, 0x49, 0x12, 0x75, 0xb9, 0x5c, 0x82, +0xdb, 0xed, 0xa6, 0x92, 0x24, 0x11, 0x49, 0x92, +0x48, 0xa0, 0xd9, 0x00, 0xda, 0x5a, 0x00, 0x6d, +0x47, 0x00, 0xe0, 0x5f, 0x0c, 0xc8, 0x21, 0x84, +0x90, 0x06, 0x7d, 0x1a, 0x0d, 0x19, 0x19, 0xec, +0x35, 0x24, 0xa4, 0x08, 0xa8, 0xa9, 0xa9, 0x61, +0x5c, 0x04, 0xf0, 0xb1, 0xc1, 0x5c, 0xe1, 0x68, +0xb7, 0x12, 0xd6, 0x0a, 0x81, 0x30, 0x45, 0x80, +0x87, 0x17, 0x04, 0xea, 0x44, 0x80, 0x31, 0x36, +0xb8, 0x11, 0x34, 0x05, 0x11, 0x90, 0x8c, 0xce, +0x1f, 0x00, 0xd6, 0xad, 0x5b, 0x17, 0xf2, 0xfc, +0x65, 0x97, 0x5d, 0x16, 0x23, 0x4b, 0x0c, 0x1a, +0x83, 0xdd, 0x6e, 0xc7, 0x7b, 0xef, 0xbd, 0xa7, +0xfe, 0x3c, 0x68, 0xd0, 0x20, 0x7c, 0xfa, 0xe9, +0xa7, 0x28, 0x2c, 0x2c, 0xc4, 0x83, 0x0f, 0x3e, +0x98, 0xf0, 0x35, 0x1a, 0x7f, 0xfc, 0xe3, 0x1f, +0x83, 0x3a, 0x7d, 0x2d, 0x8a, 0xa2, 0x60, 0xf1, +0xe2, 0xc5, 0x41, 0xcf, 0x67, 0x64, 0x64, 0xe0, +0xe9, 0xa7, 0x9f, 0x8e, 0x86, 0x89, 0x09, 0x01, +0xef, 0x0e, 0xc8, 0xcc, 0xcc, 0x54, 0xef, 0xe3, +0x3e, 0xd2, 0x6c, 0x36, 0xb7, 0xb8, 0xfa, 0xea, +0xab, 0xef, 0xb3, 0x5a, 0xad, 0x69, 0x84, 0x10, +0x11, 0x75, 0x9d, 0x01, 0xa2, 0x77, 0x40, 0x90, +0xc8, 0x18, 0x13, 0x25, 0x49, 0x12, 0x09, 0x21, +0x82, 0x24, 0x49, 0x82, 0x2c, 0xcb, 0xd4, 0xe3, +0xf1, 0xa8, 0x33, 0x01, 0x28, 0xa5, 0x6a, 0x27, +0x80, 0x20, 0x08, 0x54, 0x92, 0x24, 0xe2, 0xf1, +0x78, 0xd4, 0xcd, 0x82, 0x00, 0x40, 0x5b, 0x0b, +0xa0, 0xb5, 0x8b, 0x77, 0x04, 0x04, 0xa3, 0xc1, +0x72, 0x2c, 0x5c, 0x11, 0x10, 0x6e, 0x4d, 0x80, +0x5e, 0x04, 0x68, 0xb7, 0x12, 0xe6, 0x22, 0x00, +0xba, 0x68, 0x80, 0x56, 0x04, 0x04, 0x6a, 0x11, +0x0c, 0x21, 0x02, 0xdc, 0x86, 0x08, 0x68, 0x1c, +0xc9, 0x2c, 0x02, 0x92, 0xd5, 0xf9, 0x33, 0xc6, +0xb0, 0x73, 0xe7, 0xce, 0x90, 0x8f, 0x31, 0x04, +0x40, 0x62, 0xb3, 0x60, 0xc1, 0x02, 0xd4, 0xd4, +0xd4, 0x60, 0xc4, 0x88, 0x11, 0xd8, 0xb4, 0x69, +0x13, 0xbe, 0xff, 0xfe, 0x7b, 0xdc, 0x76, 0xdb, +0x6d, 0x49, 0xb1, 0x12, 0x3e, 0x70, 0xe0, 0x00, +0x3e, 0xfd, 0xf4, 0xd3, 0x46, 0x3f, 0x9f, 0x52, +0x8a, 0xec, 0xec, 0x6c, 0x50, 0x4a, 0xf1, 0xcc, +0x33, 0xcf, 0xa0, 0x65, 0xcb, 0x96, 0x11, 0xb4, +0x2e, 0xf1, 0xb0, 0x58, 0x2c, 0xb8, 0xed, 0xb6, +0xdb, 0x90, 0x9e, 0x9e, 0xee, 0x17, 0x09, 0x48, +0x4d, 0x4d, 0x6d, 0x37, 0x78, 0xf0, 0xe0, 0x3f, +0x0b, 0x82, 0x60, 0x85, 0x66, 0xe5, 0xaf, 0x28, +0x8a, 0xa0, 0x28, 0x8a, 0xc0, 0x9d, 0x3f, 0xef, +0x04, 0xd0, 0x17, 0x02, 0xf2, 0x5a, 0x00, 0x49, +0x92, 0x88, 0xc5, 0x62, 0x51, 0x6b, 0x01, 0x00, +0x40, 0xdf, 0x11, 0xc0, 0xe7, 0x02, 0x68, 0xa7, +0x03, 0x06, 0xa3, 0x51, 0xff, 0x0b, 0x23, 0x5d, +0x18, 0x78, 0x36, 0x22, 0x40, 0x5b, 0x18, 0x08, +0x40, 0x22, 0x84, 0x78, 0x0c, 0x11, 0x10, 0x1d, +0x92, 0x51, 0x04, 0x24, 0xab, 0xf3, 0x07, 0x80, +0xc2, 0xc2, 0xc2, 0x90, 0xd3, 0xd4, 0xda, 0xb4, +0x69, 0x13, 0x70, 0xdf, 0x72, 0x83, 0xc4, 0x41, +0x96, 0x65, 0x14, 0x16, 0x16, 0x62, 0xe9, 0xd2, +0xa5, 0x49, 0x27, 0xd6, 0x2a, 0x2b, 0x2b, 0xcf, +0xea, 0xf9, 0x2d, 0x5a, 0xb4, 0xc0, 0xe1, 0xc3, +0x87, 0x91, 0x9b, 0x9b, 0x8b, 0xf1, 0xe3, 0xc7, +0x47, 0xc8, 0xaa, 0xc4, 0xc6, 0x66, 0xb3, 0x61, +0xc4, 0x88, 0x11, 0x3e, 0x91, 0x1d, 0xee, 0x23, +0x9b, 0x35, 0x6b, 0xd6, 0x69, 0xf0, 0xe0, 0xc1, +0x63, 0x65, 0x59, 0xe6, 0xdb, 0x01, 0xfb, 0x1c, +0x84, 0x10, 0x81, 0x1f, 0x92, 0x24, 0x09, 0x1e, +0x8f, 0x47, 0x90, 0x24, 0x89, 0x4a, 0x92, 0x44, +0xb5, 0x51, 0x00, 0xa7, 0xd3, 0x49, 0x1d, 0x0e, +0x07, 0xd5, 0x46, 0x01, 0x6a, 0x6b, 0x6b, 0x09, +0x00, 0x54, 0x56, 0x56, 0x06, 0x5c, 0xf1, 0x07, +0xeb, 0x06, 0x68, 0xb4, 0x0c, 0x4d, 0x54, 0x11, +0xc0, 0x1d, 0x3f, 0x1f, 0x16, 0x64, 0x88, 0x80, +0xc8, 0x92, 0x4c, 0x22, 0x20, 0x99, 0x9d, 0x3f, +0x50, 0x7f, 0xeb, 0x98, 0x91, 0xff, 0x4f, 0x7c, +0xfe, 0xfe, 0xf7, 0xbf, 0x27, 0xed, 0xf4, 0xc5, +0x9a, 0x9a, 0x9a, 0xb3, 0x7a, 0x7e, 0x69, 0x69, +0x29, 0x7a, 0xf5, 0xea, 0x85, 0xa5, 0x4b, 0x97, +0x9e, 0x53, 0x43, 0xa8, 0x9a, 0x37, 0x6f, 0x8e, +0xe1, 0xc3, 0x87, 0xc3, 0x62, 0xb1, 0xf8, 0x45, +0x02, 0x32, 0x32, 0x32, 0x72, 0xfb, 0xf5, 0xeb, +0x77, 0x39, 0xbc, 0xab, 0x7f, 0x6f, 0x2a, 0x40, +0x90, 0x65, 0x59, 0xd0, 0x76, 0x03, 0x10, 0x42, +0x7c, 0x22, 0x00, 0x8a, 0xa2, 0x10, 0x59, 0x96, +0x89, 0xb6, 0x16, 0x80, 0x47, 0x01, 0x5c, 0x2e, +0x97, 0x3a, 0x1d, 0x10, 0x00, 0x78, 0x4b, 0x20, +0x9f, 0xff, 0xc1, 0x5b, 0x02, 0x03, 0x71, 0x56, +0x71, 0xa8, 0x48, 0x8a, 0x00, 0xbe, 0x95, 0x70, +0xb8, 0x22, 0x40, 0x3b, 0x30, 0x48, 0x2b, 0x02, +0xb4, 0x73, 0x02, 0x00, 0x78, 0x0c, 0x11, 0x10, +0x79, 0x92, 0x41, 0x04, 0x24, 0xbb, 0xf3, 0x07, +0x0c, 0x01, 0x60, 0x10, 0x5f, 0xec, 0x76, 0xfb, +0x59, 0x3d, 0xff, 0x81, 0x07, 0x1e, 0xc0, 0xa6, +0x4d, 0x9b, 0xfc, 0x76, 0xd2, 0x3b, 0x17, 0x68, +0xdd, 0xba, 0x35, 0x6e, 0xb9, 0xe5, 0x16, 0x55, +0xf8, 0x68, 0x07, 0x06, 0x75, 0xee, 0xdc, 0x79, +0x78, 0xcb, 0x96, 0x2d, 0x5b, 0xc3, 0xbb, 0xea, +0x87, 0x66, 0xf5, 0x4f, 0x29, 0xa5, 0xda, 0x28, +0x80, 0x2c, 0xcb, 0x6a, 0x04, 0x80, 0x52, 0x4a, +0x4d, 0x26, 0x13, 0xe1, 0x73, 0x01, 0x78, 0x04, +0x40, 0x3b, 0x1d, 0x50, 0x5b, 0x0c, 0x58, 0x5c, +0x5c, 0xac, 0xa6, 0x01, 0x82, 0x71, 0xd6, 0x89, +0xa8, 0xc6, 0x8a, 0x00, 0xbe, 0x81, 0x90, 0x24, +0x49, 0x0a, 0xdf, 0x4a, 0xb8, 0x3e, 0x11, 0x00, +0xaf, 0x00, 0x80, 0x46, 0x08, 0x58, 0x2c, 0x96, +0xa0, 0x22, 0xc0, 0x64, 0x32, 0x19, 0x22, 0x20, +0x4a, 0x24, 0xb2, 0x08, 0x68, 0x0a, 0xce, 0x1f, +0x00, 0xb6, 0x6d, 0xdb, 0x16, 0xf2, 0x7c, 0xb2, +0x85, 0x94, 0x0d, 0x92, 0x8b, 0x93, 0x27, 0x4f, +0x36, 0xea, 0x79, 0x69, 0x69, 0x69, 0xf8, 0xf0, +0xc3, 0x0f, 0xf1, 0xc6, 0x1b, 0x6f, 0xc0, 0x62, +0xb1, 0x44, 0xd8, 0xaa, 0xe4, 0xa1, 0x43, 0x87, +0x0e, 0xb8, 0xfe, 0xfa, 0xeb, 0xfd, 0xa2, 0x00, +0x94, 0x52, 0xcb, 0xc0, 0x81, 0x03, 0xef, 0x86, +0xb7, 0x18, 0xd0, 0x1b, 0x09, 0x10, 0x00, 0x08, +0xde, 0x68, 0x00, 0x95, 0x65, 0x99, 0x7a, 0x8b, +0xf4, 0x05, 0x4a, 0x29, 0x95, 0x24, 0x89, 0x2a, +0x8a, 0x42, 0xb4, 0xb5, 0x00, 0xda, 0x62, 0xc0, +0x16, 0x2d, 0x5a, 0xa8, 0xaf, 0x1f, 0x6e, 0x1a, +0x00, 0x88, 0x80, 0x00, 0x00, 0xce, 0x6e, 0x17, +0xc1, 0xcc, 0xcc, 0x4c, 0x1f, 0x11, 0xd0, 0xa2, +0x45, 0x0b, 0x3e, 0x20, 0xc8, 0x4f, 0x04, 0xd8, +0x6c, 0x36, 0x1f, 0x01, 0x00, 0x43, 0x04, 0xc4, +0x95, 0x44, 0x14, 0x01, 0x4d, 0xc5, 0xf9, 0x7b, +0x3c, 0x9e, 0x90, 0x73, 0xd5, 0x4d, 0x26, 0x13, +0x7e, 0xf3, 0x9b, 0x80, 0x63, 0x2d, 0x0c, 0x0c, +0x22, 0x42, 0x43, 0x05, 0x40, 0x4e, 0x4e, 0x0e, +0xfe, 0xfd, 0xef, 0x7f, 0xe3, 0xe8, 0xd1, 0xa3, +0x18, 0x33, 0x66, 0x4c, 0x94, 0xac, 0x4a, 0x2e, +0xb2, 0xb3, 0xb3, 0x7d, 0xbe, 0x23, 0x79, 0x24, +0xc0, 0x66, 0xb3, 0x75, 0x1e, 0x30, 0x60, 0xc0, +0x10, 0x6d, 0xde, 0x5f, 0x51, 0x14, 0x0a, 0xc0, +0xe7, 0x67, 0x59, 0x96, 0xa9, 0xa2, 0x28, 0x44, +0x1f, 0x01, 0xe0, 0x51, 0x80, 0x94, 0x94, 0x14, +0x92, 0x9e, 0x9e, 0x8e, 0x40, 0x69, 0x00, 0xa0, +0xfe, 0x0d, 0xa6, 0x22, 0x56, 0x8a, 0xda, 0x58, +0x11, 0x90, 0x9f, 0x9f, 0x0f, 0x2e, 0x02, 0xb2, +0xb2, 0xb2, 0x94, 0xaa, 0xaa, 0x2a, 0x66, 0xb7, +0xdb, 0x59, 0x20, 0x11, 0x20, 0xcb, 0xb2, 0x62, +0x88, 0x80, 0xc4, 0x22, 0x91, 0x44, 0x40, 0x53, +0x71, 0xfe, 0x00, 0xb0, 0x77, 0xef, 0x5e, 0x38, +0x9d, 0xce, 0xa0, 0xe7, 0x73, 0x73, 0x73, 0x91, +0x92, 0x92, 0x12, 0x43, 0x8b, 0x22, 0x43, 0x7e, +0x7e, 0x3e, 0x5e, 0x7a, 0xe9, 0x25, 0x94, 0x97, +0x97, 0xc7, 0xdb, 0x14, 0x83, 0x7a, 0x08, 0x47, +0x00, 0xa4, 0xa4, 0xa4, 0x60, 0xec, 0xd8, 0xb1, +0xd8, 0xb8, 0x71, 0x23, 0x7e, 0xfc, 0xf1, 0x47, +0x4c, 0x9c, 0x38, 0xb1, 0x49, 0xec, 0x69, 0x10, +0x49, 0xae, 0xba, 0xea, 0x2a, 0x9c, 0x77, 0xde, +0x79, 0x7e, 0x91, 0x80, 0xf3, 0xcf, 0x3f, 0xff, +0x96, 0xf6, 0xed, 0xdb, 0x77, 0xe0, 0x9d, 0x00, +0x8a, 0xa2, 0x08, 0x8c, 0x31, 0xca, 0x1d, 0xbf, +0xb7, 0xf0, 0x8f, 0xf0, 0x1a, 0x00, 0x49, 0x92, +0xa8, 0x2c, 0xcb, 0x84, 0xaf, 0xfe, 0xb5, 0x11, +0x80, 0x40, 0x69, 0x80, 0xb2, 0xb2, 0x32, 0xc2, +0xd3, 0x00, 0xc1, 0xda, 0x01, 0x23, 0xda, 0xad, +0x16, 0x80, 0xcb, 0x00, 0x00, 0x20, 0x00, 0x49, +0x44, 0x41, 0x54, 0x8b, 0x72, 0xb6, 0x22, 0xa0, +0xac, 0xac, 0x8c, 0x65, 0x65, 0x65, 0x29, 0x56, +0xab, 0x55, 0x15, 0x01, 0x1e, 0x8f, 0xc7, 0x10, +0x01, 0x09, 0x4e, 0x22, 0x88, 0x80, 0xa6, 0xe4, +0xfc, 0x81, 0xfa, 0xf3, 0xff, 0x03, 0x06, 0x0c, +0x88, 0x91, 0x25, 0x67, 0x8f, 0x24, 0x49, 0xf8, +0xf4, 0xd3, 0x4f, 0x71, 0xed, 0xb5, 0xd7, 0x62, +0xe4, 0xc8, 0x91, 0x18, 0x3b, 0x76, 0x2c, 0xb4, +0x21, 0x4b, 0x83, 0xc4, 0xa4, 0xb8, 0xb8, 0x38, +0xe4, 0xf9, 0xbe, 0x7d, 0xfb, 0xa2, 0xa8, 0xa8, +0x08, 0xef, 0xbd, 0xf7, 0x1e, 0x2e, 0xbf, 0xfc, +0xf2, 0x18, 0x59, 0x95, 0x7c, 0x98, 0xcd, 0x66, +0xbf, 0x54, 0x00, 0x21, 0x04, 0x94, 0x52, 0xb1, +0x5f, 0xbf, 0x7e, 0xf7, 0x8a, 0xa2, 0x28, 0x12, +0x42, 0xd4, 0x90, 0x3f, 0x2f, 0x00, 0xe4, 0xa9, +0x00, 0x2e, 0x06, 0x44, 0x51, 0x24, 0x3c, 0x15, +0xa0, 0x4f, 0x03, 0x00, 0x40, 0x7d, 0x69, 0x00, +0x7d, 0x21, 0x20, 0x63, 0x2c, 0xb2, 0x02, 0xc0, +0xfb, 0xa2, 0x11, 0x15, 0x01, 0xe9, 0xe9, 0xe9, +0x31, 0x13, 0x01, 0x94, 0x52, 0x63, 0x58, 0x50, +0x23, 0x89, 0xa7, 0x08, 0x68, 0x6a, 0xce, 0x1f, +0x68, 0x1a, 0x02, 0xe0, 0xd4, 0xa9, 0x53, 0x78, +0xe6, 0x99, 0x67, 0xd0, 0xa9, 0x53, 0x27, 0xdc, +0x7e, 0xfb, 0xed, 0xd8, 0xbe, 0x7d, 0x3b, 0x3e, +0xfd, 0xf4, 0x53, 0xb4, 0x6d, 0xdb, 0x36, 0xde, +0xa6, 0x19, 0x84, 0x41, 0x7d, 0x11, 0x80, 0x9b, +0x6f, 0xbe, 0x19, 0x19, 0x19, 0x19, 0x31, 0xb2, +0x26, 0xb9, 0xc9, 0xca, 0xca, 0x42, 0x9f, 0x3e, +0x7d, 0x00, 0xf8, 0x8e, 0x0a, 0x4e, 0x49, 0x49, +0xe9, 0x90, 0x9b, 0x9b, 0x7b, 0xa9, 0x3e, 0x02, +0xa0, 0x28, 0x8a, 0x4f, 0x07, 0x00, 0x3f, 0x44, +0x51, 0x24, 0x3c, 0x0d, 0x10, 0xa8, 0x1b, 0xa0, +0xa1, 0x76, 0x45, 0x65, 0x1a, 0x45, 0xa2, 0x88, +0x00, 0xef, 0xa6, 0x40, 0x61, 0x8b, 0x00, 0xef, +0xfd, 0x86, 0x08, 0x68, 0x24, 0xf1, 0x10, 0x01, +0x4d, 0xd1, 0xf9, 0x03, 0xf5, 0x17, 0x00, 0x26, +0xb2, 0x00, 0xd8, 0xbc, 0x79, 0x33, 0xee, 0xba, +0xeb, 0x2e, 0x9c, 0x7f, 0xfe, 0xf9, 0x78, 0xf2, +0xc9, 0x27, 0x71, 0xfc, 0xf8, 0x71, 0x00, 0xc0, +0xb3, 0xcf, 0x3e, 0x1b, 0xf6, 0x66, 0x25, 0x06, +0xb1, 0x67, 0xcd, 0x9a, 0x35, 0x78, 0xf3, 0xcd, +0x37, 0xd5, 0x9f, 0xf9, 0xe7, 0x16, 0x0c, 0x63, +0xff, 0x94, 0x86, 0x71, 0xe9, 0xa5, 0x97, 0xfa, +0x0d, 0x43, 0x22, 0x84, 0x20, 0x2b, 0x2b, 0xeb, +0x0a, 0xc6, 0x18, 0xf5, 0x76, 0x00, 0x50, 0x2e, +0x02, 0x18, 0x63, 0x84, 0x0b, 0x01, 0x5e, 0x0b, +0xc0, 0xdb, 0x01, 0x01, 0xc0, 0x6c, 0x36, 0x13, +0x9b, 0xcd, 0x06, 0x00, 0x70, 0xbb, 0xdd, 0xea, +0x50, 0x20, 0x7d, 0x1d, 0x40, 0x28, 0xa2, 0x36, +0x8e, 0x2a, 0x11, 0x44, 0x00, 0x63, 0x4c, 0x6e, +0x80, 0x08, 0x70, 0x1b, 0x22, 0xe0, 0xec, 0x89, +0xa5, 0x08, 0x68, 0xaa, 0xce, 0xdf, 0x6e, 0xb7, +0xa3, 0xa0, 0xa0, 0x20, 0xe8, 0xf9, 0xb4, 0xb4, +0x34, 0x5c, 0x72, 0xc9, 0x25, 0x31, 0xb4, 0x28, +0x3c, 0x18, 0x63, 0x18, 0x35, 0x6a, 0x14, 0x2e, +0xbb, 0xec, 0x32, 0xfc, 0xf7, 0xbf, 0xff, 0x85, +0xdb, 0xed, 0x56, 0xcf, 0x0d, 0x18, 0x30, 0x00, +0x13, 0x27, 0x4e, 0x8c, 0xa3, 0x75, 0x06, 0xc1, +0xd8, 0xb9, 0x73, 0x27, 0xae, 0xbb, 0xee, 0x3a, +0x0c, 0x1d, 0x3a, 0x14, 0x7f, 0xfb, 0xdb, 0xdf, +0xf0, 0xcb, 0x2f, 0xbf, 0xe0, 0xe0, 0xc1, 0x83, +0x38, 0x7a, 0xf4, 0x68, 0xd0, 0xe7, 0x58, 0x2c, +0x16, 0xa3, 0x0d, 0xb5, 0x81, 0x08, 0x82, 0x80, +0x6b, 0xae, 0xb9, 0x06, 0x80, 0x6f, 0x5b, 0xa0, +0xcd, 0x66, 0xeb, 0x92, 0x95, 0x95, 0xd5, 0x86, +0xaf, 0xfc, 0xbd, 0x29, 0x00, 0xc2, 0x9d, 0x3e, +0x63, 0x8c, 0x88, 0xa2, 0xa8, 0xd6, 0x02, 0xf0, +0x3a, 0x00, 0x7e, 0xcb, 0x53, 0x00, 0x5c, 0x04, +0x70, 0xb4, 0x5b, 0x15, 0x73, 0x78, 0x27, 0x00, +0x27, 0xaa, 0xf3, 0x28, 0x23, 0x21, 0x02, 0xdc, +0x6e, 0x77, 0xac, 0x22, 0x01, 0x1e, 0x43, 0x04, +0x44, 0x86, 0x58, 0x88, 0x80, 0xa6, 0xea, 0xfc, +0x01, 0x60, 0xcb, 0x96, 0x2d, 0x21, 0xe7, 0xae, +0xff, 0xe6, 0x37, 0xbf, 0x49, 0xc8, 0x51, 0xb2, +0xcf, 0x3f, 0xff, 0x3c, 0x3e, 0xf9, 0xe4, 0x13, +0xbf, 0xfb, 0x4d, 0x26, 0x13, 0xfe, 0xf3, 0x9f, +0xff, 0x24, 0xa4, 0xcd, 0xe7, 0x32, 0x87, 0x0e, +0x1d, 0xc2, 0x98, 0x31, 0x63, 0xd0, 0xbf, 0x7f, +0x7f, 0x75, 0xcf, 0x09, 0xa7, 0xd3, 0x89, 0x47, +0x1f, 0x7d, 0x14, 0xab, 0x57, 0xaf, 0x0e, 0xf9, +0xdc, 0xa1, 0x43, 0x87, 0x26, 0x65, 0x11, 0x6a, +0xbc, 0x69, 0xdb, 0xb6, 0xad, 0xcf, 0x7e, 0x01, +0x5e, 0x48, 0x76, 0x76, 0xf6, 0x15, 0xde, 0xcd, +0xf9, 0x08, 0x5f, 0xf9, 0x0b, 0x82, 0x40, 0x04, +0x41, 0x20, 0xda, 0x14, 0x80, 0xf6, 0x00, 0x00, +0x49, 0x92, 0x08, 0x00, 0x70, 0x11, 0xc0, 0xf7, +0x06, 0xa8, 0xa9, 0xa9, 0x21, 0x00, 0xa0, 0x1f, +0x08, 0xc4, 0xdf, 0x90, 0xb7, 0x02, 0x46, 0xfd, +0x2f, 0xb2, 0x21, 0x22, 0xa0, 0x7b, 0xf7, 0xee, +0x4c, 0x2f, 0x02, 0xd2, 0xd2, 0xd2, 0xce, 0x4a, +0x04, 0x98, 0x4c, 0x26, 0x59, 0x2f, 0x02, 0xf8, +0xc4, 0x40, 0x43, 0x04, 0x44, 0x8f, 0x68, 0x8a, +0x80, 0xa6, 0xec, 0xfc, 0x01, 0x60, 0xd3, 0xa6, +0x4d, 0x21, 0xcf, 0x27, 0x62, 0xf8, 0x7f, 0xdd, +0xba, 0x75, 0x41, 0x77, 0x83, 0x7b, 0xf9, 0xe5, +0x97, 0xd1, 0xb3, 0x67, 0xcf, 0x18, 0x5b, 0x64, +0x10, 0x8c, 0xd3, 0xa7, 0x4f, 0xe3, 0xaf, 0x7f, +0xfd, 0x2b, 0xba, 0x75, 0xeb, 0x86, 0x8f, 0x3e, +0xfa, 0xc8, 0x6f, 0xb7, 0xc9, 0x8f, 0x3f, 0xfe, +0x18, 0xb3, 0x67, 0xcf, 0x0e, 0xfa, 0x7c, 0x41, +0x10, 0xf0, 0xcc, 0x33, 0xcf, 0x44, 0xdb, 0xcc, +0x26, 0x8b, 0x36, 0x7a, 0xc7, 0x23, 0x01, 0x2d, +0x5b, 0xb6, 0x1c, 0x48, 0x08, 0xe1, 0xa1, 0x7f, +0x35, 0xfc, 0xcf, 0x18, 0xe3, 0x82, 0x80, 0x00, +0x00, 0xaf, 0x01, 0x90, 0x65, 0x59, 0x4d, 0x05, +0x70, 0x11, 0xc0, 0xe1, 0x63, 0x81, 0x39, 0xc5, +0xc5, 0xc5, 0xea, 0xcf, 0xfa, 0x42, 0xc0, 0x98, +0x48, 0xf2, 0x70, 0x45, 0x00, 0xdf, 0x49, 0x90, +0x8b, 0x00, 0xed, 0xd4, 0xc0, 0x60, 0x22, 0xa0, +0x79, 0xf3, 0xe6, 0x72, 0x43, 0x45, 0x00, 0x34, +0xbb, 0x08, 0x1a, 0x22, 0x20, 0x7a, 0x44, 0x43, +0x04, 0x24, 0xb3, 0xf3, 0xaf, 0xac, 0xac, 0xc4, +0x6b, 0xaf, 0xbd, 0x86, 0xbf, 0xfe, 0xf5, 0xaf, +0xa8, 0xae, 0xae, 0x0e, 0xfa, 0xb8, 0x8d, 0x1b, +0x37, 0x86, 0x7c, 0x9d, 0x44, 0x13, 0x00, 0x25, +0x25, 0x25, 0xb8, 0xf3, 0xce, 0x3b, 0x03, 0x46, +0x2d, 0xa6, 0x4c, 0x99, 0x82, 0x87, 0x1e, 0x7a, +0x28, 0x0e, 0x56, 0x19, 0xe8, 0xa9, 0xae, 0xae, +0xc6, 0x8c, 0x19, 0x33, 0xd0, 0xb9, 0x73, 0x67, +0xbc, 0xfe, 0xfa, 0xeb, 0xf0, 0x78, 0x3c, 0x41, +0x1f, 0x7b, 0xec, 0xd8, 0xb1, 0xa0, 0xe7, 0xc6, +0x8d, 0x1b, 0x87, 0x1e, 0x3d, 0x7a, 0x44, 0xc3, +0xc4, 0xa8, 0x20, 0x49, 0x12, 0x14, 0x45, 0x81, +0xdd, 0x6e, 0xc7, 0x9e, 0x3d, 0x7b, 0x42, 0x46, +0xd7, 0x62, 0xc1, 0xc5, 0x17, 0x5f, 0x0c, 0x41, +0x10, 0x7c, 0x8a, 0x01, 0x45, 0x51, 0xcc, 0xe8, +0xd1, 0xa3, 0x47, 0x0f, 0x4a, 0x29, 0xa1, 0x94, +0x12, 0x78, 0x23, 0x01, 0x8c, 0x31, 0x22, 0x08, +0x82, 0x8f, 0x08, 0x00, 0xa0, 0x46, 0x5f, 0xb4, +0xce, 0x9f, 0x6f, 0x0e, 0x14, 0x88, 0x60, 0x13, +0x01, 0xc5, 0x08, 0x5c, 0x4f, 0x58, 0x30, 0xc6, +0x18, 0xf1, 0x5e, 0x31, 0xbf, 0x70, 0xc6, 0x18, +0xe3, 0xa1, 0x88, 0x9c, 0x9c, 0x1c, 0x96, 0x9f, +0x9f, 0x4f, 0x96, 0x2c, 0x59, 0x82, 0x51, 0xa3, +0x46, 0x31, 0xa0, 0xce, 0xe8, 0xa2, 0xa2, 0x22, +0x96, 0x95, 0x95, 0x05, 0x00, 0xb0, 0xdb, 0xed, +0x8a, 0xd5, 0x6a, 0xa5, 0x76, 0xbb, 0x1d, 0xe9, +0xe9, 0xe9, 0x8a, 0x77, 0xb3, 0x0a, 0xda, 0xbc, +0x79, 0x73, 0xf9, 0xcc, 0x99, 0x33, 0x00, 0xea, +0x36, 0x63, 0xd0, 0xcf, 0xb0, 0xa6, 0x94, 0xc2, +0x64, 0x32, 0xc1, 0xe3, 0xf1, 0x40, 0x10, 0x04, +0xc8, 0xb2, 0x5c, 0xd7, 0x02, 0x41, 0x29, 0x14, +0x45, 0x51, 0xcf, 0xf1, 0x9f, 0xf9, 0x63, 0xf8, +0x2d, 0xa5, 0x14, 0x79, 0x79, 0x79, 0xcb, 0x7b, +0xf5, 0xea, 0x85, 0x8c, 0x8c, 0x0c, 0xbf, 0xe9, +0x2b, 0x9f, 0x7f, 0xfe, 0x39, 0x00, 0xa3, 0x28, +0x26, 0x10, 0x97, 0x5d, 0x76, 0x19, 0x6c, 0x36, +0x1b, 0x76, 0xee, 0xdc, 0x19, 0x72, 0x5f, 0xfb, +0xfa, 0x20, 0x84, 0xa0, 0x7f, 0xff, 0xfe, 0x49, +0xb9, 0x92, 0xdc, 0xb5, 0x6b, 0x17, 0xe6, 0xce, +0x9d, 0x8b, 0x0f, 0x3f, 0xfc, 0x50, 0xfd, 0xbf, +0x59, 0x50, 0x50, 0x80, 0xcf, 0x3f, 0xff, 0xdc, +0x6f, 0x52, 0x9a, 0x2c, 0xcb, 0xd8, 0xba, 0x75, +0x6b, 0xc8, 0xd7, 0xeb, 0xdf, 0xbf, 0x7f, 0xd4, +0x6c, 0x6d, 0x0c, 0xe3, 0xc7, 0x8f, 0xc7, 0xe9, +0xd3, 0xa7, 0xfd, 0xee, 0xbf, 0xe7, 0x9e, 0x7b, +0xf0, 0xc2, 0x0b, 0x2f, 0xc4, 0xc1, 0x22, 0x03, +0x3d, 0x4e, 0xa7, 0x13, 0x9d, 0x3b, 0x77, 0x0e, +0xf8, 0x39, 0x85, 0x03, 0xff, 0x5e, 0xcd, 0xcc, +0xcc, 0xc4, 0xcc, 0x99, 0x33, 0x23, 0x6c, 0x5d, +0x74, 0x60, 0x8c, 0xa1, 0xa6, 0xa6, 0x06, 0x79, +0x79, 0x79, 0x58, 0xb5, 0x6a, 0x15, 0x7a, 0xf5, +0xea, 0x85, 0x31, 0x63, 0xc6, 0xf8, 0xf5, 0xe3, +0xc7, 0x1a, 0xab, 0xd5, 0x8a, 0x0b, 0x2e, 0xb8, +0x00, 0x3f, 0xff, 0xfc, 0xb3, 0x7a, 0x1f, 0x21, +0x04, 0xad, 0x5a, 0xb5, 0xca, 0x01, 0xb0, 0x8b, +0x3b, 0x7d, 0x00, 0xe0, 0x22, 0xc0, 0x64, 0x32, +0x41, 0x57, 0x04, 0x48, 0xcc, 0x66, 0x33, 0x11, +0x45, 0x11, 0x0e, 0x87, 0x83, 0x00, 0xf0, 0xbb, +0x28, 0x6f, 0x2b, 0x60, 0xc8, 0x2f, 0xdd, 0x98, +0x09, 0x00, 0xc0, 0x57, 0x04, 0x00, 0x75, 0x17, +0x6d, 0x88, 0x80, 0xa6, 0x4f, 0xaf, 0x5e, 0xbd, +0xd0, 0xa2, 0x45, 0x0b, 0x6c, 0xd8, 0xb0, 0x01, +0x0e, 0x87, 0xa3, 0xc1, 0xcf, 0xb7, 0x5a, 0xad, +0xb8, 0xea, 0xaa, 0xab, 0xd0, 0xa1, 0x43, 0x87, +0x28, 0x58, 0x17, 0x1d, 0x5c, 0x2e, 0x17, 0xfe, +0xfb, 0xdf, 0xff, 0x62, 0xee, 0xdc, 0xb9, 0x01, +0x5b, 0xfa, 0xbe, 0xfe, 0xfa, 0x6b, 0x8c, 0x1d, +0x3b, 0x16, 0x8b, 0x17, 0x2f, 0xf6, 0xc9, 0x8d, +0xe7, 0xe5, 0xe5, 0x85, 0x8c, 0x0e, 0xb4, 0x6d, +0xdb, 0x16, 0x1d, 0x3b, 0x76, 0x8c, 0x8a, 0xcd, +0x8d, 0xe1, 0xbd, 0xf7, 0xde, 0xc3, 0xb2, 0x65, +0xcb, 0x7c, 0xee, 0x23, 0x84, 0xe0, 0xd1, 0x47, +0x1f, 0xc5, 0xb3, 0xcf, 0x3e, 0x1b, 0x27, 0xab, +0x0c, 0xf4, 0x88, 0xa2, 0xd8, 0x68, 0xe7, 0x0f, +0xd4, 0x6d, 0x0c, 0x94, 0x95, 0x95, 0x85, 0xb5, +0x6b, 0xd7, 0xa2, 0x5d, 0xbb, 0x76, 0x11, 0xb4, +0x2c, 0xb2, 0x14, 0x17, 0x17, 0x63, 0xf7, 0xee, +0xdd, 0xc8, 0xc8, 0xc8, 0xc0, 0xa6, 0x4d, 0x9b, +0xf0, 0xc1, 0x07, 0x1f, 0xa0, 0x77, 0xef, 0xde, +0x98, 0x35, 0x6b, 0x56, 0x42, 0x6d, 0x47, 0xdc, +0xb1, 0x63, 0x47, 0xfc, 0xfc, 0xf3, 0xcf, 0xfa, +0x28, 0x80, 0x8d, 0x31, 0xa6, 0x3a, 0x7e, 0x00, +0x44, 0x51, 0x14, 0x22, 0x08, 0x02, 0xb4, 0xab, +0x7f, 0x3d, 0x36, 0x9b, 0x4d, 0xfd, 0x0e, 0x71, +0xb9, 0x5c, 0x44, 0x14, 0xc3, 0x77, 0xeb, 0x31, +0x15, 0x00, 0x80, 0x21, 0x02, 0xce, 0x55, 0x3a, +0x76, 0xec, 0x88, 0x3b, 0xee, 0xb8, 0x03, 0xf9, +0xf9, 0xf9, 0xd8, 0xbb, 0x77, 0x2f, 0x5c, 0x2e, +0x57, 0xbd, 0xcf, 0xb1, 0x58, 0x2c, 0xe8, 0xd9, +0xb3, 0x27, 0x72, 0x72, 0x72, 0xd0, 0x90, 0xff, +0xd4, 0xf1, 0x66, 0xdf, 0xbe, 0x7d, 0x18, 0x3d, +0x7a, 0x34, 0xf6, 0xec, 0xd9, 0x13, 0xf2, 0x71, +0x4b, 0x96, 0x2c, 0x41, 0x9b, 0x36, 0x6d, 0x30, +0x67, 0xce, 0x1c, 0xf5, 0xbe, 0x64, 0x0a, 0xff, +0xef, 0xdc, 0xb9, 0xd3, 0xaf, 0xb2, 0xbf, 0x65, +0xcb, 0x96, 0x78, 0xef, 0xbd, 0xf7, 0x30, 0x6c, +0xd8, 0xb0, 0x38, 0x59, 0x65, 0x10, 0x88, 0xb3, +0xfd, 0xfb, 0xb9, 0xfa, 0xea, 0xab, 0xb1, 0x60, +0xc1, 0x82, 0x84, 0xda, 0xd8, 0xa7, 0xa6, 0xa6, +0x06, 0xff, 0xfd, 0xef, 0x7f, 0x31, 0x6f, 0xde, +0x3c, 0x1c, 0x39, 0x72, 0x04, 0x6e, 0xb7, 0x1b, +0xa9, 0xa9, 0xa9, 0xe8, 0xd4, 0xa9, 0x13, 0x7e, +0xfc, 0xf1, 0x47, 0x5c, 0x74, 0xd1, 0x45, 0x98, +0x3b, 0x77, 0x6e, 0x42, 0x0e, 0x29, 0x32, 0x99, +0x4c, 0x81, 0xf6, 0x08, 0x30, 0x01, 0xaa, 0xf3, +0x87, 0x20, 0x08, 0x60, 0x8c, 0xa9, 0x3f, 0x7b, +0xa3, 0x00, 0xe0, 0xa2, 0x20, 0x12, 0x24, 0xc4, +0xb7, 0xaa, 0x21, 0x02, 0xce, 0x0d, 0x44, 0x51, +0x44, 0xaf, 0x5e, 0xbd, 0xd0, 0xb3, 0x67, 0x4f, +0x14, 0x17, 0x17, 0xe3, 0xd8, 0xb1, 0x63, 0x28, +0x2f, 0x2f, 0x87, 0xc3, 0xe1, 0x80, 0xcb, 0xe5, +0x82, 0xc5, 0x62, 0x81, 0xd5, 0x6a, 0x45, 0x8b, +0x16, 0x2d, 0xd0, 0xb1, 0x63, 0x47, 0xb4, 0x6b, +0xd7, 0x2e, 0xe9, 0x2a, 0xc7, 0x57, 0xac, 0x58, +0x81, 0xbb, 0xee, 0xba, 0x2b, 0xec, 0xad, 0x54, +0x5f, 0x7b, 0xed, 0x35, 0xb4, 0x6d, 0xdb, 0x16, +0x8f, 0x3f, 0xfe, 0x38, 0x80, 0xfa, 0x0b, 0x00, +0x13, 0xe5, 0xff, 0xd5, 0xa6, 0x4d, 0x9b, 0x70, +0xcb, 0x2d, 0xb7, 0xa0, 0xaa, 0xaa, 0x0a, 0x00, +0xd0, 0xac, 0x59, 0x33, 0x0c, 0x1b, 0x36, 0x0c, +0xff, 0xfc, 0xe7, 0x3f, 0x93, 0x2a, 0x52, 0x73, +0xae, 0xd0, 0xd8, 0xf4, 0x5b, 0xaf, 0x5e, 0xbd, +0xf0, 0xfc, 0xf3, 0xcf, 0x27, 0x94, 0xa0, 0xcb, +0xcf, 0xcf, 0xc7, 0xbc, 0x79, 0xf3, 0xf0, 0xde, +0x7b, 0xef, 0xa1, 0xaa, 0xaa, 0x0a, 0x6d, 0xdb, +0xb6, 0x55, 0x47, 0x4b, 0x57, 0x57, 0x57, 0xa3, +0xb6, 0xb6, 0x16, 0x33, 0x66, 0xcc, 0xc0, 0xc3, +0x0f, 0x3f, 0x9c, 0xb0, 0x0b, 0x07, 0xbd, 0x5d, +0xde, 0xc9, 0x80, 0xa6, 0x50, 0xcf, 0x09, 0x15, +0x05, 0xd0, 0xe3, 0x70, 0x38, 0x88, 0xcd, 0x66, +0xab, 0xf7, 0x43, 0x8f, 0xcb, 0x6f, 0x47, 0x1f, +0x05, 0x00, 0x1a, 0x2f, 0x02, 0x5a, 0xb6, 0x6c, +0x49, 0x4a, 0x4b, 0x4b, 0xa9, 0x21, 0x02, 0x92, +0x07, 0x4a, 0x29, 0xda, 0xb7, 0x6f, 0x8f, 0xf6, +0xed, 0xdb, 0xc7, 0xdb, 0x94, 0x88, 0x22, 0x49, +0x12, 0x1e, 0x7a, 0xe8, 0xa1, 0x06, 0xef, 0xa3, +0xfe, 0xc4, 0x13, 0x4f, 0xa0, 0x5d, 0xbb, 0x76, +0xf8, 0xe3, 0x1f, 0xff, 0x58, 0x6f, 0x04, 0xe0, +0xa6, 0x9b, 0x6e, 0x3a, 0x1b, 0x13, 0xcf, 0x0a, +0xb7, 0xdb, 0x8d, 0x55, 0xab, 0x56, 0x61, 0xfe, +0xfc, 0xf9, 0xf8, 0xe2, 0x8b, 0x2f, 0x7c, 0x9c, +0xca, 0x88, 0x11, 0x23, 0xf0, 0xde, 0x7b, 0xef, +0xc5, 0xcd, 0x36, 0x83, 0xd0, 0xd4, 0x6d, 0xa6, +0x1a, 0x3e, 0x9d, 0x3a, 0x75, 0xc2, 0xd3, 0x4f, +0x3f, 0x8d, 0x3b, 0xef, 0xbc, 0x33, 0xee, 0x39, +0x73, 0xa0, 0xce, 0xfe, 0xc5, 0x8b, 0x17, 0x63, +0xde, 0xbc, 0x79, 0xd8, 0xb0, 0x61, 0x83, 0xcf, +0x39, 0xed, 0xc4, 0xc2, 0x91, 0x23, 0x47, 0xe2, +0xd5, 0x57, 0x5f, 0x4d, 0x78, 0x11, 0xca, 0x05, +0x80, 0xf6, 0x77, 0x4b, 0x29, 0x0d, 0xe9, 0x8f, +0x29, 0xa5, 0xac, 0xa1, 0x9f, 0x63, 0xbd, 0x76, +0x44, 0xf4, 0xd5, 0x1a, 0x40, 0xa4, 0x44, 0x40, +0x45, 0x45, 0x05, 0x5a, 0xb6, 0x6c, 0xa9, 0x18, +0x22, 0xc0, 0x20, 0xde, 0x2c, 0x5e, 0xbc, 0x38, +0xe4, 0xf0, 0x94, 0x50, 0x8c, 0x1f, 0x3f, 0x1e, +0x0e, 0x87, 0x03, 0x45, 0x45, 0x45, 0x41, 0x1f, +0xd3, 0xa5, 0x4b, 0x17, 0x64, 0x67, 0x67, 0x37, +0xd6, 0xbc, 0xb3, 0x62, 0xc9, 0x92, 0x25, 0x78, +0xf8, 0xe1, 0x87, 0x83, 0xce, 0x87, 0x37, 0xc6, +0xfb, 0x26, 0x36, 0xe1, 0x46, 0x00, 0x5a, 0xb7, +0x6e, 0x8d, 0x27, 0x9e, 0x78, 0x02, 0xe3, 0xc7, +0x8f, 0x87, 0xd9, 0x6c, 0x8e, 0xb2, 0x55, 0xe1, +0x71, 0xe4, 0xc8, 0x11, 0x75, 0xc3, 0xa1, 0x60, +0x64, 0x67, 0x67, 0xe3, 0x5f, 0xff, 0xfa, 0x17, +0x86, 0x0e, 0x1d, 0x1a, 0x43, 0xcb, 0xce, 0x0e, +0xbd, 0xb0, 0x22, 0x84, 0xf8, 0xf8, 0x63, 0xee, +0x67, 0x38, 0xdc, 0x57, 0x51, 0x4a, 0xeb, 0xfd, +0x30, 0xad, 0x56, 0x6b, 0x58, 0x1f, 0x78, 0x5c, +0xe3, 0xab, 0x2c, 0xc0, 0xff, 0x4a, 0x42, 0x48, +0xbd, 0x2d, 0x82, 0x00, 0xa0, 0x6d, 0x11, 0xac, +0xa8, 0xa8, 0x60, 0x2d, 0x5b, 0xb6, 0x54, 0xb4, +0x2d, 0x82, 0x0e, 0x87, 0x83, 0x19, 0x2d, 0x82, +0x06, 0xb1, 0xe4, 0xc3, 0x0f, 0x3f, 0x6c, 0xf4, +0x73, 0x25, 0x49, 0xc2, 0x5f, 0xff, 0xfa, 0xd7, +0x90, 0x8f, 0x89, 0xd7, 0xea, 0xbf, 0xb0, 0xb0, +0x10, 0x77, 0xdf, 0x7d, 0x77, 0xc8, 0xcd, 0x61, +0xd2, 0xd2, 0xd2, 0x62, 0x68, 0x91, 0x41, 0x43, +0x09, 0x47, 0x00, 0xb4, 0x6a, 0xd5, 0x0a, 0x87, +0x0e, 0x1d, 0xc2, 0xc4, 0x89, 0x13, 0x13, 0xc6, +0xf9, 0x6f, 0xdb, 0xb6, 0x0d, 0xb9, 0xb9, 0xb9, +0x41, 0x9d, 0x7f, 0x6e, 0x6e, 0x2e, 0x3e, 0xfc, +0xf0, 0x43, 0x14, 0x14, 0x14, 0x24, 0x95, 0xf3, +0x3f, 0x71, 0xe2, 0x84, 0xcf, 0xcf, 0x84, 0x10, +0x48, 0x92, 0x54, 0x45, 0x08, 0x61, 0xfc, 0x00, +0xea, 0x56, 0xfd, 0x84, 0x10, 0x56, 0x9f, 0xd3, +0xb7, 0xdb, 0xed, 0x8d, 0xb2, 0x23, 0xee, 0x09, +0x56, 0x43, 0x04, 0x18, 0x34, 0x15, 0x42, 0x55, +0xef, 0x47, 0x82, 0x9b, 0x6f, 0xbe, 0x39, 0xaa, +0xaf, 0x1f, 0x8c, 0xe9, 0xd3, 0xa7, 0xfb, 0x8c, +0xf5, 0x0d, 0x84, 0xd5, 0x6a, 0x8d, 0x91, 0x35, +0x06, 0x8d, 0x21, 0x1c, 0x01, 0xd0, 0xba, 0x75, +0x6b, 0x34, 0x6b, 0xd6, 0x2c, 0x06, 0xd6, 0x84, +0xcf, 0xb4, 0x69, 0xd3, 0x42, 0x3a, 0xb7, 0x35, +0x6b, 0xd6, 0x60, 0xcc, 0x98, 0x31, 0x88, 0x54, +0x51, 0x5c, 0xac, 0x38, 0x7c, 0xf8, 0xb0, 0xfa, +0x6f, 0x1e, 0x09, 0x28, 0x2d, 0x2d, 0xdd, 0x0b, +0x80, 0x11, 0x42, 0x98, 0xa2, 0x28, 0xaa, 0x08, +0xd0, 0x3c, 0x4e, 0x15, 0x02, 0x82, 0x20, 0x30, +0x41, 0x10, 0x58, 0x6d, 0x6d, 0x2d, 0x5c, 0x2e, +0x17, 0x33, 0x99, 0x4c, 0x0c, 0x00, 0x2c, 0x16, +0x8b, 0xfa, 0x9c, 0xf4, 0xf4, 0xf4, 0x7a, 0x3f, +0xf4, 0xb8, 0x0b, 0x00, 0xc0, 0x10, 0x01, 0x06, +0x4d, 0x83, 0x70, 0x3a, 0x1b, 0x1a, 0x8b, 0xcd, +0x66, 0xc3, 0xd5, 0x57, 0x5f, 0x1d, 0xb5, 0xd7, +0x0f, 0x45, 0xb8, 0xfb, 0xc2, 0x1b, 0x24, 0x0e, +0xa7, 0x4e, 0x9d, 0xf2, 0xf9, 0xdc, 0xc2, 0x19, +0x7e, 0xd3, 0xbc, 0x79, 0xf3, 0x68, 0x9a, 0xd4, +0x60, 0x36, 0x6e, 0xdc, 0xa8, 0x8e, 0x28, 0x0e, +0x44, 0xaf, 0x5e, 0xbd, 0x92, 0x32, 0xf5, 0x54, +0x52, 0x52, 0x82, 0xea, 0xea, 0x6a, 0x9f, 0xfd, +0x00, 0x18, 0x63, 0xd2, 0xbe, 0x7d, 0xfb, 0x76, +0x2b, 0x8a, 0xc2, 0x14, 0x45, 0x61, 0x40, 0x9d, +0xc3, 0xe7, 0x87, 0x24, 0x49, 0xaa, 0x2f, 0x14, +0x04, 0x81, 0x39, 0x9d, 0x4e, 0x38, 0x1c, 0x0e, +0x88, 0xa2, 0xa8, 0xde, 0xef, 0x70, 0x38, 0x82, +0x3a, 0x7c, 0xee, 0x2f, 0xf5, 0x24, 0x84, 0x00, +0x00, 0x0c, 0x11, 0x60, 0x90, 0xfc, 0x38, 0x9d, +0xce, 0xa8, 0xbd, 0xf6, 0xef, 0x7f, 0xff, 0x7b, +0xbf, 0xa1, 0x41, 0xb1, 0x22, 0x1c, 0x61, 0xc3, +0x6b, 0x72, 0x0c, 0xe2, 0xcf, 0xca, 0x95, 0x2b, +0x71, 0xe2, 0xc4, 0x09, 0x1f, 0xe7, 0xc8, 0xbb, +0x35, 0x42, 0x91, 0x68, 0x02, 0x60, 0xfe, 0xfc, +0xf9, 0x21, 0xcf, 0xdf, 0x78, 0xe3, 0x8d, 0x31, +0xb2, 0x24, 0xb2, 0xe8, 0xfb, 0xff, 0x01, 0xa0, +0xba, 0xba, 0x7a, 0x9f, 0xdd, 0x6e, 0xaf, 0xf1, +0xae, 0xfa, 0x19, 0x21, 0x44, 0xe1, 0xce, 0x5f, +0x96, 0x65, 0x46, 0x29, 0x55, 0x0f, 0x97, 0xcb, +0xa5, 0x46, 0x00, 0xce, 0xd6, 0x96, 0x84, 0x11, +0x00, 0x80, 0x21, 0x02, 0x0c, 0x92, 0x9b, 0x68, +0x09, 0x80, 0x91, 0x23, 0x47, 0xe2, 0x95, 0x57, +0x5e, 0x89, 0xca, 0x6b, 0x87, 0x43, 0x38, 0xd7, +0xd5, 0xab, 0x57, 0xaf, 0x18, 0x58, 0x62, 0x10, +0x8a, 0xe3, 0xc7, 0x8f, 0xe3, 0x4f, 0x7f, 0xfa, +0x13, 0x3a, 0x75, 0xea, 0x84, 0xbe, 0x7d, 0xfb, +0xfa, 0x9c, 0xf3, 0x16, 0x47, 0x87, 0x24, 0x51, +0x04, 0xc0, 0x4f, 0x3f, 0xfd, 0x84, 0xd7, 0x5e, +0x7b, 0x0d, 0xdf, 0x7c, 0xf3, 0x4d, 0xc8, 0xc7, +0x25, 0xa3, 0x00, 0x70, 0x38, 0x1c, 0xf8, 0xe9, +0xa7, 0x9f, 0x7c, 0xee, 0x23, 0x84, 0xe0, 0xf4, +0xe9, 0xd3, 0xbb, 0xe0, 0x0d, 0xff, 0x6b, 0x0f, +0x59, 0x96, 0xd5, 0x1a, 0x00, 0x4a, 0x29, 0x93, +0x24, 0xc9, 0xa7, 0x1e, 0x40, 0x14, 0x45, 0x26, +0x8a, 0xa2, 0x9a, 0x02, 0xa8, 0xa9, 0xa9, 0x61, +0xa9, 0xa9, 0xa9, 0x3e, 0x7e, 0xb4, 0x5d, 0xbb, +0x76, 0x0c, 0x00, 0xba, 0x77, 0xef, 0xce, 0x96, +0x2c, 0x59, 0xe2, 0xf3, 0xde, 0x09, 0x25, 0x00, +0x00, 0x43, 0x04, 0x18, 0x24, 0x2f, 0x91, 0x4e, +0x01, 0x08, 0x82, 0x80, 0x59, 0xb3, 0x66, 0xe1, +0x93, 0x4f, 0x3e, 0x89, 0x6b, 0x6e, 0xb6, 0x3e, +0x01, 0xd0, 0xac, 0x59, 0x33, 0x5c, 0x74, 0xd1, +0x45, 0x31, 0xb2, 0xc6, 0x40, 0xcb, 0x99, 0x33, +0x67, 0x30, 0x7f, 0xfe, 0x7c, 0x0c, 0x1e, 0x3c, +0x18, 0x17, 0x5c, 0x70, 0x01, 0xde, 0x79, 0xe7, +0x1d, 0xfc, 0xf8, 0xe3, 0x8f, 0x7e, 0x8f, 0x4b, +0x06, 0x01, 0x50, 0x5b, 0x5b, 0x8b, 0xa9, 0x53, +0xa7, 0x22, 0x37, 0x37, 0x17, 0x13, 0x27, 0x4e, +0xc4, 0x91, 0x23, 0x47, 0x82, 0x3e, 0xd6, 0x66, +0xb3, 0xe1, 0x8a, 0x2b, 0xae, 0x88, 0x9d, 0x71, +0x11, 0x62, 0xf3, 0xe6, 0xcd, 0xea, 0xf7, 0x04, +0x4f, 0x01, 0x30, 0xc6, 0x94, 0xc2, 0xc2, 0xc2, +0x1f, 0x28, 0xa5, 0x0a, 0x21, 0x44, 0xa1, 0x94, +0x2a, 0x8c, 0x31, 0x45, 0x51, 0x14, 0x45, 0x10, +0x04, 0x45, 0x10, 0x04, 0x85, 0xa7, 0x01, 0xb4, +0x91, 0x00, 0x7d, 0x04, 0xc0, 0x6c, 0x36, 0xab, +0x3f, 0xf3, 0x19, 0x00, 0x99, 0x99, 0x99, 0x6c, +0xe7, 0xce, 0x9d, 0x7e, 0x76, 0x70, 0x7f, 0x9a, +0x90, 0x53, 0x12, 0x8c, 0x16, 0x41, 0x83, 0x64, +0xa4, 0x3e, 0x47, 0x79, 0xfe, 0xf9, 0xe7, 0xc3, +0xe1, 0x70, 0xa0, 0xa4, 0xa4, 0xa4, 0xde, 0xd7, +0x6a, 0xd5, 0xaa, 0x15, 0x16, 0x2f, 0x5e, 0x8c, +0xc1, 0x83, 0x07, 0x47, 0xca, 0xbc, 0x46, 0x53, +0xdf, 0x75, 0xf5, 0xec, 0xd9, 0x33, 0x21, 0x7a, +0xc5, 0xcf, 0x15, 0x4a, 0x4b, 0x4b, 0xf1, 0xe5, +0x97, 0x5f, 0x62, 0xc9, 0x92, 0x25, 0xf8, 0xec, +0xb3, 0xcf, 0xfc, 0x84, 0xe7, 0xbd, 0xf7, 0xde, +0x8b, 0x36, 0x6d, 0xda, 0xf8, 0xfc, 0xdf, 0x09, +0x47, 0x00, 0xc4, 0x73, 0xca, 0xdf, 0xe7, 0x9f, +0x7f, 0x8e, 0x09, 0x13, 0x26, 0xf8, 0xcc, 0xc7, +0x0f, 0xc5, 0x90, 0x21, 0x43, 0x12, 0xa6, 0x53, +0x21, 0x5c, 0x8e, 0x1f, 0x3f, 0x8e, 0x83, 0x07, +0x0f, 0x02, 0xf0, 0x6d, 0x01, 0xac, 0xa8, 0xa8, +0xd8, 0x5e, 0x51, 0x51, 0x51, 0xc5, 0x05, 0x00, +0x63, 0x4c, 0xe1, 0x4e, 0x9e, 0x47, 0x01, 0x00, +0x30, 0x41, 0x10, 0x54, 0xc7, 0xcf, 0x57, 0xfe, +0x5a, 0x31, 0xa0, 0xaf, 0xf3, 0x28, 0x2b, 0x2b, +0x63, 0xfa, 0xad, 0x87, 0xf9, 0xe2, 0x99, 0x93, +0x70, 0x11, 0x00, 0x4e, 0x24, 0x23, 0x01, 0xfa, +0x5d, 0x04, 0x8d, 0x48, 0x80, 0x41, 0x34, 0xa8, +0xcf, 0x51, 0x5e, 0x7c, 0xf1, 0xc5, 0x58, 0xb1, +0x62, 0x45, 0xbd, 0x05, 0x73, 0x37, 0xdc, 0x70, +0x03, 0x76, 0xee, 0xdc, 0x99, 0x10, 0xce, 0x1f, +0x40, 0xbd, 0x83, 0x8d, 0x8c, 0xf0, 0x7f, 0x6c, +0xf8, 0xf0, 0xc3, 0x0f, 0xd1, 0xaf, 0x5f, 0x3f, +0xb4, 0x6e, 0xdd, 0x1a, 0x77, 0xde, 0x79, 0x27, +0x96, 0x2d, 0x5b, 0x16, 0x30, 0xea, 0xe4, 0x76, +0xbb, 0x31, 0x62, 0xc4, 0x08, 0xe4, 0xe5, 0xe5, +0xa9, 0xf7, 0x85, 0x23, 0x00, 0xa2, 0xb5, 0x7d, +0x77, 0x28, 0x8a, 0x8b, 0x8b, 0x31, 0x7a, 0xf4, +0x68, 0xdc, 0x74, 0xd3, 0x4d, 0x61, 0x3b, 0x7f, +0xb3, 0xd9, 0x9c, 0x74, 0xfb, 0x4c, 0x48, 0x92, +0x84, 0x8d, 0x1b, 0x37, 0xfa, 0x14, 0xfe, 0x01, +0x80, 0x2c, 0xcb, 0xb5, 0x9b, 0x37, 0x6f, 0xfe, +0x84, 0x52, 0xaa, 0x70, 0x01, 0xc0, 0xa3, 0x00, +0x94, 0x52, 0x45, 0x51, 0x14, 0x85, 0x10, 0xc2, +0x04, 0x41, 0x50, 0xb8, 0xa3, 0xf7, 0x78, 0x3c, +0xcc, 0xed, 0x76, 0x33, 0xb7, 0xdb, 0xcd, 0x5c, +0x2e, 0x17, 0x73, 0x3a, 0x9d, 0xac, 0xb2, 0xb2, +0x12, 0x16, 0x8b, 0x85, 0xa5, 0xa4, 0xa4, 0xb0, +0xaa, 0xaa, 0xaa, 0xb0, 0x6b, 0x03, 0x12, 0x56, +0x00, 0x00, 0x91, 0x13, 0x01, 0x81, 0xb6, 0x12, +0x36, 0x44, 0x80, 0x41, 0x24, 0x61, 0x8c, 0xd5, +0xdb, 0x8b, 0x9b, 0x99, 0x99, 0x89, 0x41, 0x83, +0x06, 0xe1, 0x83, 0x0f, 0x3e, 0x80, 0xcd, 0x66, +0xf3, 0x3b, 0x7f, 0xc3, 0x0d, 0x37, 0x60, 0xd3, +0xa6, 0x4d, 0x58, 0xb3, 0x66, 0x4d, 0x4c, 0x36, +0xfc, 0xa9, 0xaa, 0xaa, 0xc2, 0x8c, 0x19, 0x33, +0x42, 0xee, 0x59, 0x70, 0xea, 0xd4, 0xa9, 0x7a, +0x23, 0x16, 0x83, 0x06, 0x0d, 0x8a, 0xb4, 0x69, +0x06, 0x3a, 0xf6, 0xef, 0xdf, 0x8f, 0x3b, 0xef, +0xbc, 0x13, 0xbb, 0x76, 0xed, 0x0a, 0xab, 0xa5, +0xaf, 0xaa, 0xaa, 0x0a, 0xc3, 0x86, 0x0d, 0x53, +0xc3, 0xe8, 0x3c, 0xe2, 0x19, 0x8a, 0x58, 0x0a, +0x00, 0x45, 0x51, 0xf0, 0xc6, 0x1b, 0x6f, 0xa0, +0x5b, 0xb7, 0x6e, 0xf8, 0xf8, 0xe3, 0x8f, 0xc3, +0x7a, 0x0e, 0x5f, 0xcd, 0x3e, 0xf1, 0xc4, 0x13, +0x49, 0xb5, 0x1d, 0x31, 0x00, 0xfc, 0xf0, 0xc3, +0x0f, 0x7e, 0xdf, 0x0f, 0x84, 0x10, 0x1c, 0x3a, +0x74, 0x68, 0x69, 0x79, 0x79, 0xf9, 0x19, 0x4a, +0xa9, 0x4c, 0x29, 0x95, 0x05, 0x41, 0x90, 0x79, +0xf8, 0x9f, 0xa7, 0x00, 0x44, 0x51, 0x54, 0xbc, +0x53, 0x00, 0x15, 0x8f, 0xc7, 0xc3, 0xb4, 0x05, +0x80, 0xbc, 0x0b, 0x40, 0x1b, 0xfe, 0x07, 0xc2, +0x6b, 0x01, 0x24, 0x84, 0x24, 0xb6, 0x00, 0x00, +0x0c, 0x11, 0x60, 0x90, 0x1c, 0xd8, 0xed, 0xf6, +0x7a, 0x5b, 0xad, 0xf8, 0x17, 0xd8, 0x6d, 0xb7, +0xdd, 0x86, 0xbd, 0x7b, 0xf7, 0xe2, 0xb9, 0xe7, +0x9e, 0xc3, 0x9f, 0xfe, 0xf4, 0x27, 0x3c, 0xfb, +0xec, 0xb3, 0xd8, 0xb6, 0x6d, 0x1b, 0xd6, 0xac, +0x59, 0x83, 0xcb, 0x2e, 0xbb, 0x2c, 0xea, 0xb6, +0xca, 0xb2, 0x8c, 0xb9, 0x73, 0xe7, 0xa2, 0x4b, +0x97, 0x2e, 0x78, 0xea, 0xa9, 0xa7, 0x30, 0x70, +0xe0, 0x40, 0xfc, 0xe7, 0x3f, 0xff, 0x09, 0xf8, +0xd8, 0x40, 0xf9, 0x43, 0x2d, 0x56, 0xab, 0x15, +0xc3, 0x87, 0x0f, 0x8f, 0x86, 0x99, 0x06, 0x1a, +0x1a, 0x33, 0x63, 0xa2, 0xb8, 0xb8, 0x18, 0x43, +0x87, 0x0e, 0x45, 0x49, 0x49, 0x09, 0x4a, 0x4b, +0x4b, 0x43, 0x3e, 0x36, 0x35, 0x35, 0x15, 0x17, +0x5c, 0x70, 0x41, 0x63, 0xcd, 0x6b, 0x10, 0xc7, +0x8f, 0x1f, 0xc7, 0x65, 0x97, 0x5d, 0x86, 0x09, +0x13, 0x26, 0x84, 0x15, 0x99, 0xe0, 0x94, 0x95, +0x95, 0x61, 0xf0, 0xe0, 0xc1, 0x98, 0x3a, 0x75, +0x6a, 0x14, 0xad, 0x8b, 0x3c, 0xc7, 0x8f, 0x1f, +0xf7, 0x89, 0xc6, 0x00, 0x75, 0x3e, 0xcc, 0x6e, +0xb7, 0xef, 0xdf, 0xba, 0x75, 0xeb, 0x26, 0x4a, +0xa9, 0xcc, 0x18, 0x93, 0x19, 0x63, 0x3c, 0xfc, +0xaf, 0xe6, 0xfe, 0x05, 0x41, 0x50, 0xc5, 0x00, +0xa5, 0x94, 0x99, 0x4c, 0x26, 0x45, 0x9b, 0x06, +0x00, 0x00, 0x93, 0xc9, 0xc4, 0xcc, 0x66, 0x33, +0xe3, 0x05, 0x80, 0x36, 0x9b, 0x8d, 0x71, 0xe1, +0xd7, 0xae, 0x5d, 0x3b, 0x96, 0x95, 0x95, 0xc5, +0x02, 0x15, 0x00, 0x02, 0x09, 0x5a, 0x03, 0x10, +0x0e, 0xc6, 0x06, 0x42, 0x06, 0x89, 0x44, 0x45, +0x45, 0x45, 0xbd, 0x8f, 0xd1, 0xe6, 0xe3, 0x3a, +0x75, 0xea, 0x84, 0xc7, 0x1e, 0x7b, 0x2c, 0x9a, +0x26, 0x05, 0xe4, 0xb3, 0xcf, 0x3e, 0xc3, 0x23, +0x8f, 0x3c, 0x82, 0x82, 0x82, 0x02, 0xf5, 0x3e, +0x87, 0xc3, 0x81, 0xfb, 0xee, 0xbb, 0x0f, 0xdf, +0x7e, 0xfb, 0x2d, 0xe6, 0xcd, 0x9b, 0xe7, 0x13, +0x9d, 0xd8, 0xb1, 0x23, 0xa0, 0x6e, 0x55, 0xf9, +0xdd, 0xef, 0x7e, 0x87, 0xf3, 0xce, 0x3b, 0x2f, +0x6a, 0xf6, 0x1a, 0xd4, 0x91, 0x91, 0x91, 0xd1, +0xa8, 0xe7, 0x15, 0x16, 0x16, 0x62, 0xc8, 0x90, +0x21, 0xf5, 0x3a, 0xf7, 0x1b, 0x6f, 0xbc, 0x31, +0x66, 0x1b, 0x6f, 0xcd, 0x99, 0x33, 0x07, 0x5b, +0xb7, 0x6e, 0x6d, 0xd0, 0x73, 0xb4, 0x5b, 0x4c, +0x27, 0xd3, 0xd0, 0x9f, 0x33, 0x67, 0xce, 0x60, +0xdd, 0xba, 0x75, 0x6a, 0xd4, 0x86, 0x87, 0xff, +0x15, 0x45, 0xf1, 0x6c, 0xde, 0xbc, 0xf9, 0x43, +0xd4, 0x2d, 0x32, 0x7d, 0x0e, 0xaf, 0x18, 0x90, +0xb5, 0x51, 0x00, 0xee, 0xfc, 0xbd, 0x11, 0x00, +0xc5, 0xed, 0x76, 0x33, 0x42, 0x08, 0x4b, 0x4b, +0x4b, 0xf3, 0xc9, 0xff, 0x9f, 0x3a, 0x75, 0x4a, +0xdd, 0xf6, 0x98, 0x17, 0x00, 0x86, 0x6a, 0xd1, +0x4d, 0xf8, 0x08, 0x00, 0x10, 0x38, 0x0a, 0x00, +0x84, 0x8e, 0x04, 0x00, 0xbf, 0x0e, 0x3f, 0x30, +0x22, 0x01, 0x06, 0x0d, 0x45, 0x51, 0x14, 0xbc, +0xfd, 0xf6, 0xdb, 0x78, 0xe4, 0x91, 0x47, 0xc2, +0x0a, 0xb9, 0x36, 0x54, 0x00, 0xc4, 0x9a, 0x3d, +0x7b, 0xf6, 0xe0, 0xfa, 0xeb, 0xaf, 0xc7, 0xcd, +0x37, 0xdf, 0xec, 0xe3, 0xfc, 0xb5, 0x2c, 0x5a, +0xb4, 0x08, 0xfd, 0xfb, 0xf7, 0x47, 0x7e, 0x7e, +0xbe, 0x7a, 0x5f, 0x28, 0x01, 0x90, 0x92, 0x92, +0x82, 0x99, 0x33, 0x67, 0x46, 0xdc, 0x56, 0x03, +0x7f, 0x3a, 0x75, 0xea, 0xd4, 0xe8, 0x15, 0xfa, +0xde, 0xbd, 0x7b, 0xf1, 0xbf, 0xff, 0xfd, 0x2f, +0xe4, 0x63, 0x46, 0x8e, 0x1c, 0xd9, 0xa8, 0xd7, +0x6e, 0x28, 0xb2, 0x2c, 0xe3, 0xfd, 0xf7, 0xdf, +0x6f, 0xd0, 0x73, 0x06, 0x0f, 0x1e, 0x8c, 0x6f, +0xbf, 0xfd, 0x16, 0x2f, 0xbc, 0xf0, 0x42, 0x52, +0x39, 0x7f, 0xa7, 0xd3, 0x89, 0x2f, 0xbe, 0xf8, +0x02, 0x6e, 0xb7, 0xdb, 0x2f, 0xf7, 0xff, 0xcb, +0x2f, 0xbf, 0x7c, 0x71, 0xf2, 0xe4, 0xc9, 0x53, +0x84, 0x10, 0x99, 0x31, 0xa6, 0xfa, 0x99, 0x50, +0x11, 0x00, 0x6d, 0xf8, 0x9f, 0x17, 0x01, 0x3a, +0x9d, 0x4e, 0xe6, 0x70, 0x38, 0x18, 0xcf, 0xff, +0xf3, 0x3d, 0x00, 0xd2, 0xd2, 0xd2, 0xfc, 0xbe, +0xb4, 0xb8, 0x7f, 0xd4, 0xfa, 0xcc, 0xa4, 0x10, +0x00, 0x40, 0xc3, 0x45, 0x40, 0x7e, 0x7e, 0x3e, +0x03, 0x0c, 0x11, 0x60, 0xd0, 0x70, 0xd6, 0xaf, +0x5f, 0x8f, 0xbe, 0x7d, 0xfb, 0xe2, 0xfe, 0xfb, +0xef, 0xc7, 0xcb, 0x2f, 0xbf, 0x8c, 0xd9, 0xb3, +0x67, 0xd7, 0xfb, 0x9c, 0x44, 0x15, 0x00, 0xc5, +0xc5, 0xc5, 0xf8, 0xf3, 0x9f, 0xff, 0x8c, 0x3e, +0x7d, 0xfa, 0xe0, 0xab, 0xaf, 0xbe, 0xaa, 0xf7, +0xf1, 0x3f, 0xfd, 0xf4, 0x13, 0x06, 0x0c, 0x18, +0x80, 0x85, 0x0b, 0x17, 0x42, 0x51, 0x14, 0x6c, +0xdf, 0xbe, 0xdd, 0xe7, 0xbc, 0xf6, 0x4b, 0xec, +0xc9, 0x27, 0x9f, 0x44, 0xd7, 0xae, 0x5d, 0x23, +0x6e, 0xb3, 0x41, 0x60, 0x86, 0x0c, 0x19, 0x12, +0x95, 0xd7, 0x35, 0x9b, 0xcd, 0xb8, 0xe5, 0x96, +0x5b, 0xa2, 0xf2, 0xda, 0x7a, 0xd6, 0xac, 0x59, +0x13, 0x72, 0x4f, 0x09, 0x2d, 0xd7, 0x5f, 0x7f, +0x3d, 0x36, 0x6c, 0xd8, 0x80, 0x75, 0xeb, 0xd6, +0xe1, 0xca, 0x2b, 0xaf, 0x8c, 0xb2, 0x65, 0x91, +0x45, 0x51, 0x14, 0x7c, 0xf9, 0xe5, 0x97, 0xb0, +0xdb, 0xed, 0x7e, 0x1d, 0x32, 0x95, 0x95, 0x95, +0x3f, 0x6d, 0xd8, 0xb0, 0xe1, 0x4b, 0x00, 0x12, +0x00, 0x49, 0x10, 0x04, 0x59, 0x5b, 0x03, 0x80, +0x3a, 0x21, 0xa0, 0x46, 0x01, 0x28, 0xa5, 0x4c, +0x14, 0x45, 0xc5, 0x64, 0x32, 0x29, 0x66, 0xb3, +0x59, 0x11, 0x04, 0x81, 0xa5, 0xa4, 0xa4, 0x28, +0x56, 0xab, 0x55, 0xd1, 0x87, 0xff, 0x01, 0xa0, +0xa2, 0xa2, 0xa2, 0x69, 0x14, 0x01, 0xea, 0x31, +0x44, 0x80, 0x41, 0x34, 0x39, 0x78, 0xf0, 0x20, +0x86, 0x0f, 0x1f, 0x8e, 0x21, 0x43, 0x86, 0xf8, +0xe4, 0xec, 0xa6, 0x4e, 0x9d, 0x5a, 0xef, 0x67, +0x12, 0x4e, 0x91, 0x55, 0xac, 0xb7, 0x28, 0x7d, +0xfe, 0xf9, 0xe7, 0xd1, 0xb5, 0x6b, 0x57, 0xcc, +0x9f, 0x3f, 0xbf, 0x41, 0xdb, 0xc1, 0xd6, 0xd6, +0xd6, 0x62, 0xdc, 0xb8, 0x71, 0xe8, 0xd2, 0xa5, +0x8b, 0xcf, 0x38, 0x59, 0x9b, 0xcd, 0x86, 0x36, +0x6d, 0xda, 0xc0, 0x62, 0xb1, 0xe0, 0x1f, 0xff, +0xf8, 0x07, 0x1e, 0x7d, 0xf4, 0xd1, 0x68, 0x98, +0x6d, 0x10, 0x84, 0x68, 0x08, 0x00, 0x42, 0x08, +0x26, 0x4d, 0x9a, 0x84, 0xf4, 0xf4, 0xf4, 0x88, +0xbf, 0x76, 0x20, 0xc2, 0x59, 0xfd, 0x0f, 0x1b, +0x36, 0x0c, 0x9b, 0x37, 0x6f, 0xc6, 0xda, 0xb5, +0x6b, 0x93, 0xb2, 0xd7, 0x1f, 0x00, 0xbe, 0xfb, +0xee, 0x3b, 0x9c, 0x3a, 0x75, 0xca, 0xcf, 0xf9, +0x3b, 0x9d, 0xce, 0x93, 0x5f, 0x7c, 0xf1, 0xc5, +0x42, 0xd4, 0xf9, 0x02, 0x89, 0x52, 0x2a, 0xa3, +0x4e, 0x08, 0xa8, 0x8e, 0x5f, 0x14, 0x45, 0x99, +0x17, 0xff, 0xe9, 0x71, 0xbb, 0xdd, 0x4c, 0x51, +0x14, 0x85, 0x57, 0xff, 0xf3, 0xe2, 0xbf, 0x94, +0x94, 0x14, 0x76, 0xea, 0xd4, 0x29, 0x9f, 0xfe, +0x7f, 0x6f, 0xfa, 0x3b, 0x68, 0xfe, 0x1f, 0x48, +0x32, 0x01, 0x00, 0x18, 0x22, 0xc0, 0x20, 0xf2, +0x48, 0x92, 0x84, 0xe7, 0x9e, 0x7b, 0x0e, 0x3d, +0x7a, 0xf4, 0xc0, 0x8a, 0x15, 0x2b, 0xfc, 0xce, +0xcb, 0xb2, 0x8c, 0xd1, 0xa3, 0x47, 0xe3, 0xd8, +0xb1, 0x63, 0x41, 0x5f, 0x23, 0x9c, 0x08, 0x40, +0x2c, 0x2b, 0x97, 0x0f, 0x1e, 0x3c, 0x88, 0x69, +0xd3, 0xa6, 0xd5, 0xdb, 0xc2, 0x17, 0x0a, 0x7d, +0x5b, 0x56, 0x4d, 0x4d, 0x0d, 0xba, 0x77, 0xef, +0x8e, 0x3d, 0x7b, 0xf6, 0x60, 0xc6, 0x8c, 0x19, +0xea, 0x9e, 0xe6, 0x06, 0xb1, 0x41, 0xdf, 0x16, +0xda, 0xb7, 0x6f, 0xdf, 0xb3, 0x1a, 0x0f, 0xdd, +0xaf, 0x5f, 0x3f, 0x6c, 0xd9, 0xb2, 0x05, 0xcf, +0x3f, 0xff, 0xfc, 0xd9, 0x9a, 0x16, 0x16, 0x8a, +0xa2, 0x60, 0xed, 0xda, 0xb5, 0x21, 0x1f, 0xf3, +0xcd, 0x37, 0xdf, 0xe0, 0xb3, 0xcf, 0x3e, 0xc3, +0xc0, 0x81, 0x03, 0x63, 0x62, 0x53, 0x34, 0xf8, +0xe1, 0x87, 0x1f, 0xd4, 0x7e, 0x7f, 0x2d, 0x92, +0x24, 0x55, 0x7f, 0xf5, 0xd5, 0x57, 0x6f, 0x3b, +0x9d, 0xce, 0x1a, 0x00, 0x92, 0x37, 0xf4, 0x2f, +0xf1, 0xd5, 0x3e, 0x4f, 0x05, 0x28, 0x8a, 0xa2, +0xf0, 0x9f, 0x45, 0x51, 0x54, 0xcc, 0x66, 0xb3, +0xcc, 0x8b, 0xff, 0xcc, 0x66, 0xb3, 0xa2, 0x9d, +0xfe, 0xc7, 0xc3, 0xff, 0xc0, 0xaf, 0x5b, 0x00, +0x07, 0x0a, 0xff, 0x07, 0x23, 0xe9, 0x04, 0x00, +0x60, 0x88, 0x00, 0x83, 0xc8, 0x91, 0x97, 0x97, +0x87, 0x01, 0x03, 0x06, 0xe0, 0xf1, 0xc7, 0x1f, +0x0f, 0x39, 0xc9, 0xaf, 0xa4, 0xa4, 0x04, 0xb7, +0xdf, 0x7e, 0x7b, 0xd0, 0xc7, 0xd4, 0x27, 0x00, +0xda, 0xb4, 0x69, 0x13, 0xd3, 0x14, 0xc0, 0xaa, +0x55, 0xab, 0x22, 0xfa, 0x7a, 0xad, 0x5b, 0xb7, +0xc6, 0xfb, 0xef, 0xbf, 0x8f, 0x75, 0xeb, 0xd6, +0x21, 0x3b, 0x3b, 0x3b, 0xa2, 0xaf, 0x6d, 0x10, +0x1e, 0x6d, 0xdb, 0xb6, 0x45, 0x4e, 0x4e, 0x0e, +0x3a, 0x74, 0xe8, 0x80, 0x45, 0x8b, 0x16, 0x61, +0xc7, 0x8e, 0x1d, 0xf8, 0xec, 0xb3, 0xcf, 0x1a, +0xbc, 0x15, 0x73, 0x46, 0x46, 0x06, 0xde, 0x78, +0xe3, 0x0d, 0x6c, 0xdb, 0xb6, 0x0d, 0x03, 0x06, +0x0c, 0x88, 0x92, 0xb5, 0xfe, 0x6c, 0xdf, 0xbe, +0x1d, 0xe5, 0xe5, 0xe5, 0x41, 0xcf, 0x77, 0xea, +0xd4, 0x29, 0x6e, 0x1b, 0x5e, 0x45, 0x8a, 0x82, +0x82, 0x02, 0xbf, 0xce, 0x19, 0x6f, 0xc1, 0xba, +0xb4, 0x79, 0xf3, 0xe6, 0x85, 0x25, 0x25, 0x25, +0x25, 0x8c, 0x31, 0x49, 0x10, 0x04, 0x49, 0x10, +0x04, 0x49, 0x14, 0x45, 0xf5, 0x10, 0x04, 0x41, +0x16, 0x45, 0x51, 0x16, 0x45, 0xd1, 0xa7, 0x15, +0x90, 0xe7, 0xff, 0x79, 0x04, 0x40, 0xbb, 0xfa, +0xe7, 0xe1, 0x7f, 0xbb, 0xdd, 0xce, 0x6c, 0x36, +0x1b, 0xe3, 0xe1, 0xff, 0xa2, 0xa2, 0x22, 0xd5, +0x0f, 0x2e, 0x59, 0xb2, 0xc4, 0x2f, 0xff, 0xcf, +0x23, 0x13, 0x49, 0x29, 0x00, 0x00, 0x43, 0x04, +0x18, 0x9c, 0x1d, 0x6e, 0xb7, 0x1b, 0x4f, 0x3e, +0xf9, 0x24, 0xfa, 0xf7, 0xef, 0x8f, 0x1f, 0x7e, +0xf8, 0x21, 0xac, 0xe7, 0x6c, 0xdb, 0xb6, 0x0d, +0x13, 0x27, 0x4e, 0x0c, 0x78, 0xee, 0xd4, 0xa9, +0x53, 0x21, 0x9f, 0x1b, 0xeb, 0xbe, 0xe5, 0x60, +0x85, 0x7e, 0x0d, 0x85, 0x10, 0x82, 0xfb, 0xef, +0xbf, 0x1f, 0xfb, 0xf6, 0xed, 0xc3, 0xdd, 0x77, +0xdf, 0x1d, 0x91, 0xd7, 0x34, 0x68, 0x3c, 0x6f, +0xbc, 0xf1, 0x06, 0x0a, 0x0b, 0x0b, 0x71, 0xd7, +0x5d, 0x77, 0x81, 0x10, 0xa2, 0x16, 0xc8, 0xb5, +0x69, 0xd3, 0xa6, 0xde, 0xe7, 0x12, 0x42, 0x70, +0xef, 0xbd, 0xf7, 0xa2, 0xb0, 0xb0, 0x10, 0x0f, +0x3c, 0xf0, 0x40, 0xcc, 0xaa, 0xfe, 0x39, 0xf5, +0xad, 0xfe, 0x93, 0xbd, 0x0b, 0x6a, 0xdf, 0xbe, +0x7d, 0xf8, 0xfe, 0xfb, 0xef, 0xd5, 0x9f, 0xb5, +0x85, 0x7f, 0x7b, 0xf7, 0xee, 0xfd, 0xf8, 0xc0, +0x81, 0x03, 0x07, 0x51, 0x97, 0xf3, 0xf7, 0xc0, +0x9b, 0xff, 0xd7, 0xae, 0xfe, 0x09, 0x21, 0x92, +0x66, 0xe5, 0xef, 0xb3, 0xfa, 0xe7, 0xf9, 0xff, +0x94, 0x94, 0x14, 0x25, 0x25, 0x25, 0x45, 0xd1, +0xae, 0xfe, 0xf5, 0xc5, 0x7f, 0x99, 0x99, 0x99, +0xaa, 0xaf, 0xeb, 0xde, 0xbd, 0x7b, 0xc8, 0x68, +0x40, 0xd2, 0x0a, 0x00, 0xc0, 0x10, 0x01, 0x06, +0x8d, 0x67, 0xfd, 0xfa, 0xf5, 0x78, 0xe6, 0x99, +0x67, 0xe0, 0xf1, 0x78, 0x1a, 0xf4, 0xbc, 0xb7, +0xdf, 0x7e, 0x3b, 0x60, 0xcf, 0x7c, 0x61, 0x61, +0x61, 0xc8, 0xe7, 0xc5, 0x5a, 0x00, 0xec, 0xdf, +0xbf, 0xff, 0xac, 0x5f, 0x23, 0x37, 0x37, 0x17, +0x9b, 0x36, 0x6d, 0xc2, 0x9b, 0x6f, 0xbe, 0xd9, +0xe8, 0x36, 0x34, 0x83, 0xc8, 0x72, 0xd5, 0x55, +0x57, 0x21, 0x35, 0x35, 0xd5, 0xe7, 0xbe, 0x3e, +0x7d, 0xfa, 0x60, 0xd3, 0xa6, 0x4d, 0xe8, 0xdc, +0xb9, 0x73, 0xd0, 0xe7, 0xe5, 0xe6, 0xe6, 0x62, +0xc3, 0x86, 0x0d, 0x58, 0xb0, 0x60, 0x01, 0x5a, +0xb5, 0x6a, 0x15, 0x6d, 0x33, 0x03, 0xb2, 0x66, +0xcd, 0x9a, 0x90, 0xe7, 0x13, 0x65, 0xf2, 0x65, +0x63, 0x38, 0x70, 0xe0, 0x00, 0x36, 0x6e, 0xdc, +0xa8, 0xfe, 0xac, 0xcd, 0xfd, 0x1f, 0x39, 0x72, +0xe4, 0xab, 0xed, 0xdb, 0xb7, 0xef, 0x80, 0xce, +0xf9, 0xf3, 0x43, 0x14, 0x45, 0x89, 0x3b, 0x7f, +0x78, 0xfd, 0x8a, 0x52, 0x57, 0xb4, 0x23, 0xeb, +0xf3, 0xff, 0x7c, 0xf5, 0x6f, 0xb3, 0xd9, 0x94, +0xb3, 0x29, 0xfe, 0x03, 0xea, 0xfc, 0x67, 0x52, +0x0b, 0x00, 0xc0, 0x10, 0x01, 0x06, 0xb1, 0x67, +0xc2, 0x84, 0x09, 0x3e, 0x4a, 0x1f, 0xa8, 0x5f, +0x00, 0xc4, 0x7a, 0x5a, 0x5e, 0x7d, 0x02, 0xe0, +0xa2, 0x8b, 0x2e, 0x0a, 0x9a, 0xc3, 0xb7, 0xd9, +0x6c, 0x78, 0xe9, 0xa5, 0x97, 0xb0, 0x73, 0xe7, +0x4e, 0x63, 0xca, 0x5f, 0x92, 0xd0, 0xb9, 0x73, +0x67, 0x6c, 0xdd, 0xba, 0x15, 0xe3, 0xc6, 0x8d, +0xf3, 0x71, 0x3e, 0xe7, 0x9d, 0x77, 0x1e, 0x5e, +0x7d, 0xf5, 0x55, 0xec, 0xda, 0xb5, 0x0b, 0x97, +0x5f, 0x7e, 0x79, 0xdc, 0xec, 0xab, 0xac, 0xac, +0x0c, 0xd9, 0xfb, 0x4f, 0x08, 0x49, 0xda, 0x08, +0xc0, 0xa1, 0x43, 0x87, 0xf0, 0xdd, 0x77, 0xdf, +0x01, 0x80, 0x5f, 0xbb, 0xdf, 0xe9, 0xd3, 0xa7, +0x77, 0x7d, 0xf9, 0xe5, 0x97, 0x5f, 0x08, 0x82, +0xe0, 0xd1, 0x3a, 0x7f, 0x6d, 0xf8, 0xdf, 0xfb, +0xb3, 0x1a, 0xfe, 0x37, 0x99, 0x4c, 0xb2, 0xd9, +0x6c, 0x96, 0x15, 0x45, 0x51, 0x4c, 0x26, 0x93, +0x22, 0xcb, 0xb2, 0xcf, 0xea, 0x3f, 0x35, 0x35, +0x55, 0xd1, 0xae, 0xfe, 0xab, 0xaa, 0xaa, 0x98, +0xcd, 0x66, 0x63, 0x7c, 0xf5, 0xcf, 0x8b, 0xff, +0x80, 0xd0, 0xe1, 0x7f, 0x20, 0xc9, 0x23, 0x00, +0x1c, 0x43, 0x04, 0x18, 0x84, 0xe2, 0x9b, 0x6f, +0xbe, 0xc1, 0x5b, 0x6f, 0xbd, 0x15, 0xb1, 0xd7, +0xe3, 0xb3, 0xd6, 0x8f, 0x1e, 0x3d, 0x0a, 0xa0, +0xae, 0x88, 0xf0, 0xf0, 0xe1, 0xc3, 0x41, 0x1f, +0x2f, 0x08, 0x02, 0xae, 0xbf, 0xfe, 0xfa, 0x88, +0xbd, 0x7f, 0x7d, 0x54, 0x55, 0x55, 0xf9, 0x54, +0xef, 0x07, 0xe2, 0xd5, 0x57, 0x5f, 0xc5, 0xd1, +0xa3, 0x47, 0x31, 0x63, 0xc6, 0x0c, 0x74, 0xe9, +0xd2, 0x05, 0x99, 0x99, 0x99, 0xe8, 0xd2, 0xa5, +0x0b, 0xa6, 0x4c, 0x99, 0x82, 0x82, 0x82, 0x02, +0x4c, 0x9e, 0x3c, 0xd9, 0x28, 0xf2, 0x4b, 0x32, +0x32, 0x33, 0x33, 0xf1, 0xce, 0x3b, 0xef, 0x60, +0xd3, 0xa6, 0x4d, 0x78, 0xfe, 0xf9, 0xe7, 0x31, +0x73, 0xe6, 0x4c, 0x14, 0x16, 0x16, 0xe2, 0xe1, +0x87, 0x1f, 0x8e, 0x7b, 0xff, 0xfc, 0xfa, 0xf5, +0xeb, 0x21, 0x49, 0x52, 0xd0, 0xf3, 0xd7, 0x5c, +0x73, 0x4d, 0xc8, 0x81, 0x35, 0x89, 0xca, 0x91, +0x23, 0x47, 0xf0, 0xed, 0xb7, 0xdf, 0x82, 0x31, +0xe6, 0x57, 0xf1, 0x5f, 0x52, 0x52, 0xb2, 0x67, +0xd5, 0xaa, 0x55, 0x8b, 0x35, 0x8e, 0xdf, 0x23, +0x08, 0x82, 0x47, 0x14, 0x45, 0x0f, 0x21, 0x44, +0x1b, 0x09, 0xf0, 0xf3, 0x27, 0x00, 0x54, 0x11, +0x60, 0x36, 0x9b, 0x15, 0x45, 0x51, 0x14, 0x59, +0x96, 0x15, 0x7d, 0xee, 0x3f, 0xd4, 0xea, 0xbf, +0xbe, 0xf0, 0x3f, 0x00, 0x90, 0x70, 0x86, 0x9c, +0x24, 0x0b, 0xfa, 0x1d, 0x04, 0x39, 0x8c, 0x31, +0xf0, 0x89, 0x81, 0x00, 0x90, 0x9f, 0x9f, 0xcf, +0xa7, 0x07, 0x12, 0xa0, 0x6e, 0x62, 0x20, 0x00, +0x64, 0x65, 0x65, 0x91, 0xb2, 0xb2, 0x32, 0x62, +0xb7, 0xdb, 0x89, 0xd9, 0x6c, 0xa6, 0x0e, 0x87, +0x83, 0xa4, 0xa5, 0xa5, 0x91, 0xca, 0xca, 0x4a, +0x6a, 0x32, 0x99, 0xa8, 0xd5, 0x6a, 0x25, 0x67, +0xce, 0x9c, 0x11, 0x44, 0x51, 0xa4, 0x82, 0x20, +0xd0, 0x9a, 0x9a, 0x1a, 0x01, 0x80, 0xcf, 0xa1, +0x28, 0x8a, 0xe8, 0xf1, 0x78, 0x04, 0xc6, 0x98, +0x28, 0xcb, 0xb2, 0x89, 0x31, 0x26, 0x02, 0x10, +0x15, 0x45, 0x31, 0x31, 0xc6, 0x4c, 0x1e, 0x8f, +0xc7, 0x04, 0xc0, 0xa4, 0x28, 0x8a, 0x99, 0x31, +0x66, 0xf2, 0x3e, 0xc6, 0x2c, 0xcb, 0xb2, 0xd9, +0x7b, 0xbf, 0xa5, 0x57, 0xaf, 0x5e, 0xc3, 0x03, +0x4d, 0x0c, 0x04, 0xea, 0x5a, 0x64, 0x92, 0x55, +0x29, 0xc7, 0x9a, 0xad, 0x5b, 0xb7, 0xe2, 0x89, +0x27, 0x9e, 0x50, 0xfb, 0xdf, 0x57, 0xac, 0x58, +0x81, 0x5b, 0x6f, 0xbd, 0x15, 0x00, 0xf0, 0xc5, +0x17, 0x5f, 0x60, 0xd8, 0xb0, 0x61, 0x67, 0xf5, +0xfa, 0xdd, 0xbb, 0x77, 0x57, 0xdb, 0x7d, 0x72, +0x72, 0x72, 0x82, 0x3e, 0xee, 0xb2, 0xcb, 0x2e, +0xc3, 0xa6, 0x4d, 0x9b, 0xce, 0xea, 0xbd, 0x1a, +0xc2, 0xb6, 0x6d, 0xdb, 0x70, 0xe9, 0xa5, 0x97, +0x86, 0x7c, 0xcc, 0xf1, 0xe3, 0xc7, 0xd1, 0xbe, +0x7d, 0xfb, 0x18, 0x59, 0x64, 0x70, 0x2e, 0x52, +0x53, 0x53, 0x83, 0x65, 0xcb, 0x96, 0x61, 0xd1, +0xa2, 0x45, 0xd8, 0xbf, 0x7f, 0x7f, 0xc8, 0xcd, +0x7e, 0x16, 0x2f, 0x5e, 0x8c, 0xd1, 0xa3, 0x47, +0xc7, 0xd0, 0xba, 0xb3, 0xe7, 0xe8, 0xd1, 0xa3, +0xf8, 0xea, 0xab, 0xaf, 0x02, 0x0e, 0x0a, 0x2b, +0x2f, 0x2f, 0x2f, 0x58, 0xb6, 0x6c, 0xd9, 0x7b, +0x00, 0x9c, 0x84, 0x10, 0xb7, 0x28, 0x8a, 0x6e, +0x42, 0x88, 0x9b, 0x10, 0xe2, 0xa6, 0x94, 0xba, +0x35, 0x0b, 0x41, 0x75, 0x41, 0xe8, 0x5d, 0x2c, +0x4a, 0xde, 0xf6, 0x40, 0x89, 0x52, 0x2a, 0x01, +0x90, 0x05, 0x41, 0x90, 0x08, 0x21, 0x72, 0x4a, +0x4a, 0x8a, 0x42, 0x29, 0x95, 0x65, 0x59, 0x56, +0x3c, 0x1e, 0x8f, 0x92, 0x9e, 0x9e, 0xae, 0x48, +0x92, 0xa4, 0xd8, 0x6c, 0x36, 0x26, 0x49, 0x92, +0xa2, 0x5f, 0xfd, 0xe7, 0xe7, 0xe7, 0xb3, 0x40, +0xc3, 0x7f, 0xf8, 0x14, 0x5d, 0xa0, 0x89, 0x44, +0x00, 0x38, 0x46, 0x24, 0xc0, 0x00, 0xa8, 0xab, +0xec, 0xbf, 0xf5, 0xd6, 0x5b, 0x31, 0x70, 0xe0, +0x40, 0x9f, 0xe1, 0x37, 0x93, 0x26, 0x4d, 0x82, +0xdb, 0xed, 0x8e, 0xd8, 0xfb, 0x14, 0x14, 0x14, +0x60, 0xe8, 0xd0, 0xa1, 0x58, 0xb6, 0x6c, 0x59, +0xc8, 0xc7, 0x9d, 0xad, 0xd0, 0x68, 0x28, 0xf5, +0x15, 0x35, 0xb6, 0x6e, 0xdd, 0xfa, 0x9c, 0x74, +0xfe, 0x3b, 0x76, 0xec, 0x80, 0xc3, 0xe1, 0x88, +0xb7, 0x19, 0x4d, 0x1a, 0x59, 0x96, 0xb1, 0x76, +0xed, 0x5a, 0xfc, 0xe1, 0x0f, 0x7f, 0x40, 0x9b, +0x36, 0x6d, 0x30, 0x76, 0xec, 0x58, 0xac, 0x59, +0xb3, 0x26, 0xa4, 0xf3, 0x6f, 0xd5, 0xaa, 0x15, +0x46, 0x8c, 0x18, 0x11, 0x43, 0x2b, 0xcf, 0x9e, +0xe3, 0xc7, 0x8f, 0x63, 0xfd, 0xfa, 0xf5, 0x7e, +0xce, 0x9f, 0x10, 0x82, 0x8a, 0x8a, 0x8a, 0xfd, +0x2b, 0x56, 0xac, 0x58, 0x04, 0xc0, 0xc5, 0xbf, +0xe3, 0x01, 0x78, 0x08, 0x21, 0x3e, 0x2b, 0x7f, +0xaf, 0x8f, 0x50, 0x43, 0xff, 0xd0, 0xf8, 0x11, +0x8b, 0xc5, 0x22, 0x6b, 0x0b, 0xff, 0x44, 0x51, +0x64, 0xb2, 0x2c, 0x2b, 0x0e, 0x87, 0x83, 0x99, +0xcd, 0x66, 0x66, 0xb1, 0x58, 0xd4, 0xb9, 0xff, +0x0d, 0x59, 0xfd, 0xeb, 0xd7, 0xc8, 0x4d, 0x4a, +0x00, 0x00, 0x86, 0x08, 0x38, 0x97, 0xa9, 0xa8, +0xa8, 0xc0, 0x5f, 0xfe, 0xf2, 0x17, 0xf4, 0xed, +0xdb, 0x37, 0x60, 0x1b, 0xdc, 0xa1, 0x43, 0x87, +0x30, 0x67, 0xce, 0x1c, 0x00, 0xfe, 0x7f, 0x08, +0x8d, 0x65, 0xc7, 0x8e, 0x1d, 0x78, 0xf2, 0xc9, +0x27, 0x43, 0x3e, 0xe6, 0xe6, 0x9b, 0x6f, 0x8e, +0xc8, 0x7b, 0x85, 0x4b, 0x7d, 0x02, 0xa0, 0x4f, +0x9f, 0x3e, 0x31, 0xb2, 0x24, 0xfe, 0xb8, 0x5c, +0x2e, 0xbc, 0xfb, 0xee, 0xbb, 0xe8, 0xdf, 0xbf, +0x3f, 0xb6, 0x6e, 0xdd, 0x0a, 0xab, 0xd5, 0x1a, +0x6f, 0x93, 0x9a, 0x24, 0x79, 0x79, 0x79, 0x98, +0x3c, 0x79, 0x32, 0x3a, 0x76, 0xec, 0x88, 0x1b, +0x6f, 0xbc, 0x11, 0xef, 0xbf, 0xff, 0x7e, 0xd8, +0x33, 0x28, 0xee, 0xb9, 0xe7, 0x1e, 0x98, 0xcd, +0xe6, 0x28, 0x5b, 0x18, 0x39, 0x4e, 0x9c, 0x38, +0x81, 0xaf, 0xbe, 0xfa, 0xca, 0x6f, 0xf3, 0x2f, +0x42, 0x08, 0xce, 0x9c, 0x39, 0x73, 0x68, 0xe5, +0xca, 0x95, 0xef, 0xc9, 0xb2, 0xec, 0x84, 0x37, +0xe4, 0xcf, 0x1d, 0x3f, 0x77, 0xfe, 0x26, 0x93, +0xc9, 0xc3, 0xf3, 0xff, 0x84, 0x10, 0xc9, 0xeb, +0x1f, 0xd4, 0xdc, 0x3f, 0x0f, 0xfd, 0x7b, 0xb7, +0x02, 0x96, 0x5d, 0x2e, 0x17, 0x93, 0x24, 0x49, +0x31, 0x99, 0x4c, 0xac, 0x59, 0xb3, 0x66, 0x8a, +0x24, 0x49, 0x8a, 0x76, 0xdb, 0xdf, 0xfa, 0x72, +0xff, 0xa1, 0x68, 0x72, 0x02, 0x00, 0x30, 0x44, +0xc0, 0xb9, 0x06, 0x63, 0x0c, 0x0b, 0x17, 0x2e, +0xc4, 0xc5, 0x17, 0x5f, 0x8c, 0x37, 0xdf, 0x7c, +0x33, 0xe4, 0xd4, 0xbb, 0xa7, 0x9f, 0x7e, 0x1a, +0xa5, 0xa5, 0xa5, 0x11, 0x6d, 0x81, 0xd2, 0xff, +0x77, 0x13, 0x04, 0x01, 0xb9, 0xb9, 0xb9, 0x68, +0xdf, 0xbe, 0x3d, 0x56, 0xaf, 0x5e, 0x1d, 0x73, +0x87, 0x5b, 0x9f, 0x00, 0xf8, 0xcd, 0x6f, 0x02, +0x66, 0x97, 0x9a, 0x14, 0x47, 0x8f, 0x1e, 0xc5, +0xb4, 0x69, 0xd3, 0xd0, 0xa1, 0x43, 0x07, 0xdc, +0x7b, 0xef, 0xbd, 0x18, 0x30, 0x60, 0x00, 0x26, +0x4c, 0x98, 0x10, 0x6f, 0xb3, 0x9a, 0x24, 0x0f, +0x3d, 0xf4, 0x10, 0x7a, 0xf7, 0xee, 0x8d, 0xd9, +0xb3, 0x67, 0x87, 0x3d, 0xe6, 0x17, 0xa8, 0x1b, +0x41, 0xcc, 0xdb, 0x4c, 0x93, 0x85, 0x13, 0x27, +0x4e, 0xe0, 0xcb, 0x2f, 0xbf, 0xf4, 0x71, 0xfe, +0xbc, 0xf0, 0xaf, 0xaa, 0xaa, 0xea, 0x97, 0xe5, +0xcb, 0x97, 0xbf, 0xeb, 0xf1, 0x78, 0x1c, 0xda, +0x95, 0x3f, 0x00, 0x8f, 0x28, 0x8a, 0x1e, 0x41, +0x10, 0x24, 0xef, 0xf7, 0xbe, 0xea, 0xf8, 0xb9, +0xf3, 0xe7, 0xb7, 0xd0, 0x74, 0x00, 0x00, 0x90, +0x5d, 0x2e, 0x17, 0xe3, 0x85, 0x7f, 0xb2, 0x2c, +0x2b, 0xbc, 0xf0, 0x4f, 0xdf, 0xf7, 0xaf, 0xdd, +0xbf, 0x43, 0xbf, 0xfa, 0xd7, 0x17, 0xff, 0x69, +0xfd, 0x63, 0x93, 0x14, 0x00, 0x80, 0x21, 0x02, +0xce, 0x15, 0xf2, 0xf3, 0xf3, 0x71, 0xe5, 0x95, +0x57, 0x62, 0xdc, 0xb8, 0x71, 0xf5, 0xee, 0x5b, +0x0f, 0xd4, 0x55, 0x23, 0xff, 0xe3, 0x1f, 0xff, +0x88, 0x58, 0x04, 0x20, 0x10, 0xed, 0xda, 0xb5, +0x43, 0xef, 0xde, 0xbd, 0xb1, 0x7b, 0xf7, 0x6e, +0xdc, 0x74, 0xd3, 0x4d, 0x51, 0x7b, 0x9f, 0x40, +0xc8, 0xb2, 0x8c, 0xbd, 0x7b, 0xf7, 0x86, 0x7c, +0x4c, 0x32, 0xb7, 0x5b, 0xd5, 0xc7, 0xfa, 0xf5, +0xeb, 0x71, 0xdb, 0x6d, 0xb7, 0xe1, 0xa2, 0x8b, +0x2e, 0xc2, 0xf3, 0xcf, 0x3f, 0x8f, 0xd2, 0xd2, +0x52, 0x0c, 0x1b, 0x36, 0x0c, 0xff, 0xfa, 0xd7, +0xbf, 0xe2, 0x6d, 0x5a, 0x93, 0x64, 0xe7, 0xce, +0x9d, 0x6a, 0x54, 0xad, 0x21, 0xd8, 0x6c, 0x36, +0x98, 0xcd, 0x66, 0xcc, 0x9e, 0x3d, 0x3b, 0x69, +0xf6, 0x93, 0x08, 0xe6, 0xfc, 0x01, 0xc0, 0x6e, +0xb7, 0x1f, 0x5f, 0xbe, 0x7c, 0xf9, 0x02, 0xb7, +0xdb, 0x5d, 0x8b, 0xba, 0xef, 0x6e, 0x35, 0xec, +0x2f, 0x8a, 0x22, 0x77, 0xfa, 0xaa, 0xf3, 0xd7, +0xdc, 0x06, 0x74, 0xfe, 0xda, 0xaa, 0x7f, 0x6d, +0xe8, 0x9f, 0x17, 0xfe, 0x59, 0xad, 0x56, 0x96, +0x9e, 0x9e, 0xae, 0x56, 0xfe, 0x67, 0x64, 0x64, +0x84, 0x5c, 0xfd, 0x07, 0xfb, 0xbe, 0x6b, 0xd2, +0x65, 0xbe, 0x5a, 0x11, 0xa0, 0x2f, 0x10, 0xe4, +0x22, 0x60, 0xc6, 0x8c, 0x19, 0x44, 0x23, 0x02, +0x30, 0x6a, 0xd4, 0x28, 0x00, 0x81, 0xb7, 0x12, +0x6e, 0xd9, 0xb2, 0x25, 0x29, 0x2d, 0x2d, 0xa5, +0xc6, 0x56, 0xc2, 0x89, 0xc3, 0xb4, 0x69, 0xd3, +0x1a, 0x5c, 0x60, 0xf7, 0xf6, 0xdb, 0x6f, 0x47, +0xad, 0xbd, 0xed, 0xbc, 0xf3, 0xce, 0xc3, 0x33, +0xcf, 0x3c, 0x83, 0x7b, 0xee, 0xb9, 0x27, 0x2a, +0xaf, 0x5f, 0x1f, 0xfb, 0xf6, 0xed, 0x0b, 0x99, +0xe7, 0xb6, 0xd9, 0x6c, 0x49, 0x3b, 0x5f, 0x3d, +0x14, 0xdf, 0x7d, 0xf7, 0x1d, 0x1e, 0x78, 0xe0, +0x01, 0xbf, 0x01, 0x48, 0x03, 0x07, 0x0e, 0xc4, +0x27, 0x9f, 0x7c, 0x62, 0x74, 0x34, 0x44, 0x89, +0x8f, 0x3e, 0xfa, 0xa8, 0x51, 0xcf, 0xbb, 0xf6, +0xda, 0x6b, 0xf1, 0xda, 0x6b, 0xaf, 0x35, 0x7a, +0x87, 0xc3, 0x58, 0x53, 0x54, 0x54, 0xe4, 0xe3, +0xfc, 0xb5, 0xee, 0xa4, 0xaa, 0xaa, 0xea, 0xe8, +0xf2, 0xe5, 0xcb, 0xdf, 0x71, 0x3a, 0x9d, 0xd5, +0x7c, 0x01, 0xc7, 0x43, 0xfe, 0xbc, 0x03, 0x20, +0x90, 0xf3, 0x67, 0x8c, 0xc9, 0x94, 0x52, 0xc9, +0x6c, 0x36, 0xcb, 0xde, 0x3d, 0x01, 0x14, 0x41, +0x10, 0x64, 0x42, 0x88, 0xe2, 0x1d, 0x07, 0xac, +0x48, 0x92, 0xa4, 0x34, 0x6f, 0xde, 0x5c, 0x91, +0x65, 0xd9, 0x27, 0xf4, 0x6f, 0xb3, 0xd9, 0x58, +0x59, 0x59, 0x99, 0x1a, 0xfa, 0xe7, 0xb6, 0xf0, +0x85, 0x2c, 0x47, 0xbb, 0xd8, 0x05, 0xfc, 0x17, +0xc6, 0x4d, 0x36, 0x02, 0xa0, 0x47, 0x27, 0x06, +0xd4, 0xfb, 0xf5, 0xd1, 0x80, 0x25, 0x4b, 0x96, +0xa0, 0x7b, 0xf7, 0xee, 0x2c, 0x50, 0x24, 0xa0, +0xa2, 0xa2, 0x82, 0xb5, 0x6c, 0xd9, 0x52, 0x31, +0x22, 0x01, 0x89, 0x83, 0x7e, 0xb7, 0xba, 0x70, +0x90, 0x24, 0x29, 0xe0, 0x30, 0x1f, 0x3d, 0xdd, +0xba, 0x75, 0x6b, 0xd0, 0xd0, 0x94, 0xab, 0xaf, +0xbe, 0x1a, 0x7b, 0xf6, 0xec, 0x89, 0x9b, 0xf3, +0x07, 0xea, 0x0f, 0xff, 0x5f, 0x7d, 0xf5, 0xd5, +0x49, 0x95, 0x6f, 0x0d, 0x87, 0xfd, 0xfb, 0xf7, +0x63, 0xf8, 0xf0, 0xe1, 0x7e, 0xce, 0xbf, 0x5b, +0xb7, 0x6e, 0x58, 0xbd, 0x7a, 0xb5, 0xdf, 0xe0, +0x9c, 0x64, 0x86, 0x31, 0x16, 0x56, 0xa4, 0x2b, +0x56, 0x6c, 0xd9, 0xb2, 0xa5, 0x41, 0x8f, 0x6f, +0xdf, 0xbe, 0x3d, 0x3e, 0xfd, 0xf4, 0x53, 0xac, +0x5a, 0xb5, 0x2a, 0xa9, 0x9c, 0xff, 0xda, 0xb5, +0x6b, 0x21, 0xcb, 0xb2, 0x5f, 0x9f, 0x7f, 0x55, +0x55, 0xd5, 0xb1, 0x65, 0xcb, 0x96, 0x2d, 0x70, +0x3a, 0x9d, 0x35, 0x9a, 0xef, 0x6e, 0x8f, 0x28, +0x8a, 0x6e, 0x6d, 0xfe, 0x1f, 0x1a, 0xe7, 0x6f, +0x32, 0x99, 0x24, 0xb3, 0xd9, 0x2c, 0x99, 0xcd, +0x66, 0xc9, 0x64, 0x32, 0xa9, 0x7e, 0x82, 0x10, +0x22, 0xf3, 0x76, 0x3f, 0x59, 0x96, 0x15, 0xab, +0xd5, 0xaa, 0xf6, 0xfc, 0xd7, 0xd4, 0xd4, 0x04, +0x0c, 0xfd, 0x73, 0xb4, 0x53, 0xff, 0xc2, 0x5d, +0xfd, 0x03, 0xe7, 0x90, 0x00, 0x00, 0x0c, 0x11, +0xd0, 0xd4, 0x38, 0x7e, 0xfc, 0x78, 0x83, 0x72, +0x8e, 0x5a, 0xf8, 0xe0, 0x8e, 0x50, 0x5c, 0x72, +0xc9, 0x25, 0x58, 0xb3, 0x66, 0x4d, 0xbd, 0x3b, +0xa5, 0x59, 0x2c, 0x16, 0xcc, 0x9a, 0x35, 0x0b, +0xeb, 0xd7, 0xaf, 0x8f, 0xfb, 0x97, 0x5a, 0x7d, +0x02, 0xe0, 0xc6, 0x1b, 0x6f, 0x8c, 0x91, 0x25, +0xb1, 0xa1, 0xa2, 0xa2, 0x02, 0xb7, 0xdc, 0x72, +0x8b, 0xdf, 0x5e, 0x0c, 0x1d, 0x3b, 0x76, 0xc4, +0xda, 0xb5, 0x6b, 0xd1, 0xa2, 0x45, 0x8b, 0x38, +0x59, 0x16, 0x59, 0x64, 0x59, 0xc6, 0xa2, 0x45, +0x8b, 0x90, 0x93, 0x93, 0xd3, 0x60, 0xa7, 0x1b, +0x4d, 0xea, 0x4b, 0x37, 0x71, 0x04, 0x41, 0xc0, +0xdf, 0xfe, 0xf6, 0x37, 0xfc, 0xf4, 0xd3, 0x4f, +0xb8, 0xed, 0xb6, 0xdb, 0xa2, 0x6c, 0x55, 0xe4, +0xd0, 0x3b, 0x7f, 0x2d, 0x55, 0x55, 0x55, 0xc7, +0x96, 0x2f, 0x5f, 0xbe, 0xc0, 0xe5, 0x72, 0x55, +0x7b, 0xdb, 0xfb, 0x3c, 0xf0, 0x16, 0xfe, 0xc1, +0x1b, 0xfe, 0x87, 0x77, 0xf5, 0x6f, 0x32, 0x99, +0xf8, 0xa1, 0x86, 0xfe, 0xb5, 0x87, 0x36, 0xef, +0x2f, 0xcb, 0xb2, 0x92, 0x92, 0x92, 0xa2, 0x38, +0x9d, 0x4e, 0x26, 0xcb, 0xb2, 0x92, 0x96, 0x96, +0xa6, 0x58, 0x2c, 0x16, 0x66, 0xb7, 0xdb, 0x99, +0xd5, 0x6a, 0x65, 0x15, 0x15, 0x15, 0x41, 0x87, +0xfe, 0x68, 0xa9, 0x6f, 0xf5, 0x0f, 0x9c, 0x63, +0x02, 0x00, 0xf0, 0x17, 0x01, 0xfc, 0x43, 0x35, +0x44, 0x40, 0xf2, 0xb1, 0x6d, 0xdb, 0xb6, 0xa8, +0xbe, 0x7e, 0xab, 0x56, 0xad, 0xd0, 0xa7, 0x4f, +0x1f, 0x7c, 0xfe, 0xf9, 0xe7, 0x68, 0xdb, 0xb6, +0x6d, 0xc0, 0xc7, 0xe4, 0xe6, 0xe6, 0x62, 0xdb, +0xb6, 0x6d, 0x78, 0xe4, 0x91, 0x47, 0x62, 0x3e, +0x5b, 0x3d, 0x10, 0xdf, 0x7e, 0xfb, 0x6d, 0xc8, +0xf3, 0x4d, 0x49, 0x00, 0xb8, 0x5c, 0x2e, 0xdc, +0x76, 0xdb, 0x6d, 0x38, 0x70, 0xe0, 0x80, 0xcf, +0xfd, 0x99, 0x99, 0x99, 0x58, 0xb3, 0x66, 0x4d, +0xcc, 0xb7, 0x5f, 0x8e, 0x06, 0x6e, 0xb7, 0x1b, +0x6f, 0xbf, 0xfd, 0x36, 0x2e, 0xbe, 0xf8, 0x62, +0x8c, 0x1d, 0x3b, 0x16, 0xfb, 0xf6, 0xed, 0x8b, +0xe9, 0x06, 0x3e, 0xa1, 0x38, 0x71, 0xe2, 0x44, +0x58, 0xdb, 0x60, 0xf7, 0xef, 0xdf, 0x1f, 0xdb, +0xb7, 0x6f, 0xc7, 0x2b, 0xaf, 0xbc, 0xd2, 0xe0, +0x8d, 0x8b, 0xe2, 0x49, 0x71, 0x71, 0x31, 0xbe, +0xfc, 0xf2, 0x4b, 0x28, 0x8a, 0xe2, 0xe7, 0xfc, +0xab, 0xab, 0xab, 0x8f, 0x2f, 0x5f, 0xbe, 0x7c, +0x81, 0xc3, 0xe1, 0xa8, 0x86, 0x37, 0xe7, 0xef, +0xfd, 0xae, 0xf6, 0xa9, 0xfa, 0xf7, 0x46, 0x03, +0x7c, 0x8a, 0xfe, 0x28, 0xa5, 0xea, 0x2d, 0x34, +0xfe, 0x81, 0x3b, 0xfe, 0x66, 0xcd, 0x9a, 0xc9, +0x3c, 0xe4, 0xcf, 0xf3, 0xfe, 0x2d, 0x5a, 0xb4, +0x50, 0xac, 0x56, 0xab, 0xdf, 0xc4, 0x3f, 0x6e, +0x0f, 0x0f, 0xfd, 0x87, 0x9a, 0xfa, 0x17, 0x88, +0xf8, 0x7f, 0x63, 0xc5, 0x01, 0xbd, 0x12, 0x32, +0x44, 0x40, 0x72, 0xa2, 0xdf, 0x75, 0x2b, 0xd2, +0xf0, 0xf0, 0xff, 0xa0, 0x41, 0x83, 0x90, 0x97, +0x97, 0x87, 0xe1, 0xc3, 0x87, 0xab, 0xdb, 0xaf, +0x36, 0x6b, 0xd6, 0x0c, 0x8f, 0x3e, 0xfa, 0x28, +0xb6, 0x6f, 0xdf, 0x8e, 0xdc, 0xdc, 0xdc, 0xa8, +0xda, 0x11, 0x2e, 0x27, 0x4e, 0x9c, 0x08, 0xf9, +0x3b, 0x39, 0xff, 0xfc, 0xf3, 0x71, 0xf1, 0xc5, +0x17, 0xc7, 0xd0, 0xa2, 0xe8, 0x21, 0x49, 0x12, +0x46, 0x8f, 0x1e, 0x8d, 0x6f, 0xbe, 0xf9, 0xc6, +0xe7, 0x7e, 0x9b, 0xcd, 0x86, 0xd5, 0xab, 0x57, +0xa3, 0x5b, 0xb7, 0x6e, 0xf1, 0x31, 0x2c, 0x42, +0x38, 0x1c, 0x0e, 0xcc, 0x99, 0x33, 0x07, 0x9d, +0x3b, 0x77, 0xc6, 0xfd, 0xf7, 0xdf, 0x8f, 0x43, +0x87, 0x0e, 0x01, 0xa8, 0x4b, 0xe1, 0x84, 0xb3, +0xf1, 0x4f, 0x2c, 0xa8, 0x6f, 0xf5, 0x6f, 0x32, +0x99, 0xf0, 0xda, 0x6b, 0xaf, 0x61, 0xcb, 0x96, +0x2d, 0x49, 0xd7, 0x7a, 0x5a, 0x5c, 0x5c, 0xac, +0xae, 0xfc, 0xf5, 0x54, 0x57, 0x57, 0x1f, 0x5f, +0xba, 0x74, 0xe9, 0x02, 0x87, 0xc3, 0xe1, 0x93, +0xf3, 0xf7, 0x0e, 0xf3, 0x51, 0xf3, 0xff, 0x7c, +0xd5, 0xcf, 0x07, 0xfc, 0xf0, 0x43, 0x3b, 0xf3, +0x1f, 0x5e, 0xc7, 0x6f, 0xb5, 0x5a, 0x65, 0x8b, +0xc5, 0xa2, 0x4e, 0xfb, 0xb3, 0xd9, 0x6c, 0x4a, +0xb3, 0x66, 0xcd, 0x14, 0x1e, 0xfa, 0xe7, 0x79, +0x7f, 0x7d, 0xd5, 0x7f, 0xb8, 0xa1, 0xff, 0x60, +0x45, 0xf1, 0xe7, 0xa4, 0x00, 0x00, 0x92, 0x5b, +0x04, 0x10, 0x42, 0xdc, 0x86, 0x08, 0xa8, 0x7f, +0x07, 0xbe, 0xb3, 0x45, 0x9b, 0xff, 0x6f, 0xdd, +0xba, 0x35, 0x96, 0x2d, 0x5b, 0x86, 0xca, 0xca, +0x4a, 0xec, 0xde, 0xbd, 0x1b, 0xa5, 0xa5, 0xa5, +0x78, 0xf1, 0xc5, 0x17, 0xa3, 0x9a, 0x4f, 0xaf, +0xa9, 0xa9, 0xc1, 0x5b, 0x6f, 0xbd, 0x85, 0xcd, +0x9b, 0x37, 0x87, 0xf5, 0xf8, 0x95, 0x2b, 0x57, +0x86, 0x3c, 0xdf, 0x54, 0x56, 0xff, 0x8c, 0x31, +0xfc, 0xf1, 0x8f, 0x7f, 0xc4, 0x8a, 0x15, 0x2b, +0x7c, 0xee, 0x37, 0x99, 0x4c, 0xf8, 0xe4, 0x93, +0x4f, 0xea, 0x9d, 0x82, 0x18, 0x2f, 0xca, 0xcb, +0xcb, 0x31, 0x76, 0xec, 0x58, 0xf4, 0xeb, 0xd7, +0x0f, 0x3b, 0x76, 0x04, 0xfc, 0xd3, 0x45, 0x75, +0x75, 0x35, 0x66, 0xcd, 0x9a, 0x85, 0x4e, 0x9d, +0x3a, 0xe1, 0xa1, 0x87, 0x1e, 0xc2, 0xf1, 0xe3, +0xc7, 0x7d, 0xce, 0x27, 0xd2, 0x8e, 0x8c, 0xf5, +0x09, 0x80, 0xcb, 0x2f, 0xbf, 0x1c, 0x13, 0x26, +0x4c, 0x48, 0x88, 0xc8, 0x58, 0x43, 0x38, 0x79, +0xf2, 0xa4, 0x5f, 0xb5, 0x3f, 0x50, 0xe7, 0x23, +0xaa, 0xab, 0xab, 0x4f, 0x78, 0x9d, 0xbf, 0x5d, +0xe7, 0xfc, 0x55, 0xc7, 0x8f, 0xba, 0xb6, 0x3f, +0xb5, 0xd8, 0x4f, 0x7f, 0x68, 0x57, 0xfe, 0x16, +0x8b, 0x45, 0xb6, 0x5a, 0xad, 0x32, 0xef, 0xf9, +0x97, 0x24, 0xc9, 0x27, 0xef, 0x9f, 0x9e, 0x9e, +0xae, 0x68, 0xf3, 0xfe, 0xe1, 0x54, 0xfd, 0xeb, +0x43, 0xff, 0xa1, 0x48, 0xae, 0x4f, 0x26, 0xc2, +0x24, 0xab, 0x08, 0x20, 0xde, 0x91, 0x92, 0xe7, +0xba, 0x08, 0x08, 0x27, 0xfc, 0x78, 0x36, 0xb4, +0x6e, 0xdd, 0xda, 0xef, 0x3e, 0x8b, 0xc5, 0x82, +0x5e, 0xbd, 0x7a, 0xa9, 0x91, 0x80, 0x68, 0xf0, +0xd3, 0x4f, 0x3f, 0xe1, 0xa1, 0x87, 0x1e, 0x42, +0xfb, 0xf6, 0xed, 0x31, 0x61, 0xc2, 0x04, 0x5c, +0x75, 0xd5, 0x55, 0x78, 0xee, 0xb9, 0xe7, 0x42, +0xce, 0x37, 0x00, 0xea, 0x17, 0x00, 0xb7, 0xdf, +0x7e, 0x7b, 0x24, 0xcd, 0x8c, 0x1b, 0x0f, 0x3f, +0xfc, 0x30, 0xde, 0x7f, 0xff, 0x7d, 0x9f, 0xfb, +0x2c, 0x16, 0x0b, 0x3e, 0xf8, 0xe0, 0x03, 0x0c, +0x1d, 0x3a, 0x34, 0x4e, 0x56, 0x85, 0xe6, 0xc4, +0x89, 0x13, 0xb8, 0xea, 0xaa, 0xab, 0xb0, 0x68, +0xd1, 0x22, 0xec, 0xda, 0xb5, 0x0b, 0x03, 0x07, +0x0e, 0xc4, 0xa4, 0x49, 0x93, 0x7c, 0xfe, 0x0f, +0x33, 0xc6, 0xd0, 0xbd, 0x7b, 0x77, 0x4c, 0x99, +0x32, 0x25, 0xa0, 0xb8, 0xb5, 0x5a, 0xad, 0x09, +0xf5, 0x19, 0xee, 0xda, 0xb5, 0x2b, 0xe4, 0xf9, +0x1b, 0x6e, 0xb8, 0x21, 0x46, 0x96, 0x44, 0x8e, +0x93, 0x27, 0x4f, 0x62, 0xed, 0xda, 0xb5, 0x3e, +0xfb, 0x16, 0xf0, 0x54, 0xb1, 0xdd, 0x6e, 0x3f, +0xb1, 0x6c, 0xd9, 0xb2, 0x05, 0x0e, 0x87, 0xc3, +0x2e, 0x08, 0x82, 0x1a, 0xee, 0xe7, 0xce, 0x9f, +0x52, 0xea, 0x06, 0xe0, 0x31, 0x99, 0x4c, 0x1e, +0xef, 0xcf, 0x3e, 0x3d, 0xff, 0xd0, 0xcd, 0xf9, +0xb7, 0x58, 0x2c, 0x32, 0x21, 0x44, 0x26, 0x84, +0xa8, 0x21, 0x7f, 0xde, 0xef, 0xcf, 0x47, 0xfd, +0xda, 0xed, 0x76, 0xd6, 0xb2, 0x65, 0x4b, 0x25, +0x58, 0xde, 0x3f, 0x6b, 0xf0, 0xd4, 0x55, 0x00, +0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x58, +0xd5, 0x7f, 0x38, 0xab, 0x7f, 0xe0, 0x1c, 0x17, +0x00, 0x40, 0xf0, 0x5f, 0x8e, 0x21, 0x02, 0x12, +0x1f, 0x6f, 0x2b, 0x66, 0xd4, 0x88, 0xe5, 0xb6, +0xa9, 0x92, 0x24, 0xe1, 0x93, 0x4f, 0x3e, 0xc1, +0xe0, 0xc1, 0x83, 0xd1, 0xbd, 0x7b, 0x77, 0xcc, +0x99, 0x33, 0x07, 0x95, 0x95, 0x95, 0x90, 0x24, +0x09, 0x92, 0x24, 0xe1, 0xf1, 0xc7, 0x1f, 0xc7, +0x0d, 0x37, 0xdc, 0x10, 0x34, 0xea, 0x51, 0x5d, +0x5d, 0x1d, 0xf2, 0xb3, 0xce, 0xcd, 0xcd, 0x4d, +0xca, 0x2f, 0x64, 0x3d, 0xd3, 0xa7, 0x4f, 0xf7, +0xeb, 0x3b, 0xcf, 0xcc, 0xcc, 0xc4, 0x97, 0x5f, +0x7e, 0xa9, 0xb6, 0xf0, 0x26, 0x1a, 0x79, 0x79, +0x79, 0xb8, 0xfc, 0xf2, 0xcb, 0x7d, 0x86, 0xb5, +0xc8, 0xb2, 0x8c, 0x57, 0x5e, 0x79, 0x05, 0x5d, +0xbb, 0x76, 0xc5, 0xdc, 0xb9, 0x73, 0xe1, 0x72, +0xb9, 0x90, 0x9f, 0x9f, 0x8f, 0x63, 0xc7, 0x8e, +0x05, 0x7d, 0x9d, 0xb9, 0x73, 0xe7, 0xd6, 0x5b, +0x90, 0x1a, 0x4b, 0xf4, 0xe9, 0x17, 0x3d, 0xb1, +0x9e, 0x81, 0x71, 0xb6, 0x9c, 0x3a, 0x75, 0x2a, +0xa0, 0xf3, 0x07, 0xa0, 0x3a, 0xff, 0xda, 0xda, +0xda, 0x2a, 0x4d, 0x9e, 0xdf, 0x27, 0xe7, 0x2f, +0x8a, 0xa2, 0x9f, 0xf3, 0xe7, 0xdf, 0xeb, 0xda, +0xd5, 0xbf, 0xd9, 0x6c, 0xf6, 0xab, 0xf8, 0xd7, +0x0e, 0xfb, 0xd1, 0x17, 0xfd, 0x69, 0xfb, 0xfd, +0xb5, 0x79, 0xff, 0x60, 0xa1, 0x7f, 0x2d, 0xa1, +0x9c, 0x3f, 0x60, 0x08, 0x00, 0x00, 0x49, 0xd9, +0x1d, 0xe0, 0x31, 0x44, 0x40, 0xd3, 0x11, 0x00, +0x9f, 0x7e, 0xfa, 0x29, 0x2e, 0xb8, 0xe0, 0x02, +0x8c, 0x1a, 0x35, 0x2a, 0xe4, 0x67, 0xb5, 0x6e, +0xdd, 0x3a, 0xf4, 0xe9, 0xd3, 0x27, 0x60, 0x07, +0xc3, 0x9a, 0x35, 0x6b, 0xe0, 0x72, 0xb9, 0x82, +0x3e, 0x77, 0xf2, 0xe4, 0xc9, 0x11, 0xb1, 0x35, +0x9e, 0xbc, 0xfa, 0xea, 0xab, 0x98, 0x39, 0x73, +0xa6, 0xcf, 0x7d, 0x5d, 0xbb, 0x76, 0xc5, 0xe6, +0xcd, 0x9b, 0x71, 0xe5, 0x95, 0x57, 0xc6, 0xc9, +0xaa, 0xd0, 0xcc, 0x9b, 0x37, 0x0f, 0x03, 0x07, +0x0e, 0xc4, 0x2f, 0xbf, 0xfc, 0x12, 0xf0, 0x7c, +0x69, 0x69, 0x29, 0x1e, 0x7c, 0xf0, 0x41, 0xb4, +0x68, 0xd1, 0x02, 0x23, 0x47, 0x8e, 0x0c, 0xfa, +0x3a, 0x7f, 0xfb, 0xdb, 0xdf, 0xe2, 0xda, 0x5e, +0xaa, 0xa7, 0xa0, 0xa0, 0x20, 0xe4, 0x8e, 0x93, +0x3d, 0x7a, 0xf4, 0x40, 0xaf, 0x5e, 0xbd, 0x62, +0x68, 0xd1, 0xd9, 0xa1, 0x77, 0xfe, 0xda, 0x02, +0x71, 0xbb, 0xdd, 0x5e, 0xe4, 0x75, 0xfe, 0x76, +0xbe, 0x08, 0xd3, 0x38, 0x7f, 0x37, 0x77, 0xfe, +0xfa, 0x76, 0x3f, 0x7d, 0xe8, 0x9f, 0x8f, 0xf9, +0x25, 0x84, 0xf8, 0xb4, 0xfe, 0x05, 0x1a, 0xf6, +0xa3, 0x2d, 0xfa, 0xe3, 0xfd, 0xfe, 0xfa, 0xbc, +0x7f, 0xb0, 0xd0, 0x7f, 0x7d, 0x85, 0x7f, 0x5a, +0x0c, 0x01, 0xe0, 0x25, 0xc9, 0x44, 0x80, 0xdb, +0x10, 0x01, 0x4d, 0x43, 0x00, 0x8c, 0x1f, 0x3f, +0x1e, 0xb7, 0xdf, 0x7e, 0x3b, 0x8a, 0x8a, 0x8a, +0xc2, 0x7a, 0x7c, 0x71, 0x71, 0x31, 0x86, 0x0c, +0x19, 0x82, 0x17, 0x5e, 0x78, 0x01, 0x1e, 0x8f, +0x47, 0xbd, 0x3f, 0x54, 0xf8, 0xbf, 0x43, 0x87, +0x0e, 0x18, 0x33, 0x66, 0xcc, 0x59, 0xdb, 0x1a, +0x4f, 0x16, 0x2e, 0x5c, 0x88, 0x49, 0x93, 0x26, +0xf9, 0xdc, 0x77, 0xe5, 0x95, 0x57, 0x62, 0xf3, +0xe6, 0xcd, 0x09, 0x39, 0x49, 0xae, 0xb2, 0xb2, +0x12, 0x77, 0xdc, 0x71, 0x07, 0x1e, 0x78, 0xe0, +0x01, 0x38, 0x9d, 0xce, 0x7a, 0x1f, 0x5f, 0x5b, +0x5b, 0x8b, 0xfd, 0xfb, 0xf7, 0x07, 0x3c, 0x37, +0x7e, 0xfc, 0x78, 0xbc, 0xfc, 0xf2, 0xcb, 0x91, +0x36, 0xf1, 0xac, 0xa8, 0xef, 0xfb, 0xe4, 0x0f, +0x7f, 0xf8, 0x43, 0x8c, 0x2c, 0x39, 0x7b, 0xb8, +0xf3, 0xe7, 0x7f, 0x4f, 0xda, 0xef, 0xff, 0xea, +0xea, 0x6a, 0xad, 0xf3, 0x77, 0xd7, 0xe7, 0xfc, +0xf9, 0x77, 0xb6, 0xb6, 0xe0, 0x8f, 0xcf, 0xf8, +0x87, 0xd7, 0xe1, 0x43, 0x57, 0xf5, 0xcf, 0xc3, +0xff, 0x7c, 0xce, 0x7f, 0x8b, 0x16, 0x2d, 0x94, +0x40, 0x45, 0x7f, 0x3c, 0xef, 0x1f, 0xae, 0xf3, +0xaf, 0x6f, 0xf5, 0x0f, 0x34, 0xb1, 0xed, 0x80, +0x23, 0x01, 0xd1, 0xfc, 0x06, 0xb5, 0xbf, 0x1b, +0xfd, 0x76, 0xc2, 0xa3, 0x46, 0x8d, 0x42, 0x41, +0x41, 0x01, 0x09, 0xb4, 0x95, 0x70, 0x46, 0x46, +0x06, 0x29, 0x2d, 0x2d, 0xa5, 0x31, 0xd8, 0x4a, +0x58, 0x7b, 0x6b, 0x66, 0x8c, 0x99, 0xcf, 0xa5, +0xad, 0x84, 0xdb, 0xb4, 0x69, 0x83, 0xd3, 0xa7, +0x4f, 0x47, 0xed, 0xf5, 0xdd, 0x6e, 0x37, 0x4c, +0x26, 0x53, 0xd4, 0x5e, 0xff, 0xb3, 0xcf, 0x3e, +0x3b, 0xab, 0x8d, 0x82, 0x2e, 0xbc, 0xf0, 0x42, +0x3c, 0xf6, 0xd8, 0x63, 0xb8, 0xe3, 0x8e, 0x3b, +0xd0, 0xb9, 0x73, 0x67, 0x94, 0x97, 0x97, 0xfb, +0x3d, 0x46, 0x10, 0x04, 0x2c, 0x5d, 0xba, 0x54, +0xdd, 0x06, 0x39, 0x59, 0x70, 0x3a, 0x9d, 0x38, +0x7c, 0xf8, 0x30, 0x52, 0x53, 0x53, 0xb1, 0x71, +0xe3, 0x46, 0xdc, 0x7b, 0xef, 0xbd, 0x3e, 0x45, +0x59, 0x77, 0xdd, 0x75, 0x17, 0xde, 0x79, 0xe7, +0x9d, 0x84, 0x1c, 0x6a, 0xb4, 0x7d, 0xfb, 0x76, +0x8c, 0x19, 0x33, 0x06, 0x87, 0x0f, 0x1f, 0x3e, +0xab, 0xd7, 0xc9, 0xca, 0xca, 0xc2, 0xfc, 0xf9, +0xf3, 0x13, 0xb2, 0xae, 0x61, 0xe4, 0xc8, 0x91, +0x58, 0xba, 0x74, 0x69, 0xc0, 0x73, 0x82, 0x20, +0xe0, 0xe8, 0xd1, 0xa3, 0xe0, 0x53, 0x54, 0x13, +0x19, 0xad, 0xf3, 0x0f, 0xd0, 0xea, 0x57, 0xbc, +0x74, 0xe9, 0xd2, 0x77, 0xbc, 0x61, 0x7f, 0x37, +0x21, 0xc4, 0x8d, 0xba, 0x02, 0x3f, 0xb7, 0xde, +0xf9, 0xf3, 0xb0, 0xbf, 0xd6, 0xf9, 0x13, 0x42, +0x24, 0x8b, 0xc5, 0xe2, 0xb3, 0xad, 0x2f, 0xbc, +0x8e, 0xdf, 0x66, 0xb3, 0xf9, 0xe4, 0xfe, 0xb5, +0x9b, 0xfc, 0xf0, 0x2d, 0x7e, 0xeb, 0xcb, 0xfb, +0x87, 0x6a, 0xf9, 0x0b, 0xc7, 0xf9, 0x03, 0x86, +0x00, 0x08, 0x88, 0x21, 0x02, 0x92, 0x83, 0x94, +0x94, 0x94, 0x90, 0x61, 0x6f, 0x52, 0xb7, 0xef, +0x75, 0xa3, 0x5e, 0xbb, 0x79, 0xf3, 0xe6, 0x7e, +0xc3, 0x65, 0x22, 0xcd, 0xc0, 0x81, 0x03, 0xb1, +0x75, 0xeb, 0xd6, 0xb3, 0x7e, 0x9d, 0x40, 0x23, +0xa8, 0x81, 0xba, 0xeb, 0x5f, 0xb8, 0x70, 0x61, +0x52, 0xad, 0xc6, 0xaa, 0xaa, 0xaa, 0x30, 0x77, +0xee, 0x5c, 0xbc, 0xfa, 0xea, 0xab, 0x41, 0x43, +0xcc, 0xd3, 0xa7, 0x4f, 0xc7, 0x53, 0x4f, 0x3d, +0x15, 0x5b, 0xc3, 0xc2, 0x44, 0x92, 0x24, 0xd8, +0x6c, 0xb6, 0xb3, 0xda, 0x76, 0x3a, 0x3d, 0x3d, +0x1d, 0x0f, 0x3d, 0xf4, 0x10, 0x26, 0x4d, 0x9a, +0x84, 0xe6, 0xcd, 0x9b, 0x47, 0xd0, 0xba, 0xc8, +0x20, 0xcb, 0x32, 0x5a, 0xb7, 0x6e, 0x1d, 0x50, +0x70, 0x02, 0x75, 0xdd, 0x26, 0x5f, 0x7c, 0xf1, +0x45, 0x8c, 0xad, 0x6a, 0x38, 0xa7, 0x4f, 0x9f, +0xc6, 0x9a, 0x35, 0x6b, 0x7c, 0x72, 0xfe, 0x9c, +0x9a, 0x9a, 0x9a, 0xe2, 0xa5, 0x4b, 0x97, 0x2e, +0xa8, 0xa9, 0xa9, 0xa9, 0xd4, 0x3b, 0x7f, 0x78, +0xa3, 0xb1, 0x7a, 0xe7, 0x8f, 0x5f, 0x23, 0x00, +0x92, 0xd9, 0x6c, 0x96, 0x28, 0xa5, 0x7e, 0xbd, +0xfe, 0x00, 0x64, 0x9b, 0xcd, 0x26, 0xcb, 0xb2, +0xac, 0x10, 0x42, 0x64, 0x9b, 0xcd, 0xe6, 0x33, +0xe6, 0xb7, 0xb1, 0xce, 0x1f, 0x68, 0x9c, 0x00, +0x30, 0x52, 0x00, 0x01, 0x48, 0xf4, 0x74, 0x80, +0x28, 0x8a, 0xe7, 0x7c, 0x3a, 0xc0, 0xe5, 0x72, +0x85, 0x74, 0xfe, 0x40, 0x5d, 0xe8, 0xbb, 0x4b, +0x97, 0x2e, 0x8d, 0x7a, 0xfd, 0x68, 0x87, 0xff, +0xf7, 0xec, 0xd9, 0x13, 0x11, 0xe7, 0x0f, 0x20, +0xa0, 0xf3, 0x17, 0x45, 0x11, 0xaf, 0xbf, 0xfe, +0x7a, 0xd2, 0x38, 0xff, 0x53, 0xa7, 0x4e, 0x61, +0xda, 0xb4, 0x69, 0x38, 0xff, 0xfc, 0xf3, 0x31, +0x75, 0xea, 0xd4, 0x80, 0xce, 0xbf, 0x43, 0x87, +0x0e, 0x58, 0xba, 0x74, 0x69, 0xc2, 0x3a, 0x7f, +0xa0, 0x6e, 0xef, 0x8f, 0x96, 0x2d, 0x5b, 0x36, +0xea, 0xb9, 0x19, 0x19, 0x19, 0x98, 0x31, 0x63, +0x06, 0x8e, 0x1c, 0x39, 0x82, 0x99, 0x33, 0x67, +0x26, 0x84, 0xf3, 0x3f, 0x79, 0xf2, 0xa4, 0x5f, +0x7a, 0x69, 0xed, 0xda, 0xb5, 0x41, 0x9d, 0x3f, +0x00, 0x4c, 0x9c, 0x38, 0x31, 0xda, 0x66, 0x9d, +0x35, 0xb1, 0x70, 0xfe, 0xd0, 0x7d, 0xb7, 0x23, +0x88, 0xf3, 0xe7, 0xbd, 0xfe, 0x0d, 0x75, 0xfe, +0x5a, 0x1a, 0xe3, 0xfc, 0x01, 0x43, 0x00, 0x04, +0xe5, 0xff, 0xdb, 0x3b, 0xef, 0xf0, 0xa8, 0xaa, +0xfc, 0xff, 0xbf, 0x6f, 0x99, 0x49, 0xa1, 0x05, +0x12, 0x5a, 0x04, 0x09, 0xc2, 0xa2, 0x12, 0xaa, +0x18, 0x40, 0xa4, 0x08, 0x82, 0x80, 0x74, 0x05, +0x29, 0xab, 0xab, 0xe2, 0x2a, 0x2b, 0x56, 0x5c, +0xdd, 0x55, 0xf6, 0xf9, 0xea, 0xae, 0x65, 0xd9, +0x9f, 0x88, 0x2e, 0xbb, 0x60, 0xa7, 0xac, 0x52, +0x45, 0x08, 0x10, 0x6a, 0x1a, 0x09, 0x90, 0x06, +0x49, 0x40, 0x20, 0x82, 0x20, 0xd2, 0x5b, 0x7a, +0x08, 0xc9, 0x24, 0x33, 0xb7, 0xfc, 0xfe, 0xc8, +0x9c, 0xe1, 0xce, 0x9d, 0x3b, 0x99, 0x99, 0x64, +0x7a, 0xce, 0xeb, 0x79, 0xf2, 0x64, 0x32, 0x77, +0xe6, 0xe6, 0x9c, 0x9b, 0xcc, 0x7d, 0xbf, 0xcf, +0xe7, 0x7c, 0xce, 0xe7, 0xf8, 0xb3, 0x09, 0x20, +0xa1, 0xa7, 0xa6, 0x6c, 0x02, 0x9c, 0x99, 0xff, +0x97, 0x65, 0x19, 0xcf, 0x3e, 0xfb, 0x6c, 0x83, +0xce, 0xef, 0x69, 0x03, 0x70, 0xe0, 0xc0, 0x01, +0x8f, 0x9d, 0x7b, 0xe0, 0xc0, 0x81, 0xc8, 0xcb, +0xcb, 0xc3, 0x8b, 0x2f, 0xbe, 0xe8, 0xb1, 0xdf, +0xe1, 0x2e, 0xca, 0xcb, 0xcb, 0xf1, 0xc6, 0x1b, +0x6f, 0x20, 0x26, 0x26, 0x06, 0x8b, 0x16, 0x2d, +0xd2, 0xfc, 0xbb, 0xea, 0xf5, 0x7a, 0xbc, 0xfd, +0xf6, 0xdb, 0x38, 0x75, 0xea, 0x14, 0xa6, 0x4d, +0x9b, 0xe6, 0x83, 0x56, 0x3a, 0x0f, 0xcb, 0xb2, +0xe8, 0xd9, 0xb3, 0xa7, 0x4b, 0xef, 0x89, 0x8c, +0x8c, 0xc4, 0x47, 0x1f, 0x7d, 0x84, 0xf3, 0xe7, +0xcf, 0xe3, 0xdd, 0x77, 0xdf, 0xf5, 0x8a, 0xf0, +0x5f, 0xbc, 0x78, 0x11, 0xd5, 0xd5, 0xd5, 0x9a, +0xc7, 0x0c, 0x06, 0x03, 0xd6, 0xaf, 0x5f, 0x8f, +0xf1, 0xe3, 0xc7, 0xa3, 0x53, 0xa7, 0x4e, 0x78, +0xe2, 0x89, 0x27, 0x70, 0xf2, 0xe4, 0x49, 0xcb, +0xf1, 0x55, 0xab, 0x56, 0xd9, 0x3d, 0xef, 0x43, +0x0f, 0x3d, 0xd4, 0xa8, 0x69, 0x2d, 0x6f, 0x50, +0x58, 0x58, 0x68, 0x93, 0xed, 0x0f, 0xd4, 0xdd, +0xe7, 0xab, 0xaa, 0xaa, 0xae, 0xc7, 0xc7, 0xc7, +0x5b, 0xc4, 0x1f, 0xb7, 0xb7, 0xf3, 0x75, 0x59, +0xfc, 0xd5, 0x26, 0x80, 0x88, 0xbf, 0x59, 0xe8, +0x1d, 0xae, 0xf5, 0x57, 0x8a, 0xbf, 0x56, 0xc6, +0x7f, 0x63, 0x42, 0xff, 0x04, 0x6a, 0x00, 0xea, +0xc1, 0x9f, 0xcb, 0x06, 0x37, 0x75, 0x13, 0xe0, +0x4c, 0x88, 0x55, 0x96, 0x65, 0x3c, 0xfd, 0xf4, +0xd3, 0xe0, 0x38, 0xce, 0xe5, 0xf3, 0xb7, 0x6e, +0xdd, 0xba, 0x21, 0xcd, 0x72, 0x1a, 0x4f, 0x18, +0x80, 0xb6, 0x6d, 0xdb, 0x62, 0xe9, 0xd2, 0xa5, +0xc8, 0xca, 0xca, 0xf2, 0x9b, 0xea, 0x84, 0xf6, +0x10, 0x45, 0x11, 0x5f, 0x7c, 0xf1, 0x05, 0x7e, +0xf7, 0xbb, 0xdf, 0xe1, 0xb3, 0xcf, 0x3e, 0xd3, +0x4c, 0x94, 0x63, 0x18, 0x06, 0x53, 0xa7, 0x4e, +0xc5, 0xf1, 0xe3, 0xc7, 0xb1, 0x68, 0xd1, 0x22, +0x34, 0x6b, 0xd6, 0xcc, 0x07, 0x2d, 0x75, 0x1d, +0x67, 0xaa, 0x10, 0xea, 0xf5, 0x7a, 0xcc, 0x9e, +0x3d, 0x1b, 0xab, 0x56, 0xad, 0xc2, 0xf9, 0xf3, +0xe7, 0xb1, 0x70, 0xe1, 0x42, 0xb4, 0x6c, 0xd9, +0xd2, 0x0b, 0xad, 0xab, 0xdb, 0x07, 0x63, 0xfc, +0xf8, 0xf1, 0x08, 0x0b, 0x0b, 0xb3, 0x3c, 0x27, +0xcb, 0x32, 0xf6, 0xed, 0xdb, 0x87, 0x67, 0x9f, +0x7d, 0x16, 0xed, 0xdb, 0xb7, 0xc7, 0x9c, 0x39, +0x73, 0xb0, 0x67, 0xcf, 0x1e, 0x88, 0xa2, 0x88, +0xda, 0xda, 0x5a, 0x3c, 0xff, 0xfc, 0xf3, 0x10, +0x45, 0x11, 0x25, 0x25, 0x25, 0x36, 0x05, 0x98, +0x08, 0x0c, 0xc3, 0x60, 0xf1, 0xe2, 0xc5, 0x5e, +0xe9, 0x43, 0x43, 0x29, 0x2a, 0x2a, 0xb2, 0x4a, +0xf8, 0x23, 0x28, 0xc4, 0x7f, 0xe5, 0xad, 0x5b, +0xb7, 0x2c, 0xe2, 0xcf, 0x30, 0x8c, 0x91, 0x88, +0xbf, 0xd6, 0x9c, 0x3f, 0x1a, 0x20, 0xfe, 0xa4, +0xd0, 0x8f, 0xa3, 0xb5, 0xfe, 0xa4, 0x6d, 0xee, +0x4c, 0xfa, 0x53, 0x43, 0x0d, 0x80, 0x03, 0x9c, +0x29, 0x16, 0x04, 0xd4, 0x55, 0x63, 0xf2, 0x96, +0x09, 0x30, 0x27, 0x98, 0x38, 0x6d, 0x02, 0xca, +0xcb, 0xcb, 0x35, 0xeb, 0xc3, 0x06, 0xb2, 0x09, +0x50, 0x7f, 0x80, 0xb5, 0x90, 0x24, 0x09, 0x77, +0xdc, 0x71, 0x47, 0x83, 0x2a, 0xe0, 0xdd, 0x7f, +0xbf, 0x66, 0x0a, 0x85, 0xdb, 0x70, 0x64, 0x00, +0x86, 0x0f, 0x1f, 0xee, 0x74, 0x02, 0x62, 0xa7, +0x4e, 0x9d, 0xb0, 0x74, 0xe9, 0x52, 0x5c, 0xb8, +0x70, 0x01, 0xaf, 0xbe, 0xfa, 0xaa, 0xdf, 0x57, +0x5e, 0x3b, 0x79, 0xf2, 0x24, 0xfa, 0xf7, 0xef, +0x8f, 0xf9, 0xf3, 0xe7, 0xa3, 0xb8, 0xb8, 0xd8, +0xe6, 0x78, 0x68, 0x68, 0x28, 0xe6, 0xcd, 0x9b, +0x87, 0x53, 0xa7, 0x4e, 0x21, 0x3e, 0x3e, 0x1e, +0x3d, 0x7a, 0xf4, 0xf0, 0x41, 0x2b, 0x1b, 0x4e, +0xe7, 0xce, 0x9d, 0x1d, 0xbe, 0x26, 0x3c, 0x3c, +0x1c, 0xeb, 0xd6, 0xad, 0xc3, 0x33, 0xcf, 0x3c, +0x83, 0xe6, 0xcd, 0x9b, 0x7b, 0xa1, 0x55, 0x75, +0x7c, 0xf5, 0xd5, 0x57, 0x18, 0x3d, 0x7a, 0x34, +0x7a, 0xf5, 0xea, 0x05, 0x86, 0x61, 0x50, 0x5d, +0x5d, 0x8d, 0x85, 0x0b, 0x17, 0xa2, 0x4b, 0x97, +0x2e, 0x18, 0x35, 0x6a, 0x14, 0x56, 0xaf, 0x5e, +0x8d, 0xca, 0xca, 0x4a, 0x9b, 0xf7, 0x65, 0x64, +0x64, 0xe0, 0xbd, 0xf7, 0xde, 0xc3, 0xaa, 0x55, +0xab, 0xec, 0x9a, 0xef, 0x59, 0xb3, 0x66, 0x79, +0xfc, 0x73, 0xd3, 0x18, 0x8a, 0x8a, 0x8a, 0xb0, +0x77, 0xef, 0x5e, 0xab, 0x7b, 0x07, 0x19, 0xd8, +0x55, 0x55, 0x55, 0xdd, 0xd8, 0xb2, 0x65, 0xcb, +0x2a, 0xa5, 0xf8, 0xf3, 0x3c, 0x6f, 0x25, 0xfe, +0x3a, 0x9d, 0xce, 0xa8, 0x16, 0x7f, 0xc5, 0x12, +0x3f, 0x4d, 0xf1, 0x57, 0x96, 0xf8, 0x75, 0xa5, +0xd0, 0x0f, 0xe0, 0xda, 0x72, 0xbf, 0x86, 0x88, +0x3f, 0x00, 0xd0, 0x4d, 0xb2, 0x9d, 0x40, 0x96, +0x65, 0x59, 0x99, 0x18, 0xa8, 0x4e, 0x2e, 0x8b, +0x8d, 0x8d, 0x95, 0x0b, 0x0a, 0x0a, 0x98, 0x4d, +0x9b, 0x36, 0x61, 0xc6, 0x8c, 0x19, 0xc4, 0x00, +0x30, 0xe6, 0x10, 0x0e, 0x80, 0xba, 0x5d, 0xcb, +0xa2, 0xa2, 0xa2, 0xa4, 0xe2, 0xe2, 0x62, 0xb6, +0x55, 0xab, 0x56, 0x92, 0x39, 0xd4, 0xc9, 0x46, +0x44, 0x44, 0x88, 0xa4, 0x1a, 0x98, 0x56, 0x32, +0x17, 0xcb, 0xb2, 0xd0, 0xe9, 0x74, 0x30, 0x99, +0x4c, 0xe0, 0x38, 0x4e, 0xb3, 0x36, 0x35, 0xcf, +0xf3, 0x10, 0x04, 0x01, 0x92, 0x24, 0x59, 0x5e, +0xa3, 0x7c, 0xed, 0xd1, 0xa3, 0x47, 0xe3, 0xfb, +0xf5, 0xeb, 0x87, 0x88, 0x88, 0x88, 0x01, 0xea, +0xf7, 0xee, 0xde, 0xbd, 0x1b, 0x00, 0x02, 0x2e, +0x31, 0xd0, 0x59, 0x03, 0x00, 0x00, 0x73, 0xe7, +0xce, 0xc5, 0xae, 0x5d, 0xbb, 0x9c, 0x3a, 0x6f, +0xfb, 0xf6, 0xed, 0xf1, 0xc9, 0x27, 0x9f, 0x78, +0xb4, 0xe4, 0xea, 0x6f, 0xbf, 0xfd, 0xe6, 0x70, +0xd9, 0xdf, 0xa6, 0x4d, 0x9b, 0x50, 0x59, 0x59, +0x89, 0xff, 0xfb, 0xbf, 0xff, 0xc3, 0x86, 0x0d, +0x1b, 0x34, 0x93, 0x19, 0xbb, 0x77, 0xef, 0x8e, +0xb7, 0xdf, 0x7e, 0x1b, 0x4f, 0x3d, 0xf5, 0x94, +0x5f, 0x66, 0xc3, 0x6b, 0xb1, 0x7b, 0xf7, 0x6e, +0xcc, 0x9a, 0x35, 0x0b, 0x37, 0x6f, 0xde, 0xb4, +0x7a, 0x9e, 0xe3, 0x38, 0xf4, 0xe9, 0xd3, 0x07, +0x53, 0xa6, 0x4c, 0xc1, 0xfc, 0xf9, 0xf3, 0xbd, +0x5a, 0x84, 0xc9, 0xdd, 0x38, 0xb3, 0xfd, 0xb0, +0xb7, 0x93, 0xaf, 0x05, 0x41, 0xc0, 0x6b, 0xaf, +0xbd, 0x86, 0xcf, 0x3f, 0xff, 0x1c, 0x00, 0x90, +0x94, 0x94, 0x84, 0x1b, 0x37, 0x6e, 0xe0, 0x83, +0x0f, 0x3e, 0xc0, 0xf2, 0xe5, 0xcb, 0x9d, 0x3a, +0xc7, 0xa2, 0x45, 0x8b, 0xec, 0x9a, 0x95, 0x66, +0xcd, 0x9a, 0xe1, 0x9f, 0xff, 0xfc, 0xa7, 0xdb, +0xda, 0xeb, 0x6e, 0xd4, 0x23, 0x7f, 0xa5, 0x78, +0x9a, 0xc5, 0x7f, 0xe5, 0xad, 0x5b, 0xb7, 0xca, +0x95, 0xe2, 0x4f, 0xe6, 0xfe, 0xd5, 0xe2, 0xaf, +0x1c, 0x88, 0xb1, 0x2c, 0x6b, 0xd2, 0xeb, 0xf5, +0x16, 0xc1, 0x57, 0x8b, 0xbf, 0xba, 0xc4, 0xaf, +0x5a, 0xfc, 0x49, 0xa1, 0x1f, 0x41, 0x10, 0xbc, +0x2e, 0xfe, 0x00, 0x35, 0x00, 0x0d, 0xc6, 0x6c, +0x02, 0x64, 0xb2, 0x32, 0x80, 0x9a, 0x00, 0xef, +0xe2, 0x8a, 0x01, 0x98, 0x3c, 0x79, 0x32, 0xa2, +0xa2, 0xa2, 0x34, 0x47, 0x9b, 0x04, 0x8e, 0xe3, +0xf0, 0xe2, 0x8b, 0x2f, 0xe2, 0xc3, 0x0f, 0x3f, +0xf4, 0x78, 0xb5, 0x35, 0x47, 0xa3, 0xff, 0xde, +0xbd, 0x7b, 0xa3, 0x5d, 0xbb, 0x76, 0x68, 0xd7, +0xae, 0x1d, 0xd6, 0xad, 0x5b, 0x87, 0x85, 0x0b, +0x17, 0x62, 0xf3, 0xe6, 0xcd, 0xc8, 0xcd, 0xcd, +0x45, 0x45, 0x45, 0x05, 0xee, 0xba, 0xeb, 0x2e, +0x8c, 0x1f, 0x3f, 0x1e, 0xd3, 0xa7, 0x4f, 0x6f, +0xd0, 0xf4, 0x86, 0xaf, 0xf8, 0xfc, 0xf3, 0xcf, +0xf1, 0xca, 0x2b, 0xaf, 0xd8, 0x94, 0x34, 0xd6, +0xe9, 0x74, 0xc8, 0xc9, 0xc9, 0x09, 0xb8, 0x0d, +0x63, 0xec, 0xe1, 0x8c, 0x01, 0xe8, 0xda, 0xb5, +0xab, 0x47, 0xdb, 0x20, 0xcb, 0x32, 0x0a, 0x0a, +0x0a, 0xb0, 0x7f, 0xff, 0x7e, 0xa4, 0xa7, 0xa7, +0x23, 0x3d, 0x3d, 0xdd, 0xaa, 0x8a, 0x64, 0x59, +0x59, 0x19, 0x32, 0x32, 0x32, 0xf0, 0xd5, 0x57, +0x5f, 0x39, 0x7d, 0x4e, 0x49, 0x92, 0x6c, 0x8c, +0x1b, 0x61, 0xd5, 0xaa, 0x55, 0x88, 0x89, 0x89, +0x69, 0x6c, 0xb3, 0x3d, 0x42, 0x71, 0x71, 0x31, +0x12, 0x13, 0x13, 0x2d, 0x91, 0x0b, 0xb5, 0xf8, +0x9b, 0xc3, 0xfe, 0x4e, 0x8b, 0x3f, 0xf9, 0xae, +0x14, 0x7f, 0x75, 0xc6, 0xbf, 0xb3, 0xe2, 0x1f, +0x1d, 0x1d, 0x2d, 0x91, 0x42, 0x3f, 0xde, 0x16, +0x7f, 0x80, 0x1a, 0x00, 0xa7, 0x51, 0x47, 0x01, +0x00, 0x6a, 0x02, 0x7c, 0x89, 0x2b, 0x06, 0x40, +0xa7, 0xd3, 0xe1, 0x95, 0x57, 0x5e, 0xc1, 0x7b, +0xef, 0xbd, 0xa7, 0xf9, 0xba, 0x07, 0x1e, 0x78, +0x00, 0xcb, 0x97, 0x2f, 0xf7, 0x9a, 0x00, 0x39, +0x32, 0x00, 0xea, 0x24, 0xaa, 0x5e, 0xbd, 0x7a, +0xa1, 0x57, 0xaf, 0x5e, 0x9e, 0x6c, 0x92, 0xc7, +0xc9, 0xcf, 0xcf, 0xc7, 0x6b, 0xaf, 0xbd, 0xa6, +0xb9, 0x9f, 0xc1, 0x82, 0x05, 0x0b, 0x82, 0x46, +0xfc, 0x01, 0xe7, 0x0c, 0x40, 0x43, 0x57, 0xa7, +0x38, 0xc3, 0x77, 0xdf, 0x7d, 0x87, 0x3f, 0xff, +0xf9, 0xcf, 0xf5, 0x1a, 0x5e, 0x00, 0xd8, 0xb8, +0x71, 0x23, 0xa2, 0xa2, 0xa2, 0xea, 0xad, 0xe8, +0xe7, 0x88, 0x3e, 0x7d, 0xfa, 0xe0, 0xb3, 0xcf, +0x3e, 0xc3, 0xa8, 0x51, 0xa3, 0x1a, 0x7c, 0x0e, +0x4f, 0x52, 0x5c, 0x5c, 0x8c, 0xbd, 0x7b, 0xf7, +0xc2, 0x68, 0x34, 0xda, 0xac, 0xf3, 0xaf, 0xaa, +0xaa, 0x2a, 0x8c, 0x8f, 0x8f, 0x5f, 0x59, 0x59, +0x59, 0x59, 0x6e, 0x0e, 0xe9, 0x5b, 0x92, 0xfd, +0xa0, 0x12, 0x7f, 0x58, 0x4f, 0xbd, 0x0a, 0x21, +0x21, 0x21, 0x24, 0x12, 0x60, 0x33, 0xdf, 0x6f, +0x4f, 0xfc, 0x5b, 0xb4, 0x68, 0x21, 0x89, 0xa2, +0xd8, 0x28, 0xf1, 0x57, 0xd2, 0x58, 0xf1, 0x07, +0x68, 0x0e, 0x80, 0x4b, 0x68, 0x5d, 0x70, 0x86, +0x61, 0x6c, 0x92, 0x02, 0x01, 0xcf, 0xe6, 0x04, +0xc8, 0xb2, 0x2c, 0x2a, 0x6a, 0x4c, 0x2b, 0xbf, +0x3b, 0xcc, 0x09, 0x38, 0x7a, 0xf4, 0x68, 0x7c, +0x30, 0xe4, 0x04, 0xb8, 0x62, 0x00, 0x80, 0xba, +0x52, 0xaa, 0x6d, 0xda, 0xb4, 0xb1, 0x3a, 0xde, +0xb3, 0x67, 0x4f, 0xc4, 0xc7, 0xc7, 0x23, 0x33, +0x33, 0xd3, 0xab, 0x02, 0xe4, 0xaa, 0x01, 0x08, +0x74, 0x4c, 0x26, 0x13, 0x9e, 0x7d, 0xf6, 0x59, +0xcd, 0x25, 0x57, 0x5d, 0xba, 0x74, 0xb1, 0x6b, +0xcc, 0x02, 0x15, 0x65, 0x72, 0x9d, 0x3d, 0x3c, +0x59, 0xbd, 0xf0, 0xf5, 0xd7, 0x5f, 0x77, 0x28, +0xfe, 0x00, 0x90, 0x90, 0x90, 0xe0, 0x94, 0x59, +0xd1, 0xa2, 0x7d, 0xfb, 0xf6, 0xf8, 0xfa, 0xeb, +0xaf, 0x71, 0xe4, 0xc8, 0x11, 0xbf, 0x15, 0xff, +0x92, 0x92, 0x12, 0xbb, 0xe2, 0x5f, 0x5d, 0x5d, +0x5d, 0xb8, 0x75, 0xeb, 0x56, 0x8b, 0xf8, 0xab, +0x92, 0xfd, 0x8c, 0x6a, 0xf1, 0x57, 0x16, 0xf9, +0xd1, 0x12, 0x7f, 0xf2, 0xbd, 0x3e, 0xf1, 0xaf, +0xaa, 0xaa, 0x92, 0xb5, 0xc4, 0xdf, 0xd9, 0x12, +0xbf, 0xc0, 0xed, 0xd1, 0xbf, 0x3b, 0xc4, 0x1f, +0xa0, 0x06, 0xc0, 0x65, 0xdc, 0x69, 0x02, 0xc2, +0xc2, 0xc2, 0xe4, 0x86, 0x98, 0x80, 0x90, 0x90, +0x10, 0xa1, 0xa9, 0x9b, 0x00, 0x57, 0x0d, 0x40, +0xcb, 0x96, 0x2d, 0xf1, 0xd7, 0xbf, 0xfe, 0x15, +0x00, 0x70, 0xe7, 0x9d, 0x77, 0x62, 0xd5, 0xaa, +0x55, 0x38, 0x7e, 0xfc, 0x38, 0xa6, 0x4e, 0x9d, +0xea, 0xb1, 0x36, 0x6a, 0x51, 0x58, 0x58, 0x68, +0xb7, 0xe4, 0x2b, 0x00, 0xb4, 0x69, 0xd3, 0x06, +0x0f, 0x3c, 0xf0, 0x80, 0x17, 0x5b, 0xe4, 0x79, +0xfe, 0xf9, 0xcf, 0x7f, 0xe2, 0xd8, 0xb1, 0x63, +0x9a, 0xc7, 0xfe, 0xf3, 0x9f, 0xff, 0x34, 0x58, +0x84, 0xfc, 0x15, 0x5f, 0x47, 0x00, 0xec, 0x85, +0xe9, 0xd5, 0x18, 0x0c, 0x06, 0x97, 0xab, 0x15, +0x86, 0x84, 0x84, 0xe0, 0xed, 0xb7, 0xdf, 0xc6, +0x99, 0x33, 0x67, 0xf0, 0xfc, 0xf3, 0xcf, 0xfb, +0x6d, 0xc2, 0x69, 0x49, 0x49, 0x09, 0xf6, 0xec, +0xd9, 0xa3, 0x59, 0xe1, 0xcf, 0x60, 0x30, 0x14, +0xc5, 0xc7, 0xc7, 0xaf, 0xbc, 0x79, 0xf3, 0x66, +0x99, 0x3d, 0xf1, 0xb7, 0x57, 0xde, 0xb7, 0x31, +0xe2, 0x6f, 0x32, 0x99, 0x24, 0x2d, 0xf1, 0x77, +0xa6, 0xc4, 0x2f, 0xe0, 0x5a, 0x8d, 0x7f, 0x67, +0xf1, 0xcf, 0xbf, 0x9e, 0x9f, 0xe3, 0x2e, 0x13, +0x60, 0x34, 0x1a, 0x25, 0x6a, 0x02, 0x1a, 0x86, +0x33, 0x06, 0x40, 0xfd, 0x67, 0xfa, 0xcb, 0x5f, +0xfe, 0x82, 0xd4, 0xd4, 0x54, 0x9c, 0x3e, 0x7d, +0x1a, 0xcf, 0x3c, 0xf3, 0x8c, 0x4f, 0x6e, 0x5e, +0x8e, 0x46, 0xff, 0xe3, 0xc6, 0x8d, 0x0b, 0xa8, +0x79, 0x7d, 0x47, 0x1c, 0x3b, 0x76, 0x0c, 0x1f, +0x7d, 0xf4, 0x91, 0xe6, 0xb1, 0x29, 0x53, 0xa6, +0x04, 0x5c, 0x89, 0x62, 0x2d, 0x24, 0x49, 0x42, +0x7c, 0x7c, 0xbc, 0x25, 0xc2, 0xe1, 0x4c, 0x79, +0x6a, 0x4f, 0x19, 0x80, 0xa2, 0xa2, 0x22, 0xcd, +0xe9, 0x41, 0x77, 0xf0, 0xc4, 0x13, 0x4f, 0xe0, +0xd4, 0xa9, 0x53, 0x58, 0xb4, 0x68, 0x11, 0x5a, +0xb4, 0x68, 0xe1, 0x91, 0xdf, 0xe1, 0x0e, 0xc8, +0xc8, 0x5f, 0x6b, 0xa9, 0x9f, 0x59, 0xfc, 0x57, +0x34, 0x44, 0xfc, 0x75, 0x3a, 0x9d, 0xd0, 0x50, +0xf1, 0xb7, 0xb7, 0xb9, 0x4f, 0x43, 0xc4, 0xdf, +0x5d, 0xa3, 0x7f, 0x80, 0x1a, 0x80, 0x06, 0x43, +0x4d, 0x80, 0x6f, 0x71, 0x35, 0x02, 0x40, 0x18, +0x39, 0x72, 0x24, 0x42, 0x42, 0x42, 0x3c, 0xd1, +0x24, 0xa7, 0xd8, 0xbb, 0x77, 0x6f, 0xbd, 0xc7, +0x83, 0x29, 0xfc, 0x2f, 0x49, 0x12, 0x5e, 0x78, +0xe1, 0x05, 0xcd, 0xbf, 0x55, 0xcb, 0x96, 0x2d, +0xf1, 0x9f, 0xff, 0xfc, 0xc7, 0x07, 0xad, 0x72, +0x2f, 0xd9, 0xd9, 0xd9, 0x88, 0x8b, 0x8b, 0xc3, +0x63, 0x8f, 0x3d, 0x86, 0x09, 0x13, 0x26, 0xa0, +0xac, 0xac, 0x0c, 0xf9, 0xf9, 0xf9, 0xf5, 0xbe, +0x27, 0x3c, 0x3c, 0x1c, 0xbd, 0x7b, 0xf7, 0xf6, +0x48, 0x7b, 0xec, 0x45, 0x5a, 0x1a, 0xcb, 0xc6, +0x8d, 0x1b, 0xb1, 0x71, 0xe3, 0x46, 0xbf, 0x4d, +0xf4, 0x23, 0x94, 0x94, 0x94, 0x58, 0x25, 0xfc, +0x11, 0xcc, 0x4b, 0x1e, 0x8b, 0xe2, 0xe3, 0xe3, +0x57, 0x54, 0x54, 0x54, 0x38, 0x14, 0x7f, 0xb2, +0xd4, 0x4f, 0x29, 0xfe, 0x6a, 0xd1, 0x27, 0xdf, +0xf5, 0x7a, 0xbd, 0xe4, 0x48, 0xfc, 0xc9, 0xe6, +0x3e, 0x82, 0x20, 0x48, 0x6a, 0xf1, 0x07, 0xea, +0x34, 0xc2, 0xdb, 0xe2, 0x0f, 0x50, 0x03, 0xd0, +0x28, 0xa8, 0x09, 0xf0, 0x1d, 0x0d, 0x35, 0x00, +0xbe, 0x44, 0x96, 0x65, 0xec, 0xdc, 0xb9, 0xd3, +0xee, 0x71, 0x8e, 0xe3, 0xfc, 0x72, 0xe3, 0x97, +0x86, 0xf2, 0xe5, 0x97, 0x5f, 0xda, 0x2d, 0x77, +0xbc, 0x7c, 0xf9, 0x72, 0xdc, 0x79, 0xe7, 0x9d, +0x5e, 0x6e, 0x91, 0xfb, 0x28, 0x2c, 0x2c, 0xc4, +0xdc, 0xb9, 0x73, 0x31, 0x64, 0xc8, 0x10, 0x8b, +0xe0, 0x27, 0x26, 0x26, 0xa2, 0x57, 0xaf, 0x5e, +0xd8, 0xba, 0x75, 0x6b, 0xbd, 0xef, 0x9d, 0x35, +0x6b, 0x96, 0xc7, 0xd6, 0xfe, 0x7b, 0xca, 0x00, +0x04, 0xc2, 0xdf, 0xaa, 0xb4, 0xb4, 0x14, 0x89, +0x89, 0x89, 0x56, 0x25, 0xc2, 0x19, 0xf3, 0x3a, +0xff, 0xea, 0xea, 0xea, 0xe2, 0xf8, 0xf8, 0xf8, +0x95, 0x8d, 0x11, 0x7f, 0x73, 0xe6, 0xbf, 0x8d, +0xf8, 0x33, 0x0c, 0x23, 0x36, 0x46, 0xfc, 0x0b, +0x0a, 0x0a, 0x64, 0x5f, 0x88, 0x3f, 0x40, 0x0d, +0x40, 0xa3, 0x09, 0x22, 0x13, 0xa0, 0x39, 0x6c, +0xf1, 0x57, 0x13, 0xe0, 0x8c, 0x01, 0xf0, 0x56, +0x65, 0x35, 0x67, 0xc9, 0xcf, 0xcf, 0xaf, 0x77, +0xfd, 0xff, 0xf0, 0xe1, 0xc3, 0x6d, 0x12, 0x15, +0x03, 0x95, 0x6b, 0xd7, 0xae, 0x61, 0xe1, 0xc2, +0x85, 0x9a, 0xc7, 0x66, 0xcf, 0x9e, 0xed, 0xd1, +0x3a, 0x0b, 0x9e, 0x44, 0x14, 0x45, 0xfc, 0xe7, +0x3f, 0xff, 0x41, 0x8f, 0x1e, 0x3d, 0xb0, 0x6a, +0xd5, 0x2a, 0x9b, 0x69, 0xa6, 0xab, 0x57, 0xaf, +0xe2, 0xec, 0xd9, 0xb3, 0x76, 0xdf, 0x1f, 0x1e, +0x1e, 0x8e, 0x45, 0x8b, 0x16, 0x79, 0x6c, 0x97, +0xc9, 0x9f, 0x7e, 0xfa, 0xc9, 0x23, 0xe7, 0x75, +0x66, 0x4b, 0x63, 0x5f, 0x52, 0x5a, 0x5a, 0x8a, +0xbd, 0x7b, 0xf7, 0xda, 0x88, 0x3f, 0x00, 0x22, +0xfe, 0x2b, 0x2a, 0x2a, 0x2a, 0x4a, 0xfd, 0x51, +0xfc, 0x95, 0xfd, 0xf0, 0xa6, 0xf8, 0x03, 0xd4, +0x00, 0xb8, 0x85, 0x20, 0x31, 0x01, 0x5b, 0x02, +0xc9, 0x04, 0xd4, 0x67, 0x00, 0x5a, 0xb5, 0x6a, +0x85, 0xbf, 0xff, 0xfd, 0xef, 0xf8, 0xe5, 0x97, +0x5f, 0xbc, 0xd8, 0x22, 0xc7, 0xec, 0xd8, 0xb1, +0xa3, 0xde, 0xe3, 0x81, 0x50, 0xbb, 0xdf, 0x59, +0x5e, 0x7f, 0xfd, 0x75, 0xcd, 0xba, 0xfe, 0x5d, +0xba, 0x74, 0xc1, 0x17, 0x5f, 0x7c, 0xe1, 0x83, +0x16, 0x35, 0x9e, 0xfd, 0xfb, 0xf7, 0xe3, 0xbe, +0xfb, 0xee, 0xc3, 0x6b, 0xaf, 0xbd, 0xe6, 0xd4, +0x5e, 0x14, 0x6a, 0x3a, 0x76, 0xec, 0x88, 0xad, +0x5b, 0xb7, 0xa2, 0x5d, 0xbb, 0x76, 0x1e, 0x68, +0x5d, 0x1d, 0xca, 0x08, 0x80, 0x3b, 0x4d, 0x86, +0x3f, 0x1b, 0x00, 0xb5, 0xf8, 0x93, 0x51, 0x3f, +0x00, 0x18, 0x0c, 0x86, 0xe2, 0xad, 0x5b, 0xb7, +0xfa, 0x54, 0xfc, 0xcb, 0xca, 0xca, 0x88, 0xd8, +0x6b, 0x8a, 0xbf, 0xbb, 0x76, 0xf6, 0x6b, 0x08, +0xd4, 0x00, 0xb8, 0x09, 0x6a, 0x02, 0xbc, 0x8b, +0x96, 0x01, 0x68, 0xde, 0xbc, 0x39, 0xfe, 0xf6, +0xb7, 0xbf, 0xe1, 0xdc, 0xb9, 0x73, 0x78, 0xef, +0xbd, 0xf7, 0xfc, 0x2e, 0x02, 0x50, 0x9f, 0x01, +0x88, 0x8e, 0x8e, 0xf6, 0xfb, 0x8d, 0x6e, 0x9c, +0x65, 0xc7, 0x8e, 0x1d, 0xf8, 0xe1, 0x87, 0x1f, +0x6c, 0x9e, 0xe7, 0x38, 0x0e, 0x6b, 0xd6, 0xac, +0xf1, 0x78, 0xa1, 0x25, 0x77, 0x73, 0xed, 0xda, +0x35, 0x3c, 0xf9, 0xe4, 0x93, 0x18, 0x31, 0x62, +0x44, 0x83, 0x43, 0xec, 0x53, 0xa6, 0x4c, 0xc1, +0xb1, 0x63, 0xc7, 0x30, 0x66, 0xcc, 0x18, 0x37, +0xb7, 0xee, 0x36, 0x82, 0x20, 0xe0, 0xe7, 0x9f, +0x7f, 0x46, 0xff, 0xfe, 0xfd, 0xb1, 0x61, 0xc3, +0x06, 0xa4, 0xa4, 0xa4, 0xb8, 0xed, 0xdc, 0x06, +0x83, 0xc1, 0x6d, 0xe7, 0x72, 0x27, 0x4a, 0xf1, +0x57, 0x0a, 0x3f, 0x00, 0x18, 0x0c, 0x86, 0x92, +0xf8, 0xf8, 0xf8, 0x15, 0xe5, 0xe5, 0xe5, 0x6e, +0x11, 0x7f, 0xf2, 0xe5, 0xaa, 0xf8, 0xb7, 0x68, +0xd1, 0x42, 0xbe, 0x7e, 0xfd, 0xba, 0xec, 0x6f, +0xe2, 0x0f, 0x50, 0x03, 0xe0, 0x56, 0x5c, 0x35, +0x01, 0x40, 0xdd, 0xda, 0x4f, 0x80, 0x9a, 0x00, +0x57, 0x51, 0x1a, 0x80, 0xf0, 0xf0, 0x70, 0xbc, +0xf5, 0xd6, 0x5b, 0x38, 0x77, 0xee, 0x1c, 0x3e, +0xfc, 0xf0, 0x43, 0x8f, 0x6f, 0xe4, 0x03, 0x38, +0xbf, 0xd4, 0x8a, 0x70, 0xed, 0xda, 0x35, 0xe4, +0xe5, 0x69, 0xa6, 0x5a, 0x00, 0x00, 0xe6, 0xcd, +0x9b, 0x07, 0x9e, 0x0f, 0xfc, 0xba, 0x5c, 0x17, +0x2f, 0x5e, 0xc4, 0x33, 0xcf, 0x3c, 0x63, 0xf3, +0x3c, 0xcb, 0xb2, 0xf8, 0xf2, 0xcb, 0x2f, 0x31, +0x74, 0xe8, 0x50, 0xef, 0x37, 0xaa, 0x91, 0xbc, +0xf1, 0xc6, 0x1b, 0x58, 0xbb, 0x76, 0x6d, 0x83, +0xde, 0x1b, 0x1e, 0x1e, 0x8e, 0xaf, 0xbe, 0xfa, +0x0a, 0x5b, 0xb7, 0x6e, 0x6d, 0xf0, 0x36, 0xc1, +0xce, 0x72, 0xf3, 0xe6, 0x4d, 0x24, 0x24, 0x24, +0x20, 0x3f, 0x3f, 0x1f, 0x33, 0x67, 0xce, 0xc4, +0xb0, 0x61, 0xc3, 0xdc, 0xb6, 0xa4, 0xd4, 0x1f, +0x23, 0x00, 0x6a, 0xf1, 0x57, 0x52, 0x53, 0x53, +0x53, 0xb2, 0x75, 0xeb, 0xd6, 0x15, 0xe5, 0xe5, +0xe5, 0x6e, 0x99, 0xf3, 0x87, 0xf9, 0xfe, 0xea, +0x09, 0xf1, 0x57, 0xe2, 0x4d, 0xf1, 0x07, 0xa8, +0x01, 0x70, 0x3b, 0xae, 0x98, 0x00, 0xf2, 0x8f, +0x40, 0x4d, 0x80, 0xeb, 0x98, 0x4c, 0x26, 0x84, +0x86, 0x86, 0xe2, 0xf5, 0xd7, 0x5f, 0xc7, 0x6f, +0xbf, 0xfd, 0x86, 0x8f, 0x3f, 0xfe, 0xd8, 0xe3, +0x37, 0x58, 0x00, 0xf8, 0xe5, 0x97, 0x5f, 0xf0, +0xe4, 0x93, 0x4f, 0xa2, 0x6d, 0xdb, 0xb6, 0x58, +0xb2, 0x64, 0x89, 0xd3, 0xef, 0x4b, 0x48, 0x48, +0xb0, 0x5b, 0xff, 0x5d, 0xa7, 0xd3, 0xe1, 0x85, +0x17, 0x5e, 0x70, 0x57, 0x13, 0x7d, 0x86, 0xd1, +0x68, 0xc4, 0x8c, 0x19, 0x33, 0x50, 0x52, 0x52, +0x02, 0xa0, 0x4e, 0xfc, 0x58, 0x96, 0x05, 0xcf, +0xf3, 0x58, 0xb3, 0x66, 0x0d, 0xfe, 0xf8, 0xc7, +0x3f, 0xfa, 0xb8, 0x85, 0x0d, 0xa3, 0xa1, 0x79, +0x19, 0x71, 0x71, 0x71, 0xc8, 0xcf, 0xcf, 0xf7, +0xda, 0xdf, 0xb6, 0x4d, 0x9b, 0x36, 0x36, 0x11, +0x86, 0x37, 0xdf, 0x7c, 0xd3, 0x2d, 0xe7, 0xf6, +0x37, 0x03, 0x40, 0xc4, 0x5f, 0xab, 0xc8, 0x4f, +0x4d, 0x4d, 0x4d, 0x49, 0x7c, 0x7c, 0xfc, 0x8a, +0xb2, 0xb2, 0xb2, 0x52, 0xf3, 0x7d, 0xce, 0xaf, +0xc5, 0xdf, 0x13, 0x25, 0x7e, 0x9d, 0x85, 0x1a, +0x00, 0x2f, 0xe1, 0x4e, 0x13, 0x10, 0x1e, 0x1e, +0x2e, 0x35, 0x75, 0x13, 0x30, 0x68, 0xd0, 0x20, +0x9c, 0x3d, 0x7b, 0x16, 0x9f, 0x7d, 0xf6, 0x19, +0xda, 0xb7, 0x6f, 0xef, 0xf1, 0xdf, 0x77, 0xea, +0xd4, 0x29, 0xfc, 0xfe, 0xf7, 0xbf, 0x47, 0xcf, +0x9e, 0x3d, 0xb1, 0x76, 0xed, 0x5a, 0x18, 0x8d, +0x46, 0xbc, 0xf9, 0xe6, 0x9b, 0xf8, 0xc3, 0x1f, +0xfe, 0xe0, 0xd4, 0xcd, 0xb1, 0xbe, 0x79, 0xef, +0xe9, 0xd3, 0xa7, 0xa3, 0x43, 0x87, 0x0e, 0xee, +0x6c, 0xae, 0x4f, 0x78, 0xe3, 0x8d, 0x37, 0x70, +0xe8, 0xd0, 0x21, 0xcb, 0xcf, 0xd5, 0xd5, 0xd5, +0xd0, 0xe9, 0x74, 0xf8, 0xf1, 0xc7, 0x1f, 0x31, +0x7b, 0xf6, 0x6c, 0x1f, 0xb6, 0xac, 0x71, 0xb8, +0x6a, 0x00, 0xfa, 0xf7, 0xef, 0x8f, 0x2d, 0x5b, +0xb6, 0x20, 0x27, 0x27, 0x07, 0x77, 0xdf, 0x7d, +0xb7, 0x87, 0x5a, 0xe5, 0x1c, 0x53, 0xa7, 0x4e, +0xf5, 0x68, 0xd1, 0x21, 0x5f, 0xa0, 0x14, 0x7f, +0x25, 0x0c, 0xc3, 0x58, 0x46, 0xfe, 0x54, 0xfc, +0x9d, 0x83, 0x1a, 0x00, 0x0f, 0x60, 0xef, 0x0f, +0xe8, 0x2e, 0x13, 0x20, 0x8a, 0xa2, 0xe4, 0x8a, +0x09, 0x30, 0x0b, 0x7f, 0x50, 0x99, 0x80, 0xd8, +0xd8, 0x58, 0x90, 0xfd, 0x15, 0x3c, 0xc9, 0xc9, +0x93, 0x27, 0x31, 0x67, 0xce, 0x1c, 0xc4, 0xc6, +0xc6, 0x62, 0xdd, 0xba, 0x75, 0x36, 0x4b, 0x0b, +0xbf, 0xff, 0xfe, 0x7b, 0x0c, 0x1f, 0x3e, 0x1c, +0x57, 0xae, 0x5c, 0xb1, 0x7b, 0x8e, 0xa4, 0xa4, +0x24, 0x1c, 0x3d, 0x7a, 0xd4, 0xee, 0xf1, 0x97, +0x5e, 0x7a, 0xc9, 0x6d, 0xed, 0xf5, 0x36, 0x3f, +0xff, 0xfc, 0x33, 0x3e, 0xf9, 0xe4, 0x13, 0x8c, +0x1c, 0x39, 0xd2, 0x66, 0x57, 0xb9, 0xf1, 0xe3, +0xc7, 0x23, 0x37, 0x37, 0x17, 0x53, 0xa6, 0x4c, +0xf1, 0x51, 0xeb, 0xdc, 0x83, 0x33, 0x06, 0x80, +0x61, 0x18, 0x8c, 0x19, 0x33, 0x06, 0xdb, 0xb7, +0x6f, 0x47, 0x7e, 0x7e, 0x3e, 0xa6, 0x4d, 0x9b, +0xe6, 0x91, 0xca, 0x6d, 0xae, 0xc2, 0xb2, 0x2c, +0x16, 0x2c, 0x58, 0xd0, 0xe8, 0xf3, 0xf8, 0x8b, +0x41, 0x2d, 0x2b, 0x2b, 0xb3, 0xbb, 0xce, 0xdf, +0x60, 0x30, 0x94, 0x6e, 0xdd, 0xba, 0x75, 0x45, +0x69, 0x69, 0xa9, 0x45, 0xfc, 0x39, 0x8e, 0x23, +0x75, 0xfd, 0x1b, 0x2d, 0xfe, 0xea, 0x2d, 0x7d, +0x03, 0x5d, 0xfc, 0x01, 0x6a, 0x00, 0x3c, 0x46, +0x63, 0x4d, 0x40, 0x41, 0x41, 0x01, 0xdc, 0x65, +0x02, 0x14, 0x06, 0x20, 0xa8, 0x4c, 0x80, 0x27, +0x39, 0x7d, 0xfa, 0x34, 0x66, 0xcf, 0x9e, 0x8d, +0x5e, 0xbd, 0x7a, 0x61, 0xfd, 0xfa, 0xf5, 0xf5, +0xd6, 0x14, 0x38, 0x7c, 0xf8, 0x30, 0xe2, 0xe2, +0xe2, 0x90, 0x9d, 0x9d, 0xad, 0x79, 0x7c, 0xf1, +0xe2, 0xc5, 0x76, 0xdf, 0x3b, 0x6e, 0xdc, 0x38, +0x3c, 0xf8, 0xe0, 0x83, 0x8d, 0x6e, 0xaf, 0xb7, +0x59, 0xb3, 0x66, 0x0d, 0xba, 0x75, 0xeb, 0x86, +0xd8, 0xd8, 0x58, 0xbc, 0xf5, 0xd6, 0x5b, 0x48, +0x4b, 0x4b, 0xb3, 0x1c, 0x1b, 0x30, 0x60, 0x00, +0x52, 0x53, 0x53, 0xb1, 0x6b, 0xd7, 0xae, 0x80, +0xdf, 0xc4, 0x08, 0x80, 0x53, 0x39, 0x25, 0xad, +0x5b, 0xb7, 0x46, 0x62, 0x62, 0x22, 0x26, 0x4d, +0x9a, 0xe4, 0x85, 0x16, 0xb9, 0xc6, 0x33, 0xcf, +0x3c, 0x83, 0xc8, 0xc8, 0xc8, 0x46, 0x9d, 0xc3, +0x1b, 0x66, 0xdb, 0x11, 0x65, 0x65, 0x65, 0x9a, +0x4b, 0xfd, 0x88, 0xf8, 0x6f, 0xdb, 0xb6, 0xed, +0x5b, 0xb5, 0xf8, 0x93, 0xfb, 0x18, 0xcf, 0xf3, +0x36, 0xe2, 0x0f, 0xf3, 0x06, 0x3f, 0xce, 0x8a, +0x3f, 0x00, 0x31, 0x98, 0xc4, 0x1f, 0xa0, 0x06, +0xc0, 0xa3, 0x34, 0xc6, 0x04, 0xb4, 0x6e, 0xdd, +0x5a, 0xa6, 0x26, 0xc0, 0x37, 0xe4, 0xe5, 0xe5, +0x61, 0xe0, 0xc0, 0x81, 0xd8, 0xb0, 0x61, 0x83, +0xd3, 0xc5, 0x84, 0xae, 0x5d, 0xbb, 0x86, 0x11, +0x23, 0x46, 0x60, 0xe5, 0xca, 0x95, 0x56, 0xcf, +0x1f, 0x3d, 0x7a, 0x14, 0x49, 0x49, 0x49, 0x9a, +0xef, 0x69, 0xd9, 0xb2, 0x25, 0xbe, 0xfe, 0xfa, +0xeb, 0x46, 0xb7, 0xd7, 0x9b, 0x9c, 0x3c, 0x79, +0x12, 0x23, 0x47, 0x8e, 0xc4, 0x53, 0x4f, 0x3d, +0x85, 0x4b, 0x97, 0x2e, 0x59, 0x6d, 0x7c, 0xd3, +0xb5, 0x6b, 0x57, 0xac, 0x5b, 0xb7, 0x0e, 0x87, +0x0f, 0x1f, 0x0e, 0x98, 0x5d, 0x25, 0x9d, 0x21, +0x34, 0x34, 0xd4, 0xe1, 0x6b, 0xfc, 0x39, 0xcc, +0x1e, 0x1e, 0x1e, 0x8e, 0xf9, 0xf3, 0xe7, 0x37, +0xea, 0x1c, 0xbe, 0x36, 0x00, 0x6a, 0xf1, 0x67, +0xac, 0x97, 0xfa, 0x95, 0x6e, 0xdf, 0xbe, 0x7d, +0x45, 0x49, 0x49, 0x89, 0x96, 0xf8, 0x5b, 0x09, +0xbf, 0x52, 0xfc, 0x59, 0x96, 0x35, 0xd9, 0x13, +0x7f, 0x59, 0x96, 0xc5, 0x60, 0x17, 0x7f, 0x80, +0x1a, 0x00, 0x8f, 0x43, 0x4d, 0x40, 0x60, 0x21, +0xcb, 0x32, 0xa6, 0x4d, 0x9b, 0xd6, 0xa0, 0x75, +0xde, 0x46, 0xa3, 0x11, 0xcf, 0x3d, 0xf7, 0x1c, +0x5e, 0x7e, 0xf9, 0x65, 0x4b, 0x88, 0xb2, 0xbe, +0xd1, 0xff, 0x92, 0x25, 0x4b, 0xd0, 0xb9, 0x73, +0xe7, 0x06, 0xb7, 0xd5, 0x9b, 0x54, 0x57, 0x57, +0x63, 0xe1, 0xc2, 0x85, 0xe8, 0xdb, 0xb7, 0xaf, +0x65, 0xb4, 0x6f, 0x32, 0x99, 0x60, 0x30, 0x18, +0x10, 0x19, 0x19, 0x89, 0x4f, 0x3f, 0xfd, 0x14, +0xa7, 0x4e, 0x9d, 0xc2, 0xec, 0xd9, 0xb3, 0xfd, +0x22, 0xf4, 0xed, 0x4e, 0x9c, 0x29, 0x1d, 0xed, +0xeb, 0xb9, 0x7e, 0x47, 0xbc, 0xf1, 0xc6, 0x1b, +0x68, 0xdb, 0xb6, 0x6d, 0x83, 0xde, 0xab, 0xd7, +0xeb, 0xbd, 0x92, 0x60, 0x6b, 0x0f, 0x2d, 0xf1, +0x27, 0x10, 0xf1, 0x2f, 0x2e, 0x2e, 0x2e, 0xb1, +0x23, 0xfe, 0xc6, 0x86, 0x88, 0x7f, 0x58, 0x58, +0x98, 0x18, 0xec, 0xe2, 0x0f, 0x50, 0x03, 0xe0, +0x15, 0x02, 0xdd, 0x04, 0x10, 0x23, 0x60, 0x36, +0x01, 0x47, 0xb4, 0xfa, 0x12, 0x2c, 0x26, 0x20, +0x33, 0x33, 0x13, 0x97, 0x2e, 0x5d, 0x6a, 0xd4, +0x39, 0x96, 0x2f, 0x5f, 0x8e, 0x1e, 0x3d, 0x7a, +0x60, 0xf1, 0xe2, 0xc5, 0x9a, 0xeb, 0xe1, 0x01, +0x60, 0xc6, 0x8c, 0x19, 0x01, 0x93, 0x15, 0x9f, +0x90, 0x90, 0x80, 0x9e, 0x3d, 0x7b, 0x62, 0xd1, +0xa2, 0x45, 0x56, 0xcb, 0x2f, 0xdb, 0xb4, 0x69, +0x83, 0xbf, 0xfd, 0xed, 0x6f, 0x38, 0x7b, 0xf6, +0x2c, 0x16, 0x2c, 0x58, 0x00, 0xbd, 0x5e, 0xef, +0xc3, 0x56, 0x7a, 0x8e, 0x60, 0x30, 0x00, 0x11, +0x11, 0x11, 0x58, 0xb4, 0x68, 0x51, 0x83, 0xde, +0xdb, 0xa9, 0x53, 0x27, 0x9f, 0x99, 0x3a, 0xa5, +0xf8, 0x33, 0xaa, 0x75, 0xfe, 0x35, 0x35, 0x35, +0x65, 0x09, 0x09, 0x09, 0x54, 0xfc, 0x1b, 0x01, +0x35, 0x00, 0x5e, 0x22, 0x90, 0x4d, 0x80, 0xf9, +0x83, 0x45, 0x4c, 0xc0, 0xe6, 0x60, 0x36, 0x01, +0x1b, 0x37, 0x6e, 0x74, 0xcb, 0x79, 0x2e, 0x5c, +0xb8, 0x80, 0xbf, 0xfc, 0xe5, 0x2f, 0x96, 0x1d, +0xe2, 0x94, 0x4c, 0x9c, 0x38, 0xb1, 0xc1, 0xeb, +0xca, 0xbd, 0xc9, 0x85, 0x0b, 0x17, 0x2c, 0x3b, +0xf6, 0x5d, 0xb8, 0x70, 0xc1, 0xf2, 0x7c, 0xff, +0xfe, 0xfd, 0xb1, 0x7c, 0xf9, 0x72, 0x5c, 0xba, +0x74, 0x09, 0x1f, 0x7e, 0xf8, 0x61, 0xc0, 0x15, +0xf6, 0x71, 0x15, 0x67, 0x0c, 0xc0, 0x3d, 0xf7, +0xdc, 0xe3, 0x85, 0x96, 0x34, 0x8e, 0xb9, 0x73, +0xe7, 0x62, 0xe0, 0xc0, 0x81, 0x2e, 0xbd, 0xa7, +0x6b, 0xd7, 0xae, 0xd8, 0xb6, 0x6d, 0x9b, 0x87, +0x5a, 0x54, 0x3f, 0xe5, 0xe5, 0xe5, 0x96, 0xda, +0xfe, 0x6a, 0x03, 0x52, 0x53, 0x53, 0x53, 0xb6, +0x7d, 0xfb, 0xf6, 0x6f, 0x8b, 0x8a, 0x8a, 0x02, +0x56, 0xfc, 0xfd, 0x01, 0x6a, 0x00, 0xbc, 0x08, +0x35, 0x01, 0xfe, 0x8f, 0xa3, 0x72, 0xbd, 0x8d, +0x65, 0xcc, 0x98, 0x31, 0xf8, 0xf1, 0xc7, 0x1f, +0x3d, 0x56, 0x0b, 0xde, 0x5d, 0xe4, 0xe6, 0xe6, +0x62, 0xc0, 0x80, 0x01, 0xd8, 0xbe, 0x7d, 0xbb, +0xd5, 0xf3, 0xfd, 0xfa, 0xf5, 0xc3, 0xa1, 0x43, +0x87, 0x30, 0x7f, 0xfe, 0x7c, 0xa7, 0xf6, 0xbd, +0x0f, 0x06, 0xae, 0x5f, 0xbf, 0xee, 0xf0, 0x35, +0xfe, 0x1e, 0x01, 0x00, 0xea, 0xee, 0x33, 0xcb, +0x96, 0x2d, 0x73, 0x5a, 0x84, 0x46, 0x8c, 0x18, +0x81, 0x43, 0x87, 0x0e, 0xf9, 0x24, 0x91, 0xb3, +0xbc, 0xbc, 0xdc, 0x6e, 0x91, 0x9f, 0xda, 0xda, +0xda, 0xb2, 0x84, 0x84, 0x84, 0x15, 0x81, 0x2e, +0xfe, 0xbe, 0x1e, 0xfd, 0x03, 0xd4, 0x00, 0x78, +0x1d, 0x6a, 0x02, 0xfc, 0x97, 0xe2, 0xe2, 0x62, +0x9c, 0x3b, 0x77, 0xce, 0x63, 0xe7, 0x7f, 0xfe, +0xf9, 0xe7, 0xb1, 0x6d, 0xdb, 0x36, 0x9f, 0x6e, +0x47, 0xec, 0x0c, 0xe9, 0xe9, 0xe9, 0x18, 0x35, +0x6a, 0x94, 0xa5, 0xa0, 0x8f, 0x92, 0x25, 0x4b, +0x96, 0x04, 0x45, 0xc5, 0x42, 0x57, 0x70, 0x54, +0xfe, 0xb7, 0x7d, 0xfb, 0xf6, 0xb8, 0xf7, 0xde, +0x7b, 0xbd, 0xd4, 0x9a, 0xc6, 0x11, 0x17, 0x17, +0x87, 0xb9, 0x73, 0xe7, 0x3a, 0x7c, 0xdd, 0xbc, +0x79, 0xf3, 0x90, 0x94, 0x94, 0xe4, 0x93, 0xb9, +0x7f, 0xe5, 0xc8, 0x5f, 0x09, 0xc3, 0x30, 0xa8, +0xad, 0xad, 0x2d, 0xdb, 0xbe, 0x7d, 0xfb, 0x8a, +0xc2, 0xc2, 0xc2, 0x62, 0x57, 0xc4, 0x5f, 0xaf, +0xd7, 0x53, 0xf1, 0xd7, 0x80, 0x1a, 0x00, 0x1f, +0x40, 0x4d, 0x80, 0x7f, 0x92, 0x9b, 0x9b, 0xeb, +0xf0, 0x35, 0xae, 0x86, 0x50, 0x01, 0xa0, 0x6d, +0xdb, 0xb6, 0xd8, 0xb6, 0x6d, 0x1b, 0xbe, 0xfe, +0xfa, 0x6b, 0xab, 0xac, 0x79, 0x7f, 0xe4, 0xc8, +0x91, 0x23, 0x18, 0x37, 0x6e, 0x1c, 0x2a, 0x2b, +0x2b, 0x6d, 0x8e, 0xf5, 0xee, 0xdd, 0x1b, 0xa3, +0x46, 0x8d, 0xf2, 0x41, 0xab, 0x3c, 0x8f, 0xc1, +0x60, 0xc0, 0xaa, 0x55, 0xab, 0xb0, 0x7c, 0xf9, +0x72, 0x9b, 0x95, 0x1f, 0x8e, 0x76, 0xd8, 0x9b, +0x35, 0x6b, 0x16, 0x38, 0x8e, 0xf3, 0x64, 0xf3, +0xdc, 0xca, 0xa2, 0x45, 0x8b, 0x10, 0x11, 0x11, +0xa1, 0x79, 0x8c, 0xe7, 0x79, 0x2c, 0x5f, 0xbe, +0x1c, 0x5f, 0x7e, 0xf9, 0xa5, 0x4f, 0xa2, 0x54, +0x44, 0xfc, 0xd5, 0xc5, 0xb5, 0x98, 0xba, 0x22, +0x3f, 0xe5, 0xdb, 0xb7, 0x6f, 0x5f, 0xd9, 0x10, +0xf1, 0x27, 0xa2, 0x4f, 0xc5, 0xdf, 0x1a, 0x6a, +0x00, 0x7c, 0x04, 0x35, 0x01, 0xfe, 0xc7, 0xe1, +0xc3, 0x87, 0xeb, 0x3d, 0xde, 0xad, 0x5b, 0x37, +0x64, 0x64, 0x64, 0x60, 0xc1, 0x82, 0x05, 0x4e, +0xdd, 0xf0, 0xc3, 0xc2, 0xc2, 0xf0, 0xdc, 0x73, +0xcf, 0xe1, 0xf8, 0xf1, 0xe3, 0x98, 0x3c, 0x79, +0xb2, 0xbb, 0x9a, 0xe9, 0x31, 0x64, 0x59, 0xc6, +0xfc, 0xf9, 0xf3, 0xed, 0x56, 0x36, 0x7c, 0xed, +0xb5, 0xd7, 0xbc, 0xdc, 0x22, 0xcf, 0x73, 0xf6, +0xec, 0x59, 0xbc, 0xf9, 0xe6, 0x9b, 0xe8, 0xd4, +0xa9, 0x13, 0xe6, 0xce, 0x9d, 0x8b, 0x97, 0x5f, +0x7e, 0x19, 0x0f, 0x3e, 0xf8, 0x20, 0x0a, 0x0a, +0x0a, 0x2c, 0xaf, 0x71, 0x14, 0x01, 0x78, 0xfa, +0xe9, 0xa7, 0x3d, 0xdd, 0x4c, 0xb7, 0xd2, 0xb6, +0x6d, 0x5b, 0xac, 0x58, 0xb1, 0xc2, 0x26, 0x92, +0xf3, 0xf0, 0xc3, 0x0f, 0x23, 0x33, 0x33, 0xb3, +0xd1, 0x4b, 0x06, 0x1b, 0x8a, 0x96, 0xf8, 0x93, +0xc4, 0x3f, 0xb3, 0xf8, 0xaf, 0x28, 0x2c, 0x2c, +0x2c, 0xa2, 0xe2, 0xef, 0x3e, 0x18, 0x3f, 0x6b, +0x4f, 0x93, 0x83, 0xb1, 0x33, 0x21, 0x27, 0xcb, +0x32, 0xfe, 0xf1, 0x8f, 0x7f, 0x58, 0x8e, 0x15, +0x14, 0x14, 0x30, 0x00, 0x10, 0x1b, 0x1b, 0xcb, +0x00, 0xc0, 0xd5, 0xab, 0x57, 0x99, 0xb2, 0xb2, +0x32, 0x26, 0x36, 0x36, 0x16, 0x25, 0x25, 0x25, +0x4c, 0x65, 0x65, 0x25, 0xa3, 0xd7, 0xeb, 0x59, +0x83, 0xc1, 0xc0, 0xb4, 0x68, 0xd1, 0x82, 0xa9, +0xa8, 0xa8, 0x60, 0x75, 0x3a, 0x1d, 0xcb, 0x71, +0x1c, 0x5b, 0x5d, 0x5d, 0xcd, 0xf2, 0x3c, 0xcf, +0x72, 0x1c, 0xc7, 0x56, 0x55, 0x55, 0x71, 0x00, +0xac, 0xbe, 0x24, 0x49, 0xe2, 0x6b, 0x6b, 0x6b, +0x79, 0x59, 0x96, 0x95, 0x5f, 0x3a, 0xc5, 0x77, +0x9d, 0x20, 0x08, 0x3a, 0x49, 0x92, 0xf4, 0xb2, +0x2c, 0xeb, 0x44, 0x51, 0xd4, 0x9b, 0x9f, 0xd7, +0x9b, 0x1f, 0xeb, 0xfb, 0xf5, 0xeb, 0xf7, 0x78, +0x44, 0x44, 0x44, 0x7f, 0xad, 0xbe, 0x8c, 0x1f, +0x3f, 0x3e, 0x20, 0xd6, 0x85, 0x4f, 0x9e, 0x3c, +0x19, 0x09, 0x09, 0x09, 0x76, 0x8f, 0xff, 0xfe, +0xf7, 0xbf, 0xc7, 0x9a, 0x35, 0x6b, 0x00, 0x00, +0xe7, 0xce, 0x9d, 0xc3, 0x92, 0x25, 0x4b, 0xb0, +0x72, 0xe5, 0x4a, 0x9b, 0x9d, 0xd2, 0xba, 0x76, +0xed, 0x8a, 0x17, 0x5f, 0x7c, 0x11, 0xcf, 0x3d, +0xf7, 0x5c, 0x83, 0xeb, 0xc8, 0xfb, 0x82, 0x95, +0x2b, 0x57, 0xe2, 0xb9, 0xe7, 0x9e, 0xd3, 0x3c, +0x16, 0x15, 0x15, 0x85, 0x4b, 0x97, 0x2e, 0x39, +0xb5, 0x26, 0xde, 0xdf, 0x91, 0x24, 0x09, 0xbb, +0x76, 0xed, 0xc2, 0xe7, 0x9f, 0x7f, 0x8e, 0x3d, +0x7b, 0xf6, 0x68, 0xee, 0xd1, 0xa0, 0xd7, 0xeb, +0xb1, 0x70, 0xe1, 0x42, 0xfc, 0xf1, 0x8f, 0x7f, +0x44, 0xa7, 0x4e, 0x9d, 0xec, 0x9e, 0x4b, 0xf9, +0x3f, 0x11, 0x68, 0x1c, 0x3b, 0x76, 0x0c, 0xab, +0x56, 0xad, 0x82, 0xc1, 0x60, 0xc0, 0xcc, 0x99, +0x33, 0x7d, 0xfa, 0x19, 0xad, 0xa8, 0xa8, 0xc0, +0xde, 0xbd, 0x7b, 0x6d, 0xc4, 0x1f, 0x00, 0x15, +0x7f, 0x0f, 0x42, 0x0d, 0x80, 0x1f, 0x40, 0x4d, +0x80, 0x7f, 0xd0, 0xb1, 0x63, 0xc7, 0x7a, 0x13, +0xbe, 0xfe, 0xfa, 0xd7, 0xbf, 0xe2, 0x5f, 0xff, +0xfa, 0x97, 0xd5, 0x73, 0x45, 0x45, 0x45, 0xd8, +0xbc, 0x79, 0x33, 0x22, 0x23, 0x23, 0xd1, 0xa5, +0x4b, 0x17, 0xc4, 0xc4, 0xc4, 0x78, 0x74, 0xbf, +0x77, 0x4f, 0x51, 0x53, 0x53, 0x83, 0x2e, 0x5d, +0xba, 0xa0, 0xb0, 0xb0, 0x50, 0xf3, 0xf8, 0xc2, +0x85, 0x0b, 0xf1, 0xd1, 0x47, 0x1f, 0x79, 0xb9, +0x55, 0xee, 0x45, 0x92, 0x24, 0x2c, 0x5b, 0xb6, +0x0c, 0xff, 0xfe, 0xf7, 0xbf, 0x9d, 0xce, 0xf5, +0x88, 0x88, 0x88, 0x40, 0x79, 0x79, 0xb9, 0xe6, +0xb1, 0xc8, 0xc8, 0x48, 0x9c, 0x3c, 0x79, 0xb2, +0xc1, 0xeb, 0xeb, 0x29, 0x75, 0xa8, 0xc5, 0x9f, +0xb1, 0x5e, 0xea, 0x57, 0x9e, 0x90, 0x90, 0xb0, +0xf2, 0xc6, 0x8d, 0x1b, 0x85, 0x54, 0xfc, 0xdd, +0x4f, 0xd3, 0xca, 0xe6, 0xf1, 0x53, 0x64, 0x59, +0x96, 0xb5, 0x4c, 0x00, 0xc3, 0x30, 0x90, 0x65, +0x59, 0x26, 0x26, 0x20, 0x36, 0x36, 0x56, 0x2e, +0x28, 0x28, 0x60, 0x0a, 0x0a, 0x0a, 0xe4, 0xd8, +0xd8, 0x58, 0x46, 0xf1, 0x8f, 0xc8, 0x90, 0x7f, +0xc2, 0xca, 0xca, 0x4a, 0x29, 0x2c, 0x2c, 0x8c, +0xad, 0xac, 0xac, 0x44, 0xab, 0x56, 0xad, 0x24, +0x52, 0xd0, 0x26, 0x3c, 0x3c, 0x1c, 0xd5, 0xd5, +0xd5, 0x00, 0x80, 0x66, 0xcd, 0x9a, 0xa1, 0xaa, +0xaa, 0xca, 0xea, 0x77, 0xb1, 0x2c, 0x8b, 0x90, +0x90, 0x10, 0x9b, 0xc4, 0x1b, 0x25, 0x3c, 0xcf, +0x43, 0x10, 0x04, 0x48, 0x92, 0x04, 0x8e, 0xe3, +0x20, 0x8a, 0x22, 0x00, 0x58, 0x1e, 0x1f, 0x3d, +0x7a, 0x74, 0x73, 0xbf, 0x7e, 0xfd, 0xa0, 0x65, +0x02, 0x76, 0xef, 0xde, 0x0d, 0x00, 0x7e, 0x6b, +0x02, 0x2e, 0x5f, 0xbe, 0xec, 0x30, 0xdb, 0xbb, +0x59, 0xb3, 0x66, 0x36, 0xcf, 0xb5, 0x6d, 0xdb, +0x16, 0x7f, 0xfa, 0xd3, 0x9f, 0x3c, 0xd5, 0x2c, +0xaf, 0xb1, 0x6e, 0xdd, 0x3a, 0xbb, 0xe2, 0xcf, +0xf3, 0xbc, 0xcf, 0xc2, 0xc2, 0xee, 0x42, 0x96, +0x65, 0x4c, 0x9a, 0x34, 0x09, 0xbb, 0x76, 0xed, +0x72, 0xe9, 0x7d, 0xf6, 0xc4, 0x3f, 0x2e, 0x2e, +0x0e, 0x9f, 0x7f, 0xfe, 0x39, 0x15, 0xff, 0x46, +0xa2, 0x14, 0x7f, 0x8d, 0x6c, 0xff, 0x0a, 0x77, +0x88, 0x3f, 0x14, 0xd3, 0x9e, 0x54, 0xfc, 0xad, +0xa1, 0x39, 0x00, 0x7e, 0x02, 0xcd, 0x09, 0xf0, +0x2d, 0x8e, 0xe6, 0xff, 0x01, 0xa0, 0x79, 0xf3, +0xe6, 0x5e, 0x68, 0x89, 0x6f, 0x58, 0xb6, 0x6c, +0x99, 0xdd, 0x63, 0xd3, 0xa7, 0x4f, 0xc7, 0x1d, +0x77, 0xdc, 0xe1, 0xc5, 0xd6, 0xb8, 0x9f, 0x6f, +0xbe, 0xf9, 0xc6, 0x65, 0xf1, 0xd7, 0xa2, 0x6d, +0xdb, 0xb6, 0xf8, 0xf6, 0xdb, 0x6f, 0x91, 0x93, +0x93, 0x83, 0xfb, 0xef, 0xbf, 0xdf, 0x0d, 0x2d, +0x6b, 0xba, 0x38, 0x21, 0xfe, 0x2b, 0xdc, 0x21, +0xfe, 0x64, 0xf4, 0x4f, 0xc5, 0xdf, 0x16, 0x6a, +0x00, 0xfc, 0x08, 0x6a, 0x02, 0x7c, 0x87, 0x33, +0x06, 0x40, 0x2b, 0x02, 0x10, 0x0c, 0x64, 0x64, +0x64, 0xe0, 0xc8, 0x11, 0xcd, 0x3f, 0x17, 0x80, +0xc0, 0x4f, 0xfe, 0xab, 0xad, 0xad, 0xc5, 0x3b, +0xef, 0xbc, 0xd3, 0xa8, 0x73, 0xf0, 0x3c, 0x8f, +0x57, 0x5f, 0x7d, 0x15, 0xa7, 0x4f, 0x9f, 0xc6, +0x73, 0xcf, 0x3d, 0xe7, 0x37, 0x05, 0x5d, 0xd4, +0xf9, 0x27, 0x81, 0x02, 0x11, 0x7f, 0xad, 0x75, +0xfe, 0x46, 0xa3, 0xb1, 0x22, 0x21, 0x21, 0x61, +0xc5, 0xf5, 0xeb, 0xd7, 0x9d, 0x16, 0x7f, 0x9e, +0xe7, 0xfd, 0x4e, 0xfc, 0x03, 0x01, 0x6a, 0x00, +0xfc, 0x0c, 0x6a, 0x02, 0x7c, 0x83, 0xa3, 0xa5, +0x5e, 0x40, 0xf0, 0x1a, 0x80, 0xff, 0xfe, 0xf7, +0xbf, 0x76, 0x8f, 0x0d, 0x1c, 0x38, 0x10, 0x83, +0x07, 0x0f, 0xf6, 0x62, 0x6b, 0xdc, 0x4f, 0x4a, +0x4a, 0x0a, 0x4a, 0x4b, 0x4b, 0x1b, 0xfc, 0xfe, +0x91, 0x23, 0x47, 0xe2, 0xe8, 0xd1, 0xa3, 0x58, +0xba, 0x74, 0xa9, 0xdd, 0xe5, 0x73, 0xde, 0xa6, +0xba, 0xba, 0x1a, 0x85, 0x85, 0x85, 0xe0, 0x79, +0x1e, 0x85, 0x85, 0x85, 0x0d, 0xda, 0xbb, 0xc2, +0x57, 0x28, 0xc5, 0x5f, 0x8d, 0x59, 0xfc, 0x57, +0xba, 0x2a, 0xfe, 0xe6, 0xad, 0x7d, 0x5d, 0x16, +0x7f, 0xbd, 0x5e, 0x2f, 0x7b, 0x4a, 0xfc, 0xfd, +0x7d, 0xf4, 0x0f, 0x50, 0x03, 0xe0, 0x97, 0x50, +0x13, 0xe0, 0x7d, 0xca, 0xca, 0xca, 0x1c, 0xbe, +0x26, 0x18, 0xa7, 0x00, 0xae, 0x5d, 0xbb, 0x86, +0x2d, 0x5b, 0xb6, 0xd8, 0x3d, 0x1e, 0xe8, 0xa3, +0x7f, 0x00, 0x88, 0x8f, 0x8f, 0x6f, 0xd0, 0xfb, +0xee, 0xbc, 0xf3, 0x4e, 0xfc, 0xf0, 0xc3, 0x0f, +0x48, 0x4d, 0x4d, 0x45, 0x6c, 0x6c, 0xac, 0x9b, +0x5b, 0xd5, 0x30, 0x04, 0x41, 0x40, 0x49, 0x49, +0x09, 0x4c, 0x26, 0x13, 0x32, 0x32, 0x32, 0xf0, +0xc5, 0x17, 0x5f, 0xa0, 0xb4, 0xb4, 0x34, 0x60, +0xca, 0x31, 0x57, 0x54, 0x54, 0x20, 0x29, 0x29, +0x49, 0xb3, 0xc8, 0x0f, 0x11, 0xff, 0x6b, 0xd7, +0xae, 0xdd, 0xf0, 0x96, 0xf8, 0x0b, 0x82, 0x20, +0x35, 0x55, 0xf1, 0x07, 0xa8, 0x01, 0xf0, 0x5b, +0xa8, 0x09, 0xf0, 0x2e, 0x37, 0x6f, 0xde, 0x74, +0xf8, 0x9a, 0x60, 0x8c, 0x00, 0x7c, 0xf9, 0xe5, +0x97, 0x56, 0x1b, 0xfc, 0x28, 0xe9, 0xd8, 0xb1, +0x23, 0x66, 0xcc, 0x98, 0xe1, 0xe5, 0x16, 0xb9, +0x17, 0x49, 0x92, 0x6c, 0xca, 0x19, 0x2b, 0xe9, +0xd3, 0xa7, 0x0f, 0x9e, 0x7e, 0xfa, 0x69, 0xab, +0xba, 0x0e, 0xa1, 0xa1, 0xa1, 0xf8, 0xbf, 0xff, +0xfb, 0x3f, 0x9c, 0x3c, 0x79, 0xd2, 0xaf, 0xfa, +0x5f, 0x5e, 0x5e, 0x8e, 0xbc, 0xbc, 0x3c, 0xfc, +0xeb, 0x5f, 0xff, 0xc2, 0xb4, 0x69, 0xd3, 0x10, +0x12, 0x12, 0x82, 0x57, 0x5f, 0x7d, 0x35, 0x20, +0xf6, 0x21, 0x00, 0x6e, 0x8b, 0xbf, 0x72, 0xda, +0x82, 0x31, 0xaf, 0xf3, 0xaf, 0xad, 0xad, 0xbd, +0x49, 0xc5, 0xdf, 0xfb, 0x50, 0x03, 0xe0, 0xc7, +0x50, 0x13, 0xe0, 0x3d, 0xb4, 0x2a, 0xdf, 0xa9, +0x09, 0xb6, 0x08, 0x80, 0xd1, 0x68, 0xc4, 0xd7, +0x5f, 0x7f, 0x6d, 0xf7, 0xf8, 0xfc, 0xf9, 0xf3, +0xfd, 0x7e, 0xcf, 0x02, 0x47, 0x64, 0x66, 0x66, +0xda, 0x5d, 0xdd, 0x00, 0xd4, 0x6d, 0x93, 0xbb, +0x7a, 0xf5, 0x6a, 0x14, 0x15, 0x15, 0x21, 0x29, +0x29, 0x09, 0x7b, 0xf6, 0xec, 0xc1, 0x95, 0x2b, +0x57, 0xf0, 0xfe, 0xfb, 0xef, 0xfb, 0xcd, 0x5e, +0x07, 0x37, 0x6e, 0xdc, 0xc0, 0x92, 0x25, 0x4b, +0x30, 0x7e, 0xfc, 0x78, 0x3c, 0xf2, 0xc8, 0x23, +0x88, 0x8e, 0x8e, 0x46, 0x62, 0x62, 0x22, 0x1e, +0x7d, 0xf4, 0x51, 0x5f, 0x37, 0xcd, 0x69, 0x6e, +0xde, 0xbc, 0xa9, 0x29, 0xfe, 0x00, 0x88, 0xf8, +0xaf, 0x70, 0xa7, 0xf8, 0x87, 0x84, 0x84, 0x50, +0xf1, 0x77, 0x02, 0x6a, 0x00, 0xfc, 0x1c, 0x6a, +0x02, 0xbc, 0x43, 0x7d, 0x11, 0x00, 0x86, 0x61, +0x30, 0x67, 0xce, 0x9c, 0x80, 0x19, 0x69, 0x39, +0xcb, 0xba, 0x75, 0xeb, 0xec, 0x2e, 0x7d, 0x0c, +0x09, 0x09, 0xc1, 0xbc, 0x79, 0xf3, 0xbc, 0xdc, +0x22, 0xf7, 0xb3, 0x61, 0xc3, 0x06, 0xbb, 0xc7, +0xa2, 0xa2, 0xa2, 0x30, 0x6b, 0xd6, 0x2c, 0x00, +0x40, 0xeb, 0xd6, 0xad, 0x31, 0x7a, 0xf4, 0x68, +0x8c, 0x1d, 0x3b, 0xd6, 0x6f, 0x8a, 0x37, 0x95, +0x96, 0x96, 0xe2, 0xe5, 0x97, 0x5f, 0x46, 0x97, +0x2e, 0x5d, 0xf0, 0xe6, 0x9b, 0x6f, 0xa2, 0x5b, +0xb7, 0x6e, 0x38, 0x75, 0xea, 0x14, 0x16, 0x2c, +0x58, 0x10, 0x50, 0xfb, 0x31, 0xdc, 0xbc, 0x79, +0x13, 0x89, 0x89, 0x89, 0x16, 0xf1, 0x27, 0xa3, +0x7e, 0xa0, 0x4e, 0xfc, 0x77, 0xec, 0xd8, 0xe1, +0xd6, 0x91, 0x7f, 0x48, 0x48, 0x88, 0xc8, 0x30, +0x0c, 0x15, 0x7f, 0x27, 0xa0, 0x06, 0x20, 0x00, +0xa0, 0x26, 0xc0, 0xf3, 0xd8, 0x8b, 0x00, 0x4c, +0x98, 0x30, 0x01, 0x47, 0x8f, 0x1e, 0xc5, 0xda, +0xb5, 0x6b, 0xfd, 0x26, 0x01, 0xcc, 0x5d, 0x2c, +0x59, 0xb2, 0xc4, 0xee, 0xb1, 0x39, 0x73, 0xe6, +0x04, 0xfc, 0x1a, 0xf7, 0xb2, 0xb2, 0x32, 0xac, +0x5e, 0xbd, 0xda, 0xee, 0xf1, 0xbf, 0xff, 0xfd, +0xef, 0x7e, 0xb7, 0x31, 0x93, 0x2c, 0xcb, 0xd8, +0xbb, 0x77, 0x2f, 0x26, 0x4e, 0x9c, 0x88, 0x98, +0x98, 0x18, 0x2c, 0x5f, 0xbe, 0x1c, 0x3d, 0x7a, +0xf4, 0x40, 0x7a, 0x7a, 0x3a, 0xd6, 0xac, 0x59, +0x83, 0x8e, 0x1d, 0x3b, 0xfa, 0xba, 0x89, 0x2e, +0xa1, 0x25, 0xfe, 0x04, 0x22, 0xfe, 0x57, 0xaf, +0x5e, 0xbd, 0xae, 0xb8, 0x6f, 0x50, 0xf1, 0xf7, +0x22, 0xd4, 0x00, 0x04, 0x08, 0xd4, 0x04, 0x78, +0x8e, 0xea, 0xea, 0x6a, 0x4b, 0x51, 0x23, 0xc2, +0xd0, 0xa1, 0x43, 0x71, 0xe0, 0xc0, 0x01, 0xec, +0xd8, 0xb1, 0x03, 0x7d, 0xfa, 0xf4, 0xf1, 0x7a, +0x9b, 0x3c, 0xcd, 0xee, 0xdd, 0xbb, 0x71, 0xe2, +0xc4, 0x09, 0xbb, 0xc7, 0x83, 0x21, 0xf9, 0xef, +0x8b, 0x2f, 0xbe, 0xb0, 0x29, 0x78, 0x45, 0x88, +0x8b, 0x8b, 0xc3, 0x8b, 0x2f, 0xbe, 0xe8, 0xe5, +0x16, 0xd5, 0x4f, 0x7a, 0x7a, 0x3a, 0x62, 0x63, +0x63, 0x31, 0x6e, 0xdc, 0x38, 0xec, 0xde, 0xbd, +0x1b, 0x0c, 0xc3, 0xe0, 0xdf, 0xff, 0xfe, 0x37, +0xf2, 0xf3, 0xf3, 0x31, 0x7c, 0xf8, 0x70, 0x5f, +0x37, 0xcf, 0x65, 0x94, 0xe2, 0xaf, 0x1c, 0xf5, +0x03, 0x80, 0xd1, 0x68, 0xac, 0xdc, 0xb9, 0x73, +0xa7, 0x5a, 0xfc, 0x8d, 0xee, 0x14, 0xff, 0x16, +0x2d, 0x5a, 0x50, 0xf1, 0x77, 0x00, 0x35, 0x00, +0x01, 0x04, 0x35, 0x01, 0x9e, 0x41, 0x19, 0xfe, +0xef, 0xd3, 0xa7, 0x0f, 0x76, 0xec, 0xd8, 0x81, +0x03, 0x07, 0x0e, 0x60, 0xe8, 0xd0, 0xa1, 0x5e, +0x6d, 0x87, 0x37, 0xf9, 0xe4, 0x93, 0x4f, 0xec, +0x1e, 0x7b, 0xf2, 0xc9, 0x27, 0xd1, 0xb7, 0x6f, +0x5f, 0x2f, 0xb6, 0xc6, 0xfd, 0xd4, 0xd6, 0xd6, +0xda, 0x5d, 0xde, 0xd8, 0xa9, 0x53, 0x27, 0x6c, +0xda, 0xb4, 0x09, 0x2c, 0xeb, 0x3f, 0xb7, 0xbf, +0x7f, 0xff, 0xfb, 0xdf, 0x18, 0x3d, 0x7a, 0x34, +0x4e, 0x9e, 0x3c, 0x09, 0xa0, 0x6e, 0x8f, 0x81, +0xd3, 0xa7, 0x4f, 0xe3, 0xb5, 0xd7, 0x5e, 0x0b, +0xa8, 0x70, 0x3f, 0xa1, 0xb2, 0xb2, 0xd2, 0xb2, +0xb1, 0x8f, 0x5a, 0x34, 0x4d, 0x26, 0x53, 0xe5, +0x8e, 0x1d, 0x3b, 0x56, 0x5c, 0xb9, 0x72, 0x45, +0x53, 0xfc, 0xcd, 0x51, 0x00, 0xe5, 0x97, 0xd0, +0x10, 0xf1, 0x17, 0x45, 0x91, 0x8a, 0xbf, 0x03, +0xfc, 0xe7, 0x13, 0x40, 0x71, 0x8a, 0x20, 0x33, +0x01, 0xf9, 0x5a, 0x7d, 0xf1, 0xb6, 0x09, 0xa8, +0xac, 0xac, 0xc4, 0x5d, 0x77, 0xdd, 0x85, 0x35, +0x6b, 0xd6, 0xe0, 0xe8, 0xd1, 0xa3, 0x98, 0x30, +0x61, 0x82, 0xd7, 0x7e, 0xb7, 0x2f, 0xc8, 0xcf, +0xcf, 0x47, 0x6a, 0x6a, 0xaa, 0xe6, 0xb1, 0xf6, +0xed, 0xdb, 0x63, 0xe9, 0xd2, 0xa5, 0x5e, 0x6e, +0x91, 0xfb, 0x59, 0xbb, 0x76, 0xad, 0x66, 0x7e, +0x43, 0x64, 0x64, 0x24, 0x12, 0x13, 0x13, 0xd1, +0xa5, 0x4b, 0x17, 0x1f, 0xb4, 0xca, 0x96, 0xca, +0xca, 0x4a, 0xcc, 0x9e, 0x3d, 0x1b, 0x0b, 0x16, +0x2c, 0x80, 0x20, 0x08, 0xd0, 0xeb, 0xf5, 0x48, +0x4b, 0x4b, 0xc3, 0x77, 0xdf, 0x7d, 0x87, 0xf6, +0xed, 0xdb, 0xfb, 0xba, 0x79, 0x0d, 0xa2, 0xb2, +0xb2, 0xd2, 0x66, 0x63, 0x1f, 0x82, 0x59, 0xfc, +0x57, 0xd6, 0x27, 0xfe, 0xe4, 0x79, 0x72, 0x4f, +0xd1, 0xe9, 0x74, 0x26, 0x2a, 0xfe, 0x9e, 0x81, +0x6e, 0x06, 0x14, 0xa0, 0x30, 0x5a, 0xff, 0x91, +0x08, 0xc8, 0x0d, 0x84, 0x1e, 0x8b, 0x88, 0x88, +0xb8, 0x4f, 0xab, 0x2f, 0xde, 0xda, 0x40, 0xc8, +0x60, 0x30, 0x80, 0xe7, 0xf9, 0x80, 0xcf, 0x78, +0x07, 0x80, 0x1f, 0x7e, 0xf8, 0x01, 0x17, 0x2e, +0x5c, 0xc0, 0x0b, 0x2f, 0xbc, 0x60, 0x77, 0x6d, +0xf8, 0x9c, 0x39, 0x73, 0xb0, 0x7e, 0xfd, 0x7a, +0xcd, 0x63, 0x9b, 0x37, 0x6f, 0xc6, 0x63, 0x8f, +0x3d, 0xe6, 0xc9, 0x26, 0x7a, 0x9c, 0xc2, 0xc2, +0x42, 0xdc, 0x77, 0xdf, 0x7d, 0xb8, 0x72, 0xe5, +0x8a, 0xd5, 0xf3, 0xcd, 0x9b, 0x37, 0x47, 0x6a, +0x6a, 0x2a, 0xe2, 0xe2, 0xe2, 0x7c, 0xd4, 0x32, +0x6b, 0xf2, 0xf3, 0xf3, 0x31, 0x73, 0xe6, 0x4c, +0xfc, 0xfa, 0xeb, 0xaf, 0x96, 0xe7, 0x9e, 0x7f, +0xfe, 0xf9, 0x7a, 0x57, 0x66, 0xf8, 0x3b, 0x95, +0x95, 0x95, 0x48, 0x4a, 0x4a, 0xb2, 0xec, 0x3b, +0x42, 0x60, 0xea, 0xd6, 0xf9, 0x57, 0xee, 0xd8, +0xb1, 0x63, 0xe5, 0xe5, 0xcb, 0x97, 0xaf, 0x51, +0xf1, 0xf7, 0x0f, 0xa8, 0x01, 0x08, 0x60, 0xa8, +0x09, 0xa0, 0x10, 0x0e, 0x1d, 0x3a, 0x84, 0x37, +0xde, 0x78, 0x03, 0x19, 0x19, 0x19, 0x00, 0xea, +0xc4, 0xee, 0xb9, 0xe7, 0x9e, 0xc3, 0xeb, 0xaf, +0xbf, 0x8e, 0x98, 0x98, 0x18, 0xcb, 0xeb, 0x2e, +0x5c, 0xb8, 0x80, 0xee, 0xdd, 0xbb, 0x43, 0x10, +0x04, 0x9b, 0x73, 0x3c, 0xf1, 0xc4, 0x13, 0xd8, +0xb8, 0x71, 0xa3, 0xb7, 0x9a, 0xec, 0x12, 0x92, +0x24, 0xe1, 0xab, 0xaf, 0xbe, 0xc2, 0xd7, 0x5f, +0x7f, 0x8d, 0xb6, 0x6d, 0xdb, 0x62, 0xe0, 0xc0, +0x81, 0x18, 0x34, 0x68, 0x10, 0x06, 0x0f, 0x1e, +0x6c, 0x95, 0xac, 0x28, 0x08, 0x02, 0xc6, 0x8c, +0x19, 0x83, 0xb4, 0xb4, 0x34, 0xab, 0xf7, 0xdf, +0x7b, 0xef, 0xbd, 0x58, 0xb9, 0x72, 0xa5, 0xcf, +0xab, 0x1a, 0xfe, 0xfa, 0xeb, 0xaf, 0xd8, 0xb0, +0x61, 0x03, 0x0e, 0x1c, 0x38, 0x80, 0x7d, 0xfb, +0xf6, 0x59, 0xd5, 0x60, 0x60, 0x18, 0x06, 0x27, +0x4e, 0x9c, 0x40, 0xcf, 0x9e, 0x3d, 0x7d, 0xd8, +0xc2, 0x86, 0x43, 0xc5, 0x3f, 0xf0, 0xa0, 0x06, +0x20, 0xc0, 0xa1, 0x26, 0xa0, 0x69, 0x73, 0xf9, +0xf2, 0x65, 0xbc, 0xf3, 0xce, 0x3b, 0x58, 0xbb, +0x76, 0xad, 0xe6, 0xbe, 0xf6, 0x3c, 0xcf, 0xe3, +0xa9, 0xa7, 0x9e, 0xc2, 0xc2, 0x85, 0x0b, 0xd1, +0xbd, 0x7b, 0x77, 0xcc, 0x9c, 0x39, 0x13, 0x3f, +0xfc, 0xf0, 0x83, 0xcd, 0xeb, 0x46, 0x8f, 0x1e, +0x8d, 0xad, 0x5b, 0xb7, 0xfa, 0x65, 0xb1, 0xa3, +0x9c, 0x9c, 0x1c, 0xbc, 0xf4, 0xd2, 0x4b, 0xc8, +0xcb, 0xcb, 0xd3, 0x3c, 0x1e, 0x1d, 0x1d, 0x8d, +0xd0, 0xd0, 0x50, 0xb0, 0x2c, 0x0b, 0xa3, 0xd1, +0x88, 0x8b, 0x17, 0x2f, 0x5a, 0x8e, 0x85, 0x85, +0x85, 0xe1, 0x6f, 0x7f, 0xfb, 0x1b, 0xde, 0x7a, +0xeb, 0x2d, 0xe8, 0xf5, 0x7a, 0x6f, 0x35, 0xd9, +0x2e, 0x0f, 0x3d, 0xf4, 0x10, 0xd2, 0xd3, 0xd3, +0x35, 0x8f, 0x4d, 0x99, 0x32, 0x05, 0x5b, 0xb7, +0x6e, 0xf5, 0x72, 0x8b, 0xdc, 0x83, 0x96, 0xf8, +0x93, 0x5b, 0x93, 0xd1, 0x68, 0xbc, 0xb5, 0x63, +0xc7, 0x8e, 0x15, 0x9e, 0x14, 0xff, 0xd0, 0xd0, +0x50, 0x89, 0x65, 0x59, 0x91, 0x8a, 0xbf, 0x6b, +0x50, 0x03, 0x10, 0x04, 0x50, 0x13, 0xd0, 0xf4, +0xa8, 0xaa, 0xaa, 0xc2, 0xc7, 0x1f, 0x7f, 0x8c, +0xc5, 0x8b, 0x17, 0x3b, 0xb5, 0x21, 0x0c, 0xc7, +0x71, 0x18, 0x36, 0x6c, 0x98, 0xcd, 0xc8, 0x18, +0x00, 0xa6, 0x4e, 0x9d, 0x8a, 0x0d, 0x1b, 0x36, +0xf8, 0xdd, 0x92, 0xb8, 0xe2, 0xe2, 0x62, 0xbc, +0xf3, 0xce, 0x3b, 0x58, 0xb1, 0x62, 0x85, 0xa6, +0xb9, 0x71, 0xc4, 0xb8, 0x71, 0xe3, 0xb0, 0x7c, +0xf9, 0x72, 0xdc, 0x75, 0xd7, 0x5d, 0x1e, 0x68, +0x9d, 0xeb, 0x64, 0x64, 0x64, 0xd8, 0x4d, 0x2c, +0x6d, 0xd9, 0xb2, 0x25, 0x4e, 0x9c, 0x38, 0x81, +0xce, 0x9d, 0x3b, 0x7b, 0xb9, 0x55, 0x8d, 0x47, +0x2d, 0xfe, 0xaa, 0x6c, 0xff, 0x5b, 0x3b, 0x77, +0xee, 0x5c, 0x79, 0xe9, 0xd2, 0xa5, 0xab, 0x54, +0xfc, 0xfd, 0x0f, 0x9a, 0x04, 0x18, 0x04, 0x04, +0x51, 0x62, 0xe0, 0x16, 0x7f, 0x49, 0x0c, 0xf4, +0x57, 0x64, 0x59, 0xc6, 0xea, 0xd5, 0xab, 0xd1, +0xa3, 0x47, 0x0f, 0xbc, 0xff, 0xfe, 0xfb, 0x4e, +0xef, 0x06, 0x27, 0x8a, 0xa2, 0x8d, 0xf8, 0x93, +0xd1, 0xf1, 0x8f, 0x3f, 0xfe, 0xe8, 0x57, 0xe2, +0x4f, 0xc2, 0xfd, 0x77, 0xdf, 0x7d, 0x37, 0xbe, +0xfd, 0xf6, 0x5b, 0x97, 0xc5, 0xbf, 0x63, 0xc7, +0x8e, 0xd8, 0xb8, 0x71, 0x23, 0x76, 0xef, 0xde, +0xed, 0x37, 0xe2, 0x0f, 0x00, 0x1f, 0x7d, 0xf4, +0x91, 0xdd, 0x63, 0x9f, 0x7c, 0xf2, 0x49, 0x40, +0x8a, 0xff, 0xad, 0x5b, 0xb7, 0xdc, 0x2e, 0xfe, +0xe4, 0xfe, 0x41, 0xc5, 0xdf, 0xf3, 0xd0, 0x08, +0x40, 0x10, 0xd1, 0x14, 0x22, 0x01, 0x8f, 0x3e, +0xfa, 0x28, 0x1e, 0x7a, 0xe8, 0x21, 0x37, 0x5f, +0xb9, 0xc0, 0x60, 0xff, 0xfe, 0xfd, 0x58, 0x81, +0x0c, 0x2c, 0x35, 0x00, 0x00, 0x20, 0x00, 0x49, +0x44, 0x41, 0x54, 0xb0, 0x60, 0x01, 0xf2, 0xf3, +0x35, 0x3d, 0x92, 0xd3, 0xb0, 0x2c, 0x8b, 0xa7, +0x9f, 0x7e, 0x1a, 0xef, 0xbf, 0xff, 0x3e, 0x3a, +0x75, 0xea, 0xe4, 0xa6, 0xd6, 0xb9, 0x87, 0xc3, +0x87, 0x0f, 0x63, 0xfe, 0xfc, 0xf9, 0xc8, 0xcd, +0xcd, 0x75, 0xf9, 0xbd, 0x7a, 0xbd, 0x1e, 0xf3, +0xe6, 0xcd, 0xc3, 0x87, 0x1f, 0x7e, 0x88, 0x96, +0x2d, 0x5b, 0x7a, 0xa0, 0x75, 0x0d, 0x27, 0x3f, +0x3f, 0x1f, 0x03, 0x06, 0x0c, 0xd0, 0x3c, 0x36, +0x7a, 0xf4, 0x68, 0x24, 0x25, 0x25, 0x79, 0xb9, +0x45, 0x8d, 0xe7, 0xd6, 0xad, 0x5b, 0x48, 0x4c, +0x4c, 0x44, 0x75, 0x75, 0xb5, 0xd6, 0x96, 0xbe, +0xb7, 0x76, 0xed, 0xda, 0xb5, 0xf2, 0xe2, 0xc5, +0x8b, 0x56, 0xe2, 0x0f, 0xc0, 0xc4, 0xb2, 0xac, +0xb1, 0x3e, 0xf1, 0x67, 0x59, 0xd6, 0x44, 0xc5, +0xdf, 0x3b, 0x50, 0x03, 0x10, 0x64, 0x04, 0xab, +0x09, 0x50, 0x76, 0x6b, 0xfc, 0xf8, 0xf1, 0x4d, +0xce, 0x04, 0xe4, 0xe6, 0xe6, 0x62, 0xd0, 0xa0, +0x41, 0x90, 0x24, 0xa9, 0x51, 0xe7, 0x19, 0x3f, +0x7e, 0x3c, 0xfe, 0xdf, 0xff, 0xfb, 0x7f, 0xe8, +0xdd, 0xbb, 0xb7, 0x9b, 0x5a, 0xe6, 0x1e, 0x4a, +0x4a, 0x4a, 0xb0, 0x70, 0xe1, 0x42, 0x7c, 0xfb, +0xed, 0xb7, 0x2e, 0xf7, 0xb1, 0x75, 0xeb, 0xd6, +0xf8, 0xd3, 0x9f, 0xfe, 0x84, 0x57, 0x5e, 0x79, +0xc5, 0x6f, 0x2b, 0xe5, 0x4d, 0x9b, 0x36, 0x4d, +0x73, 0x7e, 0xbf, 0x6d, 0xdb, 0xb6, 0x38, 0x7c, +0xf8, 0xb0, 0xdf, 0x2c, 0x4b, 0x74, 0x16, 0x2a, +0xfe, 0xc1, 0x01, 0x35, 0x00, 0x41, 0x88, 0xa7, +0x4d, 0x40, 0x58, 0x58, 0x18, 0x53, 0x5e, 0x5e, +0xce, 0x79, 0xcb, 0x04, 0x68, 0x75, 0xa7, 0x29, +0x99, 0x00, 0x49, 0x92, 0x30, 0x78, 0xf0, 0x60, +0x1c, 0x3e, 0x7c, 0xb8, 0xc1, 0xe7, 0x18, 0x30, +0x60, 0x00, 0x16, 0x2f, 0x5e, 0xec, 0xb7, 0x79, +0x14, 0x63, 0xc6, 0x8c, 0x41, 0x72, 0x72, 0xb2, +0xd3, 0xaf, 0xef, 0xde, 0xbd, 0x3b, 0x86, 0x0e, +0x1d, 0x8a, 0x11, 0x23, 0x46, 0x60, 0xc6, 0x8c, +0x19, 0x7e, 0x97, 0xbc, 0x58, 0x52, 0x52, 0x02, +0xbd, 0x5e, 0x8f, 0x16, 0x2d, 0x5a, 0x60, 0xd3, +0xa6, 0x4d, 0x78, 0xe2, 0x89, 0x27, 0x6c, 0x5e, +0xd3, 0xae, 0x5d, 0x3b, 0xbf, 0xda, 0x6a, 0xd8, +0x59, 0xd4, 0x61, 0x7f, 0x25, 0x26, 0x93, 0xa9, +0x6a, 0xe7, 0xce, 0x9d, 0x2b, 0x2f, 0x5e, 0xbc, +0x78, 0x85, 0x8a, 0xbf, 0xff, 0x43, 0x0d, 0x40, +0x90, 0x12, 0x2c, 0x26, 0xa0, 0x7f, 0xff, 0xfe, +0x76, 0x23, 0x01, 0xe3, 0xc6, 0x8d, 0x6b, 0x12, +0x26, 0x60, 0xe3, 0xc6, 0x8d, 0x96, 0x4d, 0x6b, +0xb4, 0xe8, 0xdb, 0xb7, 0x2f, 0x4a, 0x4a, 0x4a, +0x70, 0xf9, 0xf2, 0x65, 0x9b, 0x63, 0x5d, 0xbb, +0x76, 0xc5, 0x47, 0x1f, 0x7d, 0x84, 0x59, 0xb3, +0x66, 0x69, 0xde, 0xe4, 0xfc, 0x81, 0xbc, 0xbc, +0x3c, 0xdc, 0x7f, 0xff, 0xfd, 0x76, 0x8f, 0xf7, +0xeb, 0xd7, 0x0f, 0xeb, 0xd7, 0xaf, 0xc7, 0xcd, +0x9b, 0x37, 0x51, 0x55, 0x55, 0x85, 0x9e, 0x3d, +0x7b, 0xfa, 0x6d, 0x91, 0x9c, 0xb3, 0x67, 0xcf, +0x62, 0xf1, 0xe2, 0xc5, 0x58, 0xbd, 0x7a, 0x35, +0x8c, 0x46, 0x23, 0x62, 0x62, 0x62, 0x50, 0x54, +0x54, 0x84, 0x5b, 0xb7, 0x6e, 0x59, 0xbd, 0xae, +0x7d, 0xfb, 0xf6, 0x48, 0x4d, 0x4d, 0x0d, 0xb8, +0x25, 0x7f, 0xb7, 0x6e, 0xdd, 0x42, 0x72, 0x72, +0xb2, 0x4d, 0x89, 0x65, 0xf3, 0x52, 0x3f, 0x2a, +0xfe, 0x01, 0x46, 0xe0, 0xd5, 0x98, 0xa4, 0x38, +0x85, 0x2c, 0xcb, 0xb2, 0x96, 0x09, 0x60, 0x18, +0x06, 0xb2, 0x2c, 0xcb, 0xc4, 0x04, 0xc4, 0xc6, +0xc6, 0xca, 0x05, 0x05, 0x05, 0x4c, 0x41, 0x41, +0x81, 0x1c, 0x1b, 0x1b, 0xcb, 0x28, 0x3e, 0x30, +0x0c, 0xf9, 0xb0, 0x54, 0x56, 0x56, 0x4a, 0x61, +0x61, 0x61, 0x6c, 0x65, 0x65, 0x25, 0x5a, 0xb5, +0x6a, 0x25, 0x55, 0x54, 0x54, 0x00, 0x00, 0x1b, +0x11, 0x11, 0x21, 0x96, 0x97, 0x97, 0x03, 0x00, +0x9a, 0x35, 0x6b, 0x66, 0x73, 0x53, 0x60, 0x59, +0x16, 0x21, 0x21, 0x21, 0xa8, 0xad, 0xad, 0xb5, +0xdb, 0x4e, 0x9e, 0xe7, 0x21, 0x08, 0x02, 0x24, +0x49, 0x02, 0xc7, 0x71, 0x96, 0x9a, 0xfc, 0xa4, +0xe9, 0x47, 0x8e, 0x1c, 0xd9, 0xd2, 0xaf, 0x5f, +0x3f, 0xb9, 0x4d, 0x9b, 0x36, 0x36, 0x13, 0xa8, +0x7b, 0xf7, 0xee, 0x05, 0x80, 0xa0, 0x37, 0x01, +0xbb, 0x77, 0xef, 0xae, 0xf7, 0xf8, 0xfb, 0xef, +0xbf, 0x8f, 0x49, 0x93, 0x26, 0x21, 0x2b, 0x2b, +0x0b, 0xf1, 0xf1, 0xf1, 0x28, 0x2a, 0x2a, 0x42, +0x44, 0x44, 0x04, 0x86, 0x0f, 0x1f, 0x8e, 0x89, +0x13, 0x27, 0xfa, 0xc5, 0xf2, 0xb7, 0xfa, 0xf8, +0xe2, 0x8b, 0x2f, 0xea, 0x3d, 0x3e, 0x71, 0xe2, +0x44, 0xbf, 0xdf, 0x89, 0xf1, 0xa7, 0x9f, 0x7e, +0xc2, 0xbf, 0xfe, 0xf5, 0x2f, 0x6c, 0xda, 0xb4, +0x09, 0xa2, 0x28, 0x22, 0x3c, 0x3c, 0x1c, 0xb2, +0x2c, 0xe3, 0xdc, 0xb9, 0x73, 0x36, 0xaf, 0xbd, +0xfb, 0xee, 0xbb, 0xb1, 0x75, 0xeb, 0x56, 0xbf, +0xef, 0x93, 0x9a, 0xfa, 0xc4, 0xdf, 0x64, 0x32, +0x55, 0x99, 0xc3, 0xfe, 0x54, 0xfc, 0x03, 0x08, +0x1a, 0x01, 0x68, 0x22, 0x28, 0xcd, 0x80, 0xf2, +0x6f, 0xae, 0x8e, 0x06, 0xcc, 0x98, 0x31, 0x03, +0x3f, 0xff, 0xfc, 0x33, 0x73, 0xf5, 0xea, 0x55, +0x06, 0x00, 0xa2, 0xa3, 0xa3, 0x19, 0x5f, 0x45, +0x02, 0x48, 0x14, 0xc0, 0x1c, 0x09, 0x98, 0xd6, +0xba, 0x75, 0xeb, 0x01, 0x8a, 0xfe, 0x58, 0xfa, +0x30, 0x76, 0xec, 0xd8, 0xa0, 0x36, 0x01, 0x9d, +0x3b, 0x77, 0xd6, 0x1c, 0xdd, 0x03, 0x75, 0xd7, +0xa1, 0xb8, 0xb8, 0xd8, 0x6f, 0xb6, 0xb0, 0x6d, +0x08, 0x5d, 0xba, 0x74, 0xb1, 0x5a, 0xbb, 0xaf, +0x26, 0x23, 0x23, 0x03, 0x43, 0x86, 0x0c, 0xf1, +0x62, 0x8b, 0x9c, 0xe7, 0xe0, 0xc1, 0x83, 0x58, +0xb4, 0x68, 0x11, 0x76, 0xed, 0xda, 0xe5, 0xf0, +0xb5, 0x21, 0x21, 0x21, 0x58, 0xb8, 0x70, 0x21, +0xde, 0x7e, 0xfb, 0x6d, 0xbf, 0x37, 0x65, 0x6a, +0xaa, 0xaa, 0xaa, 0x90, 0x94, 0x94, 0x64, 0x25, +0xfe, 0xe4, 0x33, 0x68, 0x16, 0xff, 0x55, 0xe7, +0xcf, 0x9f, 0xbf, 0x6c, 0x4f, 0xfc, 0x99, 0xba, +0x0d, 0x7d, 0x8c, 0x9e, 0x16, 0xff, 0xc8, 0xc8, +0x48, 0xf9, 0xea, 0xd5, 0xab, 0x2e, 0x8b, 0x7f, +0x53, 0x12, 0x7d, 0x25, 0xd4, 0x00, 0x34, 0x21, +0x82, 0xc1, 0x04, 0x68, 0x45, 0x02, 0x18, 0x86, +0xc1, 0xd8, 0xb1, 0x63, 0x31, 0x62, 0xc4, 0x08, +0x0f, 0x5e, 0x3d, 0xdf, 0x70, 0xe6, 0xcc, 0x19, +0xf4, 0xe8, 0xd1, 0xc3, 0xee, 0xf1, 0xf6, 0xed, +0xdb, 0x6b, 0xd6, 0xbc, 0x0f, 0x14, 0x1c, 0xf5, +0xef, 0xce, 0x3b, 0xef, 0xc4, 0xb9, 0x73, 0xe7, +0xfc, 0x6a, 0xe3, 0x1e, 0x00, 0xa8, 0xa8, 0xa8, +0xc0, 0xfc, 0xf9, 0xf3, 0xb1, 0x6e, 0xdd, 0x3a, +0xa7, 0x5e, 0x3f, 0x7a, 0xf4, 0x68, 0x7c, 0xfe, +0xf9, 0xe7, 0xf8, 0xdd, 0xef, 0x7e, 0xe7, 0xe1, +0x96, 0xb9, 0x1f, 0x17, 0xc4, 0xdf, 0xb2, 0xac, +0x17, 0x54, 0xfc, 0x03, 0x02, 0xff, 0xfa, 0x54, +0x51, 0x3c, 0x8a, 0xf2, 0x1f, 0x5d, 0xf9, 0x01, +0x50, 0xd7, 0x0a, 0xd8, 0xb4, 0x69, 0x13, 0x7a, +0xf6, 0xec, 0x69, 0xf9, 0x20, 0x5d, 0xbd, 0x7a, +0x55, 0x56, 0xd6, 0x09, 0x88, 0x8a, 0x8a, 0x92, +0x94, 0x75, 0x02, 0x0c, 0x06, 0x83, 0x1c, 0x11, +0x11, 0x21, 0x7a, 0xa2, 0x4e, 0x80, 0x62, 0xdd, +0xb0, 0xf1, 0xc8, 0x91, 0x23, 0xf1, 0x65, 0x65, +0x65, 0x79, 0xca, 0x3e, 0x90, 0x7e, 0xec, 0xdd, +0xbb, 0xd7, 0x6e, 0x85, 0xb5, 0x40, 0x26, 0x25, +0x25, 0xa5, 0xde, 0xe3, 0xfe, 0x9a, 0xf5, 0xee, +0x2c, 0x8e, 0xfa, 0xf7, 0xf4, 0xd3, 0x4f, 0xfb, +0x9d, 0xf8, 0x67, 0x66, 0x66, 0xa2, 0x6f, 0xdf, +0xbe, 0x0e, 0xc5, 0x9f, 0x65, 0x59, 0x4c, 0x9e, +0x3c, 0x19, 0x69, 0x69, 0x69, 0x48, 0x4a, 0x4a, +0x0a, 0x0a, 0xf1, 0x57, 0x7e, 0xe6, 0x4c, 0x26, +0x53, 0x35, 0x15, 0xff, 0xc0, 0xc6, 0xbf, 0x3e, +0x59, 0x14, 0x8f, 0xe3, 0x0e, 0x13, 0x50, 0x56, +0x56, 0x26, 0xfb, 0xca, 0x04, 0xe4, 0xe7, 0xe7, +0xc7, 0x97, 0x95, 0x95, 0xe5, 0x69, 0xcd, 0xdd, +0x25, 0x26, 0x26, 0x06, 0x9d, 0x09, 0x70, 0x24, +0x90, 0xd1, 0xd1, 0xd1, 0x5e, 0x6a, 0x89, 0x67, +0xa8, 0x2f, 0xf3, 0x9f, 0x61, 0x18, 0x3c, 0xf3, +0xcc, 0x33, 0xde, 0x6b, 0x8c, 0x13, 0x5c, 0xbe, +0x7c, 0x19, 0x13, 0x26, 0x4c, 0xc0, 0x85, 0x0b, +0x17, 0xec, 0xbe, 0x26, 0x3c, 0x3c, 0x1c, 0xf3, +0xe7, 0xcf, 0xc7, 0xa9, 0x53, 0xa7, 0xb0, 0x6d, +0xdb, 0xb6, 0x80, 0x8d, 0x4c, 0x55, 0x55, 0x55, +0x59, 0xe6, 0xfc, 0x95, 0xc2, 0x0f, 0xd4, 0x89, +0xff, 0xee, 0xdd, 0xbb, 0x57, 0x3a, 0x23, 0xfe, +0x00, 0x04, 0x2a, 0xfe, 0xfe, 0x09, 0x35, 0x00, +0x4d, 0x90, 0x60, 0x30, 0x01, 0xa5, 0xa5, 0xa5, +0x9a, 0x91, 0x80, 0x60, 0x32, 0x01, 0xb2, 0x2c, +0x3b, 0xac, 0x7e, 0x18, 0xc8, 0x11, 0x00, 0x49, +0x92, 0xea, 0xed, 0xdf, 0x88, 0x11, 0x23, 0xfc, +0xaa, 0x92, 0x9f, 0x2c, 0xcb, 0x98, 0x37, 0x6f, +0x9e, 0x4d, 0x12, 0x1c, 0xe1, 0xf1, 0xc7, 0x1f, +0xc7, 0xa6, 0x4d, 0x9b, 0x70, 0xe9, 0xd2, 0x25, +0x2c, 0x5f, 0xbe, 0x3c, 0x20, 0x47, 0xfc, 0x04, +0x22, 0xfe, 0xb7, 0x6e, 0xdd, 0xb2, 0x49, 0x94, +0x33, 0x8b, 0xff, 0xaa, 0x73, 0xe7, 0xce, 0x39, +0x25, 0xfe, 0x2c, 0xcb, 0x9a, 0xa8, 0xf8, 0xfb, +0x27, 0xd4, 0x00, 0x34, 0x51, 0xfc, 0xdd, 0x04, +0xc0, 0x7c, 0x33, 0x71, 0x64, 0x02, 0xb4, 0x22, +0x01, 0x49, 0x49, 0x49, 0xd8, 0xbf, 0x7f, 0xbf, +0xc7, 0xae, 0x9d, 0xb7, 0x38, 0x75, 0xea, 0x14, +0x4a, 0x4a, 0x4a, 0xea, 0x7d, 0x4d, 0x20, 0x47, +0x00, 0xb2, 0xb3, 0xb3, 0x51, 0x5a, 0x5a, 0x6a, +0xf7, 0xf8, 0xb3, 0xcf, 0x3e, 0xeb, 0xc5, 0xd6, +0x38, 0x66, 0xd9, 0xb2, 0x65, 0x48, 0x4a, 0x4a, +0xb2, 0xda, 0xc1, 0x8f, 0xc0, 0xf3, 0x3c, 0x3e, +0xfb, 0xec, 0x33, 0x4c, 0x9f, 0x3e, 0x3d, 0xa0, +0x13, 0x32, 0x01, 0xa0, 0xba, 0xba, 0xda, 0x6a, +0xe4, 0xaf, 0x44, 0x10, 0x04, 0x22, 0xfe, 0x97, +0x1a, 0x2a, 0xfe, 0xb2, 0x2c, 0x5b, 0xee, 0x03, +0xa0, 0xe2, 0xef, 0x53, 0xa8, 0x01, 0x68, 0xc2, +0xf8, 0xb3, 0x09, 0xd0, 0xe9, 0x74, 0x4e, 0x9b, +0x00, 0x65, 0x1f, 0x94, 0x91, 0x80, 0x40, 0x37, +0x01, 0xe7, 0xcf, 0x9f, 0x77, 0xf8, 0x9a, 0x40, +0x8e, 0x00, 0x7c, 0xff, 0xfd, 0xf7, 0x76, 0x8f, +0xb5, 0x68, 0xd1, 0x02, 0xd3, 0xa7, 0x4f, 0xf7, +0x62, 0x6b, 0xea, 0x47, 0x92, 0x24, 0x7c, 0xfa, +0xe9, 0xa7, 0x9a, 0xe2, 0x0f, 0xd4, 0x8d, 0xfe, +0x03, 0xb1, 0x96, 0xbf, 0x9a, 0xea, 0xea, 0x6a, +0x9b, 0x84, 0x3f, 0x82, 0xbb, 0xc4, 0x9f, 0x65, +0x59, 0x81, 0x8a, 0xbf, 0x7f, 0x40, 0x0d, 0x40, +0x13, 0x27, 0xd0, 0x4d, 0x40, 0x5e, 0x5e, 0x9e, +0x66, 0x4e, 0x00, 0xc3, 0x30, 0x01, 0x1f, 0x09, +0xb8, 0x74, 0xe9, 0x92, 0xc3, 0xd7, 0x04, 0xaa, +0x01, 0x30, 0x1a, 0x8d, 0x9a, 0xdb, 0x12, 0x13, +0x66, 0xce, 0x9c, 0x89, 0xf0, 0xf0, 0x70, 0x2f, +0xb6, 0xa8, 0x7e, 0xf6, 0xec, 0xd9, 0xa3, 0x69, +0xc8, 0x48, 0x82, 0xe2, 0xeb, 0xaf, 0xbf, 0xee, +0xe5, 0x16, 0xb9, 0x1f, 0xe5, 0xc8, 0x5f, 0x09, +0xc3, 0x30, 0x10, 0x04, 0xc1, 0xb0, 0x7b, 0xf7, +0xee, 0x55, 0xbf, 0xfd, 0xf6, 0x1b, 0x15, 0xff, +0x20, 0x82, 0x1a, 0x00, 0x4a, 0xc0, 0x9b, 0x80, +0xdc, 0xdc, 0xdc, 0xf8, 0xd2, 0xd2, 0xd2, 0x5c, +0xad, 0x3e, 0x04, 0xaa, 0x09, 0x10, 0x45, 0x11, +0x59, 0x59, 0x59, 0x0e, 0x5f, 0x17, 0xa8, 0x53, +0x00, 0x3b, 0x77, 0xee, 0xb4, 0x1b, 0xfe, 0x6f, +0xd5, 0xaa, 0x15, 0xde, 0x7b, 0xef, 0x3d, 0x2f, +0xb7, 0xa8, 0x7e, 0xb4, 0x8a, 0x15, 0x85, 0x84, +0x84, 0x40, 0x92, 0x24, 0xfc, 0xe1, 0x0f, 0x7f, +0xc0, 0xe0, 0xc1, 0x83, 0x7d, 0xd0, 0x2a, 0xf7, +0x41, 0xc4, 0x5f, 0x59, 0xb1, 0x90, 0x44, 0xd4, +0x4c, 0x26, 0x93, 0x61, 0xcf, 0x9e, 0x3d, 0x0e, +0xc5, 0xdf, 0x3c, 0x75, 0x47, 0xc5, 0x3f, 0x80, +0xa0, 0x06, 0x80, 0x02, 0xc0, 0x7f, 0x4c, 0x80, +0xf9, 0x66, 0xe2, 0x8c, 0x09, 0x30, 0xaa, 0x4c, +0xc0, 0xd6, 0xb2, 0xb2, 0xb2, 0x5c, 0xad, 0x48, +0x40, 0x72, 0x72, 0x32, 0x0e, 0x1c, 0x38, 0xe0, +0xd1, 0xeb, 0xe7, 0x4e, 0x76, 0xee, 0xdc, 0x89, +0xbe, 0x7d, 0xfb, 0x62, 0xf5, 0xea, 0xd5, 0x0e, +0x5f, 0x1b, 0xa8, 0x11, 0x80, 0xfa, 0xfa, 0xf6, +0xe9, 0xa7, 0x9f, 0xfa, 0xd5, 0x2e, 0x85, 0x79, +0x79, 0x79, 0x9a, 0x85, 0x7e, 0x62, 0x62, 0x62, +0x90, 0x98, 0x98, 0x88, 0xff, 0xfd, 0xef, 0x7f, +0x3e, 0x68, 0x95, 0xfb, 0xa8, 0xae, 0xae, 0x46, +0x4a, 0x4a, 0x8a, 0x8d, 0xf8, 0x03, 0xb0, 0x88, +0xff, 0xd9, 0xb3, 0x67, 0x2f, 0x3a, 0x12, 0x7f, +0x73, 0x04, 0x80, 0x8a, 0x7f, 0x00, 0x41, 0x0d, +0x00, 0xc5, 0x82, 0x3f, 0x98, 0x00, 0x59, 0x96, +0x45, 0x27, 0x4d, 0x80, 0x49, 0x6d, 0x02, 0x0e, +0x1f, 0x3e, 0xbc, 0xb5, 0xbe, 0x48, 0x80, 0xbf, +0x9b, 0x80, 0x8b, 0x17, 0x2f, 0x62, 0xd4, 0xa8, +0x51, 0x98, 0x38, 0x71, 0x22, 0x0a, 0x0a, 0x0a, +0x1c, 0xbe, 0x9e, 0x61, 0x18, 0x74, 0xe8, 0xd0, +0xc1, 0x0b, 0x2d, 0x73, 0x8d, 0xbc, 0xbc, 0x3c, +0x3c, 0xf5, 0xd4, 0x53, 0xf8, 0xfd, 0xef, 0x7f, +0x8f, 0xbd, 0x7b, 0xf7, 0x5a, 0xca, 0x3b, 0x13, +0xb2, 0xb2, 0xb2, 0x90, 0x90, 0x90, 0xa0, 0xf9, +0xde, 0x71, 0xe3, 0xc6, 0x61, 0xee, 0xdc, 0xb9, +0xde, 0x68, 0xa6, 0x53, 0x7c, 0xf3, 0xcd, 0x37, +0x18, 0x35, 0x6a, 0x94, 0xd5, 0x0e, 0x85, 0xe1, +0xe1, 0xe1, 0xf8, 0xe7, 0x3f, 0xff, 0x89, 0x63, +0xc7, 0x8e, 0x61, 0xcc, 0x98, 0x31, 0x3e, 0x6c, +0x5d, 0xe3, 0x21, 0xe2, 0x5f, 0x59, 0x59, 0x09, +0xc0, 0x3a, 0x8f, 0x46, 0x10, 0x04, 0x9f, 0x88, +0x7f, 0x68, 0x68, 0xa8, 0x4c, 0xc5, 0xdf, 0x3b, +0xd0, 0x4a, 0x80, 0x14, 0x1b, 0x18, 0xc5, 0x27, +0xa8, 0xa1, 0x15, 0x03, 0x5b, 0xb7, 0x6e, 0xcd, +0x14, 0x17, 0x17, 0xb3, 0x0d, 0xad, 0x18, 0xc8, +0x30, 0x0c, 0x27, 0x8a, 0xa2, 0xb2, 0x52, 0x20, +0x2f, 0xcb, 0xb2, 0xce, 0x64, 0x32, 0xe9, 0x00, +0x28, 0x2b, 0x06, 0x5a, 0x6d, 0x1e, 0x24, 0xcb, +0xb2, 0x3e, 0x2e, 0x2e, 0x6e, 0x6a, 0x64, 0x64, +0xa4, 0xd5, 0xee, 0x32, 0xa4, 0x4b, 0x63, 0xc6, +0x8c, 0xc1, 0xd0, 0xa1, 0x43, 0x3d, 0x78, 0xf5, +0x1a, 0xce, 0xa5, 0x4b, 0x97, 0x70, 0xe7, 0x9d, +0x77, 0x3a, 0xfd, 0xfa, 0xb6, 0x6d, 0xdb, 0xa2, +0xb0, 0xb0, 0xd0, 0x83, 0x2d, 0x72, 0x1e, 0x51, +0x14, 0x11, 0x1f, 0x1f, 0x8f, 0xa5, 0x4b, 0x97, +0xe2, 0xe0, 0xc1, 0x83, 0x56, 0xc7, 0xa2, 0xa3, +0xa3, 0x31, 0x75, 0xea, 0x54, 0x4c, 0x9e, 0x3c, +0x19, 0x23, 0x46, 0x8c, 0xc0, 0xf0, 0xe1, 0xc3, +0x35, 0x77, 0x36, 0x1c, 0x35, 0x6a, 0x14, 0xd6, +0xac, 0x59, 0xe3, 0x17, 0x51, 0x8d, 0x73, 0xe7, +0xce, 0xe1, 0xf9, 0xe7, 0x9f, 0xb7, 0xa9, 0xc3, +0xf0, 0xf8, 0xe3, 0x8f, 0xe3, 0xb3, 0xcf, 0x3e, +0x0b, 0x8a, 0x84, 0x3f, 0x83, 0xc1, 0x80, 0xe4, +0xe4, 0x64, 0x2b, 0xf1, 0x27, 0x98, 0xc5, 0x7f, +0xf5, 0x99, 0x33, 0x67, 0x2e, 0x2a, 0x23, 0x6e, +0xf0, 0x82, 0xf8, 0x0b, 0x82, 0x20, 0xb9, 0x43, +0xfc, 0x01, 0x6a, 0x00, 0x1c, 0x41, 0x0d, 0x00, +0x45, 0x13, 0x5f, 0x9b, 0x00, 0x93, 0xc9, 0xc4, +0xc9, 0xb2, 0xcc, 0x3b, 0x69, 0x02, 0x6c, 0xca, +0x06, 0x2b, 0x4d, 0x80, 0xfa, 0xa6, 0xe0, 0xcf, +0x26, 0xa0, 0x5f, 0xbf, 0x7e, 0xf8, 0xe9, 0xa7, +0x9f, 0x9c, 0x7a, 0x6d, 0xdf, 0xbe, 0x7d, 0x71, +0xf4, 0xe8, 0x51, 0x0f, 0xb7, 0xa8, 0x7e, 0xca, +0xcb, 0xcb, 0xf1, 0xed, 0xb7, 0xdf, 0x62, 0xd9, +0xb2, 0x65, 0xf5, 0x16, 0xc7, 0x21, 0x68, 0x6d, +0x0e, 0x15, 0x1d, 0x1d, 0x8d, 0x25, 0x4b, 0x96, +0xd4, 0xbb, 0xe3, 0xa1, 0xb7, 0x90, 0x24, 0x09, +0xcb, 0x96, 0x2d, 0xc3, 0xc2, 0x85, 0x0b, 0xad, +0x92, 0xe1, 0x7a, 0xf4, 0xe8, 0x81, 0xff, 0xfe, +0xf7, 0xbf, 0x78, 0xe4, 0x91, 0x47, 0x7c, 0xd8, +0x3a, 0xf7, 0xa1, 0x14, 0x7f, 0x8d, 0xa5, 0x7e, +0x35, 0x7b, 0xf6, 0xec, 0x59, 0xe5, 0x0d, 0xf1, +0x37, 0x18, 0x0c, 0x72, 0xf3, 0xe6, 0xcd, 0x25, +0x2a, 0xfe, 0xbe, 0x81, 0x4e, 0x01, 0x50, 0x34, +0x71, 0xd7, 0x74, 0x40, 0x58, 0x58, 0x98, 0xdc, +0x90, 0xe9, 0x00, 0x9d, 0x4e, 0x27, 0xba, 0x98, +0x13, 0x60, 0xd2, 0x9a, 0x0e, 0xb0, 0x97, 0x13, +0xa0, 0x1e, 0xa5, 0xfa, 0x0b, 0x13, 0x27, 0x4e, +0x74, 0xfa, 0xb5, 0xbe, 0x1e, 0x29, 0x7f, 0xf3, +0xcd, 0x37, 0xe8, 0xd4, 0xa9, 0x13, 0xde, 0x7a, +0xeb, 0x2d, 0xa7, 0xc4, 0x1f, 0x80, 0x95, 0xf8, +0xf3, 0x3c, 0x8f, 0x05, 0x0b, 0x16, 0xe0, 0xd4, +0xa9, 0x53, 0x7e, 0x21, 0xfe, 0x00, 0xf0, 0xca, +0x2b, 0xaf, 0xe0, 0xb5, 0xd7, 0x5e, 0xb3, 0x88, +0x7f, 0x78, 0x78, 0x38, 0x3e, 0xfa, 0xe8, 0x23, +0x1c, 0x3f, 0x7e, 0x3c, 0xe8, 0xc4, 0x5f, 0xab, +0xc8, 0x8f, 0x28, 0x8a, 0x35, 0x7b, 0xf7, 0xee, +0x6d, 0x90, 0xf8, 0x9b, 0x0d, 0x00, 0x15, 0xff, +0x00, 0x82, 0x46, 0x00, 0x28, 0xf5, 0xc2, 0xa8, +0x3e, 0x59, 0xe4, 0xff, 0x85, 0x44, 0x02, 0x0a, +0x0a, 0x0a, 0x18, 0x00, 0xf0, 0xd4, 0x06, 0x42, +0x8d, 0x8d, 0x04, 0x0c, 0x1c, 0x38, 0x70, 0x6a, +0x64, 0x64, 0xe4, 0xfd, 0xea, 0x1b, 0x04, 0x50, +0x17, 0x09, 0x78, 0xf0, 0xc1, 0x07, 0x3d, 0x78, +0xf5, 0x5c, 0x27, 0x33, 0x33, 0xd3, 0xe9, 0x36, +0x4d, 0x9f, 0x3e, 0x1d, 0x9b, 0x36, 0x6d, 0xf2, +0x70, 0x8b, 0x6c, 0x91, 0x24, 0x09, 0x2f, 0xbc, +0xf0, 0x02, 0x56, 0xac, 0x58, 0xd1, 0xe0, 0x73, +0x0c, 0x1b, 0x36, 0x0c, 0xcb, 0x97, 0x2f, 0x47, +0xef, 0xde, 0xbd, 0xdd, 0xd8, 0x32, 0xf7, 0x90, +0x93, 0x93, 0x83, 0x13, 0x27, 0x4e, 0x20, 0x24, +0x24, 0x04, 0xc3, 0x87, 0x0f, 0x77, 0x69, 0x5a, +0xc6, 0xdf, 0x51, 0x8a, 0xbf, 0x1a, 0x51, 0x14, +0x6b, 0xf6, 0xec, 0xd9, 0xb3, 0xea, 0xf4, 0xe9, +0xd3, 0x0d, 0x12, 0x7f, 0x8e, 0xe3, 0x4c, 0xce, +0x88, 0xbf, 0x28, 0x8a, 0x92, 0x20, 0x08, 0x12, +0x15, 0x7f, 0xdf, 0x43, 0x0d, 0x00, 0xc5, 0x21, +0x81, 0x6e, 0x02, 0x06, 0x0d, 0x1a, 0x64, 0x37, +0x27, 0x60, 0xf4, 0xe8, 0xd1, 0x7e, 0x65, 0x02, +0x6a, 0x6a, 0x6a, 0xd0, 0xb2, 0x65, 0x4b, 0xbb, +0x05, 0x67, 0x08, 0x3c, 0xcf, 0x63, 0xe3, 0xc6, +0x8d, 0x78, 0xec, 0xb1, 0xc7, 0xdc, 0xde, 0x86, +0x6b, 0xd7, 0xae, 0xe1, 0xad, 0xb7, 0xde, 0x42, +0x68, 0x68, 0x28, 0x96, 0x2f, 0x5f, 0x8e, 0x90, +0x90, 0x10, 0xab, 0xe3, 0x29, 0x29, 0x29, 0x18, +0x3d, 0x7a, 0x74, 0x83, 0xce, 0xdd, 0xae, 0x5d, +0x3b, 0x2c, 0x5e, 0xbc, 0x18, 0x7f, 0xf8, 0xc3, +0x1f, 0xdc, 0xd1, 0x54, 0x8a, 0x0b, 0x18, 0x0c, +0x06, 0xa4, 0xa6, 0xa6, 0xe2, 0xe6, 0xcd, 0x9b, +0x56, 0xcf, 0x33, 0x75, 0xeb, 0xfc, 0x6b, 0xf6, +0xee, 0xdd, 0xbb, 0xfa, 0x97, 0x5f, 0x7e, 0xb9, +0xe0, 0x6e, 0xf1, 0x17, 0x45, 0x51, 0x62, 0x18, +0x46, 0xa4, 0xe2, 0xef, 0x7f, 0xd0, 0x29, 0x00, +0x8a, 0xcb, 0xa8, 0x3f, 0x74, 0xe4, 0x83, 0xe9, +0x68, 0x17, 0x41, 0x77, 0x4e, 0x07, 0x98, 0xb3, +0x92, 0x9d, 0x9a, 0x0e, 0xc8, 0xc9, 0xc9, 0xd9, +0x5a, 0x52, 0x52, 0x92, 0x4b, 0xda, 0xae, 0x6c, +0x7f, 0x72, 0x72, 0x32, 0x32, 0x33, 0x33, 0xbd, +0x72, 0xdd, 0x9c, 0x21, 0x34, 0x34, 0xd4, 0xe1, +0xa8, 0x98, 0xe7, 0x79, 0xac, 0x5b, 0xb7, 0xce, +0x23, 0xe2, 0x7f, 0xe1, 0xc2, 0x05, 0x0c, 0x1b, +0x36, 0x0c, 0x6b, 0xd7, 0xae, 0xc5, 0x8a, 0x15, +0x2b, 0x30, 0x6a, 0xd4, 0x28, 0x1b, 0xc1, 0xf8, +0xee, 0xbb, 0xef, 0x5c, 0x3e, 0x2f, 0xcb, 0xb2, +0x78, 0xe9, 0xa5, 0x97, 0xf0, 0xcb, 0x2f, 0xbf, +0x50, 0xf1, 0xf7, 0x01, 0x35, 0x35, 0x35, 0x36, +0xe2, 0x4f, 0x3e, 0x0b, 0x54, 0xfc, 0x9b, 0x2e, +0xd4, 0x00, 0x50, 0x1c, 0xa2, 0xf5, 0xc1, 0x62, +0x18, 0xc6, 0x26, 0x1f, 0x00, 0xf0, 0x9e, 0x09, +0x80, 0xb9, 0xe0, 0x48, 0x43, 0x4c, 0x80, 0xb2, +0x0f, 0x24, 0x27, 0xc0, 0x9f, 0x4c, 0x40, 0x5c, +0x5c, 0x9c, 0xdd, 0x63, 0x1c, 0xc7, 0x61, 0xcd, +0x9a, 0x35, 0x98, 0x31, 0x63, 0x86, 0xdb, 0x7f, +0xef, 0xa9, 0x53, 0xa7, 0x30, 0x7c, 0xf8, 0x70, +0x9c, 0x3d, 0x7b, 0xd6, 0xf2, 0x5c, 0x66, 0x66, +0x26, 0x66, 0xce, 0x9c, 0x69, 0xb5, 0x94, 0x6f, +0xf3, 0xe6, 0xcd, 0x4e, 0x9f, 0x93, 0xe7, 0x79, +0x4c, 0x9c, 0x38, 0x11, 0x87, 0x0f, 0x1f, 0xc6, +0xb2, 0x65, 0xcb, 0x10, 0x11, 0x11, 0xe1, 0xd6, +0x36, 0x53, 0x1c, 0x53, 0x53, 0x53, 0x83, 0x94, +0x94, 0x14, 0x1b, 0xf1, 0x07, 0x40, 0xc5, 0xbf, +0x89, 0x43, 0x0d, 0x00, 0xc5, 0x29, 0x82, 0xc5, +0x04, 0x14, 0x17, 0x17, 0x5b, 0x22, 0x01, 0x4a, +0xfc, 0xc9, 0x04, 0x0c, 0x1c, 0x38, 0x50, 0xf3, +0x79, 0x22, 0xfe, 0x33, 0x67, 0xce, 0x74, 0xfb, +0xef, 0xdc, 0xb2, 0x65, 0x0b, 0x06, 0x0e, 0x1c, +0x88, 0x8b, 0x17, 0x2f, 0xda, 0x1c, 0xdb, 0xb3, +0x67, 0x0f, 0xfe, 0xfc, 0xe7, 0x3f, 0x5b, 0x7e, +0xb6, 0xb7, 0x1b, 0x9e, 0x92, 0x6f, 0xbf, 0xfd, +0x16, 0x27, 0x4f, 0x9e, 0xc4, 0xf5, 0xeb, 0xd7, +0x91, 0x90, 0x90, 0x80, 0xfb, 0xee, 0xbb, 0xcf, +0xad, 0xed, 0xa5, 0x38, 0x87, 0x5a, 0xfc, 0x95, +0x11, 0x30, 0xb3, 0xf8, 0xff, 0x8f, 0x8a, 0x7f, +0xd3, 0x85, 0x1a, 0x00, 0x8a, 0xd3, 0xf8, 0xab, +0x09, 0x70, 0x65, 0x75, 0x80, 0x39, 0x12, 0x90, +0xa7, 0xee, 0x03, 0xc3, 0x30, 0x48, 0x49, 0x49, +0x71, 0xaa, 0xfc, 0xae, 0xa7, 0x19, 0x32, 0x64, +0x88, 0xcd, 0x73, 0x1c, 0xc7, 0xe1, 0xfb, 0xef, +0xbf, 0x77, 0x7b, 0xb6, 0xbc, 0x28, 0x8a, 0xf8, +0xeb, 0x5f, 0xff, 0x8a, 0xc7, 0x1f, 0x7f, 0xdc, +0xb2, 0x1e, 0x5c, 0x8b, 0xa5, 0x4b, 0x97, 0xe2, +0xab, 0xaf, 0xbe, 0x72, 0xfa, 0xbc, 0x31, 0x31, +0x31, 0xb8, 0xe7, 0x9e, 0x7b, 0x10, 0x19, 0x19, +0xe9, 0x8e, 0x66, 0x52, 0x1a, 0x80, 0x52, 0xfc, +0xd5, 0x53, 0x5f, 0x0a, 0xf1, 0x3f, 0x4f, 0xc5, +0xbf, 0xe9, 0x42, 0x0d, 0x00, 0xc5, 0x25, 0xfc, +0xd1, 0x04, 0x30, 0x2e, 0x2e, 0x11, 0xcc, 0xce, +0xce, 0x8e, 0x2f, 0x2e, 0x2e, 0xce, 0x23, 0x6d, +0x57, 0x92, 0x9c, 0x9c, 0xec, 0x73, 0x13, 0x70, +0xcf, 0x3d, 0xf7, 0xe0, 0x9e, 0x7b, 0xee, 0xb1, +0xfc, 0x1c, 0x13, 0x13, 0x83, 0xed, 0xdb, 0xb7, +0x63, 0xf6, 0xec, 0xd9, 0x6e, 0xfd, 0x3d, 0x45, +0x45, 0x45, 0x78, 0xe4, 0x91, 0x47, 0xf0, 0xf1, +0xc7, 0x1f, 0x3b, 0xf5, 0xfa, 0x97, 0x5f, 0x7e, +0x19, 0xa9, 0xa9, 0xa9, 0x4e, 0xbd, 0x96, 0xe7, +0xf9, 0xc6, 0x34, 0x8d, 0xd2, 0x48, 0xd4, 0xe2, +0xaf, 0x44, 0x10, 0x84, 0x9a, 0xc4, 0xc4, 0xc4, +0x06, 0x8b, 0x3f, 0xc3, 0x30, 0x76, 0x97, 0xfa, +0x51, 0xf1, 0x0f, 0x2c, 0xe8, 0x2a, 0x00, 0x4a, +0x83, 0x50, 0xaf, 0x0c, 0x00, 0xea, 0x56, 0x07, +0xa8, 0x0b, 0x05, 0x01, 0xfe, 0xbb, 0x3a, 0xe0, +0x81, 0x07, 0x1e, 0x98, 0x16, 0x15, 0x15, 0x35, +0x40, 0xd1, 0x27, 0x4b, 0x5f, 0x1e, 0x7e, 0xf8, +0x61, 0x3c, 0xf0, 0xc0, 0x03, 0x9e, 0xba, 0x7c, +0x0e, 0xb9, 0x78, 0xf1, 0x22, 0xde, 0x7d, 0xf7, +0x5d, 0x74, 0xeb, 0xd6, 0xcd, 0x92, 0x91, 0xef, +0x4e, 0xae, 0x5c, 0xb9, 0x82, 0xc1, 0x83, 0x07, +0xe3, 0xf2, 0xe5, 0xcb, 0x2e, 0xbd, 0xaf, 0x75, +0xeb, 0xd6, 0x28, 0x2b, 0x2b, 0x73, 0xf8, 0xba, +0x83, 0x07, 0x0f, 0xfa, 0xd5, 0xea, 0x8a, 0xa6, +0x84, 0x56, 0xc2, 0x1f, 0x41, 0x14, 0xc5, 0xda, +0xbd, 0x7b, 0xf7, 0xae, 0x3e, 0x75, 0xea, 0x94, +0x45, 0xfc, 0x49, 0x99, 0x5f, 0x67, 0xc5, 0x9f, +0x31, 0xaf, 0xf7, 0xf7, 0xa5, 0xf8, 0x03, 0xd4, +0x00, 0xb8, 0x03, 0x6a, 0x00, 0x28, 0x0d, 0x26, +0x98, 0x4c, 0x80, 0xba, 0x2b, 0x0c, 0xc3, 0xe0, +0xe1, 0x87, 0x1f, 0x0e, 0xf8, 0x5d, 0xde, 0xec, +0x91, 0x9c, 0x9c, 0xec, 0xd1, 0x3a, 0xf6, 0x59, +0x59, 0x59, 0x41, 0x7b, 0xed, 0xfc, 0x19, 0x2a, +0xfe, 0x14, 0x57, 0xa0, 0x53, 0x00, 0x94, 0x06, +0xe3, 0x2f, 0xd3, 0x01, 0x2e, 0x6c, 0x20, 0x64, +0x33, 0x1d, 0x90, 0x95, 0x95, 0x15, 0xaf, 0x95, +0x13, 0x00, 0xd4, 0xad, 0x77, 0xcf, 0xce, 0xce, +0xf6, 0xd4, 0xe5, 0xf3, 0x29, 0x6d, 0xda, 0xb4, +0xf1, 0xe8, 0xf9, 0xd5, 0xb5, 0x03, 0x28, 0x9e, +0xa7, 0xa6, 0xa6, 0x06, 0xfb, 0xf6, 0xed, 0xd3, +0x5c, 0xe7, 0x2f, 0x8a, 0x62, 0x6d, 0x62, 0x62, +0xe2, 0xff, 0xa8, 0xf8, 0x53, 0x94, 0x50, 0x03, +0x40, 0x69, 0x14, 0xae, 0x9a, 0x00, 0x00, 0x70, +0xb7, 0x09, 0x70, 0x71, 0x17, 0x41, 0x1b, 0x13, +0x90, 0x99, 0x99, 0x19, 0x5f, 0x5c, 0x5c, 0x9c, +0xa7, 0x4e, 0x94, 0x02, 0x80, 0xd4, 0xd4, 0x54, +0xe4, 0xe4, 0xe4, 0x78, 0xe8, 0xea, 0xf9, 0x8e, +0xd6, 0xad, 0x5b, 0x7b, 0xf4, 0xfc, 0xee, 0x9e, +0xb2, 0xa0, 0xd4, 0x4f, 0x6d, 0x6d, 0x2d, 0xf6, +0xed, 0xdb, 0x87, 0x8a, 0x8a, 0x0a, 0xcb, 0x73, +0xe4, 0xff, 0x59, 0x10, 0x84, 0xda, 0xc4, 0xc4, +0xc4, 0xff, 0x9d, 0x3c, 0x79, 0xf2, 0x9c, 0x5a, +0xfc, 0x99, 0xdb, 0x3b, 0x6b, 0x52, 0xf1, 0x6f, +0x82, 0x50, 0x03, 0x40, 0x69, 0x34, 0xae, 0x98, +0x00, 0xf2, 0x81, 0xf7, 0xb6, 0x09, 0xe0, 0x79, +0xde, 0x29, 0x13, 0xa0, 0x6c, 0xbf, 0x32, 0x12, +0x10, 0x6c, 0x26, 0xc0, 0xd3, 0x11, 0x00, 0x6a, +0x00, 0xbc, 0x47, 0x6d, 0x6d, 0x2d, 0x52, 0x53, +0x53, 0x6d, 0xc4, 0x1f, 0x00, 0x11, 0xff, 0xef, +0xec, 0x89, 0x3f, 0xcf, 0xf3, 0x46, 0x2a, 0xfe, +0x4d, 0x17, 0x6a, 0x00, 0x28, 0x6e, 0xc1, 0xdf, +0x4d, 0x80, 0xf9, 0x66, 0x57, 0xaf, 0x09, 0xc8, +0xc8, 0xc8, 0xb0, 0x44, 0x02, 0xd4, 0x04, 0x5b, +0x24, 0xa0, 0x65, 0xcb, 0x96, 0x1e, 0xcd, 0xd4, +0xa7, 0x53, 0x00, 0xde, 0x41, 0x3d, 0xf2, 0x57, +0x1a, 0x57, 0x73, 0xd8, 0xff, 0xbb, 0x93, 0x27, +0x4f, 0xfe, 0xd6, 0x58, 0xf1, 0x87, 0xf9, 0x73, +0x46, 0xc5, 0x3f, 0xb8, 0xa0, 0x06, 0x80, 0xe2, +0x36, 0x82, 0xc9, 0x04, 0x28, 0xdb, 0x4f, 0x6e, +0x48, 0xc1, 0x64, 0x02, 0x18, 0x86, 0x41, 0xfb, +0xf6, 0xed, 0x3d, 0x76, 0x7e, 0x1a, 0x01, 0xf0, +0x3c, 0x44, 0xfc, 0xcb, 0xcb, 0xcb, 0x01, 0x58, +0x0b, 0xa7, 0x39, 0xe1, 0xcf, 0x6d, 0xe2, 0x6f, +0xfe, 0x6c, 0x51, 0xf1, 0x0f, 0x32, 0xa8, 0x01, +0xa0, 0xb8, 0x95, 0x60, 0x30, 0x01, 0x07, 0x0f, +0x1e, 0x8c, 0x2f, 0x2e, 0x2e, 0xce, 0xd7, 0xba, +0x19, 0xed, 0xdb, 0xb7, 0x0f, 0x87, 0x0e, 0x1d, +0xf2, 0xc8, 0xb5, 0xf3, 0x36, 0xd1, 0xd1, 0xd1, +0x1e, 0x3b, 0x37, 0x35, 0x00, 0x9e, 0x45, 0x29, +0xfe, 0xea, 0xdc, 0x15, 0x57, 0x47, 0xfe, 0x3a, +0x9d, 0x8e, 0x8a, 0x7f, 0x13, 0x85, 0x1a, 0x00, +0x8a, 0x57, 0xf0, 0x37, 0x13, 0x00, 0x07, 0x89, +0x81, 0x07, 0x0f, 0x1e, 0xdc, 0x52, 0x5c, 0x5c, +0x9c, 0xaf, 0x6c, 0xbf, 0x32, 0x12, 0x10, 0x0c, +0x26, 0xa0, 0x63, 0xc7, 0x8e, 0x1e, 0x39, 0x6f, +0x8b, 0x16, 0x2d, 0x10, 0x1e, 0x1e, 0xee, 0x91, +0x73, 0x53, 0xac, 0xc3, 0xfe, 0x6a, 0xd1, 0x24, +0xe2, 0xff, 0xf3, 0xcf, 0x3f, 0x3b, 0x2d, 0xfe, +0xe6, 0xe3, 0x54, 0xfc, 0x9b, 0x20, 0xd4, 0x00, +0x50, 0xdc, 0x8e, 0xbd, 0x0f, 0xae, 0x3f, 0x99, +0x00, 0x67, 0x12, 0x03, 0x0f, 0x1c, 0x38, 0xb0, +0x25, 0x98, 0x23, 0x01, 0x9e, 0x88, 0x00, 0x3c, +0xfa, 0xe8, 0xa3, 0x3e, 0xbf, 0x2e, 0x46, 0xa3, +0x11, 0x27, 0x4f, 0x9e, 0x44, 0x56, 0x56, 0x16, +0x76, 0xef, 0xde, 0x8d, 0x75, 0xeb, 0xd6, 0xe1, +0xdb, 0x6f, 0xbf, 0xc5, 0xb9, 0x73, 0xe7, 0x7c, +0xda, 0x2e, 0x77, 0xa0, 0x95, 0xed, 0x4f, 0x90, +0x24, 0xc9, 0x98, 0x94, 0x94, 0xf4, 0xbd, 0xb3, +0xe2, 0xcf, 0xb2, 0x2c, 0x15, 0xff, 0x26, 0x0e, +0x35, 0x00, 0x14, 0x8f, 0x10, 0x08, 0x26, 0xc0, +0x99, 0xe9, 0x80, 0x03, 0x07, 0x0e, 0x6c, 0x29, +0x2a, 0x2a, 0xd2, 0x8c, 0x04, 0x04, 0xba, 0x09, +0x70, 0x67, 0x04, 0xa0, 0x67, 0xcf, 0x9e, 0xd8, +0xb3, 0x67, 0x0f, 0x76, 0xee, 0xdc, 0x69, 0x55, +0xc6, 0xd8, 0x9b, 0x5c, 0xbb, 0x76, 0x0d, 0xef, +0xbe, 0xfb, 0x2e, 0x3a, 0x77, 0xee, 0x8c, 0x9e, +0x3d, 0x7b, 0x62, 0xc8, 0x90, 0x21, 0x78, 0xf4, +0xd1, 0x47, 0x31, 0x77, 0xee, 0x5c, 0x54, 0x56, +0x56, 0x22, 0x26, 0x26, 0xc6, 0x27, 0xed, 0x72, +0x17, 0xb5, 0xb5, 0xb5, 0x48, 0x4b, 0x4b, 0xb3, +0x11, 0x7f, 0x86, 0x61, 0x20, 0x49, 0x92, 0x31, +0x31, 0x31, 0xf1, 0xbb, 0x82, 0x82, 0x82, 0xb3, +0x74, 0xce, 0x9f, 0xe2, 0x2c, 0xd4, 0x00, 0x50, +0x3c, 0x46, 0x30, 0x99, 0x00, 0xad, 0x48, 0x00, +0xc3, 0x30, 0x48, 0x4b, 0x4b, 0xc3, 0xe1, 0xc3, +0x87, 0x3d, 0x72, 0xfd, 0x3c, 0x8d, 0xb3, 0x11, +0x00, 0xbd, 0x5e, 0x6f, 0xf7, 0x58, 0x64, 0x64, +0x24, 0x96, 0x2f, 0x5f, 0x8e, 0x63, 0xc7, 0x8e, +0x61, 0xec, 0xd8, 0xb1, 0xee, 0x6a, 0x9a, 0x4b, +0xfc, 0xf2, 0xcb, 0x2f, 0x98, 0x33, 0x67, 0x0e, +0xba, 0x74, 0xe9, 0x82, 0x0f, 0x3e, 0xf8, 0x00, +0x85, 0x85, 0x85, 0x96, 0x63, 0xf7, 0xde, 0x7b, +0x2f, 0xb2, 0xb3, 0xb3, 0xb1, 0x60, 0xc1, 0x02, +0x4d, 0xb1, 0x09, 0x14, 0x8c, 0x46, 0x23, 0xd2, +0xd2, 0xd2, 0x2c, 0x09, 0x7f, 0x04, 0xa6, 0xae, +0xc8, 0x8f, 0x4b, 0xe2, 0x4f, 0xe7, 0xfc, 0x29, +0x04, 0x6a, 0x00, 0x28, 0x1e, 0xc5, 0x1b, 0x26, +0x20, 0x3c, 0x3c, 0x5c, 0xf2, 0xb4, 0x09, 0xd8, +0xbf, 0x7f, 0xbf, 0x4d, 0x24, 0x80, 0xb0, 0x6f, +0xdf, 0xbe, 0x80, 0x34, 0x01, 0xce, 0x46, 0x00, +0x3e, 0xf8, 0xe0, 0x03, 0x44, 0x45, 0x45, 0x59, +0x3d, 0xa7, 0xd3, 0xe9, 0xb0, 0x60, 0xc1, 0x02, +0xfc, 0xfa, 0xeb, 0xaf, 0x98, 0x3f, 0x7f, 0x3e, +0x38, 0x8e, 0xf3, 0x44, 0x13, 0x1d, 0x92, 0x96, +0x96, 0x86, 0xc1, 0x83, 0x07, 0x63, 0xfd, 0xfa, +0xf5, 0x30, 0x99, 0x4c, 0x56, 0xc7, 0xe6, 0xcd, +0x9b, 0x87, 0xdc, 0xdc, 0x5c, 0xf4, 0xeb, 0xd7, +0xcf, 0x27, 0x6d, 0x73, 0x17, 0x5a, 0xe2, 0x4f, +0x22, 0x51, 0x0d, 0x11, 0x7f, 0x1a, 0xf6, 0xa7, +0x10, 0xa8, 0x01, 0xa0, 0x78, 0x1c, 0x4f, 0x9b, +0x00, 0x51, 0x14, 0x25, 0x57, 0x4c, 0x80, 0xe2, +0xc6, 0xe7, 0xb2, 0x09, 0xa8, 0x2f, 0x12, 0x90, +0x9b, 0x9b, 0xeb, 0x91, 0xeb, 0xe7, 0x29, 0x9c, +0x35, 0x00, 0xad, 0x5b, 0xb7, 0x46, 0x4a, 0x4a, +0x0a, 0x62, 0x63, 0x63, 0x01, 0x00, 0x93, 0x26, +0x4d, 0xc2, 0x89, 0x13, 0x27, 0xf0, 0xe9, 0xa7, +0x9f, 0x22, 0x22, 0x22, 0xc2, 0x93, 0x4d, 0xac, +0x97, 0x35, 0x6b, 0xd6, 0x60, 0xec, 0xd8, 0xb1, +0x36, 0xa3, 0xe2, 0xf0, 0xf0, 0x70, 0xc4, 0xc7, +0xc7, 0xe3, 0xcb, 0x2f, 0xbf, 0x0c, 0xf8, 0x64, +0x44, 0x22, 0xfe, 0x64, 0x03, 0x26, 0xe5, 0x14, +0x14, 0x15, 0x7f, 0x4a, 0x63, 0xa1, 0x06, 0x80, +0xe2, 0x15, 0x1a, 0x6b, 0x02, 0x0a, 0x0a, 0x0a, +0xe0, 0x2e, 0x13, 0xa0, 0xba, 0x01, 0xba, 0x64, +0x02, 0xd2, 0xd3, 0xd3, 0x2d, 0x91, 0x00, 0xe5, +0xcd, 0x18, 0xa8, 0x8b, 0x04, 0x04, 0x92, 0x09, +0x70, 0x76, 0x0a, 0xe0, 0xca, 0x95, 0x2b, 0xe8, +0xd3, 0xa7, 0x0f, 0xf2, 0xf3, 0xf3, 0x71, 0xe8, +0xd0, 0x21, 0x6c, 0xdf, 0xbe, 0x1d, 0x3d, 0x7a, +0xf4, 0xf0, 0x70, 0xeb, 0xea, 0x67, 0xe9, 0xd2, +0xa5, 0x78, 0xea, 0xa9, 0xa7, 0x60, 0x34, 0x1a, +0x6d, 0x8e, 0xcd, 0x9c, 0x39, 0x13, 0x53, 0xa7, +0x4e, 0xf5, 0x41, 0xab, 0xdc, 0x8b, 0x96, 0xf8, +0x13, 0x44, 0x51, 0x34, 0x26, 0x25, 0x25, 0x7d, +0x4f, 0xc5, 0x9f, 0xd2, 0x18, 0xa8, 0x01, 0xa0, +0x78, 0x8d, 0xc6, 0x98, 0x80, 0xd6, 0xad, 0x5b, +0xcb, 0xfe, 0x64, 0x02, 0x94, 0x4b, 0x04, 0x95, +0xfd, 0x08, 0xa4, 0x48, 0x40, 0xbb, 0x76, 0xed, +0x9c, 0x0a, 0xdd, 0x5f, 0xbd, 0x7a, 0x15, 0x40, +0x5d, 0x2e, 0x40, 0x5c, 0x5c, 0x9c, 0xa7, 0x9b, +0xe5, 0x90, 0xeb, 0xd7, 0xaf, 0xe3, 0x9d, 0x77, +0xde, 0xb1, 0x7b, 0x7c, 0xc2, 0x84, 0x09, 0x5e, +0x6c, 0x8d, 0x67, 0x50, 0x8a, 0xbf, 0xda, 0x68, +0x12, 0xf1, 0x3f, 0x71, 0xe2, 0xc4, 0xaf, 0xce, +0x8a, 0xbf, 0x5a, 0xf8, 0xa9, 0xf8, 0x53, 0x00, +0x6a, 0x00, 0x28, 0x5e, 0x26, 0x58, 0x4c, 0x40, +0x5a, 0x5a, 0x9a, 0xdd, 0x48, 0x40, 0x5a, 0x5a, +0x1a, 0xf2, 0xf2, 0xac, 0x36, 0x18, 0xf4, 0x4b, +0x58, 0x96, 0x75, 0xaa, 0x1a, 0xe0, 0xd9, 0xb3, +0x67, 0xbd, 0xd0, 0x1a, 0xe7, 0x59, 0xb4, 0x68, +0x11, 0x0c, 0x06, 0x83, 0xe6, 0x31, 0xbd, 0x5e, +0x8f, 0x47, 0x1e, 0x79, 0xc4, 0xcb, 0x2d, 0x72, +0x2f, 0x26, 0x93, 0xc9, 0x4a, 0xfc, 0x95, 0x88, +0xa2, 0x68, 0x4c, 0x4e, 0x4e, 0x76, 0x59, 0xfc, +0xd5, 0xa3, 0x7f, 0x2a, 0xfe, 0x14, 0x80, 0x1a, +0x00, 0x8a, 0x0f, 0x08, 0x26, 0x13, 0x50, 0x5c, +0x5c, 0x7c, 0x44, 0xab, 0x1f, 0x81, 0x62, 0x02, +0x9c, 0xc9, 0x03, 0x38, 0x73, 0xe6, 0x8c, 0x17, +0x5a, 0xe2, 0x1c, 0x97, 0x2f, 0x5f, 0xc6, 0x57, +0x5f, 0x7d, 0x65, 0xf7, 0xf8, 0xf0, 0xe1, 0xc3, +0xd1, 0xa2, 0x45, 0x0b, 0x2f, 0xb6, 0xc8, 0xbd, +0x10, 0xf1, 0x27, 0x15, 0xfe, 0x94, 0x48, 0x92, +0x64, 0x4c, 0x4e, 0x4e, 0xfe, 0xfe, 0xf8, 0xf1, +0xe3, 0x54, 0xfc, 0x29, 0x6e, 0x81, 0x1a, 0x00, +0x8a, 0x4f, 0x08, 0x16, 0x13, 0xb0, 0x6f, 0xdf, +0xbe, 0xcd, 0x45, 0x45, 0x45, 0x47, 0x48, 0xdb, +0x03, 0x2d, 0x12, 0xe0, 0x4c, 0x1e, 0xc0, 0xe5, +0xcb, 0x97, 0xed, 0x8e, 0xb8, 0xbd, 0xcd, 0x27, +0x9f, 0x7c, 0x82, 0xda, 0xda, 0x5a, 0xbb, 0xc7, +0x27, 0x4e, 0x9c, 0xe8, 0xc5, 0xd6, 0xb8, 0x17, +0x93, 0xc9, 0x84, 0xf4, 0xf4, 0x74, 0xcb, 0x9c, +0x3f, 0x81, 0x31, 0xaf, 0xf3, 0x4f, 0x4a, 0x4a, +0x5a, 0x43, 0xc5, 0x9f, 0xe2, 0x4e, 0xa8, 0x01, +0xa0, 0xf8, 0x8c, 0x60, 0x32, 0x01, 0xf6, 0x22, +0x01, 0xe9, 0xe9, 0xe9, 0x7e, 0x6d, 0x02, 0x9c, +0x89, 0x00, 0xc8, 0xb2, 0x8c, 0x5f, 0x7f, 0xfd, +0xd5, 0x0b, 0xad, 0x71, 0x4c, 0x7c, 0x7c, 0x7c, +0xbd, 0xc7, 0x03, 0x75, 0xfe, 0x9f, 0x88, 0x7f, +0x69, 0x69, 0xa9, 0xd5, 0xf3, 0x4c, 0xdd, 0x52, +0x3f, 0x93, 0x59, 0xfc, 0xcf, 0x50, 0xf1, 0xa7, +0xb8, 0x13, 0x6a, 0x00, 0x28, 0x3e, 0x25, 0x58, +0x4c, 0x40, 0x6a, 0x6a, 0xaa, 0xdd, 0x48, 0x40, +0x7a, 0x7a, 0x3a, 0xf2, 0xf3, 0x6d, 0x72, 0x06, +0xfd, 0x02, 0x67, 0x97, 0x02, 0xda, 0x9b, 0x06, +0xa8, 0x6f, 0x34, 0xee, 0x6e, 0x4e, 0x9c, 0x38, +0x81, 0x8b, 0x17, 0x2f, 0xda, 0x3d, 0xde, 0xa7, +0x4f, 0x1f, 0x74, 0xef, 0xde, 0xdd, 0x6b, 0xed, +0x71, 0x17, 0x5a, 0xe2, 0x4f, 0xfe, 0x87, 0x44, +0x51, 0x34, 0x99, 0xc3, 0xfe, 0x6e, 0x11, 0xff, +0xb0, 0xb0, 0x30, 0x2a, 0xfe, 0x14, 0x0b, 0xd4, +0x00, 0x50, 0x7c, 0x4e, 0x30, 0x99, 0x00, 0x75, +0x24, 0x80, 0xdc, 0xc8, 0xfd, 0xd5, 0x04, 0x44, +0x46, 0x46, 0x3a, 0xf5, 0xba, 0x77, 0xdf, 0x7d, +0x17, 0x5f, 0x7c, 0xf1, 0x85, 0x65, 0x2a, 0xa0, +0xa2, 0xa2, 0x02, 0x3b, 0x76, 0xec, 0xf0, 0xea, +0xd4, 0xc0, 0xce, 0x9d, 0x3b, 0xeb, 0x3d, 0xfe, +0xcc, 0x33, 0xcf, 0x78, 0xa7, 0x21, 0x6e, 0xc4, +0x9e, 0xf8, 0x03, 0x80, 0x28, 0x8a, 0xa6, 0x94, +0x94, 0x94, 0x35, 0xc7, 0x8e, 0x1d, 0x73, 0x4a, +0xfc, 0x89, 0xe8, 0xd7, 0x27, 0xfe, 0x00, 0xa8, +0xf8, 0x53, 0x2c, 0x50, 0x03, 0x40, 0xf1, 0x0b, +0x82, 0xc5, 0x04, 0xa4, 0xa4, 0xa4, 0x58, 0x45, +0x02, 0x94, 0xa4, 0xa7, 0xa7, 0xe3, 0xc8, 0x11, +0x9b, 0x99, 0x02, 0x9f, 0xe2, 0xac, 0x01, 0x28, +0x28, 0x28, 0xc0, 0xfc, 0xf9, 0xf3, 0xd1, 0xa5, +0x4b, 0x17, 0x3c, 0xf6, 0xd8, 0x63, 0xf8, 0xf8, +0xe3, 0x8f, 0x31, 0x76, 0xec, 0x58, 0x8f, 0x14, +0x02, 0x92, 0x24, 0x09, 0x07, 0x0f, 0x1e, 0xc4, +0x5b, 0x6f, 0xbd, 0x85, 0xc1, 0x83, 0x07, 0xe3, +0xeb, 0xaf, 0xbf, 0x06, 0x00, 0xec, 0xda, 0xb5, +0xcb, 0xee, 0x7b, 0x74, 0x3a, 0x1d, 0x9e, 0x7c, +0xf2, 0x49, 0xb7, 0xb7, 0xc5, 0x93, 0x98, 0x4c, +0x26, 0xec, 0xdf, 0xbf, 0xdf, 0x22, 0xfe, 0xca, +0xc8, 0x91, 0x24, 0x49, 0xa6, 0x94, 0x94, 0x94, +0x35, 0x3f, 0xfd, 0xf4, 0xd3, 0x69, 0x67, 0xc5, +0x9f, 0xe7, 0x79, 0x2a, 0xfe, 0x14, 0x97, 0xe0, +0x7d, 0xdd, 0x00, 0x0a, 0x85, 0x20, 0xcb, 0xb2, +0xcc, 0x68, 0xdc, 0x41, 0x18, 0x86, 0x81, 0x2c, +0xcb, 0xf2, 0x3f, 0xfe, 0xf1, 0x0f, 0x06, 0xa8, +0xbb, 0xf1, 0x14, 0x14, 0x14, 0x30, 0x05, 0x05, +0x05, 0x72, 0x6c, 0x6c, 0x2c, 0xa3, 0xb8, 0x31, +0x31, 0xe4, 0xa6, 0x54, 0x59, 0x59, 0x29, 0x85, +0x85, 0x85, 0xb1, 0x95, 0x95, 0x95, 0x68, 0xd5, +0xaa, 0x95, 0x44, 0x36, 0x50, 0x09, 0x0f, 0x0f, +0x47, 0x75, 0x75, 0x35, 0x00, 0xa0, 0x59, 0xb3, +0x66, 0xa8, 0xaa, 0xaa, 0xb2, 0xfa, 0x5d, 0x2c, +0xcb, 0x22, 0x24, 0x24, 0xa4, 0xde, 0xd0, 0x36, +0xcf, 0xf3, 0x10, 0x04, 0x01, 0x92, 0x24, 0x81, +0xe3, 0x38, 0x88, 0xa2, 0x68, 0xf9, 0x0e, 0x00, +0x29, 0x29, 0x29, 0x9b, 0x47, 0x8f, 0x1e, 0x8d, +0xb6, 0x6d, 0xdb, 0xf6, 0x57, 0xf6, 0x01, 0xa8, +0x33, 0x01, 0x00, 0xd0, 0xbf, 0x7f, 0x7f, 0x8d, +0x33, 0x7b, 0x1f, 0x67, 0x0d, 0x00, 0x50, 0xb7, +0xc4, 0xae, 0xb6, 0xb6, 0x16, 0x93, 0x26, 0x4d, +0xc2, 0xf8, 0xf1, 0xe3, 0x51, 0x52, 0x52, 0x82, +0x0e, 0x1d, 0x3a, 0xb8, 0xa5, 0x1d, 0xd5, 0xd5, +0xd5, 0x48, 0x4a, 0x4a, 0xc2, 0xb6, 0x6d, 0xdb, +0x90, 0x90, 0x90, 0x80, 0xe2, 0xe2, 0x62, 0xcb, +0xb1, 0xbc, 0xbc, 0x3c, 0xb4, 0x6c, 0xd9, 0x12, +0x99, 0x99, 0x99, 0x76, 0xdf, 0xff, 0xe8, 0xa3, +0x8f, 0xa2, 0x6d, 0xdb, 0xb6, 0x6e, 0x69, 0x8b, +0x37, 0x20, 0xe2, 0x5f, 0x52, 0x52, 0xa2, 0x95, +0xed, 0x6f, 0x4a, 0x4e, 0x4e, 0xa6, 0xe2, 0x4f, +0xf1, 0x38, 0x0c, 0xfd, 0xfb, 0x50, 0xfc, 0x0d, +0x2d, 0x13, 0x00, 0xd4, 0x25, 0xa3, 0x11, 0x13, +0x00, 0xd4, 0x09, 0x3e, 0x00, 0xc4, 0xc6, 0xc6, +0x32, 0x00, 0x70, 0xf5, 0xea, 0x55, 0xa6, 0xac, +0xac, 0x8c, 0x89, 0x8d, 0x8d, 0x45, 0x49, 0x49, +0x09, 0x53, 0x59, 0x59, 0xc9, 0xe8, 0xf5, 0x7a, +0xd6, 0x60, 0x30, 0x30, 0x2d, 0x5a, 0xb4, 0x60, +0x2a, 0x2a, 0x2a, 0x58, 0x9d, 0x4e, 0xc7, 0x72, +0x1c, 0xc7, 0x56, 0x57, 0x57, 0xb3, 0x3c, 0xcf, +0xb3, 0x1c, 0xc7, 0xb1, 0x55, 0x55, 0x55, 0x1c, +0x00, 0xab, 0x2f, 0x49, 0x92, 0xf8, 0xda, 0xda, +0x5a, 0x5e, 0x96, 0x65, 0xe5, 0x97, 0x4e, 0xf1, +0x5d, 0x27, 0x08, 0x82, 0x4e, 0x92, 0x24, 0xbd, +0x2c, 0xcb, 0x3a, 0x51, 0x14, 0x95, 0xdf, 0xf5, +0xb2, 0x2c, 0xeb, 0x47, 0x8f, 0x1e, 0xfd, 0x78, +0xdb, 0xb6, 0x6d, 0xfb, 0xab, 0xbb, 0xc3, 0x30, +0x0c, 0x86, 0x0f, 0x1f, 0xee, 0x17, 0x26, 0xe0, +0xfc, 0xf9, 0xf3, 0xe8, 0xda, 0xb5, 0x6b, 0xbd, +0xaf, 0x61, 0x59, 0x16, 0x1c, 0xc7, 0xa1, 0x7d, +0xfb, 0xf6, 0x58, 0xbd, 0x7a, 0x35, 0xca, 0xcb, +0xcb, 0x71, 0xff, 0xfd, 0xf7, 0xa3, 0x4b, 0x97, +0x2e, 0x8d, 0xfe, 0xfd, 0x57, 0xae, 0x5c, 0xc1, +0x82, 0x05, 0x0b, 0x1c, 0x4e, 0x27, 0x98, 0x4d, +0xa0, 0xdd, 0xe3, 0x5b, 0xb7, 0x6e, 0xc5, 0x94, +0x29, 0x53, 0x1a, 0xdd, 0x1e, 0x6f, 0xe0, 0x48, +0xfc, 0x53, 0x52, 0x52, 0xd6, 0x1e, 0x3d, 0x7a, +0xf4, 0x17, 0x8e, 0xe3, 0x8c, 0x00, 0x94, 0x11, +0xa6, 0x06, 0xcd, 0xf9, 0x83, 0x8a, 0x3f, 0xc5, +0x0e, 0xd4, 0x00, 0x50, 0xfc, 0x92, 0x60, 0x32, +0x01, 0xed, 0xda, 0xb5, 0xb3, 0x89, 0x04, 0x00, +0xf0, 0x1b, 0x13, 0xd0, 0xae, 0x5d, 0x3b, 0x14, +0x15, 0x15, 0x69, 0x1e, 0x63, 0x59, 0x16, 0xb2, +0x2c, 0x63, 0xc8, 0x90, 0x21, 0x98, 0x32, 0x65, +0x0a, 0xc2, 0xc3, 0xc3, 0x31, 0x6f, 0xde, 0x3c, +0xf0, 0x7c, 0xe3, 0x83, 0x87, 0x19, 0x19, 0x19, +0x98, 0x32, 0x65, 0x0a, 0x4a, 0x4a, 0x4a, 0x1a, +0x75, 0x9e, 0xb6, 0x6d, 0xdb, 0xe2, 0xca, 0x95, +0x2b, 0xd0, 0xe9, 0x74, 0x8d, 0x6e, 0x93, 0xa7, +0x11, 0x04, 0x41, 0x33, 0xdb, 0x1f, 0xa8, 0x5f, +0xfc, 0x79, 0x9e, 0xb7, 0x44, 0x00, 0xa8, 0xf8, +0x53, 0xdc, 0x05, 0xcd, 0x01, 0xa0, 0xf8, 0x25, +0xc1, 0x92, 0x13, 0x90, 0x9c, 0x9c, 0xbc, 0xb9, +0xb0, 0xb0, 0xf0, 0x88, 0x72, 0x7e, 0x97, 0x70, +0xe0, 0xc0, 0x01, 0xbf, 0xc8, 0x09, 0x18, 0x38, +0x70, 0xa0, 0xdd, 0x63, 0x92, 0x24, 0xa1, 0x5f, +0xbf, 0x7e, 0x18, 0x39, 0x72, 0x24, 0xc6, 0x8e, +0x1d, 0x8b, 0x97, 0x5e, 0x7a, 0xc9, 0x2d, 0xe2, +0x0f, 0xd4, 0x55, 0xf4, 0x6b, 0xac, 0xf8, 0x03, +0xc0, 0x9f, 0xff, 0xfc, 0xe7, 0x80, 0x17, 0x7f, +0x59, 0x96, 0x85, 0xd4, 0xd4, 0x54, 0xbb, 0x23, +0x7f, 0x2a, 0xfe, 0x14, 0x4f, 0x40, 0x23, 0x00, +0x14, 0xbf, 0x26, 0x58, 0x22, 0x01, 0x63, 0xc6, +0x8c, 0xb1, 0x1b, 0x09, 0x18, 0x36, 0x6c, 0x98, +0x4f, 0x23, 0x01, 0x49, 0x49, 0x49, 0xf8, 0xee, +0xbb, 0xef, 0x90, 0x9a, 0x9a, 0x6a, 0xa9, 0xfb, +0x4f, 0x78, 0xe4, 0x91, 0x47, 0xf0, 0xfe, 0xfb, +0xef, 0x63, 0xd0, 0xa0, 0x41, 0x6e, 0xfd, 0x9d, +0x45, 0x45, 0x45, 0x88, 0x8e, 0x8e, 0x86, 0x20, +0x08, 0x8d, 0x3a, 0xcf, 0xa4, 0x49, 0x93, 0xb0, +0x65, 0xcb, 0x16, 0xb7, 0x99, 0x12, 0x4f, 0x21, +0x08, 0x82, 0x25, 0xec, 0xaf, 0x84, 0xa9, 0x2b, +0xf2, 0x23, 0xa4, 0xa4, 0xa4, 0xac, 0x3d, 0x72, +0xe4, 0xc8, 0x29, 0x1a, 0xf6, 0xa7, 0x78, 0x13, +0x6a, 0x00, 0x28, 0x7e, 0x4f, 0x30, 0x99, 0x80, +0xf6, 0xed, 0xdb, 0xdb, 0x28, 0x3d, 0xc3, 0x30, +0x18, 0x36, 0x6c, 0x98, 0xcf, 0xf7, 0xad, 0xaf, +0xaa, 0xaa, 0xc2, 0xd2, 0xa5, 0x4b, 0xc1, 0x71, +0x1c, 0xee, 0xbb, 0xef, 0x3e, 0xf4, 0xef, 0xdf, +0x1f, 0x51, 0x51, 0x51, 0x1e, 0xf9, 0x5d, 0xdb, +0xb7, 0x6f, 0x6f, 0xd4, 0x9c, 0x7d, 0x48, 0x48, +0x08, 0x3e, 0xfe, 0xf8, 0x63, 0xbc, 0xfa, 0xea, +0xab, 0x6e, 0x6c, 0x95, 0x67, 0x10, 0x04, 0x01, +0x07, 0x0e, 0x1c, 0xb0, 0x4a, 0x6c, 0x54, 0x64, +0xfb, 0x53, 0xf1, 0xa7, 0xf8, 0x0c, 0x6a, 0x00, +0x28, 0x01, 0x41, 0xb0, 0x98, 0x80, 0x47, 0x1e, +0x79, 0xc4, 0x12, 0x09, 0x50, 0x77, 0x69, 0xe8, +0xd0, 0xa1, 0x7e, 0x91, 0x13, 0xe0, 0x0d, 0x56, +0xaf, 0x5e, 0x8d, 0x67, 0x9f, 0x7d, 0xb6, 0x41, +0xef, 0xbd, 0xe7, 0x9e, 0x7b, 0xb0, 0x61, 0xc3, +0x06, 0xf4, 0xed, 0xdb, 0xd7, 0xcd, 0xad, 0x72, +0x3f, 0x54, 0xfc, 0x29, 0xfe, 0x0c, 0xcd, 0x01, +0xa0, 0x04, 0x04, 0xc1, 0x92, 0x13, 0x90, 0x98, +0x98, 0x68, 0xc9, 0x09, 0x50, 0x93, 0x91, 0x91, +0x81, 0xa3, 0x47, 0x8f, 0x7a, 0xe0, 0xea, 0xf9, +0x1f, 0xea, 0x7a, 0xf7, 0xce, 0xf2, 0xc7, 0x3f, +0xfe, 0x11, 0x79, 0x79, 0x79, 0x01, 0x29, 0xfe, +0xca, 0x3c, 0x10, 0x49, 0x92, 0x84, 0x7d, 0xfb, +0xf6, 0xad, 0xd3, 0x12, 0x7f, 0x9e, 0xe7, 0x5d, +0x16, 0x7f, 0xbd, 0x5e, 0x2f, 0x82, 0x8a, 0x3f, +0xc5, 0x45, 0xa8, 0x01, 0xa0, 0x04, 0x0c, 0xc1, +0x64, 0x02, 0x6e, 0xdc, 0xb8, 0x71, 0x44, 0xd9, +0x7e, 0x72, 0x63, 0x3d, 0x78, 0xf0, 0x60, 0x93, +0x30, 0x01, 0xae, 0x1a, 0x80, 0xee, 0xdd, 0xbb, +0x63, 0xd3, 0xa6, 0x4d, 0xf8, 0xe6, 0x9b, 0x6f, +0x10, 0x1e, 0x1e, 0xee, 0xa1, 0x56, 0xb9, 0x0f, +0x2d, 0xf1, 0x27, 0x10, 0xf1, 0xcf, 0xcb, 0xcb, +0x3b, 0xa9, 0x25, 0xfe, 0x00, 0x4c, 0xae, 0x8a, +0x3f, 0xc7, 0x71, 0x02, 0x15, 0x7f, 0x8a, 0xab, +0x50, 0x03, 0x40, 0x09, 0x28, 0x82, 0xcd, 0x04, +0x34, 0xd5, 0x48, 0x80, 0x33, 0x06, 0xa0, 0x45, +0x8b, 0x16, 0x98, 0x35, 0x6b, 0x16, 0x52, 0x53, +0x53, 0x71, 0xfa, 0xf4, 0x69, 0x4c, 0x9f, 0x3e, +0xdd, 0x0b, 0x2d, 0x6b, 0x3c, 0x4a, 0xf1, 0x57, +0xaf, 0xfe, 0x90, 0x24, 0x49, 0x48, 0x4b, 0x4b, +0x5b, 0x97, 0x97, 0x97, 0x77, 0x92, 0x65, 0x59, +0x13, 0x6e, 0x8b, 0xbf, 0x89, 0x88, 0x3f, 0xf9, +0xbf, 0x71, 0x45, 0xfc, 0x25, 0x49, 0x92, 0xa8, +0xf8, 0x53, 0x5c, 0x85, 0x1a, 0x00, 0x4a, 0xc0, +0x11, 0x6c, 0x26, 0x40, 0xd9, 0x7e, 0x72, 0xa3, +0x0d, 0x76, 0x13, 0xe0, 0x8c, 0x01, 0xd8, 0xb9, +0x73, 0x27, 0xd6, 0xaf, 0x5f, 0x8f, 0x91, 0x23, +0x47, 0x6a, 0x0a, 0x90, 0x3f, 0x22, 0x08, 0x02, +0x0e, 0x1e, 0x3c, 0xa8, 0x59, 0xe4, 0x47, 0x96, +0x65, 0x21, 0x2d, 0x2d, 0x6d, 0x7d, 0x6e, 0x6e, +0xee, 0x49, 0x52, 0xd9, 0x4f, 0x21, 0xfe, 0x46, +0x34, 0x42, 0xfc, 0x61, 0x0e, 0xff, 0x53, 0xf1, +0xa7, 0xb8, 0x02, 0x35, 0x00, 0x94, 0x80, 0x24, +0x58, 0x4c, 0xc0, 0xde, 0xbd, 0x7b, 0xed, 0x46, +0x02, 0x32, 0x33, 0x33, 0x83, 0xd6, 0x04, 0x38, +0x63, 0x00, 0xda, 0xb4, 0x69, 0xe3, 0x85, 0x96, +0xb8, 0x0f, 0x22, 0xfe, 0xca, 0x84, 0x3f, 0x82, +0x2c, 0xcb, 0xa2, 0x59, 0xfc, 0x7f, 0xa6, 0xe2, +0x4f, 0xf1, 0x17, 0xa8, 0x01, 0xa0, 0x04, 0x2c, +0xc1, 0x66, 0x02, 0x94, 0xed, 0x27, 0x37, 0xde, +0x60, 0x35, 0x01, 0xce, 0x18, 0x00, 0x57, 0xf6, +0x29, 0xf0, 0x35, 0x82, 0x20, 0x20, 0x23, 0x23, +0xc3, 0x46, 0xfc, 0x99, 0xba, 0x12, 0xc6, 0x62, +0x5a, 0x5a, 0xda, 0xba, 0xc3, 0x87, 0x0f, 0xdb, +0x88, 0x3f, 0xc3, 0x30, 0x54, 0xfc, 0x29, 0x3e, +0x83, 0x1a, 0x00, 0x4a, 0x40, 0x13, 0x2c, 0x26, +0x60, 0xcf, 0x9e, 0x3d, 0x9b, 0x6f, 0xdc, 0xb8, +0x91, 0xaf, 0xbe, 0xe9, 0x32, 0x0c, 0x83, 0xac, +0xac, 0x2c, 0xfc, 0xf4, 0xd3, 0x4f, 0x1e, 0xba, +0x82, 0xde, 0xa5, 0xb6, 0xb6, 0x16, 0x3b, 0x77, +0xee, 0xc4, 0x6f, 0xbf, 0xfd, 0xe6, 0xf0, 0xb5, +0x81, 0x12, 0x01, 0x10, 0x45, 0x11, 0x19, 0x19, +0x19, 0x36, 0xe5, 0x94, 0x99, 0xba, 0x22, 0x3f, +0x62, 0x5a, 0x5a, 0xda, 0x7a, 0x2d, 0xf1, 0xe7, +0x79, 0xde, 0xc8, 0x71, 0x1c, 0x15, 0x7f, 0x8a, +0xcf, 0xa0, 0x75, 0x00, 0x28, 0x41, 0x01, 0x63, +0x67, 0x92, 0x38, 0xd0, 0xea, 0x04, 0x8c, 0x1b, +0x37, 0xee, 0xb1, 0x0e, 0x1d, 0x3a, 0xdc, 0x67, +0xee, 0x93, 0x55, 0x5f, 0x86, 0x0c, 0x19, 0x12, +0x10, 0xcb, 0xdf, 0xd4, 0x94, 0x94, 0x94, 0x20, +0x29, 0x29, 0x09, 0xf1, 0xf1, 0xf1, 0xd8, 0xbd, +0x7b, 0x37, 0x2a, 0x2b, 0x2b, 0x1d, 0xbe, 0xa7, +0x65, 0xcb, 0x96, 0x20, 0x3b, 0x38, 0xfa, 0x33, +0xa2, 0x28, 0xe2, 0xe0, 0xc1, 0x83, 0x56, 0xe2, +0x4f, 0xfe, 0x6e, 0x92, 0x24, 0x89, 0xe9, 0xe9, +0xe9, 0xeb, 0x0f, 0x1d, 0x3a, 0x54, 0xa0, 0x35, +0xf2, 0xa7, 0xe2, 0x4f, 0xf1, 0x35, 0xd4, 0x00, +0x50, 0x82, 0x86, 0x60, 0x31, 0x01, 0xe3, 0xc7, +0x8f, 0xb7, 0x98, 0x00, 0x45, 0xdf, 0x00, 0x00, +0x0f, 0x3c, 0xf0, 0x40, 0x40, 0x98, 0x80, 0x8a, +0x8a, 0x0a, 0x7c, 0xf0, 0xc1, 0x07, 0x48, 0x49, +0x49, 0xc1, 0x4f, 0x3f, 0xfd, 0x54, 0xef, 0x4e, +0x7e, 0x5a, 0x74, 0xeb, 0xd6, 0x0d, 0xbf, 0xfe, +0xfa, 0xab, 0x87, 0x5a, 0xe7, 0x1e, 0xd4, 0xe2, +0xaf, 0xca, 0xf6, 0xb7, 0x2b, 0xfe, 0x5a, 0x73, +0xfe, 0x64, 0x3b, 0x5f, 0x2a, 0xfe, 0x14, 0x6f, +0x42, 0x0d, 0x00, 0x25, 0xa8, 0x08, 0x36, 0x13, +0xa0, 0xd5, 0x9d, 0x40, 0x30, 0x01, 0x63, 0xc6, +0x8c, 0x41, 0x72, 0x72, 0x72, 0x83, 0xdf, 0x3f, +0x78, 0xf0, 0x60, 0x64, 0x65, 0x65, 0xb9, 0xb1, +0x45, 0xee, 0x85, 0x84, 0xfd, 0x0b, 0x0b, 0x0b, +0x01, 0x68, 0x8a, 0xff, 0x86, 0x43, 0x87, 0x0e, +0x9d, 0xb0, 0x27, 0xfe, 0x0c, 0xc3, 0x58, 0x0c, +0x00, 0x15, 0x7f, 0x8a, 0xaf, 0xa0, 0x39, 0x00, +0x94, 0xa0, 0x22, 0x58, 0x72, 0x02, 0x76, 0xef, +0xde, 0xbd, 0xe5, 0xc6, 0x8d, 0x1b, 0xf9, 0x5a, +0xfd, 0xc8, 0xce, 0xce, 0xf6, 0xfb, 0x9c, 0x00, +0xad, 0x1d, 0xef, 0x5c, 0xc1, 0x53, 0x7b, 0x10, +0xb8, 0x03, 0xa5, 0xf8, 0x2b, 0x13, 0x36, 0x81, +0x3a, 0xf1, 0xdf, 0xbf, 0x7f, 0x3f, 0x15, 0x7f, +0x4a, 0x40, 0x40, 0x0d, 0x00, 0x25, 0xe8, 0x08, +0x16, 0x13, 0xb0, 0x6b, 0xd7, 0xae, 0x2d, 0xd7, +0xae, 0x5d, 0xcb, 0x27, 0x6d, 0x57, 0xde, 0xa4, +0xb3, 0xb3, 0xb3, 0x71, 0xec, 0xd8, 0x31, 0x8f, +0x5d, 0xc3, 0xc6, 0xd2, 0xac, 0x59, 0xb3, 0x46, +0xbd, 0x3f, 0x36, 0x36, 0xd6, 0x4d, 0x2d, 0x71, +0x2f, 0x6a, 0xf1, 0x57, 0x22, 0xcb, 0xb2, 0x78, +0xe0, 0xc0, 0x81, 0x8d, 0x39, 0x39, 0x39, 0x54, +0xfc, 0x29, 0x01, 0x01, 0x35, 0x00, 0x94, 0xa0, +0x24, 0x50, 0x4c, 0x00, 0x14, 0x73, 0xc1, 0xf6, +0x22, 0x01, 0xd7, 0xaf, 0x5f, 0xb7, 0x1b, 0x09, +0xf0, 0x57, 0x13, 0xd0, 0xd8, 0x25, 0x7c, 0xa3, +0x47, 0x8f, 0x76, 0x53, 0x4b, 0xdc, 0x87, 0x32, +0xdb, 0x5f, 0x4b, 0xfc, 0xf7, 0xef, 0xdf, 0xbf, +0x31, 0x3b, 0x3b, 0xfb, 0x38, 0x15, 0x7f, 0x4a, +0xa0, 0x40, 0x0d, 0x00, 0x25, 0x68, 0x91, 0x15, +0xa8, 0x8f, 0xbd, 0xf7, 0xde, 0x7b, 0x32, 0xb9, +0x09, 0xc6, 0xc6, 0xc6, 0xca, 0xb1, 0xb1, 0xb1, +0x72, 0x41, 0x41, 0x81, 0xdc, 0xb3, 0x67, 0x4f, +0x99, 0x98, 0x80, 0xab, 0x57, 0xaf, 0xca, 0x8e, +0x4c, 0x40, 0x44, 0x44, 0x84, 0xd8, 0x18, 0x13, +0xa0, 0xd3, 0xe9, 0x1c, 0x9a, 0x80, 0x40, 0x8c, +0x04, 0x74, 0xec, 0xd8, 0xb1, 0xc1, 0xef, 0x0d, +0x0d, 0x0d, 0xc5, 0xd0, 0xa1, 0x43, 0xdd, 0xd8, +0x9a, 0xc6, 0x23, 0x8a, 0x22, 0x32, 0x33, 0x33, +0x35, 0x97, 0xfa, 0x01, 0x90, 0x0e, 0x1c, 0x38, +0xb0, 0x31, 0x3b, 0x3b, 0xdb, 0xa5, 0x91, 0xbf, +0xea, 0x7f, 0xc2, 0x23, 0xe2, 0xdf, 0xb3, 0x67, +0x4f, 0xa7, 0xc4, 0xbf, 0xbe, 0xcf, 0x0a, 0x25, +0x78, 0xa1, 0x06, 0x80, 0xd2, 0x24, 0x50, 0xde, +0xd8, 0x94, 0x37, 0x3e, 0x75, 0x34, 0x60, 0xd3, +0xa6, 0x4d, 0x20, 0x26, 0x00, 0x00, 0x1c, 0x99, +0x00, 0x83, 0xc1, 0x20, 0xbb, 0xc3, 0x04, 0x38, +0x33, 0x1d, 0x60, 0x2f, 0x12, 0x90, 0x93, 0x93, +0xe3, 0x77, 0x26, 0xa0, 0x43, 0x87, 0x0e, 0x0d, +0x7e, 0xef, 0x83, 0x0f, 0x3e, 0x88, 0xd0, 0xd0, +0x50, 0x37, 0xb6, 0xa6, 0x71, 0x10, 0xf1, 0x27, +0x09, 0x7f, 0x04, 0xa6, 0xae, 0xc8, 0x8f, 0xb4, +0x7f, 0xff, 0xfe, 0x8d, 0x59, 0x59, 0x59, 0x27, +0xcc, 0x7f, 0x3f, 0xa7, 0xc5, 0x5f, 0x69, 0x02, +0x3c, 0x25, 0xfe, 0x9b, 0x36, 0x6d, 0x72, 0x4a, +0xfc, 0xbd, 0x70, 0x19, 0x29, 0x7e, 0x08, 0x35, +0x00, 0x94, 0x26, 0x83, 0x3f, 0x9b, 0x00, 0x67, +0x72, 0x02, 0x76, 0xee, 0xdc, 0xb9, 0xe5, 0xda, +0xb5, 0x6b, 0x79, 0xa4, 0xfd, 0xca, 0x3e, 0xf8, +0x9b, 0x09, 0x68, 0x8c, 0x01, 0xf0, 0xa7, 0xf0, +0xbf, 0x96, 0xf8, 0x93, 0x6b, 0x2f, 0xcb, 0xb2, +0x74, 0xe0, 0xc0, 0x81, 0x8d, 0x59, 0x59, 0x59, +0xc7, 0xeb, 0x13, 0x7f, 0xf3, 0x54, 0x8f, 0x60, +0x4f, 0xfc, 0x61, 0xfe, 0x1f, 0xd1, 0xeb, 0xf5, +0x22, 0xc3, 0x30, 0x22, 0x15, 0x7f, 0x8a, 0xb7, +0xa0, 0x06, 0x80, 0xd2, 0xa4, 0x08, 0x02, 0x13, +0x10, 0x4f, 0x4c, 0x80, 0xb2, 0x1f, 0x0c, 0xc3, +0xe0, 0xd0, 0xa1, 0x43, 0x7e, 0x63, 0x02, 0xc8, +0x14, 0x40, 0x9f, 0x3e, 0x7d, 0x90, 0x90, 0x90, +0x80, 0x71, 0xe3, 0xc6, 0x39, 0xf5, 0xbe, 0xf0, +0xf0, 0x70, 0xcc, 0x9a, 0x35, 0xcb, 0x93, 0x4d, +0x73, 0x1a, 0xb5, 0xf8, 0x2b, 0x4d, 0x17, 0x11, +0xff, 0xcc, 0xcc, 0xcc, 0x7a, 0xc5, 0x9f, 0xfc, +0x2d, 0x75, 0x3a, 0x9d, 0xc9, 0x9e, 0xf8, 0xb3, +0x2c, 0x2b, 0x10, 0xf1, 0x87, 0xf9, 0x7f, 0x85, +0x8a, 0x3f, 0xc5, 0x1b, 0xd0, 0x3a, 0x00, 0x94, +0x26, 0x09, 0xa3, 0xb8, 0x13, 0x2a, 0x3f, 0x03, +0xea, 0x5a, 0x01, 0x33, 0x66, 0xcc, 0xc0, 0xcf, +0x3f, 0xff, 0xcc, 0x5c, 0xbd, 0x7a, 0x95, 0x01, +0x80, 0xe8, 0xe8, 0x68, 0xa6, 0xbe, 0x3a, 0x01, +0x61, 0x61, 0x61, 0x4c, 0x79, 0x79, 0x39, 0xe7, +0xe9, 0x3a, 0x01, 0x13, 0x26, 0x4c, 0x98, 0x76, +0xc7, 0x1d, 0x77, 0x0c, 0xd0, 0xea, 0xdb, 0xc0, +0x81, 0x03, 0xd1, 0xa7, 0x4f, 0x1f, 0x0f, 0x5d, +0x39, 0xe7, 0x38, 0x7d, 0xfa, 0x34, 0x72, 0x73, +0x73, 0x31, 0x7b, 0xf6, 0x6c, 0x30, 0x0c, 0x83, +0x92, 0x92, 0x12, 0x0c, 0x18, 0x30, 0x00, 0x17, +0x2e, 0x5c, 0xa8, 0xf7, 0x7d, 0x4b, 0x96, 0x2c, +0xc1, 0x1b, 0x6f, 0xbc, 0xe1, 0xa5, 0x56, 0xda, +0x47, 0x4b, 0xfc, 0x09, 0x66, 0xf1, 0xff, 0x21, +0x33, 0x33, 0xf3, 0x98, 0xa3, 0x91, 0x3f, 0x15, +0x7f, 0x8a, 0x3f, 0x43, 0x0d, 0x00, 0xa5, 0xc9, +0xe2, 0x0e, 0x13, 0xd0, 0xba, 0x75, 0x6b, 0xa6, +0xb8, 0xb8, 0x98, 0xf5, 0xa6, 0x09, 0x00, 0xa0, +0x93, 0x24, 0x29, 0x64, 0xe2, 0xc4, 0x89, 0xd3, +0xa2, 0xa3, 0xa3, 0x07, 0x28, 0xfa, 0x63, 0xe9, +0x43, 0x5c, 0x5c, 0x9c, 0xcf, 0x4d, 0x80, 0x9a, +0xfc, 0xfc, 0x7c, 0x2c, 0x58, 0xb0, 0x00, 0x07, +0x0f, 0x1e, 0x44, 0x5d, 0x94, 0xfb, 0x36, 0x0c, +0xc3, 0xe0, 0x95, 0x57, 0x5e, 0xc1, 0x67, 0x9f, +0x7d, 0x06, 0x96, 0xf5, 0x6d, 0x60, 0x52, 0x14, +0x45, 0x64, 0x65, 0x65, 0xe1, 0xc6, 0x8d, 0x1b, +0x5a, 0xd9, 0xfe, 0xd2, 0xc1, 0x83, 0x07, 0x7f, +0xc8, 0xc8, 0xc8, 0xa0, 0xe2, 0x4f, 0x09, 0x78, +0xa8, 0x01, 0xa0, 0x34, 0x69, 0x82, 0xc1, 0x04, +0x68, 0x45, 0x02, 0x18, 0x86, 0x41, 0x5c, 0x5c, +0x1c, 0x7a, 0xf7, 0xee, 0xed, 0xb9, 0x8b, 0xd7, +0x40, 0xae, 0x5e, 0xbd, 0x8a, 0x1f, 0x7f, 0xfc, +0x11, 0xfb, 0xf6, 0xed, 0x43, 0x58, 0x58, 0x18, +0x5a, 0xb5, 0x6a, 0x85, 0x39, 0x73, 0xe6, 0x60, +0xd8, 0xb0, 0x61, 0xbe, 0x6e, 0x9a, 0x45, 0xfc, +0xd5, 0x09, 0x7f, 0x40, 0x9d, 0xf8, 0x67, 0x64, +0x64, 0x6c, 0x3a, 0x78, 0xf0, 0xe0, 0x4f, 0x54, +0xfc, 0x29, 0xc1, 0x00, 0x35, 0x00, 0x94, 0x26, +0x4f, 0x80, 0x99, 0x00, 0x9d, 0x2c, 0xcb, 0x7a, +0xa5, 0x09, 0x98, 0x34, 0x69, 0x52, 0xbd, 0x91, +0x00, 0x7f, 0x34, 0x01, 0xfe, 0x48, 0x7d, 0xe2, +0x0f, 0x40, 0x3a, 0x78, 0xf0, 0x20, 0x15, 0x7f, +0x4a, 0x50, 0x41, 0x93, 0x00, 0x29, 0x4d, 0x1e, +0x77, 0x24, 0x06, 0x96, 0x95, 0x95, 0xc9, 0x51, +0x51, 0x51, 0x92, 0x17, 0x12, 0x03, 0x2d, 0xeb, +0xcc, 0x51, 0x57, 0x3f, 0xa0, 0x36, 0x21, 0x21, +0x21, 0xfe, 0xea, 0xd5, 0xab, 0x79, 0xea, 0x95, +0x01, 0x00, 0x90, 0x9b, 0x9b, 0x8b, 0xe3, 0xc7, +0x8f, 0x7b, 0xf4, 0xfa, 0x05, 0x03, 0xa2, 0x28, +0x22, 0x3b, 0x3b, 0x5b, 0x73, 0xa9, 0x1f, 0xa8, +0xf8, 0x53, 0x82, 0x14, 0x1a, 0x01, 0xa0, 0x50, +0xcc, 0x04, 0x43, 0x24, 0x40, 0x39, 0x1d, 0xa0, +0x14, 0x80, 0xfb, 0xef, 0xbf, 0x9f, 0x46, 0x02, +0xec, 0x20, 0x49, 0x92, 0x65, 0xce, 0x5f, 0x09, +0x59, 0xea, 0x97, 0x91, 0x91, 0xf1, 0xe3, 0x81, +0x03, 0x07, 0x8e, 0xd4, 0x57, 0xe4, 0x87, 0x08, +0xbf, 0x39, 0xf3, 0x9f, 0x8a, 0x3f, 0x25, 0x20, +0xa0, 0x11, 0x00, 0x0a, 0xc5, 0x8c, 0xbf, 0x44, +0x02, 0xcc, 0xa3, 0x7c, 0xbb, 0x91, 0x00, 0x96, +0x65, 0x8d, 0xf6, 0x22, 0x01, 0x57, 0xae, 0x5c, +0xd1, 0x8c, 0x04, 0xe4, 0xe5, 0xe5, 0xd1, 0x48, +0x80, 0x06, 0x5a, 0xe2, 0x4f, 0xae, 0x9f, 0x59, +0xfc, 0x37, 0x3b, 0x23, 0xfe, 0xe4, 0xcb, 0xdf, +0xc4, 0x9f, 0x42, 0xa9, 0x0f, 0x1a, 0x01, 0xa0, +0x50, 0x54, 0xf8, 0x3a, 0x12, 0x60, 0x32, 0x99, +0x38, 0x59, 0x96, 0x79, 0xf3, 0x28, 0x5f, 0x33, +0x12, 0x20, 0xcb, 0xb2, 0x4e, 0x92, 0x24, 0xbd, +0x56, 0x24, 0x60, 0xf2, 0xe4, 0xc9, 0x96, 0x48, +0x80, 0x5a, 0x0c, 0x06, 0x0c, 0x18, 0x40, 0x23, +0x01, 0x66, 0xec, 0x89, 0x3f, 0x50, 0x67, 0x06, +0xcd, 0x23, 0xff, 0x7c, 0x67, 0xc4, 0xdf, 0x1f, +0xc3, 0xfe, 0xa4, 0x1f, 0x1e, 0xbe, 0x8c, 0x94, +0x00, 0x86, 0x1a, 0x00, 0x0a, 0x45, 0x03, 0x7f, +0x33, 0x01, 0x00, 0x78, 0x49, 0x92, 0x74, 0xf5, +0x99, 0x00, 0xf3, 0x71, 0xbd, 0xd9, 0x04, 0x4c, +0xed, 0xd4, 0xa9, 0xd3, 0xfd, 0x1a, 0xfd, 0xc2, +0x80, 0x01, 0x03, 0xd0, 0xab, 0x57, 0x2f, 0xcf, +0x5d, 0xbc, 0x00, 0x40, 0x2d, 0xfe, 0xea, 0x90, +0x79, 0x66, 0x66, 0xe6, 0x8f, 0xfb, 0xf7, 0xef, +0xf7, 0x3b, 0xf1, 0x77, 0x65, 0x63, 0x1f, 0x2a, +0xfe, 0x14, 0x47, 0xd0, 0x29, 0x00, 0x0a, 0x45, +0x03, 0x67, 0xa6, 0x03, 0x00, 0xc0, 0xd1, 0x74, +0x40, 0x43, 0x2b, 0x06, 0xea, 0x74, 0x3a, 0x51, +0x39, 0x1d, 0x00, 0x80, 0x88, 0x8b, 0x65, 0x3a, +0xc0, 0x1c, 0x72, 0xb6, 0x4c, 0x07, 0x10, 0xb1, +0x62, 0x59, 0xb6, 0x76, 0xfb, 0xf6, 0xed, 0x5b, +0xaf, 0x5c, 0xb9, 0x92, 0xab, 0xec, 0x03, 0xe9, +0x47, 0x53, 0x9f, 0x0e, 0x90, 0x24, 0x09, 0xd9, +0xd9, 0xd9, 0x96, 0x75, 0xfe, 0x6a, 0xf1, 0xcf, +0xca, 0xca, 0xda, 0x4c, 0xc5, 0x9f, 0xd2, 0x14, +0xa0, 0x06, 0x80, 0x42, 0xb1, 0x83, 0x23, 0x13, +0x40, 0x6e, 0xc4, 0x9e, 0x2a, 0x1b, 0xec, 0xc8, +0x04, 0x40, 0x51, 0x6e, 0x56, 0xcb, 0x04, 0x6c, +0xdb, 0xb6, 0x6d, 0xeb, 0x95, 0x2b, 0x57, 0x72, +0xd5, 0xe2, 0xc0, 0x30, 0x0c, 0x8e, 0x1c, 0x39, +0xe2, 0x37, 0x65, 0x83, 0xbd, 0x09, 0x11, 0xff, +0xeb, 0xd7, 0xaf, 0x6b, 0x8a, 0x66, 0x56, 0x56, +0xd6, 0xe6, 0xf4, 0xf4, 0xf4, 0xbc, 0xc6, 0x8a, +0x7f, 0x68, 0x68, 0xa8, 0x5b, 0xc4, 0x9f, 0xb4, +0x8d, 0x8a, 0x3f, 0xc5, 0x13, 0x50, 0x03, 0x40, +0xa1, 0xd4, 0x83, 0xda, 0x04, 0xa8, 0x6f, 0xb6, +0xbe, 0x34, 0x01, 0x64, 0x2b, 0x61, 0x47, 0x26, +0xe0, 0xf2, 0xe5, 0xcb, 0x56, 0x91, 0x00, 0xc2, +0xd1, 0xa3, 0x47, 0x71, 0xe4, 0xc8, 0x11, 0xcf, +0x5d, 0x3c, 0x3f, 0x43, 0x3d, 0xf2, 0x57, 0x21, +0x67, 0x67, 0x67, 0x6f, 0x49, 0x4f, 0x4f, 0xcf, +0x23, 0x7b, 0x2f, 0x34, 0x46, 0xfc, 0x61, 0x16, +0x7c, 0x34, 0x52, 0xfc, 0xa3, 0xa3, 0xa3, 0x65, +0x2a, 0xfe, 0x14, 0x4f, 0x41, 0x73, 0x00, 0x28, +0x14, 0x07, 0x30, 0x5a, 0x6a, 0x21, 0xcb, 0x36, +0xf9, 0x00, 0x00, 0xe0, 0xa9, 0xbd, 0x03, 0x48, +0x4e, 0x00, 0xc9, 0x0b, 0x80, 0x22, 0x27, 0xc0, +0x64, 0x32, 0xe9, 0x00, 0xd8, 0xcd, 0x09, 0x90, +0x65, 0x59, 0x3f, 0x65, 0xca, 0x94, 0xa9, 0x9d, +0x3a, 0x75, 0x8a, 0x53, 0xf5, 0x0b, 0x00, 0xd0, +0xb3, 0x67, 0x4f, 0x0c, 0x18, 0xa0, 0xb9, 0xad, +0x40, 0xd0, 0x20, 0x49, 0x12, 0x72, 0x72, 0x72, +0x70, 0xfd, 0xfa, 0x75, 0xad, 0xc3, 0x72, 0x56, +0x56, 0xd6, 0x96, 0xb4, 0xb4, 0xb4, 0x5c, 0xb2, +0xaa, 0xc2, 0xde, 0xc6, 0x3e, 0x00, 0x04, 0x2a, +0xfe, 0x94, 0x60, 0x81, 0x1a, 0x00, 0x0a, 0xc5, +0x09, 0x02, 0xc9, 0x04, 0x98, 0x93, 0x04, 0xf5, +0x00, 0xac, 0x36, 0x10, 0x9a, 0x3c, 0x79, 0xf2, +0x94, 0xce, 0x9d, 0x3b, 0x0f, 0x34, 0xf7, 0xc7, +0xaa, 0x2f, 0xf7, 0xdc, 0x73, 0x0f, 0xe2, 0xe2, +0xac, 0xfc, 0x41, 0xd0, 0x60, 0x4f, 0xfc, 0xcd, +0x4b, 0xfd, 0xe4, 0xec, 0xec, 0xec, 0x2d, 0xfb, +0xf6, 0xed, 0xb3, 0x2b, 0xfe, 0xa4, 0x08, 0x93, +0xf9, 0x39, 0xbb, 0x5b, 0xfa, 0x52, 0xf1, 0xa7, +0x04, 0x1a, 0xd4, 0x00, 0x50, 0x28, 0x4e, 0x12, +0xe0, 0x26, 0x40, 0xa0, 0xcf, 0x09, 0x28, 0x00, +0x00, 0x13, 0x7d, 0x49, 0x44, 0x41, 0x54, 0x27, +0x49, 0x92, 0x7e, 0xd2, 0xa4, 0x49, 0x93, 0x62, +0x62, 0x62, 0x1e, 0x50, 0xf5, 0x0b, 0x00, 0xd0, +0xa3, 0x47, 0x0f, 0x0c, 0x1c, 0x38, 0xd0, 0x33, +0x17, 0xcf, 0x47, 0x68, 0x89, 0xbf, 0x72, 0xa9, +0x9f, 0x52, 0xfc, 0x95, 0xd3, 0x27, 0x8c, 0xb9, +0xea, 0xa2, 0xb3, 0xe2, 0xaf, 0x95, 0xf0, 0xd7, +0xbc, 0x79, 0x73, 0x51, 0x14, 0x45, 0x2a, 0xfe, +0x14, 0xbf, 0x85, 0x1a, 0x00, 0x0a, 0xc5, 0x05, +0x82, 0xc1, 0x04, 0x4c, 0x98, 0x30, 0x61, 0xfc, +0x5d, 0x77, 0xdd, 0x35, 0xcc, 0xdc, 0x1f, 0xab, +0xbe, 0x74, 0xeb, 0xd6, 0x0d, 0x83, 0x07, 0x0f, +0x0e, 0x8a, 0x62, 0x32, 0x8e, 0xc4, 0x3f, 0x27, +0x27, 0x67, 0x4b, 0x6a, 0x6a, 0x6a, 0x40, 0x8b, +0x3f, 0xe9, 0x8b, 0xe7, 0xae, 0x22, 0x25, 0x98, +0xa1, 0x06, 0x80, 0x42, 0x71, 0x11, 0x4f, 0x9b, +0x80, 0xaa, 0xaa, 0x2a, 0x56, 0x96, 0x65, 0x4e, +0x69, 0x02, 0x38, 0x8e, 0x63, 0x45, 0x51, 0xe4, +0x61, 0x36, 0x02, 0xca, 0xb2, 0xc1, 0x4a, 0x13, +0x00, 0x80, 0x37, 0x99, 0x4c, 0xc4, 0x00, 0xa8, +0xcb, 0x06, 0x93, 0xdc, 0x00, 0xfd, 0xf8, 0xf1, +0xe3, 0xc7, 0xfc, 0xee, 0x77, 0xbf, 0x1b, 0xa9, +0xea, 0x17, 0x00, 0xa0, 0x6b, 0xd7, 0xae, 0x78, +0xe0, 0x81, 0x07, 0x02, 0xda, 0x04, 0xa8, 0xc5, +0x5f, 0xd5, 0x17, 0x39, 0x2b, 0x2b, 0x2b, 0x3e, +0x2d, 0x2d, 0xed, 0x90, 0x22, 0x61, 0xd2, 0x22, +0xfe, 0x3c, 0xcf, 0x5b, 0x84, 0x9f, 0x24, 0xfc, +0xa9, 0x85, 0x9f, 0x8a, 0x3f, 0x25, 0x18, 0xa0, +0x06, 0x80, 0x42, 0x69, 0x00, 0xde, 0x36, 0x01, +0x1c, 0xc7, 0xb1, 0x00, 0x38, 0x7b, 0x26, 0x40, +0x96, 0x65, 0x5e, 0x92, 0x24, 0x9d, 0x0b, 0x26, +0x40, 0x37, 0x76, 0xec, 0xd8, 0x87, 0xef, 0xbe, +0xfb, 0xee, 0xd1, 0x5a, 0xc2, 0x12, 0x13, 0x13, +0x83, 0x21, 0x43, 0x86, 0x04, 0xa4, 0x09, 0x50, +0x8a, 0xbf, 0x9d, 0x6c, 0xff, 0xf8, 0x7d, 0xfb, +0xf6, 0x1d, 0x52, 0x6c, 0xb0, 0x64, 0x99, 0xeb, +0x37, 0xaf, 0xa4, 0x68, 0xb0, 0xf8, 0x87, 0x86, +0x86, 0x4a, 0x0c, 0xc3, 0x88, 0x54, 0xfc, 0x29, +0x81, 0x00, 0x35, 0x00, 0x14, 0x4a, 0x03, 0xf1, +0x57, 0x13, 0x40, 0xca, 0x06, 0x2b, 0x4c, 0x80, +0x52, 0xfc, 0x75, 0xa4, 0x6c, 0xb0, 0x28, 0x8a, +0xfa, 0xd1, 0xa3, 0x47, 0x3f, 0x14, 0x1b, 0x1b, +0x3b, 0x56, 0xd5, 0x2f, 0x00, 0x40, 0xe7, 0xce, +0x9d, 0xf1, 0xe0, 0x83, 0x0f, 0x82, 0x65, 0x03, +0x67, 0xb5, 0xb0, 0xc9, 0x64, 0x42, 0x76, 0x76, +0x36, 0x8a, 0x8b, 0x8b, 0x35, 0xc5, 0xff, 0xd0, +0xa1, 0x43, 0xf1, 0x29, 0x29, 0x29, 0x44, 0xfc, +0x8d, 0x1c, 0xc7, 0x99, 0xe0, 0xa2, 0xf8, 0xb3, +0x2c, 0x2b, 0x00, 0x10, 0xe9, 0xc8, 0x9f, 0x12, +0xe8, 0x50, 0x03, 0x40, 0xa1, 0x34, 0x02, 0x5f, +0x99, 0x00, 0x59, 0x96, 0x39, 0x49, 0x92, 0x78, +0xa3, 0xd1, 0xc8, 0xc9, 0xd6, 0x3b, 0x08, 0xda, +0x35, 0x01, 0x00, 0x74, 0x82, 0x20, 0x90, 0x5c, +0x00, 0xcb, 0x1e, 0x02, 0x23, 0x47, 0x8e, 0x1c, +0xda, 0xa7, 0x4f, 0x9f, 0x09, 0x5a, 0x42, 0xd3, +0xa9, 0x53, 0x27, 0x0c, 0x1d, 0x3a, 0x34, 0x20, +0x4c, 0x40, 0x4d, 0x4d, 0x0d, 0x32, 0x33, 0x33, +0x71, 0xf3, 0xe6, 0x4d, 0x9b, 0x63, 0x0c, 0xc3, +0xc8, 0xd9, 0xd9, 0xd9, 0xf1, 0xa9, 0xa9, 0xa9, +0x39, 0x8a, 0x22, 0x3f, 0x56, 0x73, 0xfe, 0x4a, +0xf1, 0x67, 0x59, 0xd6, 0x6a, 0xde, 0xdf, 0x91, +0xf8, 0x7b, 0x2b, 0xdb, 0x1f, 0xa0, 0xe2, 0x4f, +0x71, 0x1f, 0xd4, 0x00, 0x50, 0x28, 0x8d, 0xc4, +0x15, 0x13, 0x10, 0x1b, 0x1b, 0xcb, 0x00, 0x80, +0xb7, 0x4c, 0x80, 0x2a, 0x0a, 0x40, 0xa6, 0x02, +0xd4, 0x7b, 0x07, 0xe8, 0x86, 0x0f, 0x1f, 0xfe, +0x40, 0xff, 0xfe, 0xfd, 0xa7, 0xa8, 0xfa, 0x05, +0x00, 0xe8, 0xd8, 0xb1, 0x23, 0x86, 0x0d, 0x1b, +0x06, 0x8e, 0xe3, 0x3c, 0x77, 0x11, 0x1b, 0x49, +0x65, 0x65, 0x25, 0x32, 0x33, 0x33, 0x61, 0x30, +0x18, 0x6c, 0x8e, 0x31, 0x0c, 0x23, 0x1f, 0x3a, +0x74, 0x28, 0x3e, 0x39, 0x39, 0x39, 0x87, 0x84, +0xfb, 0x95, 0xeb, 0xfb, 0x95, 0x73, 0xfe, 0x30, +0x17, 0x5a, 0x22, 0xa3, 0x7f, 0x2a, 0xfe, 0x94, +0x60, 0x86, 0x1a, 0x00, 0x0a, 0xc5, 0x0d, 0xf8, +0xa3, 0x09, 0x20, 0x46, 0xc0, 0xbc, 0x32, 0x40, +0xb9, 0x9b, 0xa0, 0x9e, 0x44, 0x04, 0x14, 0xab, +0x03, 0x74, 0x43, 0x87, 0x0e, 0x1d, 0x34, 0x60, +0xc0, 0x80, 0x69, 0x5a, 0x7d, 0xe9, 0xd0, 0xa1, +0x03, 0x86, 0x0f, 0x1f, 0xee, 0x97, 0x26, 0xa0, +0xb4, 0xb4, 0x14, 0xd9, 0xd9, 0xd9, 0x30, 0x1a, +0x8d, 0x56, 0xcf, 0x9b, 0xd7, 0xf9, 0x8b, 0x59, +0x59, 0x59, 0x3f, 0xa6, 0xa5, 0xa5, 0xe5, 0x29, +0xb6, 0x50, 0x26, 0x15, 0x14, 0x8d, 0x64, 0x4f, +0x05, 0xc5, 0x97, 0xe0, 0x48, 0xfc, 0x39, 0x8e, +0x13, 0x24, 0x49, 0x92, 0x40, 0xc5, 0x9f, 0x12, +0xe0, 0x50, 0x03, 0x40, 0xa1, 0xb8, 0x09, 0x77, +0x99, 0x00, 0x7b, 0xbb, 0x08, 0x2a, 0x4d, 0x40, +0x4d, 0x4d, 0x0d, 0x0b, 0x73, 0x1e, 0x80, 0x33, +0x26, 0x40, 0x10, 0x04, 0x8b, 0x01, 0x20, 0x91, +0x00, 0x49, 0x92, 0x48, 0x2e, 0x80, 0xc5, 0x0c, +0x0c, 0x19, 0x32, 0x64, 0x40, 0x5c, 0x5c, 0xdc, +0x0c, 0xd2, 0x17, 0x65, 0x97, 0xda, 0xb5, 0x6b, +0x87, 0xe1, 0xc3, 0x87, 0x83, 0xe7, 0x79, 0x0f, +0x5e, 0x45, 0xd7, 0xb8, 0x7e, 0xfd, 0x3a, 0x0e, +0x1f, 0x3e, 0x0c, 0x51, 0x14, 0xad, 0x9e, 0x67, +0x18, 0x06, 0xa2, 0x28, 0xd6, 0x26, 0x25, 0x25, +0xad, 0x39, 0x72, 0xe4, 0xc8, 0x29, 0x52, 0x3e, +0x99, 0x14, 0xf9, 0xc1, 0xed, 0xd1, 0xbf, 0x4d, +0xd8, 0xdf, 0x9e, 0xf8, 0x87, 0x85, 0x85, 0x09, +0x00, 0x44, 0x2a, 0xfe, 0x94, 0x60, 0xc1, 0xff, +0x27, 0xf6, 0x28, 0x94, 0x00, 0x41, 0xeb, 0x26, +0xcd, 0x30, 0x8c, 0xd5, 0x0e, 0x82, 0xe4, 0x86, +0x4f, 0x04, 0xc0, 0xde, 0x2e, 0x82, 0x51, 0x51, +0x51, 0x92, 0x72, 0xef, 0x00, 0xf3, 0x7e, 0x01, +0x96, 0x0c, 0xf3, 0xd0, 0xd0, 0x50, 0x09, 0x8a, +0x10, 0x34, 0xcb, 0xb2, 0x42, 0x68, 0x68, 0xa8, +0x52, 0xb4, 0xac, 0xca, 0xd5, 0x9a, 0x47, 0xb5, +0x96, 0x2f, 0xc5, 0x3a, 0x77, 0xa3, 0x39, 0x04, +0x6e, 0xe4, 0x38, 0xce, 0x98, 0x99, 0x99, 0x99, +0x9b, 0x93, 0x93, 0xb3, 0x41, 0x96, 0x65, 0x51, +0x2d, 0x44, 0x85, 0x85, 0x85, 0x48, 0x4f, 0x4f, +0x87, 0xc9, 0x64, 0xf2, 0xe0, 0x55, 0x74, 0x9e, +0x0b, 0x17, 0x2e, 0x20, 0x27, 0x27, 0xc7, 0x4a, +0xfc, 0x19, 0xf3, 0x7e, 0x0d, 0x46, 0xa3, 0xb1, +0x72, 0xeb, 0xd6, 0xad, 0x5f, 0x1f, 0x39, 0x72, +0xe4, 0xa4, 0x79, 0x9e, 0xdf, 0xea, 0x8b, 0x65, +0x59, 0xa3, 0x4e, 0xa7, 0x33, 0x2a, 0xc5, 0x1f, +0x80, 0xe5, 0xda, 0x91, 0xbd, 0x17, 0x3c, 0x21, +0xfe, 0x3d, 0x7b, 0xf6, 0xa4, 0xe2, 0x4f, 0xf1, +0x0b, 0xa8, 0x01, 0xa0, 0x50, 0xdc, 0x88, 0xa7, +0x4c, 0x40, 0x55, 0x55, 0x95, 0xac, 0x34, 0x01, +0x44, 0x80, 0xa0, 0x30, 0x01, 0x30, 0x2f, 0x4d, +0x53, 0x8d, 0x5e, 0xd5, 0x75, 0xeb, 0x4d, 0x2c, +0xcb, 0x1a, 0x59, 0x96, 0xb5, 0x08, 0x3f, 0x73, +0x7b, 0xe3, 0x1b, 0x23, 0xc7, 0x71, 0xc6, 0x9c, +0x9c, 0x9c, 0xfc, 0xac, 0xac, 0xac, 0x75, 0xb2, +0x2c, 0x8b, 0xca, 0x3e, 0x30, 0x0c, 0x83, 0xe2, +0xe2, 0x62, 0xec, 0xdb, 0xb7, 0x0f, 0x55, 0x55, +0x55, 0x1e, 0xbe, 0x92, 0xf5, 0xf3, 0xcb, 0x2f, +0xbf, 0xe0, 0xc8, 0x91, 0x23, 0x20, 0x97, 0x9b, +0xb4, 0x0f, 0x00, 0xaa, 0xab, 0xab, 0x8b, 0x37, +0x6e, 0xdc, 0xf8, 0xf9, 0x99, 0x33, 0x67, 0xce, +0xab, 0xfb, 0x46, 0x04, 0x5f, 0xb9, 0x9d, 0x32, +0x11, 0x7f, 0xbd, 0x5e, 0x6f, 0x32, 0x5f, 0x2f, +0xcb, 0xc8, 0x9f, 0x65, 0x59, 0x81, 0x88, 0x3f, +0xb9, 0xc6, 0x8d, 0x15, 0xff, 0x4d, 0x9b, 0x36, +0x59, 0x89, 0x3f, 0x81, 0x8a, 0x3f, 0xc5, 0xdb, +0xd0, 0x29, 0x00, 0x0a, 0xc5, 0xcd, 0x68, 0x4d, +0x05, 0x00, 0xee, 0x99, 0x0e, 0x68, 0xd6, 0xac, +0x19, 0x63, 0xce, 0x03, 0x60, 0x39, 0x8e, 0x63, +0x65, 0x59, 0xe6, 0xd4, 0xd3, 0x01, 0x46, 0xa3, +0x91, 0x93, 0x24, 0x89, 0x37, 0xff, 0x6c, 0x35, +0x1d, 0x60, 0x4e, 0x0a, 0x54, 0xe6, 0x03, 0x58, +0x56, 0x08, 0x90, 0x04, 0x41, 0xf2, 0xf8, 0xbe, +0xfb, 0xee, 0xeb, 0x35, 0x6c, 0xd8, 0xb0, 0x27, +0x59, 0x96, 0xb5, 0x89, 0xf9, 0xeb, 0xf5, 0x7a, +0x0c, 0x1a, 0x34, 0x08, 0xd1, 0xd1, 0xd1, 0x6e, +0xbf, 0x7e, 0xf5, 0x21, 0xcb, 0x32, 0x8e, 0x1d, +0x3b, 0x86, 0x73, 0xe7, 0xce, 0x59, 0x9e, 0x53, +0x5e, 0xee, 0x8a, 0x8a, 0x8a, 0x4b, 0xeb, 0xd7, +0xaf, 0x5f, 0x59, 0x5e, 0x5e, 0x5e, 0x41, 0x46, +0xf6, 0xea, 0x2c, 0x7f, 0x9e, 0xe7, 0xc9, 0x68, +0x9f, 0xcc, 0xf5, 0x9b, 0x74, 0x3a, 0x9d, 0x45, +0xf4, 0x19, 0xc5, 0x3a, 0x7f, 0x00, 0x62, 0x48, +0x48, 0x88, 0x48, 0x22, 0x2f, 0x9e, 0x10, 0xff, +0xf7, 0xde, 0x7b, 0x4f, 0xa6, 0xe2, 0x4f, 0xf1, +0x05, 0xd4, 0x00, 0x50, 0x28, 0x1e, 0xc0, 0x1f, +0x4c, 0x00, 0xcc, 0xa5, 0x83, 0x55, 0x06, 0x80, +0x87, 0xa2, 0x6a, 0xa0, 0xd2, 0x04, 0x90, 0xdc, +0x00, 0x28, 0xf2, 0x02, 0xfa, 0xf5, 0xeb, 0x77, +0xef, 0xf0, 0xe1, 0xc3, 0x9f, 0x66, 0x59, 0x56, +0x67, 0xee, 0x97, 0x55, 0x7f, 0xee, 0xbe, 0xfb, +0x6e, 0xf4, 0xe9, 0xd3, 0xc7, 0x2b, 0x05, 0x83, +0x6e, 0xdd, 0xba, 0x85, 0xbc, 0xbc, 0x3c, 0x94, +0x95, 0x95, 0x41, 0xab, 0x2d, 0x45, 0x45, 0x45, +0xa7, 0xd6, 0xae, 0x5d, 0xfb, 0x7d, 0x6d, 0x6d, +0x6d, 0x35, 0xea, 0x36, 0xf5, 0x31, 0xa1, 0x2e, +0xe3, 0xdf, 0x32, 0xe7, 0x0f, 0xf3, 0x6e, 0x7e, +0x30, 0x67, 0xfb, 0xc3, 0x1c, 0xf6, 0xd7, 0xe9, +0x74, 0x82, 0x72, 0xe4, 0x0f, 0x73, 0x64, 0x85, +0x8a, 0x3f, 0x25, 0x98, 0xa1, 0x06, 0x80, 0x42, +0xf1, 0x10, 0xde, 0x34, 0x01, 0xb7, 0x6e, 0xdd, +0xb2, 0xac, 0x0c, 0x80, 0x86, 0x09, 0x60, 0x18, +0xc6, 0x62, 0x06, 0x4c, 0x26, 0x13, 0x89, 0x00, +0xf0, 0xe6, 0x11, 0x3f, 0xaf, 0x36, 0x01, 0xe6, +0x95, 0x01, 0x3c, 0x00, 0x5d, 0xef, 0xde, 0xbd, +0xef, 0x7e, 0xe8, 0xa1, 0x87, 0xe6, 0x72, 0x1c, +0xa7, 0x57, 0xf5, 0x0f, 0x00, 0x10, 0x15, 0x15, +0x85, 0xc1, 0x83, 0x07, 0x23, 0x2c, 0x2c, 0xcc, +0xfd, 0x17, 0xd1, 0xcc, 0xb9, 0x73, 0xe7, 0x70, +0xe2, 0xc4, 0x09, 0x88, 0xa2, 0xa8, 0x69, 0x36, +0x2e, 0x5d, 0xba, 0x74, 0x78, 0xfd, 0xfa, 0xf5, +0x9b, 0x00, 0xd4, 0x02, 0x10, 0x14, 0x99, 0xfe, +0xc4, 0x08, 0x90, 0x91, 0xbe, 0x45, 0xf4, 0x15, +0x11, 0x00, 0x41, 0xaf, 0xd7, 0x5b, 0x8d, 0xfa, +0xa1, 0x10, 0x7f, 0x65, 0xde, 0x05, 0x15, 0x7f, +0x4a, 0x30, 0x41, 0x0d, 0x00, 0x85, 0xe2, 0x41, +0x3c, 0x6d, 0x02, 0x6e, 0xdd, 0xba, 0xc5, 0x92, +0xcd, 0x83, 0x6a, 0x6a, 0x6a, 0x58, 0x59, 0x96, +0x39, 0x00, 0x1c, 0xcb, 0xb2, 0x6c, 0x6d, 0x6d, +0xad, 0x65, 0x2a, 0x00, 0xe6, 0xe9, 0x00, 0xf3, +0x66, 0x42, 0xbc, 0x2c, 0xcb, 0x56, 0x91, 0x00, +0xe5, 0x52, 0x41, 0xd4, 0x45, 0x00, 0x78, 0x28, +0xa6, 0x05, 0xba, 0x75, 0xeb, 0xd6, 0x79, 0xcc, +0x98, 0x31, 0xcf, 0x84, 0x86, 0x86, 0x46, 0x9a, +0xfb, 0x65, 0xd5, 0x9f, 0x90, 0x90, 0x10, 0x0c, +0x1a, 0x34, 0x08, 0xed, 0xdb, 0xb7, 0x77, 0xeb, +0xf5, 0xab, 0xaa, 0xaa, 0xc2, 0xb1, 0x63, 0xc7, +0x70, 0xe3, 0xc6, 0x0d, 0x68, 0xfd, 0x5e, 0x00, +0x38, 0x73, 0xe6, 0x4c, 0xf2, 0xe6, 0xcd, 0x9b, +0x77, 0x99, 0x47, 0xf0, 0x16, 0xc1, 0xc7, 0xed, +0xd1, 0xbf, 0xa0, 0x1c, 0xfd, 0x9b, 0x43, 0xfc, +0x82, 0x52, 0xfc, 0x95, 0xc2, 0x0f, 0x40, 0x94, +0x65, 0x59, 0x0c, 0x0b, 0x0b, 0x6b, 0xb4, 0xf8, +0x6b, 0x65, 0xfb, 0x03, 0x54, 0xfc, 0x29, 0xfe, +0x01, 0x35, 0x00, 0x14, 0x8a, 0x87, 0x71, 0xd5, +0x04, 0xd4, 0x57, 0x31, 0xd0, 0x59, 0x13, 0x40, +0xa6, 0x06, 0x6a, 0x6b, 0x6b, 0x2d, 0x51, 0x00, +0x98, 0x4d, 0x80, 0x72, 0x37, 0x41, 0x12, 0x09, +0x80, 0xca, 0x04, 0x10, 0x03, 0x40, 0x22, 0x01, +0xb2, 0x2c, 0xeb, 0x9a, 0x35, 0x6b, 0xd6, 0x7c, +0xda, 0xb4, 0x69, 0xb3, 0xa3, 0xa2, 0xa2, 0x7a, +0xab, 0xfa, 0x67, 0x79, 0x7c, 0xe7, 0x9d, 0x77, +0xa2, 0x57, 0xaf, 0x5e, 0x08, 0x0f, 0x0f, 0x6f, +0xd4, 0x35, 0x33, 0x99, 0x4c, 0x38, 0x75, 0xea, +0x14, 0xce, 0x9d, 0x3b, 0x07, 0x49, 0x92, 0xec, +0x4d, 0x31, 0x88, 0x47, 0x8f, 0x1e, 0xdd, 0xba, +0x77, 0xef, 0xde, 0x03, 0xb8, 0x3d, 0xea, 0x17, +0x94, 0x23, 0x7e, 0x8e, 0xe3, 0x6c, 0xc4, 0x5f, +0xf9, 0xc5, 0xf3, 0xbc, 0x65, 0xd4, 0xaf, 0x34, +0x01, 0x7a, 0xbd, 0xde, 0x6a, 0xc5, 0x05, 0xcb, +0xb2, 0xa2, 0xc1, 0x60, 0x90, 0xe9, 0xc8, 0x9f, +0x12, 0x4c, 0x50, 0x03, 0x40, 0xa1, 0x78, 0x01, +0x4f, 0x99, 0x80, 0x9a, 0x9a, 0x1a, 0x86, 0xe7, +0x79, 0xd6, 0x19, 0x13, 0x00, 0x85, 0x11, 0x30, +0x1a, 0x8d, 0x96, 0xbc, 0x00, 0xd4, 0x89, 0x3e, +0x4f, 0x6a, 0x05, 0x00, 0xe0, 0x61, 0x9e, 0x16, +0x00, 0x60, 0xd9, 0x6d, 0x10, 0xe6, 0xc8, 0xc0, +0xd8, 0xb1, 0x63, 0x47, 0xde, 0x7b, 0xef, 0xbd, +0x13, 0x19, 0x86, 0xe1, 0xb4, 0xba, 0xc5, 0xf3, +0x3c, 0xba, 0x77, 0xef, 0x8e, 0x6e, 0xdd, 0xba, +0xb9, 0x3c, 0x2d, 0x60, 0x30, 0x18, 0x70, 0xf1, +0xe2, 0x45, 0x9c, 0x3d, 0x7b, 0xd6, 0x52, 0xd8, +0x47, 0xeb, 0x77, 0xd4, 0xd4, 0xd4, 0x14, 0x25, +0x27, 0x27, 0xaf, 0xf9, 0xf9, 0xe7, 0x9f, 0xcf, +0xc1, 0x5a, 0xfc, 0x05, 0xd4, 0x85, 0xfe, 0x05, +0x32, 0xfa, 0xc7, 0xed, 0x79, 0x7e, 0x32, 0xfa, +0x17, 0x89, 0x01, 0xd0, 0xe9, 0x74, 0xa2, 0x7a, +0xf4, 0x1f, 0x16, 0x16, 0x26, 0x4a, 0x92, 0x24, +0x89, 0xa2, 0x28, 0xb5, 0x68, 0xd1, 0xc2, 0x52, +0xdf, 0x5f, 0xaf, 0xd7, 0xcb, 0x54, 0xfc, 0x29, +0xc1, 0x04, 0x35, 0x00, 0x14, 0x8a, 0x97, 0xf0, +0xb6, 0x09, 0x20, 0x06, 0xc0, 0x60, 0x30, 0x70, +0x0c, 0xc3, 0x58, 0x4c, 0x00, 0xcc, 0x9b, 0x08, +0x31, 0x0c, 0x63, 0xb3, 0x4a, 0x40, 0x10, 0x04, +0x62, 0x08, 0x74, 0xa2, 0x28, 0x12, 0x83, 0x40, +0x22, 0x02, 0xbc, 0xd9, 0x40, 0xf0, 0xb1, 0xb1, +0xb1, 0xdd, 0x46, 0x8c, 0x18, 0xf1, 0x8c, 0x5e, +0xaf, 0x8f, 0x50, 0xf4, 0x4f, 0xdd, 0x5f, 0x74, +0xe8, 0xd0, 0x01, 0x31, 0x31, 0x31, 0x88, 0x8c, +0x8c, 0x44, 0x48, 0x48, 0x88, 0xe6, 0x75, 0xa9, +0xae, 0xae, 0x46, 0x69, 0x69, 0x29, 0x2e, 0x5e, +0xbc, 0x88, 0xa2, 0xa2, 0x22, 0xab, 0xa5, 0x7d, +0x1a, 0xd7, 0x10, 0x97, 0x2e, 0x5d, 0xca, 0x88, +0x8f, 0x8f, 0x8f, 0xaf, 0xad, 0xad, 0x35, 0xa0, +0x2e, 0x99, 0x4f, 0x80, 0x59, 0xe8, 0x95, 0x23, +0x7e, 0x9e, 0xe7, 0x2d, 0xe2, 0xaf, 0x2e, 0xf0, +0x03, 0xb3, 0x09, 0xd0, 0xeb, 0xf5, 0x16, 0xe1, +0x87, 0x42, 0xfc, 0x19, 0x86, 0x11, 0xc3, 0xc2, +0xc2, 0x24, 0x2a, 0xfe, 0x94, 0x60, 0x86, 0x1a, +0x00, 0x0a, 0xc5, 0x8b, 0xb8, 0xdb, 0x04, 0x54, +0x55, 0x55, 0x31, 0x3c, 0xcf, 0xb3, 0x8e, 0x4c, +0x80, 0xd1, 0x68, 0xb4, 0x24, 0x08, 0x02, 0xe0, +0x6a, 0x6a, 0x6a, 0x2c, 0x06, 0x00, 0x8a, 0xe5, +0x82, 0xe6, 0x28, 0x00, 0x8f, 0xdb, 0x51, 0x00, +0x2b, 0x43, 0x60, 0x7e, 0xcc, 0x01, 0xe0, 0x23, +0x22, 0x22, 0x5a, 0x4d, 0x9a, 0x34, 0xe9, 0xe9, +0x36, 0x6d, 0xda, 0xdc, 0xa3, 0xd1, 0x4f, 0x9b, +0x3e, 0x86, 0x87, 0x87, 0xa3, 0x65, 0xcb, 0x96, +0x96, 0x8d, 0x85, 0x4c, 0x26, 0x13, 0x6e, 0xde, +0xbc, 0x69, 0x53, 0x58, 0xc8, 0x9e, 0xf0, 0x1b, +0x8d, 0xc6, 0x8a, 0xac, 0xac, 0xac, 0x0d, 0x87, +0x0e, 0x1d, 0x3a, 0x2e, 0xcb, 0xb2, 0xc0, 0xb2, +0xac, 0x88, 0xdb, 0xa3, 0x7e, 0xcb, 0x77, 0xa5, +0x01, 0x60, 0x18, 0x46, 0x90, 0x65, 0x59, 0x54, +0x2e, 0xf3, 0x33, 0xd7, 0x37, 0xb0, 0xda, 0xce, +0x57, 0x14, 0x45, 0x09, 0x75, 0x89, 0x7f, 0x12, +0xc3, 0x30, 0xa2, 0x20, 0x08, 0x52, 0x78, 0x78, +0x38, 0x89, 0x02, 0x48, 0x55, 0x55, 0x55, 0x72, +0x9b, 0x36, 0x6d, 0xa4, 0x9b, 0x37, 0x6f, 0xca, +0x54, 0xfc, 0x29, 0xc1, 0x02, 0x35, 0x00, 0x14, +0x8a, 0x97, 0xf1, 0xb4, 0x09, 0x30, 0x1a, 0x8d, +0x0c, 0xc7, 0x71, 0x6c, 0x75, 0x75, 0x35, 0x0b, +0x80, 0xe3, 0x38, 0x8e, 0x65, 0x59, 0x96, 0x35, +0x18, 0x0c, 0x56, 0x51, 0x00, 0xb2, 0x4a, 0x40, +0x69, 0x02, 0xc8, 0x32, 0x41, 0x62, 0x02, 0x44, +0x51, 0xe4, 0xa0, 0x32, 0x03, 0x64, 0x1a, 0x41, +0x92, 0x24, 0x9e, 0x65, 0x59, 0xfe, 0xe1, 0x87, +0x1f, 0x1e, 0x71, 0xf7, 0xdd, 0x77, 0x3f, 0xca, +0xf3, 0x7c, 0x73, 0x73, 0xff, 0xb4, 0xfa, 0xdc, +0xe0, 0xe7, 0x24, 0x49, 0xaa, 0x39, 0x7b, 0xf6, +0x6c, 0x72, 0x62, 0x62, 0x62, 0x4a, 0x75, 0x75, +0x75, 0x8d, 0xb9, 0x40, 0x8f, 0x45, 0xfc, 0xcd, +0x82, 0x6e, 0x19, 0xf1, 0x43, 0x21, 0xfe, 0xc4, +0x00, 0x90, 0x2c, 0x7f, 0x32, 0xfa, 0x87, 0x6a, +0x53, 0x1f, 0x73, 0x91, 0x25, 0x91, 0x24, 0xfa, +0x35, 0x44, 0xfc, 0x69, 0x79, 0x5f, 0x4a, 0xa0, +0x41, 0x0d, 0x00, 0x85, 0xe2, 0x03, 0xbc, 0x69, +0x02, 0x78, 0x9e, 0x27, 0xb9, 0x00, 0x16, 0x43, +0xa0, 0xb5, 0x4c, 0x10, 0x8a, 0xdc, 0x00, 0x12, +0x1d, 0x10, 0x04, 0x81, 0x1c, 0xb3, 0x18, 0x00, +0x86, 0x61, 0x38, 0x73, 0x34, 0x80, 0x93, 0x24, +0x89, 0x97, 0x24, 0x89, 0x6b, 0xd5, 0xaa, 0x55, +0xb3, 0x87, 0x1f, 0x7e, 0x78, 0x7c, 0xe7, 0xce, +0x9d, 0x1f, 0x22, 0x35, 0x03, 0xcc, 0xfd, 0xd4, +0xea, 0xbb, 0x53, 0xcf, 0x01, 0x10, 0xaf, 0x5c, +0xb9, 0x92, 0x91, 0x9c, 0x9c, 0xbc, 0xb3, 0xa4, +0xa4, 0xa4, 0x42, 0x96, 0x65, 0x91, 0x65, 0x59, +0x51, 0x96, 0x65, 0x91, 0x08, 0x3f, 0x11, 0x7d, +0xe5, 0x63, 0x86, 0x61, 0x04, 0x8e, 0xe3, 0x2c, +0x62, 0xaf, 0x4e, 0xf6, 0x83, 0x62, 0x99, 0x1f, +0x29, 0xed, 0xab, 0xcc, 0xf2, 0x77, 0x45, 0xfc, +0x49, 0x15, 0x47, 0x57, 0xc5, 0xdf, 0xfc, 0xb7, +0xa6, 0x37, 0x5f, 0x8a, 0x4f, 0xa1, 0x06, 0x80, +0x42, 0xf1, 0x11, 0x9e, 0x30, 0x01, 0x2d, 0x5b, +0xb6, 0x64, 0x4a, 0x4b, 0x4b, 0x59, 0x2d, 0x13, +0xa0, 0xb5, 0x93, 0x20, 0x31, 0x01, 0xe4, 0x4b, +0x10, 0x04, 0xab, 0x88, 0x80, 0x28, 0x8a, 0x1c, +0x31, 0x04, 0xc4, 0x0c, 0x98, 0x97, 0x13, 0x72, +0xa8, 0x8b, 0x06, 0x10, 0x13, 0xc1, 0xc9, 0xb2, +0xcc, 0x76, 0xea, 0xd4, 0x29, 0x2a, 0x2e, 0x2e, +0x6e, 0xc4, 0x1d, 0x77, 0xdc, 0x31, 0x58, 0xa7, +0xd3, 0x45, 0xa8, 0xfb, 0xe6, 0x8c, 0xf8, 0xd7, +0xd4, 0xd4, 0x14, 0x5d, 0xb9, 0x72, 0x25, 0x3b, +0x37, 0x37, 0x37, 0xeb, 0xf2, 0xe5, 0xcb, 0xc5, +0x0c, 0xc3, 0x48, 0x44, 0xf8, 0x15, 0x06, 0x80, +0x44, 0x00, 0x44, 0x58, 0x1b, 0x00, 0x11, 0x75, +0x51, 0x00, 0x51, 0xa7, 0xd3, 0x59, 0x04, 0x5f, +0xa7, 0xd3, 0x59, 0xc2, 0xfe, 0x92, 0x24, 0x49, +0x64, 0x99, 0x1f, 0x99, 0xe3, 0x6f, 0xde, 0xbc, +0x39, 0x89, 0x02, 0x48, 0x06, 0x83, 0x41, 0x36, +0x99, 0x4c, 0x52, 0xab, 0x56, 0xad, 0xa4, 0xca, +0xca, 0x4a, 0x39, 0x2c, 0x2c, 0x8c, 0x8a, 0x3f, +0x25, 0x28, 0xa1, 0x06, 0x80, 0x42, 0xf1, 0x21, +0xce, 0x9a, 0x00, 0xa0, 0xce, 0x08, 0xb8, 0x62, +0x02, 0x9a, 0x35, 0x6b, 0xc6, 0x54, 0x56, 0x56, +0xb2, 0x6a, 0x13, 0x40, 0xaa, 0x06, 0x92, 0x5a, +0x01, 0x50, 0x18, 0x00, 0x93, 0xc9, 0x64, 0x79, +0x6c, 0x8e, 0x00, 0x70, 0x44, 0xf4, 0x45, 0x51, +0xe4, 0x54, 0x06, 0x80, 0x93, 0x24, 0x89, 0x33, +0x47, 0x04, 0x38, 0x96, 0x65, 0x59, 0x49, 0x92, +0x38, 0x49, 0x92, 0x58, 0x9e, 0xe7, 0xb9, 0xfb, +0xef, 0xbf, 0xbf, 0x57, 0xd7, 0xae, 0x5d, 0xef, +0x6f, 0xd9, 0xb2, 0x65, 0x97, 0xb0, 0xb0, 0xb0, +0x8e, 0x0c, 0xc3, 0x58, 0xed, 0x3d, 0x42, 0xba, +0x2e, 0x49, 0x52, 0x6d, 0x75, 0x75, 0xf5, 0x95, +0xf2, 0xf2, 0xf2, 0xf3, 0x67, 0xce, 0x9c, 0x39, +0x7c, 0xf4, 0xe8, 0xd1, 0xb3, 0xb2, 0x2c, 0x4b, +0x0a, 0xe1, 0x97, 0x94, 0xc2, 0xaf, 0xf5, 0x5d, +0x3d, 0xea, 0x37, 0xcf, 0xfb, 0x8b, 0x64, 0xbe, +0x5f, 0x9d, 0xec, 0xa7, 0x5e, 0xe6, 0x47, 0x46, +0xff, 0x7a, 0xbd, 0x9e, 0x8a, 0x3f, 0xa5, 0xc9, +0x40, 0x0d, 0x00, 0x85, 0xe2, 0x63, 0x3c, 0x69, +0x02, 0x6a, 0x6b, 0x6b, 0x19, 0x9d, 0x4e, 0xc7, +0x72, 0x1c, 0xc7, 0x9a, 0x4c, 0x26, 0x46, 0x59, +0x35, 0x90, 0xe3, 0x38, 0xd6, 0x60, 0x30, 0x58, +0x55, 0x10, 0x24, 0x11, 0x01, 0x32, 0x25, 0x20, +0x08, 0x82, 0xe5, 0x67, 0x12, 0x1d, 0x20, 0x82, +0x8f, 0xdb, 0x06, 0x80, 0x55, 0x7e, 0x97, 0x24, +0x89, 0x35, 0x9b, 0x01, 0x16, 0x75, 0xf7, 0x18, +0x26, 0x34, 0x34, 0x54, 0xdf, 0xbd, 0x7b, 0xf7, +0x4e, 0x11, 0x11, 0x11, 0xad, 0x49, 0x7f, 0x25, +0x49, 0x12, 0x6f, 0xdc, 0xb8, 0x71, 0xfd, 0xec, +0xd9, 0xb3, 0x85, 0xe6, 0xcc, 0x7b, 0x99, 0x61, +0x18, 0x89, 0x61, 0x18, 0x59, 0xc3, 0x00, 0x48, +0x5a, 0xc2, 0xcf, 0xf3, 0xbc, 0x28, 0xcb, 0xb2, +0xe5, 0x31, 0x14, 0xf3, 0xfc, 0x64, 0xd4, 0x2f, +0x49, 0x92, 0xa4, 0x4c, 0xf6, 0x53, 0x2e, 0xf3, +0x53, 0x17, 0xf8, 0xa9, 0xaa, 0xaa, 0x92, 0xed, +0x89, 0xff, 0xf5, 0xeb, 0xd7, 0xe5, 0xd6, 0xad, +0x5b, 0x53, 0xf1, 0xa7, 0x04, 0x0d, 0xd4, 0x00, +0x50, 0x28, 0x7e, 0x40, 0x43, 0x4d, 0x00, 0x50, +0x57, 0x35, 0x50, 0xcb, 0x04, 0x18, 0x0c, 0x06, +0x46, 0xa7, 0xd3, 0x59, 0x4c, 0x80, 0xd1, 0x68, +0x64, 0xec, 0xad, 0x10, 0x50, 0xe7, 0x05, 0xb0, +0x2c, 0xcb, 0x2a, 0xa3, 0x01, 0xc4, 0x00, 0x00, +0xb0, 0x88, 0x3f, 0x53, 0x57, 0x5e, 0x98, 0x4c, +0x27, 0xb0, 0xa8, 0x33, 0x04, 0xac, 0x2c, 0xcb, +0x2c, 0xc3, 0x30, 0xac, 0x2c, 0xcb, 0x8c, 0x2c, +0xcb, 0xe4, 0x3b, 0x03, 0x80, 0xe1, 0x38, 0x0e, +0xe6, 0xc7, 0x60, 0x18, 0x46, 0x06, 0x00, 0x51, +0x14, 0x65, 0xb3, 0xf8, 0x93, 0x2f, 0x49, 0x92, +0x24, 0x99, 0x65, 0x59, 0x89, 0x61, 0x18, 0xb2, +0xfd, 0xae, 0x84, 0xba, 0x10, 0xbe, 0xa4, 0x14, +0x7e, 0x8e, 0xe3, 0x24, 0x32, 0xca, 0xd7, 0x1a, +0xf5, 0x93, 0x39, 0x7e, 0x32, 0xdf, 0xaf, 0x95, +0xec, 0xa7, 0x2e, 0xf0, 0x53, 0x59, 0x59, 0x29, +0x47, 0x45, 0x45, 0x49, 0x44, 0xf8, 0x01, 0x80, +0x8a, 0x3f, 0x25, 0x18, 0xa1, 0x06, 0x80, 0x42, +0xf1, 0x13, 0x5c, 0x35, 0x01, 0x80, 0x75, 0xe9, +0xe0, 0xb2, 0xb2, 0x32, 0xa6, 0x43, 0x87, 0x0e, +0x36, 0x26, 0x40, 0xab, 0x6a, 0xa0, 0xc1, 0x60, +0xb0, 0x4c, 0x09, 0xd4, 0xd6, 0xd6, 0xb2, 0x24, +0x0a, 0x60, 0x32, 0x99, 0x2c, 0xd3, 0x03, 0x4a, +0x33, 0x40, 0xc4, 0x1f, 0x66, 0x91, 0x87, 0xd9, +0x08, 0x30, 0x0c, 0xc3, 0x2a, 0xc2, 0xff, 0x44, +0xf8, 0x59, 0x73, 0x14, 0x80, 0x51, 0x46, 0x01, +0x88, 0xf0, 0x73, 0x1c, 0x07, 0x00, 0x10, 0x45, +0x91, 0xf4, 0x5b, 0x36, 0x9b, 0x01, 0x8b, 0x09, +0x20, 0x11, 0x00, 0x32, 0xfa, 0x57, 0x44, 0x00, +0x24, 0xb5, 0xf0, 0xb3, 0x2c, 0x6b, 0xd9, 0x16, +0x59, 0xa7, 0xd3, 0x59, 0x44, 0x5f, 0x69, 0x00, +0xf4, 0x7a, 0xbd, 0x65, 0x4d, 0x7f, 0x68, 0x68, +0xa8, 0x55, 0xb2, 0x9f, 0x72, 0x8d, 0xbf, 0x5a, +0xfc, 0x23, 0x23, 0x23, 0xe5, 0x82, 0x82, 0x02, +0x50, 0xf1, 0xa7, 0x04, 0x23, 0xd4, 0x00, 0x50, +0x28, 0x7e, 0x84, 0xbb, 0x4c, 0x00, 0x00, 0x54, +0x56, 0x56, 0x32, 0x7a, 0xbd, 0x9e, 0x25, 0x26, +0x40, 0x59, 0x2b, 0x20, 0x2c, 0x2c, 0x8c, 0x51, +0xe7, 0x05, 0x28, 0xa7, 0x04, 0x88, 0x01, 0x60, +0xeb, 0x16, 0xed, 0x73, 0x82, 0x20, 0xb0, 0x64, +0x5a, 0x40, 0x14, 0x45, 0xcb, 0x68, 0x9f, 0x98, +0x03, 0x96, 0x65, 0x59, 0x51, 0x14, 0x2d, 0xa1, +0x7f, 0x59, 0x96, 0x19, 0x45, 0x14, 0x80, 0x81, +0xd9, 0x04, 0xd8, 0xe9, 0xb3, 0x95, 0xf8, 0x2b, +0x46, 0xff, 0xb2, 0x54, 0xf7, 0x4b, 0x24, 0x59, +0x96, 0x25, 0x8e, 0xe3, 0x44, 0x49, 0x92, 0x24, +0x8e, 0xe3, 0x2c, 0xd1, 0x00, 0x00, 0x22, 0xf9, +0x99, 0x84, 0xfa, 0x89, 0xe8, 0xeb, 0x74, 0x3a, +0x8b, 0xf8, 0xab, 0x43, 0xfe, 0x3a, 0x9d, 0x4e, +0x56, 0x66, 0xfa, 0xdb, 0x2b, 0xf0, 0xd3, 0x58, +0xf1, 0xa7, 0xc2, 0x4f, 0xf1, 0x67, 0xa8, 0x01, +0xa0, 0x50, 0xfc, 0x10, 0x2d, 0x23, 0x40, 0x3e, +0xab, 0x8e, 0x36, 0x11, 0x2a, 0x2b, 0x2b, 0x63, +0x62, 0x63, 0x63, 0x51, 0x5f, 0xd5, 0x40, 0xe5, +0x0a, 0x81, 0xd0, 0xd0, 0x50, 0x86, 0x18, 0x00, +0xb3, 0xf0, 0x5b, 0xa2, 0x01, 0x4a, 0x03, 0x40, +0xa6, 0x05, 0x58, 0x33, 0xe4, 0x31, 0x11, 0x7e, +0x51, 0x14, 0x59, 0x49, 0x92, 0x58, 0x8e, 0xe3, +0x18, 0x51, 0x14, 0x59, 0x59, 0x96, 0x19, 0x8e, +0xe3, 0x2c, 0xa3, 0x7f, 0x62, 0x00, 0x94, 0x46, +0x80, 0x4c, 0x03, 0x10, 0xf1, 0x17, 0x45, 0x51, +0x36, 0x8f, 0xf8, 0x65, 0x92, 0x17, 0xc0, 0x71, +0x9c, 0xa4, 0x34, 0x02, 0x3c, 0xcf, 0x5b, 0x19, +0x01, 0x9e, 0xe7, 0x25, 0x22, 0xfa, 0xe4, 0x31, +0x99, 0xeb, 0x57, 0x8a, 0x7e, 0x4d, 0x4d, 0x8d, +0x1c, 0x16, 0x16, 0x66, 0x35, 0xdf, 0x1f, 0x12, +0x12, 0x22, 0x9b, 0x4c, 0x26, 0xc9, 0x5e, 0xb2, +0x1f, 0x50, 0xb7, 0xc6, 0xdf, 0x7c, 0xad, 0xa9, +0xf8, 0x53, 0x82, 0x0a, 0x6a, 0x00, 0x28, 0x14, +0x3f, 0xc5, 0xdd, 0x26, 0x40, 0x2b, 0x39, 0x50, +0x99, 0x17, 0x20, 0x08, 0x02, 0xa3, 0x8c, 0x06, +0x28, 0x73, 0x03, 0x88, 0x01, 0x50, 0x7e, 0x67, +0x18, 0x86, 0x4c, 0x0f, 0x58, 0x09, 0x3f, 0xc7, +0x71, 0x8c, 0x24, 0x49, 0xac, 0x24, 0x49, 0x8c, +0xda, 0x04, 0xd8, 0xe9, 0xa7, 0xcc, 0x30, 0x8c, +0x2c, 0x08, 0x02, 0x88, 0xe0, 0x2b, 0xcd, 0x00, +0x99, 0x06, 0x20, 0xe2, 0x4e, 0x0c, 0x01, 0xf9, +0x59, 0xf9, 0x98, 0xcc, 0xf5, 0x2b, 0x47, 0xfd, +0x3c, 0xcf, 0xcb, 0xea, 0xf9, 0xfe, 0xfa, 0x92, +0xfd, 0xa8, 0xf8, 0x53, 0x9a, 0x0a, 0xd4, 0x00, +0x50, 0x28, 0x7e, 0x4c, 0x63, 0x4c, 0x00, 0xa0, +0xbd, 0x42, 0x40, 0x2b, 0x2f, 0x40, 0x39, 0x25, +0x40, 0x8c, 0x00, 0x89, 0x06, 0x98, 0x47, 0xfb, +0x36, 0x06, 0x40, 0xf9, 0x5d, 0x96, 0x65, 0xc6, +0x1c, 0xfe, 0xb7, 0x98, 0x00, 0x59, 0x96, 0x19, +0x62, 0x02, 0x64, 0x59, 0x66, 0x78, 0x9e, 0x87, +0x96, 0x09, 0x20, 0x62, 0x4f, 0x1e, 0x2b, 0x47, +0xff, 0x3c, 0xcf, 0x4b, 0x82, 0x20, 0x28, 0xa3, +0x00, 0xb2, 0x96, 0xf0, 0xeb, 0x74, 0x3a, 0x32, +0x9f, 0x6f, 0x15, 0xea, 0xe7, 0x79, 0x5e, 0xb6, +0x17, 0xf2, 0x27, 0xe2, 0x5f, 0x56, 0x56, 0x26, +0x37, 0x6b, 0xd6, 0xac, 0xde, 0xd2, 0xbe, 0xe6, +0x6b, 0x4b, 0xc5, 0x9f, 0x12, 0x54, 0x50, 0x03, +0x40, 0xa1, 0xf8, 0x39, 0x9e, 0x34, 0x01, 0xca, +0x29, 0x81, 0xb0, 0xb0, 0x30, 0xa6, 0xaa, 0xaa, +0xca, 0x26, 0x1a, 0xa0, 0xd7, 0xeb, 0x19, 0x2d, +0x23, 0xc0, 0xf3, 0x3c, 0x43, 0x0c, 0x80, 0x24, +0x49, 0x0c, 0x79, 0xce, 0x3c, 0x15, 0xc0, 0xf0, +0x3c, 0xcf, 0x48, 0x92, 0xc4, 0x48, 0x92, 0x64, +0x13, 0xfa, 0x57, 0xf5, 0x4f, 0x06, 0x00, 0x96, +0x65, 0x65, 0x96, 0x65, 0x65, 0x41, 0x10, 0x64, +0x96, 0x65, 0x65, 0x45, 0x0e, 0x80, 0xc5, 0x08, +0x10, 0xc1, 0x27, 0x26, 0x41, 0x29, 0xfc, 0x46, +0xa3, 0x51, 0x0e, 0x09, 0x09, 0xb1, 0x18, 0x80, +0x9a, 0x9a, 0x1a, 0x59, 0x3d, 0xea, 0x0f, 0x09, +0x09, 0xd1, 0xac, 0xec, 0x07, 0xd8, 0x66, 0xfa, +0x53, 0xf1, 0xa7, 0x04, 0x3b, 0xd4, 0x00, 0x50, +0x28, 0x01, 0x80, 0xab, 0x26, 0x40, 0x5d, 0x2b, +0x40, 0x9d, 0x1c, 0xa8, 0x2e, 0x1f, 0x5c, 0x5b, +0x5b, 0xcb, 0xa8, 0xa3, 0x01, 0x24, 0x37, 0x20, +0x24, 0x24, 0xc4, 0x92, 0x23, 0x20, 0x8a, 0x22, +0x43, 0x8c, 0x80, 0x4e, 0xa7, 0x63, 0x4c, 0x26, +0x13, 0x2b, 0x49, 0x92, 0x65, 0xf4, 0x4f, 0x4c, +0x01, 0x11, 0x7e, 0x9e, 0xe7, 0xc9, 0x9a, 0x7f, +0x4d, 0x13, 0xa0, 0x14, 0x7f, 0x00, 0x20, 0xe2, +0xaf, 0x34, 0x03, 0x3c, 0xcf, 0x5b, 0x04, 0x9f, +0x7c, 0xe7, 0x38, 0x4e, 0xd6, 0x12, 0x7e, 0x9e, +0xe7, 0xe5, 0xb0, 0xb0, 0x30, 0xa9, 0xa6, 0xa6, +0x46, 0x26, 0x55, 0xfd, 0xd4, 0x59, 0xfe, 0x5a, +0x21, 0x7f, 0x67, 0x92, 0xfd, 0x00, 0x2a, 0xfe, +0x94, 0xe0, 0x82, 0x1a, 0x00, 0x0a, 0x25, 0x40, +0x70, 0xd5, 0x04, 0x00, 0xce, 0xe5, 0x05, 0xd4, +0x17, 0x0d, 0x30, 0x99, 0x4c, 0x8c, 0xda, 0x08, +0x90, 0x88, 0x00, 0xf9, 0x2e, 0x8a, 0x22, 0xa3, +0x34, 0x03, 0xca, 0x91, 0xbf, 0x24, 0x49, 0x8c, +0x5e, 0xaf, 0xb7, 0x18, 0x00, 0xf2, 0x9d, 0x40, +0x84, 0x5f, 0xcb, 0x00, 0xa8, 0x1f, 0xeb, 0x74, +0x3a, 0x2b, 0x03, 0x40, 0x84, 0x9f, 0x84, 0xf9, +0xd5, 0xe1, 0x7e, 0xbd, 0x5e, 0x2f, 0x93, 0x51, +0x7f, 0x7d, 0xe2, 0xef, 0xcc, 0x7c, 0x3f, 0x40, +0xc5, 0x9f, 0x12, 0x7c, 0x50, 0x03, 0x40, 0xa1, +0x04, 0x10, 0xee, 0x58, 0x26, 0xe8, 0xc8, 0x04, +0x90, 0x68, 0x80, 0xd2, 0x08, 0x84, 0x86, 0x86, +0x32, 0x26, 0x93, 0xc9, 0x62, 0x04, 0x04, 0x41, +0x60, 0xcc, 0x99, 0xff, 0x8c, 0x28, 0x8a, 0x8c, +0xda, 0x0c, 0x88, 0xa2, 0x68, 0x11, 0x7c, 0x49, +0x92, 0x98, 0x90, 0x90, 0x10, 0x90, 0xe7, 0xd4, +0x70, 0x1c, 0x27, 0xd7, 0xd6, 0xd6, 0x5a, 0x99, +0x01, 0x8e, 0xe3, 0x64, 0x93, 0xc9, 0x24, 0x73, +0x1c, 0x27, 0xb3, 0x2c, 0x2b, 0x9b, 0x4c, 0x26, +0x59, 0xaf, 0xd7, 0x5b, 0x84, 0x5f, 0x29, 0xfa, +0x4a, 0xe1, 0x27, 0x23, 0x7e, 0xad, 0xb9, 0x7e, +0x7b, 0x21, 0x7f, 0xc0, 0x39, 0xf1, 0xa7, 0x6b, +0xfc, 0x29, 0xc1, 0x06, 0x35, 0x00, 0x14, 0x4a, +0x80, 0xd1, 0x58, 0x13, 0x00, 0xdc, 0xce, 0x0b, +0x00, 0xac, 0xa7, 0x04, 0x94, 0x46, 0xa0, 0x59, +0xb3, 0x66, 0x4c, 0x6d, 0x6d, 0x2d, 0x43, 0x96, +0x0c, 0x9a, 0x4c, 0x26, 0x86, 0x44, 0x04, 0x04, +0x41, 0x60, 0x48, 0x44, 0x40, 0x10, 0x04, 0x46, +0xaf, 0xd7, 0x33, 0x4a, 0x33, 0x00, 0x00, 0x82, +0x20, 0x58, 0xe6, 0xff, 0x45, 0x51, 0x64, 0x42, +0x43, 0x43, 0x41, 0x1e, 0x03, 0x75, 0xc2, 0x0f, +0x00, 0x35, 0x35, 0x35, 0x20, 0x3f, 0x13, 0x13, +0xc0, 0xf3, 0xbc, 0x6c, 0x34, 0x1a, 0x65, 0x8e, +0xe3, 0x64, 0xa5, 0xe8, 0xf3, 0x3c, 0x2f, 0xd7, +0xd6, 0xd6, 0xca, 0xca, 0x50, 0xbf, 0x52, 0xf8, +0x95, 0xe1, 0xfe, 0xf0, 0xf0, 0x70, 0xf9, 0xe6, +0xcd, 0x9b, 0x32, 0x00, 0x38, 0x0a, 0xf9, 0x37, +0x64, 0xbe, 0xdf, 0x7c, 0xcd, 0xe9, 0x0d, 0x94, +0x12, 0xb0, 0x50, 0x03, 0x40, 0xa1, 0x04, 0x20, +0xf5, 0x99, 0x00, 0xc0, 0xf9, 0xbc, 0x00, 0x75, +0x34, 0x00, 0x00, 0xc8, 0x72, 0xc1, 0xea, 0xea, +0x6a, 0x1b, 0x23, 0x10, 0x16, 0x16, 0xc6, 0x18, +0x8d, 0x46, 0x86, 0xec, 0x2b, 0x20, 0x08, 0x02, +0x23, 0x08, 0x02, 0xd3, 0xac, 0x59, 0x33, 0x90, +0xc7, 0xc4, 0x10, 0x00, 0xb7, 0xc5, 0x5e, 0x39, +0xfa, 0x57, 0x1b, 0x00, 0x02, 0xf9, 0x99, 0xe3, +0x38, 0x99, 0x18, 0x00, 0xa0, 0xce, 0x0c, 0x10, +0xd1, 0xe7, 0x79, 0x5e, 0xd6, 0xe9, 0x74, 0xb2, +0x96, 0xf0, 0x3b, 0x0a, 0xf7, 0x03, 0x40, 0x7d, +0x21, 0x7f, 0x80, 0x8a, 0x3f, 0xa5, 0x69, 0x41, +0x0d, 0x00, 0x85, 0x12, 0xa0, 0x34, 0xc4, 0x04, +0x00, 0xce, 0x47, 0x03, 0x00, 0xc0, 0x19, 0x23, +0x60, 0x32, 0x99, 0x98, 0x16, 0x2d, 0x5a, 0xc0, +0x64, 0x32, 0x31, 0x6a, 0x43, 0x00, 0xc0, 0xe6, +0xbb, 0x1a, 0x9e, 0xe7, 0x65, 0xf5, 0x63, 0xa5, +0xe8, 0x03, 0x80, 0x52, 0xf4, 0xf5, 0x7a, 0xbd, +0x45, 0xf8, 0x43, 0x42, 0x42, 0xe4, 0xd2, 0xd2, +0x52, 0xd8, 0x13, 0x7e, 0x00, 0x50, 0x8f, 0xfa, +0xcd, 0x7d, 0x6e, 0xf0, 0x7c, 0xbf, 0xf9, 0x1a, +0xd3, 0x1b, 0x27, 0x25, 0xe0, 0xa1, 0x06, 0x80, +0x42, 0x09, 0x60, 0x5c, 0x31, 0x01, 0x80, 0xfd, +0x29, 0x01, 0x75, 0x34, 0x00, 0x00, 0xec, 0x19, +0x01, 0x92, 0x23, 0x00, 0x00, 0x4a, 0x33, 0x00, +0x00, 0x64, 0x8a, 0x80, 0x3c, 0x06, 0xec, 0x0b, +0xbf, 0x1a, 0xa5, 0xd8, 0x03, 0x40, 0x4d, 0x4d, +0x8d, 0xe5, 0x67, 0x22, 0xfa, 0x00, 0x40, 0x84, +0x9f, 0xcc, 0xf1, 0x03, 0x80, 0x52, 0xf8, 0x5b, +0xb5, 0x6a, 0x25, 0x9f, 0x3f, 0x7f, 0xde, 0x22, +0xfc, 0xe6, 0x7e, 0x3a, 0x35, 0xea, 0x07, 0xea, +0x9f, 0xef, 0x37, 0x5f, 0x5b, 0x7a, 0xd3, 0xa4, +0x04, 0x05, 0xd4, 0x00, 0x50, 0x28, 0x01, 0x8e, +0x3d, 0x13, 0x00, 0xd4, 0x9f, 0x17, 0x00, 0x68, +0x47, 0x03, 0x00, 0x38, 0x34, 0x02, 0x00, 0xa0, +0x8c, 0x0a, 0x00, 0x75, 0x66, 0x00, 0x00, 0xc2, +0xc2, 0xc2, 0xac, 0x7e, 0x26, 0x46, 0xc0, 0x11, +0x44, 0xf8, 0x81, 0x3a, 0x91, 0x07, 0x00, 0x32, +0xd2, 0x07, 0x00, 0x22, 0xfa, 0x00, 0x40, 0xe6, +0xf8, 0x6f, 0xdc, 0xb8, 0x01, 0x22, 0xfc, 0x00, +0xe0, 0x28, 0xdc, 0x6f, 0xee, 0x3f, 0x1d, 0xf5, +0x53, 0x28, 0xa0, 0x06, 0x80, 0x42, 0x09, 0x1a, +0x1a, 0x3b, 0x25, 0x00, 0x38, 0x36, 0x02, 0x40, +0x5d, 0x8e, 0x80, 0xc1, 0x60, 0x60, 0xda, 0xb7, +0x6f, 0x0f, 0xb5, 0x19, 0x00, 0x00, 0x62, 0x08, +0x80, 0xdb, 0x26, 0x00, 0x00, 0x22, 0x22, 0x22, +0xac, 0x8e, 0x11, 0xc8, 0xc8, 0x1e, 0xb8, 0x2d, +0xfc, 0x40, 0x9d, 0xe0, 0x9b, 0x7f, 0x9f, 0x95, +0xe8, 0x03, 0x80, 0x32, 0xb9, 0x4f, 0x39, 0xe2, +0x07, 0xea, 0x84, 0xbf, 0xbe, 0x70, 0xbf, 0xb9, +0xcf, 0x54, 0xfc, 0x29, 0x4d, 0x1e, 0x6a, 0x00, +0x28, 0x94, 0x20, 0xa2, 0xa1, 0x53, 0x02, 0x80, +0x63, 0x23, 0x00, 0xd4, 0xe5, 0x08, 0xc4, 0xc4, +0xc4, 0xa0, 0xa2, 0xa2, 0xc2, 0x12, 0x15, 0x20, +0x66, 0x00, 0x80, 0x95, 0x21, 0x00, 0x80, 0xa8, +0xa8, 0x28, 0x18, 0x0c, 0x06, 0xa7, 0x22, 0x00, +0x61, 0x61, 0x61, 0x72, 0x71, 0x71, 0x31, 0x80, +0x3a, 0xb1, 0x27, 0xcf, 0x2b, 0x47, 0xfa, 0x40, +0x9d, 0xe8, 0x03, 0x75, 0xa3, 0x7d, 0x00, 0x0e, +0x85, 0xdf, 0x5e, 0x86, 0x3f, 0xe0, 0x58, 0xf8, +0x01, 0x2a, 0xfe, 0x94, 0xe0, 0x85, 0x1a, 0x00, +0x0a, 0x25, 0xc8, 0x70, 0x75, 0x4a, 0x00, 0xb0, +0x5d, 0x29, 0x40, 0x9e, 0xaf, 0xcf, 0x08, 0x00, +0x00, 0x31, 0x03, 0x40, 0x5d, 0x64, 0x80, 0xbc, +0xaf, 0x65, 0xcb, 0x96, 0x96, 0xc7, 0xc4, 0x14, +0x38, 0x82, 0x8c, 0xee, 0x01, 0x40, 0x4b, 0xf0, +0x01, 0x40, 0x6b, 0xb4, 0x6f, 0x6e, 0xa7, 0xe5, +0x35, 0x5a, 0xc2, 0x0f, 0xd0, 0x51, 0x3f, 0x85, +0xa2, 0x86, 0x1a, 0x00, 0x0a, 0x25, 0x08, 0x71, +0x64, 0x02, 0x00, 0xdb, 0x68, 0x00, 0xe0, 0xd8, +0x08, 0x00, 0xb6, 0x66, 0x00, 0xb8, 0x1d, 0x19, +0x00, 0x60, 0x31, 0x04, 0x04, 0xa5, 0x31, 0x70, +0x84, 0x52, 0xec, 0x01, 0x5b, 0xc1, 0x07, 0x6e, +0x8b, 0xbe, 0xb9, 0x5d, 0x36, 0x73, 0xfc, 0x8d, +0x15, 0x7e, 0x80, 0x8a, 0x3f, 0xa5, 0x69, 0x40, +0x0d, 0x00, 0x85, 0x12, 0xc4, 0x78, 0xd2, 0x08, +0x0c, 0x18, 0x30, 0x00, 0xd7, 0xae, 0x5d, 0xb3, +0xfc, 0xac, 0x34, 0x04, 0x80, 0xb5, 0x29, 0x70, +0x96, 0xf3, 0xe7, 0xcf, 0x03, 0x80, 0x5d, 0xc1, +0x37, 0xb7, 0xc1, 0x66, 0xb4, 0x0f, 0x38, 0x16, +0x7e, 0x80, 0x8a, 0x3f, 0x85, 0xa2, 0x84, 0x1a, +0x00, 0x0a, 0x25, 0xc8, 0x71, 0xc6, 0x04, 0x00, +0x8e, 0x8d, 0x00, 0x00, 0x2b, 0x33, 0x00, 0x68, +0x47, 0x06, 0xd4, 0xa8, 0x8d, 0x41, 0x7d, 0xa8, +0xc5, 0xde, 0xfc, 0x3b, 0xac, 0x9e, 0x53, 0x8b, +0x3e, 0x00, 0xd8, 0x9b, 0xe3, 0x27, 0x50, 0xe1, +0xa7, 0x50, 0x6c, 0xa1, 0x06, 0x80, 0x42, 0x69, +0x22, 0xb8, 0xc3, 0x08, 0x00, 0xf6, 0xcd, 0x00, +0x60, 0x6d, 0x08, 0x80, 0xba, 0x28, 0x01, 0x41, +0x19, 0x2d, 0x50, 0xd3, 0xb1, 0x63, 0x47, 0x19, +0x00, 0xf2, 0xf2, 0xf2, 0x6c, 0x8e, 0x29, 0x05, +0x1f, 0xb0, 0x15, 0x7d, 0xa0, 0xfe, 0xd1, 0x3e, +0x40, 0x85, 0x9f, 0x42, 0xd1, 0xe2, 0xff, 0x03, +0x65, 0xa6, 0xdd, 0xaf, 0x10, 0x12, 0x84, 0xec, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/bigimgs/contactpersonicon.png b/source/bitmaps/bigimgs/contactpersonicon.png new file mode 100644 index 0000000000000000000000000000000000000000..5d779aaff9f0ad92246e55098187f4c19de47d5d GIT binary patch literal 62548 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 literal 0 HcmV?d00001 diff --git a/source/bitmaps/bigimgs/contactpersonicon48.cpp b/source/bitmaps/bigimgs/contactpersonicon48.cpp new file mode 100644 index 0000000..bada54a --- /dev/null +++ b/source/bitmaps/bigimgs/contactpersonicon48.cpp @@ -0,0 +1,642 @@ +#include + +#ifndef BIGIMGS_CONTACTPERSONICON48_CPP +#define BIGIMGS_CONTACTPERSONICON48_CPP + +static unsigned char bigimgs_contactpersonicon48_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x01, 0xbb, 0x00, 0x00, 0x01, +0xbb, 0x01, 0x3a, 0xec, 0xe3, 0xe2, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x13, 0x3e, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xcd, 0x9b, 0x7b, +0x54, 0x54, 0xd7, 0xbd, 0xc7, 0xbf, 0xfb, 0x9c, +0x33, 0x33, 0xcc, 0x8b, 0x61, 0x78, 0x07, 0x1f, +0x11, 0x08, 0x02, 0xa1, 0xf2, 0x70, 0x79, 0xd3, +0xac, 0x68, 0xc2, 0x58, 0x05, 0x34, 0x11, 0x13, +0x21, 0xa0, 0xde, 0x5e, 0xb3, 0xe8, 0x4a, 0xaf, +0x6d, 0xd3, 0x9a, 0x34, 0x2b, 0x59, 0xd5, 0x2e, +0x6b, 0x44, 0x6f, 0xac, 0x49, 0xba, 0xec, 0x4a, +0xa3, 0x4d, 0x57, 0xb4, 0x09, 0x15, 0x12, 0x2e, +0x86, 0x2c, 0xa2, 0x85, 0x8a, 0x5d, 0xe1, 0x0a, +0xf5, 0x81, 0xd1, 0x58, 0xdf, 0x98, 0xf8, 0x40, +0x59, 0x91, 0xc7, 0x80, 0x0c, 0x33, 0x67, 0xce, +0xbc, 0xce, 0xcc, 0x79, 0xdc, 0x3f, 0x74, 0xa6, +0x0c, 0xc3, 0x20, 0xa8, 0x98, 0xfe, 0xfe, 0x9b, +0xbd, 0xcf, 0xde, 0xe7, 0x7c, 0x3f, 0x67, 0xef, +0xdf, 0xfe, 0xed, 0xdf, 0xd9, 0x43, 0x64, 0x59, +0xc6, 0x64, 0x1a, 0x21, 0x84, 0x54, 0x56, 0x56, +0x12, 0x00, 0xe8, 0xe8, 0xe8, 0x20, 0x59, 0x59, +0x59, 0x32, 0x00, 0x54, 0x56, 0x56, 0xca, 0xf2, +0x64, 0xdf, 0x7c, 0x1c, 0x46, 0x26, 0xeb, 0x19, +0x86, 0x09, 0xa7, 0x2c, 0x16, 0x0b, 0xcd, 0xf3, +0x3c, 0xcd, 0x30, 0x0c, 0xc5, 0x71, 0x9c, 0x4c, +0xd3, 0xb4, 0x38, 0x63, 0xc6, 0x0c, 0x01, 0x80, +0xf4, 0x5d, 0x83, 0x98, 0x14, 0x00, 0x84, 0x10, +0x52, 0x56, 0x56, 0x46, 0x25, 0x26, 0x26, 0x32, +0x43, 0x43, 0x43, 0x2a, 0xaf, 0xd7, 0xab, 0xa1, +0x69, 0x3a, 0x42, 0x14, 0x45, 0x06, 0x80, 0xa8, +0x52, 0xa9, 0x3c, 0x1a, 0x8d, 0xc6, 0xe5, 0xf5, +0x7a, 0x79, 0xa7, 0xd3, 0xe9, 0xab, 0xaf, 0xaf, +0x97, 0xbe, 0x2b, 0x08, 0xf7, 0x1d, 0x80, 0x5f, +0x3c, 0x00, 0xa5, 0x5a, 0xad, 0xd6, 0x38, 0x9d, +0xce, 0x68, 0x9e, 0xe7, 0x63, 0x01, 0x24, 0xea, +0xf5, 0xfa, 0x87, 0x9d, 0x4e, 0x67, 0xb7, 0xcf, +0xe7, 0xeb, 0x53, 0x28, 0x14, 0x83, 0x06, 0x83, +0xc1, 0xaa, 0x56, 0xab, 0x1d, 0x49, 0x49, 0x49, +0xde, 0xca, 0xca, 0x4a, 0xf1, 0xbb, 0x80, 0xc0, +0xdc, 0xcf, 0xce, 0xfc, 0xe2, 0xa7, 0x4e, 0x9d, +0xaa, 0x1c, 0x1c, 0x1c, 0xd4, 0x5b, 0xad, 0xd6, +0x38, 0x9e, 0xe7, 0xa7, 0x3f, 0xf2, 0xc8, 0x23, +0x2f, 0xa4, 0xa6, 0xa6, 0x16, 0xa5, 0xa7, 0xa7, +0x47, 0x5c, 0xbf, 0x7e, 0xdd, 0x77, 0xf9, 0xf2, +0xe5, 0xb6, 0x0b, 0x17, 0x2e, 0x7c, 0x28, 0x08, +0xc2, 0xb7, 0x11, 0x11, 0x11, 0xfd, 0x6e, 0xb7, +0xdb, 0x6e, 0x32, 0x99, 0x78, 0x42, 0xc8, 0x03, +0x87, 0x70, 0xdf, 0x00, 0x8c, 0x14, 0x6f, 0xb7, +0xdb, 0x13, 0x1c, 0x0e, 0x47, 0xca, 0xa3, 0x8f, +0x3e, 0xfa, 0xb3, 0x85, 0x0b, 0x17, 0xe6, 0x3f, +0xf7, 0xdc, 0x73, 0x11, 0xb7, 0x2f, 0x55, 0x1f, +0x39, 0x72, 0x64, 0xb1, 0x46, 0xa3, 0x49, 0x69, +0x6f, 0x6f, 0xdf, 0x42, 0x08, 0xa1, 0x95, 0x4a, +0x25, 0x99, 0x36, 0x6d, 0x1a, 0xfb, 0x5d, 0x40, +0xb8, 0x2f, 0x00, 0x46, 0x8a, 0x67, 0x59, 0x36, +0xd1, 0x6e, 0xb7, 0xa7, 0x64, 0x65, 0x65, 0xbd, +0x54, 0x54, 0x54, 0xf4, 0x54, 0x71, 0x71, 0xb1, +0x6a, 0xf8, 0xf5, 0xf3, 0xe6, 0xcd, 0x53, 0x68, +0xb5, 0xda, 0x4c, 0x59, 0x96, 0x37, 0x1c, 0x3d, +0x7a, 0x74, 0x8b, 0x2c, 0xcb, 0x24, 0x32, 0x32, +0x12, 0xdf, 0x05, 0x84, 0x7b, 0x06, 0x30, 0x96, +0xf8, 0xc2, 0xc2, 0xc2, 0x10, 0xf1, 0x7e, 0xcb, +0xcb, 0xcb, 0xa3, 0x65, 0x59, 0x4e, 0x07, 0xb0, +0xfe, 0xd8, 0xb1, 0x63, 0xbf, 0x95, 0x24, 0x89, +0x44, 0x45, 0x45, 0x61, 0xda, 0xb4, 0x69, 0x6c, +0x65, 0x65, 0xe5, 0x03, 0x83, 0x70, 0x4f, 0x00, +0x86, 0x3b, 0xbc, 0xd1, 0xc4, 0x2f, 0x5d, 0xba, +0x74, 0x54, 0xf1, 0x7e, 0x9b, 0x3d, 0x7b, 0x36, +0x4d, 0x08, 0x49, 0x07, 0xf0, 0x9b, 0x63, 0xc7, +0x8e, 0xbd, 0x09, 0x00, 0x51, 0x51, 0x51, 0xe8, +0xec, 0xec, 0x7c, 0x60, 0x10, 0xee, 0x1a, 0xc0, +0x70, 0xf1, 0x82, 0x20, 0xe8, 0xed, 0x76, 0x7b, +0x82, 0xdd, 0x6e, 0x4f, 0x79, 0xf4, 0xd1, 0x47, +0x7f, 0x36, 0x1e, 0xf1, 0x7e, 0xcb, 0xcb, 0xcb, +0xa3, 0x09, 0x21, 0x69, 0x84, 0x90, 0x37, 0xda, +0xdb, 0xdb, 0x37, 0x03, 0xff, 0x82, 0xf0, 0x20, +0xa6, 0xc3, 0x5d, 0x01, 0x18, 0x2e, 0x1e, 0x80, +0x8e, 0xe7, 0xf9, 0x04, 0x97, 0xcb, 0x95, 0x9a, +0x99, 0x99, 0xf9, 0xd3, 0xc2, 0xc2, 0xc2, 0xfc, +0xa5, 0x4b, 0x97, 0xaa, 0xec, 0x76, 0x3b, 0x8e, +0x1f, 0x3f, 0x0e, 0x87, 0xc3, 0x81, 0x39, 0x73, +0xe6, 0x60, 0xda, 0xb4, 0x69, 0x61, 0xfb, 0xcb, +0xcd, 0xcd, 0xa5, 0x01, 0x3c, 0x02, 0x20, 0x08, +0xc2, 0x83, 0xf0, 0x09, 0x13, 0x06, 0x30, 0x52, +0xbc, 0xcb, 0xe5, 0x4a, 0x70, 0xbb, 0xdd, 0x29, +0x19, 0x19, 0x19, 0xff, 0x5d, 0x54, 0x54, 0x64, +0x7a, 0xf6, 0xd9, 0x67, 0x55, 0x76, 0xbb, 0x1d, +0xfb, 0xf7, 0xef, 0x87, 0xd3, 0xe9, 0x04, 0x00, +0xb4, 0xb4, 0xb4, 0xc0, 0x64, 0x32, 0x21, 0x39, +0x39, 0x39, 0x6c, 0xbf, 0xb9, 0xb9, 0xb9, 0x14, +0x80, 0x54, 0x00, 0xbf, 0x69, 0x6f, 0x6f, 0x7f, +0x93, 0xa2, 0x28, 0x99, 0x61, 0x98, 0x49, 0x87, +0x30, 0x21, 0x00, 0x23, 0xc5, 0x3b, 0x9d, 0xce, +0x44, 0xb7, 0xdb, 0x9d, 0x92, 0x9e, 0x9e, 0xbe, +0xba, 0xb0, 0xb0, 0x70, 0xc1, 0x68, 0xe2, 0x01, +0x40, 0x92, 0x24, 0xb4, 0xb5, 0xb5, 0x01, 0xc0, +0x9d, 0x20, 0xd0, 0xb2, 0x2c, 0xa7, 0x49, 0x92, +0xb4, 0xbe, 0xbd, 0xbd, 0xfd, 0x4d, 0x83, 0xc1, +0x00, 0x96, 0x65, 0x27, 0x15, 0xc2, 0xb8, 0x01, +0x0c, 0x17, 0xaf, 0xd3, 0xe9, 0x74, 0x36, 0x9b, +0x2d, 0xc1, 0x2f, 0xbe, 0xa0, 0xa0, 0x60, 0xc1, +0xb2, 0x65, 0xcb, 0x46, 0x15, 0xef, 0xb7, 0xf1, +0x42, 0xb8, 0xbd, 0x3a, 0xcc, 0x24, 0x84, 0xac, +0x3f, 0x7a, 0xf4, 0xe8, 0x96, 0xc9, 0x86, 0x30, +0x2e, 0x00, 0xa3, 0x89, 0xb7, 0xd9, 0x6c, 0xa9, +0xe9, 0xe9, 0xe9, 0xab, 0x17, 0x2e, 0x5c, 0xb8, +0xa0, 0xa4, 0xa4, 0x64, 0x4c, 0xf1, 0x7e, 0x1b, +0x2f, 0x84, 0xd9, 0xb3, 0x67, 0xd3, 0x00, 0xd2, +0x01, 0x4c, 0x3a, 0x84, 0x3b, 0x02, 0x18, 0x39, +0xec, 0x6d, 0x36, 0x5b, 0x02, 0xc7, 0x71, 0xa9, +0xe9, 0xe9, 0xe9, 0xab, 0x7f, 0xf0, 0x83, 0x1f, +0x2c, 0x28, 0x2d, 0x2d, 0x1d, 0x97, 0x78, 0xbf, +0xfd, 0xbb, 0x41, 0x18, 0x13, 0xc0, 0x68, 0x0e, +0xcf, 0xe5, 0x72, 0x05, 0xc4, 0x97, 0x95, 0x95, +0x4d, 0x48, 0xbc, 0xdf, 0xfe, 0x9d, 0x20, 0x84, +0x05, 0x30, 0x96, 0xf8, 0x85, 0x0b, 0x17, 0x4e, +0xf8, 0xcd, 0x8f, 0xb4, 0x7b, 0x81, 0xe0, 0xf3, +0xf9, 0x02, 0x11, 0x23, 0x00, 0x91, 0x10, 0x82, +0xbb, 0x05, 0x31, 0xea, 0x76, 0x78, 0x2c, 0x6f, +0x5f, 0x50, 0x50, 0x10, 0x76, 0xce, 0x6b, 0x34, +0x1a, 0x30, 0x0c, 0x03, 0x8f, 0xc7, 0x03, 0xaf, +0xd7, 0x3b, 0xae, 0x07, 0xa0, 0x28, 0xea, 0x8e, +0x4b, 0x24, 0x00, 0x9c, 0x3a, 0x75, 0x4a, 0xdc, +0xb3, 0x67, 0xcf, 0xa5, 0xa3, 0x47, 0x8f, 0xfe, +0xd6, 0x60, 0x30, 0x5c, 0xd2, 0x6a, 0xb5, 0x7d, +0x00, 0x58, 0xa3, 0xd1, 0xc8, 0x5b, 0xad, 0x56, +0xc9, 0x9f, 0x69, 0xda, 0xb8, 0x71, 0xa3, 0x3c, +0x11, 0x20, 0x21, 0x00, 0x86, 0x8b, 0x8f, 0x88, +0x88, 0xd0, 0x5b, 0x2c, 0x96, 0x84, 0xe1, 0x4b, +0x5d, 0x38, 0x6f, 0x3f, 0x75, 0xea, 0x54, 0x24, +0x26, 0x26, 0x02, 0xb8, 0xf5, 0x76, 0xaf, 0x5c, +0xb9, 0x02, 0x8e, 0xe3, 0x26, 0x03, 0xc2, 0xe5, +0x63, 0xc7, 0x8e, 0x6d, 0xd1, 0x68, 0x34, 0x57, +0x22, 0x23, 0x23, 0xcd, 0x00, 0x1c, 0x7a, 0xbd, +0xde, 0xe7, 0xf3, 0xf9, 0xa4, 0xd8, 0xd8, 0x58, +0x49, 0x10, 0x04, 0x29, 0x26, 0x26, 0x46, 0xc4, +0x38, 0xb3, 0x4d, 0x41, 0x53, 0xc0, 0x2f, 0xde, +0xe3, 0xf1, 0xa8, 0xa2, 0xa2, 0xa2, 0x74, 0x2c, +0xcb, 0x26, 0xba, 0x5c, 0xae, 0x94, 0x8c, 0x8c, +0x8c, 0x9f, 0x2e, 0x5a, 0xb4, 0x68, 0xd4, 0x20, +0x07, 0xb8, 0xf5, 0xe6, 0xfd, 0xe2, 0xfd, 0x82, +0xd2, 0xd2, 0xd2, 0x70, 0xf1, 0xe2, 0x45, 0x78, +0x3c, 0x9e, 0x3b, 0x02, 0xf0, 0x4f, 0x87, 0xe8, +0xe8, 0x68, 0x18, 0x0c, 0x86, 0xb0, 0xd7, 0xcd, +0x9e, 0x3d, 0x9b, 0xa6, 0x28, 0x6a, 0x26, 0x80, +0xdf, 0x1c, 0x3e, 0x7c, 0xf8, 0x1d, 0x00, 0x5a, +0x9a, 0xa6, 0xad, 0x3c, 0xcf, 0xbb, 0x29, 0x8a, +0x12, 0x3c, 0x1e, 0x8f, 0x8f, 0x61, 0x18, 0x7e, +0x68, 0x68, 0xc8, 0x1d, 0x1d, 0x1d, 0xcd, 0x97, +0x95, 0x95, 0x09, 0x84, 0x90, 0x31, 0xb3, 0x4d, +0x01, 0x00, 0x7e, 0xf1, 0x46, 0xa3, 0x51, 0xc5, +0x71, 0x9c, 0x9e, 0x65, 0xd9, 0x04, 0x96, 0x65, +0x53, 0xb3, 0xb2, 0xb2, 0x7e, 0x5a, 0x54, 0x54, +0x14, 0x08, 0x6f, 0x47, 0x9b, 0xf3, 0x0c, 0x13, +0xea, 0x4a, 0x28, 0x8a, 0x42, 0x5c, 0x5c, 0x1c, +0x6e, 0xdc, 0xb8, 0x71, 0x47, 0x00, 0x7e, 0x08, +0x3d, 0x3d, 0x3d, 0x63, 0x02, 0x00, 0x6e, 0x05, +0x4b, 0x84, 0x90, 0x34, 0x59, 0x96, 0xd7, 0x1f, +0x3a, 0x74, 0xe8, 0x03, 0x85, 0x42, 0x61, 0x61, +0x18, 0xc6, 0x45, 0x51, 0x14, 0xaf, 0x54, 0x2a, +0x5d, 0x0a, 0x85, 0x82, 0x55, 0x2a, 0x95, 0x96, +0xc1, 0xc1, 0x41, 0x2b, 0x00, 0x67, 0x59, 0x59, +0x99, 0x77, 0x2c, 0x08, 0xcc, 0x70, 0xf1, 0x53, +0xa7, 0x4e, 0x55, 0x9a, 0xcd, 0x66, 0x3d, 0xc7, +0x71, 0x89, 0x76, 0xbb, 0x3d, 0x75, 0xd6, 0xac, +0x59, 0x3f, 0x2f, 0x2a, 0x2a, 0x9a, 0x5b, 0x5c, +0x5c, 0x3c, 0xa6, 0xc3, 0x73, 0xbb, 0xdd, 0x10, +0x45, 0x11, 0x34, 0x4d, 0x07, 0x95, 0xc7, 0xc6, +0xc6, 0xa2, 0xa7, 0xa7, 0x07, 0x92, 0x24, 0xdd, +0x11, 0x80, 0x52, 0xa9, 0xc4, 0x8c, 0x19, 0x33, +0x46, 0xad, 0xf3, 0x7a, 0xbd, 0x50, 0x2a, 0x95, +0x81, 0xdf, 0x39, 0x39, 0x39, 0x34, 0x45, 0x51, +0xc9, 0x31, 0x31, 0x31, 0x1b, 0x28, 0x8a, 0x12, +0x08, 0x21, 0x32, 0x00, 0x99, 0x10, 0x22, 0x99, +0xcd, 0xe6, 0x7f, 0x9e, 0x39, 0x73, 0x66, 0x87, +0x56, 0xab, 0xfd, 0x36, 0x32, 0x32, 0xb2, 0x3f, +0x36, 0x36, 0x96, 0x1b, 0x0b, 0x02, 0x01, 0x10, +0x34, 0xe7, 0xad, 0x56, 0xeb, 0x43, 0x4e, 0xa7, +0x33, 0x75, 0xd6, 0xac, 0x59, 0xaf, 0x2c, 0x5a, +0xb4, 0xe8, 0xf1, 0xc5, 0x8b, 0x17, 0x2b, 0xc7, +0xe3, 0xed, 0xf5, 0x7a, 0x3d, 0xd2, 0xd2, 0xd2, +0x40, 0x51, 0x54, 0x50, 0x39, 0xc7, 0x71, 0x70, +0xbb, 0xdd, 0xf0, 0x7a, 0xbd, 0xe0, 0x79, 0x1e, +0x36, 0x9b, 0x0d, 0x23, 0x9f, 0x43, 0xa9, 0x54, +0x62, 0xd1, 0xa2, 0x45, 0x88, 0x8b, 0x8b, 0x0b, +0xe9, 0xb7, 0xa1, 0xa1, 0x01, 0xa2, 0x28, 0xa2, +0xac, 0xac, 0x2c, 0x3c, 0xbd, 0x61, 0xd6, 0xd2, +0xd2, 0xe2, 0x6d, 0x6a, 0x6a, 0x3a, 0x76, 0xf6, +0xec, 0xd9, 0x77, 0x0d, 0x06, 0x43, 0xa7, 0x52, +0xa9, 0x34, 0x6b, 0xb5, 0x5a, 0x6e, 0xc6, 0x8c, +0x19, 0xde, 0x8d, 0x1b, 0x37, 0x86, 0xbc, 0x09, +0xba, 0xb2, 0xb2, 0x92, 0xa2, 0x69, 0x5a, 0x21, +0x8a, 0xa2, 0xd6, 0xe1, 0x70, 0x24, 0xda, 0xed, +0xf6, 0xd4, 0xec, 0xec, 0xec, 0xd7, 0x9f, 0x79, +0xe6, 0x99, 0xc7, 0x16, 0x2d, 0x5a, 0xa4, 0xbc, +0xdd, 0x29, 0xac, 0x56, 0xeb, 0x98, 0x37, 0xf6, +0x7a, 0xbd, 0xb0, 0x5a, 0xad, 0x90, 0x65, 0x19, +0x6a, 0xb5, 0x3a, 0x00, 0x42, 0xa5, 0x52, 0x41, +0xab, 0xd5, 0x22, 0x32, 0x32, 0x12, 0xd1, 0xd1, +0xd1, 0x88, 0x8d, 0x8d, 0x85, 0xcf, 0xe7, 0x83, +0xdb, 0xed, 0xbe, 0xa3, 0xf8, 0xe6, 0xe6, 0x66, +0x74, 0x77, 0x77, 0xa3, 0xa2, 0xa2, 0x62, 0x5c, +0xe2, 0x01, 0x20, 0x25, 0x25, 0x85, 0xa6, 0x69, +0x3a, 0xc9, 0x6e, 0xb7, 0x4f, 0xe9, 0xee, 0xee, +0xbe, 0x48, 0x51, 0x94, 0x5b, 0xad, 0x56, 0xf3, +0x2e, 0x97, 0x4b, 0x28, 0x2e, 0x2e, 0x0e, 0x19, +0x01, 0xb4, 0xc9, 0x64, 0xa2, 0x7b, 0x7a, 0x7a, +0xd4, 0x3c, 0xcf, 0xc7, 0x72, 0x1c, 0x97, 0x9c, +0x99, 0x99, 0xb9, 0xa6, 0xb8, 0xb8, 0xf8, 0x89, +0xc2, 0xc2, 0x42, 0x25, 0x00, 0xc8, 0xb2, 0x8c, +0x13, 0x27, 0x4e, 0x40, 0x14, 0xc5, 0x3b, 0xde, +0x5c, 0x10, 0x04, 0xd8, 0xed, 0x76, 0x0c, 0x0c, +0x0c, 0x40, 0xa7, 0xd3, 0x41, 0xa5, 0x0a, 0x4d, +0x09, 0xd0, 0x34, 0x0d, 0xa3, 0xd1, 0x08, 0x9e, +0xe7, 0x21, 0x8a, 0x62, 0x58, 0xf1, 0xad, 0xad, +0xad, 0x38, 0x7e, 0xfc, 0x38, 0x5e, 0x7b, 0xed, +0xb5, 0x71, 0x8b, 0xf7, 0x5b, 0x6a, 0x6a, 0x2a, +0x4d, 0x08, 0x49, 0x72, 0x3a, 0x9d, 0xf1, 0x66, +0xb3, 0xf9, 0x9f, 0x0c, 0xc3, 0x38, 0x08, 0x21, +0xfc, 0xd9, 0xb3, 0x67, 0x25, 0x93, 0xc9, 0x14, +0x04, 0x81, 0xb2, 0x58, 0x2c, 0xb4, 0x24, 0x49, +0x6a, 0x8f, 0xc7, 0x13, 0x9b, 0x9c, 0x9c, 0x5c, +0x96, 0x9f, 0x9f, 0xff, 0x54, 0x41, 0x41, 0x41, +0x60, 0xc2, 0x11, 0x42, 0x90, 0x9d, 0x9d, 0x3d, +0xa1, 0x07, 0x90, 0x24, 0x69, 0x4c, 0xef, 0x6f, +0x36, 0x9b, 0xc1, 0x71, 0x5c, 0x58, 0xf1, 0x1d, +0x1d, 0x1d, 0xf8, 0xea, 0xab, 0xaf, 0xb0, 0x7e, +0xfd, 0xfa, 0xa0, 0xf2, 0xc6, 0xc6, 0x46, 0x98, +0xcd, 0xe6, 0x71, 0x3d, 0x43, 0x51, 0x51, 0x91, +0xf2, 0x7b, 0xdf, 0xfb, 0xde, 0x3c, 0xb5, 0x5a, +0x9d, 0x26, 0xcb, 0xb2, 0x5a, 0xa3, 0xd1, 0x30, +0x1d, 0x1d, 0x1d, 0x84, 0x10, 0x42, 0x86, 0x5f, +0x47, 0xf1, 0x3c, 0x4f, 0xcb, 0xb2, 0xac, 0x16, +0x04, 0x21, 0x76, 0xe6, 0xcc, 0x99, 0x25, 0xcf, +0x3f, 0xff, 0x7c, 0xc4, 0xc8, 0xce, 0xb2, 0xb3, +0xb3, 0x91, 0x93, 0x93, 0x33, 0xae, 0x1b, 0xfb, +0x4d, 0x10, 0x84, 0x51, 0xcb, 0xfb, 0xfb, 0xfb, +0x31, 0x30, 0x30, 0x10, 0x56, 0xfc, 0x2f, 0x7e, +0xf1, 0x0b, 0xb8, 0xdd, 0x6e, 0xfc, 0xea, 0x57, +0xbf, 0xc2, 0xf0, 0x67, 0x3d, 0x74, 0xe8, 0x10, +0x9c, 0x4e, 0x67, 0xd0, 0x72, 0x7b, 0x27, 0x33, +0x18, 0x0c, 0x94, 0x28, 0x8a, 0x06, 0x8f, 0xc7, +0xa3, 0xa2, 0x69, 0x9a, 0xca, 0xca, 0xca, 0x22, +0x23, 0xaf, 0xa1, 0x22, 0x23, 0x23, 0x89, 0x2c, +0xcb, 0x74, 0x74, 0x74, 0x74, 0x46, 0x46, 0x46, +0x46, 0xd8, 0x34, 0xd6, 0x9c, 0x39, 0x73, 0x26, +0x04, 0x61, 0x34, 0x00, 0x66, 0xb3, 0x19, 0xfd, +0xfd, 0xfd, 0x61, 0xc5, 0xb7, 0xb5, 0xb5, 0xc1, +0x62, 0xb1, 0x60, 0xce, 0x9c, 0x39, 0x81, 0x32, +0x87, 0xc3, 0x81, 0x6d, 0xdb, 0xb6, 0x21, 0x33, +0x33, 0x13, 0x2b, 0x56, 0xac, 0x18, 0xf7, 0xfd, +0x87, 0x99, 0x52, 0x14, 0x45, 0x85, 0xc5, 0x62, +0xa1, 0x7b, 0x7b, 0x7b, 0x43, 0x01, 0xd8, 0xed, +0x76, 0x99, 0x10, 0x22, 0x3a, 0x1c, 0x8e, 0xce, +0xaf, 0xbf, 0xfe, 0xda, 0x35, 0x56, 0xe0, 0x34, +0x11, 0x08, 0x0e, 0x87, 0x23, 0xe8, 0xb7, 0xd9, +0x6c, 0x1e, 0xf3, 0xcd, 0x03, 0xc0, 0x94, 0x29, +0x53, 0xf0, 0xf1, 0xc7, 0x1f, 0x07, 0x7e, 0xb7, +0xb7, 0xb7, 0xa3, 0xaa, 0xaa, 0x0a, 0xbf, 0xfc, +0xe5, 0x2f, 0x47, 0x6d, 0xd3, 0xdb, 0xdb, 0x3b, +0xa6, 0x6f, 0xa2, 0x28, 0x8a, 0x88, 0xa2, 0x18, +0x01, 0x40, 0x45, 0xd3, 0xb4, 0x42, 0xa5, 0x52, +0x51, 0xb8, 0xb5, 0xf2, 0xfd, 0xeb, 0x1a, 0x95, +0x4a, 0x25, 0xea, 0x74, 0x3a, 0xb7, 0x24, 0x49, +0x7d, 0x57, 0xae, 0x5c, 0x69, 0xfc, 0xec, 0xb3, +0xcf, 0xc6, 0x0c, 0xdd, 0xc6, 0x0b, 0xc1, 0xe9, +0x74, 0x06, 0x3c, 0xfd, 0x9d, 0x86, 0xbd, 0xdf, +0xd2, 0xd2, 0xd2, 0x02, 0xb1, 0x04, 0xcb, 0xb2, +0x78, 0xe5, 0x95, 0x57, 0xf0, 0xe3, 0x1f, 0xff, +0x38, 0x24, 0xbe, 0x10, 0x45, 0x11, 0xdb, 0xb7, +0x6f, 0x87, 0xd5, 0x6a, 0x0d, 0xa9, 0x1b, 0x61, +0x84, 0xe7, 0xf9, 0x48, 0x9e, 0xe7, 0xa3, 0x3c, +0x1e, 0x8f, 0xd6, 0xe9, 0x74, 0x2a, 0x4d, 0x26, +0x13, 0x35, 0xdc, 0x0f, 0xd0, 0x4f, 0x3f, 0xfd, +0x34, 0xe9, 0xef, 0xef, 0x27, 0x84, 0x10, 0x32, +0x30, 0x30, 0xd0, 0x33, 0x34, 0x34, 0x64, 0x60, +0x59, 0x36, 0x79, 0xd6, 0xac, 0x59, 0xcc, 0x08, +0x7f, 0x11, 0xb0, 0xa4, 0xa4, 0x24, 0x48, 0x92, +0x84, 0xfe, 0xfe, 0xfe, 0x31, 0x21, 0x38, 0x1c, +0x0e, 0x48, 0x92, 0x34, 0x2e, 0xf1, 0x23, 0xad, +0xbf, 0xbf, 0x1f, 0xab, 0x57, 0xaf, 0x86, 0x4e, +0xa7, 0x0b, 0x2a, 0xf7, 0xf9, 0x7c, 0x58, 0xb7, +0x6e, 0x1d, 0x56, 0xad, 0x5a, 0x85, 0x99, 0x33, +0x67, 0x8e, 0xd9, 0x07, 0x45, 0x51, 0x94, 0xd5, +0x6a, 0x4d, 0xe8, 0xec, 0xec, 0x3c, 0x4f, 0x08, +0x71, 0x52, 0x14, 0xe5, 0x31, 0x1a, 0x8d, 0x42, +0x7a, 0x7a, 0xba, 0x58, 0x5e, 0x5e, 0x8e, 0xca, +0xca, 0x4a, 0xd0, 0x26, 0x93, 0x09, 0x31, 0x31, +0x31, 0x92, 0xc3, 0xe1, 0x90, 0x24, 0x49, 0x12, +0xcc, 0x66, 0x73, 0x97, 0xc5, 0x62, 0x51, 0xb2, +0x2c, 0xfb, 0x48, 0x4e, 0x4e, 0xce, 0x3d, 0x41, +0x10, 0x04, 0x01, 0x1e, 0x8f, 0x67, 0x54, 0xf1, +0x92, 0x24, 0x21, 0x5c, 0xdf, 0xc0, 0xad, 0xac, +0x70, 0x44, 0x44, 0xb0, 0x3f, 0x66, 0x59, 0x16, +0xd5, 0xd5, 0xd5, 0x58, 0xb3, 0x66, 0x0d, 0x12, +0x12, 0x12, 0x42, 0xda, 0x74, 0x74, 0x74, 0xe0, +0xf0, 0xe1, 0xc3, 0x98, 0x3e, 0x7d, 0x3a, 0x94, +0x4a, 0x25, 0x62, 0x62, 0x62, 0x48, 0x5c, 0x5c, +0x9c, 0xc1, 0xe7, 0xf3, 0xa5, 0x5f, 0xb9, 0x72, +0xe5, 0x02, 0x21, 0xc4, 0xc3, 0x30, 0x0c, 0xaf, +0x56, 0xab, 0x7d, 0xcf, 0x3d, 0xf7, 0x9c, 0x64, +0x32, 0x99, 0x64, 0xba, 0xad, 0xad, 0x0d, 0x26, +0x93, 0x49, 0x66, 0x59, 0x56, 0x22, 0x84, 0x08, +0x84, 0x10, 0xdf, 0xe0, 0xe0, 0xe0, 0x8d, 0xc1, +0xc1, 0x41, 0xb0, 0x2c, 0x3b, 0x33, 0x27, 0x27, +0x47, 0x71, 0xb7, 0x10, 0xc2, 0x05, 0x39, 0xdb, +0xb7, 0x6f, 0xc7, 0xea, 0xd5, 0xab, 0xf1, 0xd4, +0x53, 0x4f, 0x21, 0x3e, 0x3e, 0x3e, 0x2c, 0x84, +0x91, 0xb6, 0x72, 0xe5, 0x4a, 0x64, 0x67, 0x67, +0xe3, 0xb1, 0xc7, 0x1e, 0x0b, 0x2a, 0x97, 0x65, +0x19, 0x1f, 0x7d, 0xf4, 0x11, 0xde, 0x7b, 0xef, +0x3d, 0x6c, 0xd8, 0xb0, 0x01, 0x1a, 0x8d, 0x26, +0x50, 0x17, 0x1f, 0x1f, 0x4f, 0xc5, 0xc6, 0xc6, +0x46, 0x0b, 0x82, 0x90, 0xf1, 0xcd, 0x37, 0xdf, +0x9c, 0xa6, 0x28, 0xca, 0x45, 0xd3, 0xb4, 0x87, +0xe7, 0x79, 0xa1, 0xb8, 0xb8, 0x58, 0xa6, 0x65, +0x59, 0xc6, 0xfc, 0xf9, 0xf3, 0x91, 0x96, 0x96, +0x26, 0xab, 0xd5, 0x6a, 0x91, 0xa2, 0x28, 0x1f, +0x4d, 0xd3, 0xde, 0xdb, 0xd3, 0x81, 0xd8, 0x6c, +0xb6, 0x99, 0xb9, 0xb9, 0xb9, 0x13, 0x86, 0x10, +0x4e, 0x3c, 0xcf, 0xf3, 0x58, 0xbc, 0x78, 0x31, +0x2e, 0x5d, 0xba, 0x84, 0xa4, 0xa4, 0xa4, 0x71, +0x8b, 0x07, 0x6e, 0x45, 0x95, 0x25, 0x25, 0x25, +0x41, 0xf3, 0x5e, 0x14, 0x45, 0x24, 0x27, 0x27, +0xe3, 0xef, 0x7f, 0xff, 0x3b, 0x76, 0xee, 0xdc, +0x89, 0xe9, 0xd3, 0xa7, 0x87, 0xb4, 0x8b, 0x8b, +0x8b, 0xa3, 0xb4, 0x5a, 0xad, 0xd1, 0xe3, 0xf1, +0xc4, 0x77, 0x75, 0x75, 0x9d, 0x8e, 0x88, 0x88, +0x70, 0xa8, 0x54, 0x2a, 0xfe, 0xd4, 0xa9, 0x53, +0x22, 0x73, 0x9b, 0xa0, 0x4c, 0x08, 0x91, 0xca, +0xca, 0xca, 0x7c, 0x5a, 0xad, 0xd6, 0xa1, 0x50, +0x28, 0x64, 0x8a, 0xa2, 0xe4, 0xee, 0xee, 0xee, +0xba, 0xd6, 0xd6, 0x56, 0x09, 0xc0, 0xf2, 0x8a, +0x8a, 0x0a, 0x75, 0x38, 0x08, 0xfe, 0x65, 0xeb, +0xec, 0xd9, 0xb3, 0x63, 0x8a, 0x07, 0x80, 0x53, +0xa7, 0x4e, 0x21, 0x23, 0x23, 0x03, 0x6a, 0xb5, +0x3a, 0xa8, 0xfc, 0xc8, 0x91, 0x23, 0xa0, 0x28, +0x0a, 0x4f, 0x3c, 0xf1, 0x44, 0x58, 0x00, 0xcb, +0x96, 0x2d, 0x0b, 0xfa, 0xcd, 0xf3, 0x3c, 0x76, +0xed, 0xda, 0x05, 0x9f, 0xcf, 0x87, 0x4b, 0x97, +0x2e, 0x21, 0x2a, 0x2a, 0x2a, 0x6c, 0xdb, 0xbc, +0xbc, 0x3c, 0x45, 0x4f, 0x4f, 0xcf, 0x13, 0x5d, +0x5d, 0x5d, 0x39, 0x1c, 0xc7, 0xf5, 0xa9, 0x54, +0x2a, 0x16, 0x00, 0x15, 0xd8, 0xc7, 0x8e, 0x80, +0xe0, 0xd4, 0x6a, 0xb5, 0xf0, 0x7a, 0xbd, 0xe8, +0xe9, 0xe9, 0xf9, 0xb4, 0xb5, 0xb5, 0x15, 0xb2, +0x2c, 0x2f, 0xff, 0xd1, 0x8f, 0x7e, 0x34, 0x26, +0x84, 0x84, 0x84, 0x04, 0xdc, 0xbc, 0x79, 0x13, +0x69, 0x69, 0x69, 0xd0, 0xeb, 0xf5, 0x41, 0xf5, +0x07, 0x0f, 0x1e, 0xc4, 0x9a, 0x35, 0x6b, 0x30, +0x67, 0xce, 0x1c, 0xcc, 0x9d, 0x3b, 0x37, 0xa8, +0xee, 0xcc, 0x99, 0x33, 0xd8, 0xbf, 0x7f, 0x3f, +0xb6, 0x6c, 0xd9, 0x12, 0x56, 0xc0, 0x68, 0xb6, +0x66, 0xcd, 0x1a, 0x34, 0x37, 0x37, 0x63, 0xf7, +0xee, 0xdd, 0x41, 0xe2, 0x0f, 0x1c, 0x38, 0x80, +0x81, 0x81, 0x01, 0x2c, 0x5b, 0xb6, 0x2c, 0xe8, +0x39, 0x72, 0x73, 0x73, 0x35, 0x67, 0xce, 0x9c, +0xf9, 0x8f, 0x93, 0x27, 0x4f, 0xfe, 0x1f, 0xc7, +0x71, 0x54, 0x4c, 0x4c, 0x4c, 0x70, 0x42, 0x64, +0x24, 0x04, 0xa3, 0xd1, 0x08, 0x00, 0xe8, 0xe9, +0xe9, 0xf9, 0xf4, 0x76, 0xfe, 0x6e, 0x4c, 0x08, +0xd3, 0xa6, 0x4d, 0x0b, 0xfb, 0x09, 0xec, 0x93, +0x4f, 0x3e, 0x41, 0x5f, 0x5f, 0x1f, 0xbe, 0xfc, +0xf2, 0x4b, 0x7c, 0xfe, 0xf9, 0xe7, 0x81, 0x72, +0x51, 0x14, 0x51, 0x5a, 0x5a, 0x8a, 0xda, 0xda, +0xda, 0x31, 0x9d, 0xe2, 0x70, 0xeb, 0xe8, 0xe8, +0x40, 0x7b, 0x7b, 0x3b, 0x2c, 0x16, 0x0b, 0x36, +0x6f, 0xde, 0x8c, 0x82, 0x82, 0x02, 0xff, 0xf3, +0xa3, 0xaa, 0xaa, 0x0a, 0xbf, 0xfb, 0xdd, 0xef, +0xf0, 0xf5, 0xd7, 0x5f, 0x87, 0xb4, 0xbb, 0x76, +0xed, 0x9a, 0xa7, 0xb7, 0xb7, 0xf7, 0x22, 0x45, +0x51, 0x82, 0x52, 0xa9, 0x94, 0x81, 0x51, 0x92, +0xa2, 0x7e, 0x08, 0x95, 0x95, 0x95, 0xde, 0xae, +0xae, 0x2e, 0x4c, 0x14, 0xc2, 0x88, 0xbe, 0xf0, +0xe7, 0x3f, 0xff, 0x19, 0x19, 0x19, 0x19, 0x30, +0x9b, 0xcd, 0xa8, 0xaa, 0xaa, 0xc2, 0xb3, 0xcf, +0x3e, 0x0b, 0x00, 0xb0, 0x58, 0x2c, 0x28, 0x29, +0x29, 0x81, 0xc7, 0xe3, 0x41, 0x4a, 0x4a, 0x4a, +0x88, 0x63, 0x1b, 0xcb, 0x9a, 0x9a, 0x9a, 0xb0, +0x75, 0xeb, 0x56, 0x68, 0x34, 0x1a, 0xbc, 0xf9, +0xe6, 0x9b, 0x81, 0xf2, 0x5d, 0xbb, 0x76, 0xa1, +0xa1, 0xa1, 0x01, 0xed, 0xed, 0xed, 0x21, 0x6d, +0x7a, 0x7b, 0x7b, 0xa5, 0x8e, 0x8e, 0x8e, 0xae, +0xab, 0x57, 0xaf, 0x7e, 0x15, 0x17, 0x17, 0xe7, +0x72, 0xbb, 0xdd, 0x42, 0x47, 0x47, 0x87, 0x3c, +0x6a, 0x56, 0xf8, 0x36, 0x04, 0xdc, 0x0b, 0x84, +0x96, 0x96, 0x16, 0x7c, 0xf9, 0xe5, 0x97, 0xd8, +0xb0, 0x61, 0x03, 0xe2, 0xe2, 0xe2, 0xa0, 0xd1, +0x68, 0x30, 0x6b, 0xd6, 0xac, 0x40, 0xfd, 0x91, +0x23, 0x47, 0x20, 0x08, 0x02, 0xde, 0x7b, 0xef, +0x3d, 0x7c, 0xff, 0xfb, 0xdf, 0x0f, 0x69, 0xcf, +0x71, 0x5c, 0xd8, 0xd8, 0x7f, 0xed, 0xda, 0xb5, +0xa8, 0xa8, 0xa8, 0x80, 0x42, 0xa1, 0x40, 0x74, +0x74, 0x34, 0x80, 0x5b, 0x1b, 0xa5, 0x6d, 0xdb, +0xb6, 0x61, 0xf7, 0xee, 0xdd, 0x81, 0xe7, 0xf5, +0x9b, 0xc5, 0x62, 0x91, 0x9b, 0x9a, 0x9a, 0xcc, +0xfb, 0xf6, 0xed, 0xdb, 0xa2, 0x52, 0xa9, 0xfa, +0x19, 0x86, 0x71, 0xb8, 0xdd, 0x6e, 0xdf, 0xa7, +0x9f, 0x7e, 0x2a, 0x85, 0x4d, 0x8b, 0x0f, 0x87, +0x60, 0xb1, 0x58, 0x02, 0xf1, 0xf1, 0x78, 0x20, +0xb8, 0x5c, 0x2e, 0x14, 0x15, 0x15, 0x81, 0x61, +0x18, 0xe8, 0x74, 0x3a, 0xbc, 0xf6, 0xda, 0x6b, +0x28, 0x2c, 0x2c, 0x44, 0x4a, 0x4a, 0x0a, 0x06, +0x06, 0x06, 0xe0, 0xf5, 0x7a, 0x71, 0xf8, 0xf0, +0x61, 0x14, 0x16, 0x16, 0x8e, 0x2a, 0xfe, 0xfa, +0xf5, 0xeb, 0x78, 0xfb, 0xed, 0xb7, 0xf1, 0xc7, +0x3f, 0xfe, 0x31, 0xa8, 0xfc, 0xdc, 0xb9, 0x73, +0xf0, 0x7a, 0xbd, 0xb8, 0x71, 0xe3, 0x46, 0x90, +0x43, 0xb4, 0xdb, 0xed, 0x28, 0x2f, 0x2f, 0xc7, +0xde, 0xbd, 0x7b, 0xf1, 0xf8, 0xe3, 0x8f, 0x87, +0x88, 0xdf, 0xbb, 0x77, 0xaf, 0xb9, 0xbe, 0xbe, +0xbe, 0x52, 0xa9, 0x54, 0x5e, 0xd1, 0xe9, 0x74, +0x37, 0x23, 0x22, 0x22, 0xdc, 0x6e, 0xb7, 0x5b, +0x24, 0x84, 0x8c, 0xfd, 0x61, 0x64, 0x18, 0x04, +0x1f, 0x80, 0x40, 0x70, 0x7f, 0x27, 0x08, 0x43, +0x43, 0x43, 0x20, 0x84, 0x40, 0xa1, 0x50, 0x20, +0x3e, 0x3e, 0x1e, 0x6b, 0xd7, 0xae, 0x05, 0x70, +0x2b, 0x76, 0xcf, 0xcc, 0xcc, 0x0c, 0xcc, 0x7b, +0x7f, 0xb9, 0xdf, 0x44, 0x51, 0x0c, 0xbc, 0xc1, +0xf7, 0xdf, 0x7f, 0x3f, 0x28, 0xbb, 0x74, 0xf0, +0xe0, 0x41, 0x2c, 0x59, 0xb2, 0x04, 0xaf, 0xbe, +0xfa, 0x2a, 0x36, 0x6e, 0xdc, 0x18, 0x00, 0x7d, +0xed, 0xda, 0x35, 0x7c, 0xf1, 0xc5, 0x17, 0x28, +0x2d, 0x2d, 0x45, 0x51, 0x51, 0xd1, 0x68, 0xe2, +0xfb, 0xf7, 0xec, 0xd9, 0xb3, 0x89, 0x61, 0x98, +0x0b, 0x0a, 0x85, 0xa2, 0x57, 0x14, 0x45, 0xfb, +0xe5, 0xcb, 0x97, 0xbd, 0x6d, 0x6d, 0x6d, 0x92, +0x2c, 0xcb, 0xa3, 0x4f, 0x81, 0x7b, 0x85, 0xe0, +0x72, 0xb9, 0x20, 0xcb, 0x32, 0x7e, 0xff, 0xfb, +0xdf, 0x63, 0xde, 0xbc, 0x79, 0x81, 0xf2, 0x03, +0x07, 0x0e, 0xa0, 0xac, 0xac, 0x0c, 0xaf, 0xbf, +0xfe, 0x3a, 0x32, 0x32, 0x32, 0x46, 0xde, 0x07, +0x2b, 0x56, 0xac, 0xc0, 0x5b, 0x6f, 0xbd, 0x85, +0xd4, 0xd4, 0xd4, 0xa0, 0x3a, 0x49, 0x92, 0x70, +0xe2, 0xc4, 0x09, 0xe4, 0xe4, 0xe4, 0x04, 0x56, +0x8a, 0x96, 0x96, 0x16, 0x54, 0x54, 0x54, 0x60, +0x68, 0x68, 0x08, 0x0b, 0x16, 0x2c, 0xc0, 0xce, +0x9d, 0x3b, 0x43, 0xc4, 0xef, 0xdb, 0xb7, 0x6f, +0xa0, 0xbe, 0xbe, 0x7e, 0x33, 0x21, 0xe4, 0xbc, +0x5e, 0xaf, 0xef, 0xe1, 0x79, 0xde, 0x96, 0x95, +0x95, 0xe5, 0x19, 0x7e, 0x24, 0x6f, 0x5c, 0x1f, +0x47, 0x27, 0x0a, 0x41, 0xa3, 0xd1, 0xa0, 0xb6, +0xb6, 0x16, 0xcb, 0x97, 0x2f, 0x87, 0x28, 0x8a, +0xa8, 0xad, 0xad, 0xc5, 0x82, 0x05, 0x0b, 0x50, +0x57, 0x57, 0x87, 0xb5, 0x6b, 0xd7, 0x86, 0x88, +0x07, 0x80, 0xf7, 0xdf, 0x7f, 0x1f, 0x3f, 0xfc, +0xe1, 0x0f, 0x43, 0xc4, 0x03, 0xc0, 0x92, 0x25, +0x4b, 0x60, 0xb1, 0x58, 0x82, 0xa6, 0xc4, 0xf4, +0xe9, 0xd3, 0x41, 0x08, 0x81, 0xdb, 0xed, 0xc6, +0x4b, 0x2f, 0xbd, 0x84, 0x87, 0x1e, 0x7a, 0x28, +0x50, 0x67, 0xb5, 0x5a, 0xe5, 0x7d, 0xfb, 0xf6, +0x0d, 0x7c, 0xf6, 0xd9, 0x67, 0x9b, 0x24, 0x49, +0x3a, 0x17, 0x15, 0x15, 0xd5, 0xad, 0xd7, 0xeb, +0xad, 0x46, 0xa3, 0xd1, 0x33, 0xf2, 0x3c, 0xe2, +0x84, 0x0e, 0x4a, 0xfa, 0x8f, 0xbf, 0x5a, 0x2c, +0x16, 0x05, 0xcb, 0xb2, 0x3a, 0xab, 0xd5, 0x1a, +0xe7, 0x74, 0x3a, 0x93, 0xa7, 0x4c, 0x99, 0x52, +0x6e, 0x32, 0x99, 0x46, 0x9d, 0x0e, 0x3b, 0x76, +0xec, 0xc0, 0xba, 0x75, 0xeb, 0x90, 0x98, 0x98, +0x88, 0x17, 0x5f, 0x7c, 0x11, 0xbf, 0xfe, 0xf5, +0xaf, 0x83, 0xea, 0xaf, 0x5d, 0xbb, 0x86, 0x0f, +0x3f, 0xfc, 0x10, 0x2f, 0xbf, 0xfc, 0xf2, 0xa8, +0xf1, 0xfd, 0xd0, 0xd0, 0x10, 0xe6, 0xce, 0x9d, +0x8b, 0xba, 0xba, 0xba, 0x90, 0x5d, 0xe8, 0xae, +0x5d, 0xbb, 0xb0, 0x6d, 0xdb, 0x36, 0x1c, 0x3c, +0x78, 0x30, 0x10, 0x55, 0xda, 0x6c, 0x36, 0xf9, +0xf3, 0xcf, 0x3f, 0x1f, 0xa8, 0xaf, 0xaf, 0xdf, +0x04, 0xe0, 0x9c, 0x4e, 0xa7, 0xbb, 0xa1, 0xd7, +0xeb, 0xad, 0x0c, 0xc3, 0x78, 0x3e, 0xf8, 0xe0, +0x03, 0x01, 0x40, 0x90, 0xe0, 0x09, 0x9f, 0x14, +0x9d, 0x28, 0x84, 0xb2, 0xb2, 0x32, 0x3c, 0xf9, +0xe4, 0x93, 0xa8, 0xa8, 0xa8, 0x40, 0x64, 0x64, +0x64, 0x48, 0x7f, 0xf9, 0xf9, 0xf9, 0x78, 0xf7, +0xdd, 0x77, 0x91, 0x97, 0x97, 0x17, 0x52, 0xb7, +0x76, 0xed, 0x5a, 0x54, 0x55, 0x55, 0xe1, 0xc5, +0x17, 0x5f, 0xc4, 0xd6, 0xad, 0x5b, 0x03, 0xe5, +0x3c, 0xcf, 0x43, 0xa1, 0x50, 0x84, 0x64, 0xa0, +0x59, 0x96, 0x95, 0xf7, 0xee, 0xdd, 0x3b, 0xb0, +0x67, 0xcf, 0x9e, 0x71, 0x89, 0x07, 0xee, 0xe2, +0x88, 0xcc, 0x1d, 0xa6, 0x03, 0x01, 0x50, 0x3e, +0x1c, 0xc2, 0x93, 0x4f, 0x3e, 0x89, 0xd2, 0xd2, +0xd2, 0x10, 0xf1, 0x03, 0x03, 0x03, 0xf8, 0xf6, +0xdb, 0x6f, 0xa1, 0xd7, 0xeb, 0x43, 0xc4, 0xbb, +0x5c, 0x2e, 0xf4, 0xf6, 0xf6, 0xe2, 0xc4, 0x89, +0x13, 0xe8, 0xef, 0xef, 0x0f, 0x04, 0x48, 0x36, +0x9b, 0x0d, 0xcd, 0xcd, 0xcd, 0x98, 0x3b, 0x77, +0x6e, 0x48, 0xcc, 0x6f, 0xb3, 0xd9, 0xf0, 0xd7, +0xbf, 0xfe, 0x75, 0x42, 0xe2, 0x01, 0x80, 0x1a, +0xad, 0x70, 0x3c, 0x10, 0x2a, 0x2b, 0x2b, 0xe5, +0x98, 0x98, 0x18, 0x9f, 0xc1, 0x60, 0x70, 0x18, +0x8d, 0xc6, 0x9b, 0x46, 0xa3, 0xf1, 0x7a, 0x77, +0x77, 0xf7, 0xa7, 0xad, 0xad, 0xad, 0xf5, 0x55, +0x55, 0x55, 0x6e, 0xff, 0xc8, 0x7a, 0xf9, 0xe5, +0x97, 0x31, 0x65, 0xca, 0x94, 0xa0, 0xf6, 0x6f, +0xbd, 0xf5, 0x16, 0xf2, 0xf2, 0xf2, 0xf0, 0xd1, +0x47, 0x1f, 0xa1, 0xba, 0xba, 0x3a, 0xa8, 0x6e, +0xfb, 0xf6, 0xed, 0x58, 0xba, 0x74, 0x29, 0x4e, +0x9e, 0x3c, 0x89, 0x96, 0x96, 0x96, 0x80, 0xf8, +0xbe, 0xbe, 0x3e, 0xfc, 0xe4, 0x27, 0x3f, 0x41, +0x6e, 0x6e, 0x6e, 0x88, 0x78, 0x96, 0x65, 0xd1, +0xd8, 0xd8, 0xd8, 0xff, 0xc9, 0x27, 0x9f, 0x6c, +0x12, 0x04, 0x61, 0xdc, 0xe2, 0x81, 0x7b, 0x3c, +0x2c, 0xed, 0x9f, 0x0e, 0x5d, 0x5d, 0x5d, 0x4a, +0x49, 0x92, 0xb4, 0x1c, 0xc7, 0xc5, 0xdb, 0x6c, +0xb6, 0xe4, 0x87, 0x1f, 0x7e, 0x78, 0x85, 0xc9, +0x64, 0x7a, 0xfe, 0x85, 0x17, 0x5e, 0x08, 0xf1, +0x09, 0x3e, 0x9f, 0x0f, 0x46, 0xa3, 0x11, 0x9d, +0x9d, 0x9d, 0x21, 0x73, 0x9e, 0xe7, 0x79, 0xa4, +0xa6, 0xa6, 0xe2, 0xea, 0xd5, 0xab, 0x41, 0xb9, +0x80, 0x7d, 0xfb, 0xf6, 0xa1, 0xb9, 0xb9, 0x19, +0x6f, 0xbc, 0xf1, 0x46, 0xc8, 0x0e, 0xd2, 0x2f, +0xbe, 0xa6, 0xa6, 0x66, 0x93, 0x2c, 0xcb, 0xe7, +0xa2, 0xa2, 0xa2, 0xc6, 0x2d, 0x1e, 0xb8, 0xc7, +0x83, 0x92, 0xfe, 0xe9, 0xe0, 0xdf, 0x3b, 0xe8, +0xf5, 0xfa, 0x01, 0x00, 0xe8, 0xe9, 0xe9, 0xa9, +0x3b, 0x74, 0xe8, 0x10, 0x28, 0x8a, 0x7a, 0x7e, +0xd5, 0xaa, 0x55, 0x41, 0xdb, 0xbe, 0x9a, 0x9a, +0x1a, 0xf0, 0x3c, 0x1f, 0xd8, 0x29, 0xfa, 0x53, +0xe8, 0x1b, 0x36, 0x6c, 0x80, 0xd9, 0x6c, 0xc6, +0x3b, 0xef, 0xbc, 0x13, 0x24, 0xbe, 0xa7, 0xa7, +0x07, 0x37, 0x6e, 0xdc, 0xc0, 0x1f, 0xfe, 0xf0, +0x87, 0x90, 0xef, 0x0c, 0x2c, 0xcb, 0xa2, 0xa9, +0xa9, 0xe9, 0xae, 0xc5, 0x03, 0xf7, 0xe9, 0xb8, +0xbc, 0xff, 0xdb, 0xa2, 0x56, 0xab, 0x55, 0xf8, +0x47, 0x82, 0xc3, 0xe1, 0x48, 0x9e, 0x31, 0x63, +0xc6, 0xca, 0xf9, 0xf3, 0xe7, 0x97, 0xae, 0x5c, +0xb9, 0x32, 0x00, 0xe1, 0xfc, 0xf9, 0xf3, 0xb8, +0x7a, 0xf5, 0x2a, 0x96, 0x2d, 0x5b, 0x06, 0xbb, +0xdd, 0x8e, 0xfc, 0xfc, 0x7c, 0x30, 0x0c, 0x03, +0xa7, 0xd3, 0x89, 0x7f, 0xfc, 0xe3, 0x1f, 0xe3, +0x4e, 0x9b, 0xd9, 0xed, 0x76, 0x34, 0x36, 0x36, +0x0e, 0x54, 0x57, 0x57, 0x57, 0xde, 0xad, 0x78, +0xe0, 0x3e, 0xfe, 0x5f, 0x20, 0x1c, 0x84, 0xd4, +0xd4, 0xd4, 0x95, 0xf3, 0xe7, 0xcf, 0x2f, 0x2d, +0x2f, 0x2f, 0x57, 0x8f, 0x6c, 0xd3, 0xdb, 0xdb, +0x1b, 0xf0, 0x0f, 0x4b, 0x96, 0x2c, 0x41, 0x63, +0x63, 0x63, 0xa0, 0xce, 0xff, 0x2d, 0x71, 0xe4, +0xb6, 0x1a, 0xb8, 0xb5, 0x4f, 0x68, 0x6a, 0x6a, +0x1a, 0xa8, 0xae, 0xae, 0xde, 0x24, 0x8a, 0xe2, +0xd9, 0xbb, 0x15, 0x0f, 0xdc, 0xa5, 0x13, 0x1c, +0xcd, 0x64, 0x59, 0x96, 0xeb, 0xeb, 0xeb, 0x25, +0xa7, 0xd3, 0xe9, 0xa3, 0x28, 0xca, 0xa9, 0xd7, +0xeb, 0x07, 0x74, 0x3a, 0xdd, 0xf5, 0xce, 0xce, +0xce, 0xff, 0x6d, 0x6b, 0x6b, 0x6b, 0x68, 0x68, +0x68, 0x70, 0x8f, 0x6c, 0x13, 0x1f, 0x1f, 0x0f, +0x8a, 0xa2, 0xb0, 0x73, 0xe7, 0x4e, 0x34, 0x34, +0x34, 0x04, 0xca, 0x2f, 0x5f, 0xbe, 0x8c, 0x55, +0xab, 0x56, 0x85, 0x24, 0x4d, 0x80, 0x5b, 0xe2, +0xff, 0xf6, 0xb7, 0xbf, 0xdd, 0xac, 0xa9, 0xa9, +0xf9, 0x9f, 0x7b, 0x15, 0x0f, 0xdc, 0xe7, 0x3f, +0x4c, 0x8c, 0xcc, 0x27, 0xf8, 0x7d, 0xc2, 0x37, +0xdf, 0x7c, 0x53, 0x4b, 0xd3, 0x34, 0x18, 0x86, +0x29, 0x59, 0xba, 0x74, 0x69, 0x40, 0x15, 0xc3, +0x30, 0x48, 0x4a, 0x4a, 0x82, 0xc5, 0x62, 0x81, +0x42, 0xa1, 0x80, 0x2c, 0xcb, 0xd8, 0xb1, 0x63, +0x07, 0x6a, 0x6a, 0x6a, 0xf0, 0xea, 0xab, 0xaf, +0x86, 0x9c, 0x3b, 0xe0, 0x38, 0x0e, 0xfb, 0xf7, +0xef, 0xbf, 0x59, 0x53, 0x53, 0xb3, 0x19, 0xc0, +0xe9, 0x7b, 0x15, 0x0f, 0xdc, 0x67, 0x00, 0x40, +0x78, 0x08, 0x97, 0x2e, 0x5d, 0xaa, 0x25, 0x84, +0x80, 0x10, 0x52, 0x52, 0x5c, 0x5c, 0x1c, 0x80, +0x70, 0xf2, 0xe4, 0xc9, 0xc0, 0x6a, 0x70, 0xee, +0xdc, 0x39, 0xac, 0x5b, 0xb7, 0x0e, 0x9b, 0x36, +0x6d, 0xc2, 0xf2, 0xe5, 0xcb, 0x83, 0xfa, 0xe5, +0x38, 0x0e, 0xcd, 0xcd, 0xcd, 0x37, 0xab, 0xab, +0xab, 0x37, 0x4b, 0x92, 0x74, 0x46, 0xa3, 0xd1, +0x74, 0xdf, 0xab, 0x78, 0x60, 0x92, 0xff, 0x35, +0x36, 0xd2, 0x27, 0xd8, 0x6c, 0xb6, 0xe4, 0xec, +0xec, 0xec, 0xff, 0x2c, 0x28, 0x28, 0x28, 0x79, +0xe6, 0x99, 0x67, 0x82, 0xc6, 0x77, 0x5f, 0x5f, +0x1f, 0x4a, 0x4b, 0x4b, 0xe1, 0x74, 0x3a, 0x03, +0xb9, 0x45, 0xbf, 0xf9, 0xc5, 0xef, 0xde, 0xbd, +0xdb, 0x2f, 0xfe, 0x46, 0x54, 0x54, 0xd4, 0xd0, +0xbd, 0x8a, 0x07, 0x26, 0x61, 0x04, 0xf8, 0x2d, +0xdc, 0x48, 0xb8, 0x78, 0xf1, 0x62, 0x2d, 0x45, +0x51, 0x32, 0x21, 0xa4, 0xf4, 0xe9, 0xa7, 0x9f, +0x0e, 0x82, 0x90, 0x99, 0x99, 0x19, 0xb2, 0x51, +0xe2, 0x38, 0x0e, 0x07, 0x0e, 0x1c, 0x98, 0x14, +0xf1, 0xc0, 0x24, 0x8e, 0x80, 0xc0, 0x0d, 0xc2, +0xac, 0x0e, 0xd9, 0xd9, 0xd9, 0x2b, 0x17, 0x2e, +0x5c, 0x58, 0x5a, 0x54, 0x54, 0x14, 0x36, 0xb3, +0x74, 0x5b, 0xfc, 0x60, 0x75, 0x75, 0xf5, 0x66, +0x41, 0x10, 0x4e, 0xdf, 0x6f, 0xf1, 0xc0, 0x24, +0x8e, 0x00, 0xbf, 0x85, 0x1b, 0x09, 0xa7, 0x4f, +0x9f, 0xae, 0x95, 0x24, 0x49, 0xa0, 0x28, 0xaa, +0xbc, 0xa0, 0xa0, 0x40, 0x33, 0x12, 0x02, 0xc7, +0x71, 0xf8, 0xe2, 0x8b, 0x2f, 0x06, 0x3f, 0xfe, +0xf8, 0xe3, 0xcd, 0xa2, 0x28, 0x9e, 0xd2, 0x68, +0x34, 0xdd, 0xf7, 0x5b, 0x3c, 0xf0, 0x00, 0x00, +0x00, 0xa3, 0x43, 0x10, 0x04, 0x41, 0x3e, 0x7f, +0xfe, 0x7c, 0x1d, 0x4d, 0xd3, 0x3c, 0x21, 0xe4, +0xbf, 0xf2, 0xf3, 0xf3, 0xb5, 0xfe, 0x83, 0x50, +0xd7, 0xaf, 0x5f, 0x17, 0x8e, 0x1f, 0x3f, 0xde, +0x5b, 0x57, 0x57, 0xb7, 0xd5, 0xe3, 0xf1, 0x9c, +0x33, 0x18, 0x0c, 0xf7, 0xc5, 0xe1, 0x8d, 0x66, +0x0f, 0x04, 0x00, 0x10, 0x0a, 0x21, 0x22, 0x22, +0x42, 0x56, 0x2a, 0x95, 0xe2, 0x85, 0x0b, 0x17, +0xea, 0xac, 0x56, 0x6b, 0x17, 0xcb, 0xb2, 0x3f, +0x8f, 0x8b, 0x8b, 0x33, 0x78, 0x3c, 0x1e, 0xb1, +0xab, 0xab, 0xeb, 0x9f, 0xf5, 0xf5, 0xf5, 0x7f, +0xd2, 0x68, 0x34, 0xdf, 0xaa, 0xd5, 0x6a, 0xb3, +0x5e, 0xaf, 0xb7, 0x4d, 0x86, 0x78, 0xe0, 0x01, +0xf8, 0x80, 0x90, 0x1b, 0x0e, 0xcb, 0x27, 0x70, +0x1c, 0xa7, 0xb6, 0xdb, 0xed, 0x06, 0x41, 0x10, +0xa2, 0x7d, 0x3e, 0x9f, 0x51, 0xa7, 0xd3, 0x19, +0xed, 0x76, 0xbb, 0x53, 0xa5, 0x52, 0x71, 0x34, +0x4d, 0x0f, 0x31, 0x0c, 0x63, 0x8d, 0x88, 0x88, +0xe0, 0xd4, 0x6a, 0xb5, 0x77, 0x32, 0xc4, 0x03, +0x0f, 0x70, 0x04, 0xf8, 0x6d, 0x78, 0x3e, 0x81, +0xe7, 0x79, 0x49, 0xab, 0xd5, 0xfa, 0x04, 0x41, +0x70, 0x52, 0x14, 0x75, 0x53, 0x14, 0x45, 0x26, +0x32, 0x32, 0x52, 0xd2, 0x6a, 0xb5, 0x5e, 0x00, +0x1e, 0x00, 0x9e, 0xae, 0xae, 0x2e, 0xa1, 0xb5, +0xb5, 0x55, 0xc4, 0x24, 0x88, 0x07, 0xbe, 0x03, +0x00, 0x00, 0xfc, 0x07, 0x99, 0x65, 0x00, 0x72, +0x79, 0x79, 0xb9, 0x04, 0xc0, 0xa7, 0xd5, 0x6a, +0x1d, 0x5a, 0xad, 0x96, 0xd2, 0x6a, 0xb5, 0xf2, +0xf0, 0xf3, 0xbe, 0x7f, 0xf9, 0xcb, 0x5f, 0xfc, +0xd7, 0x4e, 0x8a, 0xfd, 0x3f, 0x0b, 0x3c, 0x81, +0x98, 0xf9, 0x7b, 0xef, 0x9d, 0x00, 0x00, 0x00, +0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, +0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/bigimgs/contactpersonicon48.png b/source/bitmaps/bigimgs/contactpersonicon48.png new file mode 100644 index 0000000000000000000000000000000000000000..c78062aaaac9ff02d884bce2844cebefcb60f976 GIT binary patch literal 5057 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 TvY7{78=|Xec)d#fPSpPaA_&Uz literal 0 HcmV?d00001 diff --git a/source/bitmaps/bigimgs/contactpersonicon64.cpp b/source/bitmaps/bigimgs/contactpersonicon64.cpp new file mode 100644 index 0000000..d258f17 --- /dev/null +++ b/source/bitmaps/bigimgs/contactpersonicon64.cpp @@ -0,0 +1,642 @@ +#include + +#ifndef BIGIMGS_CONTACTPERSONICON64_CPP +#define BIGIMGS_CONTACTPERSONICON64_CPP + +static unsigned char bigimgs_contactpersonicon64_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x01, 0xbb, 0x00, 0x00, 0x01, +0xbb, 0x01, 0x3a, 0xec, 0xe3, 0xe2, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x13, 0x3e, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xcd, 0x9b, 0x7b, +0x54, 0x54, 0xd7, 0xbd, 0xc7, 0xbf, 0xfb, 0x9c, +0x33, 0x33, 0xcc, 0x8b, 0x61, 0x78, 0x07, 0x1f, +0x11, 0x08, 0x02, 0xa1, 0xf2, 0x70, 0x79, 0xd3, +0xac, 0x68, 0xc2, 0x58, 0x05, 0x34, 0x11, 0x13, +0x21, 0xa0, 0xde, 0x5e, 0xb3, 0xe8, 0x4a, 0xaf, +0x6d, 0xd3, 0x9a, 0x34, 0x2b, 0x59, 0xd5, 0x2e, +0x6b, 0x44, 0x6f, 0xac, 0x49, 0xba, 0xec, 0x4a, +0xa3, 0x4d, 0x57, 0xb4, 0x09, 0x15, 0x12, 0x2e, +0x86, 0x2c, 0xa2, 0x85, 0x8a, 0x5d, 0xe1, 0x0a, +0xf5, 0x81, 0xd1, 0x58, 0xdf, 0x98, 0xf8, 0x40, +0x59, 0x91, 0xc7, 0x80, 0x0c, 0x33, 0x67, 0xce, +0xbc, 0xce, 0xcc, 0x79, 0xdc, 0x3f, 0x74, 0xa6, +0x0c, 0xc3, 0x20, 0xa8, 0x98, 0xfe, 0xfe, 0x9b, +0xbd, 0xcf, 0xde, 0xe7, 0x7c, 0x3f, 0x67, 0xef, +0xdf, 0xfe, 0xed, 0xdf, 0xd9, 0x43, 0x64, 0x59, +0xc6, 0x64, 0x1a, 0x21, 0x84, 0x54, 0x56, 0x56, +0x12, 0x00, 0xe8, 0xe8, 0xe8, 0x20, 0x59, 0x59, +0x59, 0x32, 0x00, 0x54, 0x56, 0x56, 0xca, 0xf2, +0x64, 0xdf, 0x7c, 0x1c, 0x46, 0x26, 0xeb, 0x19, +0x86, 0x09, 0xa7, 0x2c, 0x16, 0x0b, 0xcd, 0xf3, +0x3c, 0xcd, 0x30, 0x0c, 0xc5, 0x71, 0x9c, 0x4c, +0xd3, 0xb4, 0x38, 0x63, 0xc6, 0x0c, 0x01, 0x80, +0xf4, 0x5d, 0x83, 0x98, 0x14, 0x00, 0x84, 0x10, +0x52, 0x56, 0x56, 0x46, 0x25, 0x26, 0x26, 0x32, +0x43, 0x43, 0x43, 0x2a, 0xaf, 0xd7, 0xab, 0xa1, +0x69, 0x3a, 0x42, 0x14, 0x45, 0x06, 0x80, 0xa8, +0x52, 0xa9, 0x3c, 0x1a, 0x8d, 0xc6, 0xe5, 0xf5, +0x7a, 0x79, 0xa7, 0xd3, 0xe9, 0xab, 0xaf, 0xaf, +0x97, 0xbe, 0x2b, 0x08, 0xf7, 0x1d, 0x80, 0x5f, +0x3c, 0x00, 0xa5, 0x5a, 0xad, 0xd6, 0x38, 0x9d, +0xce, 0x68, 0x9e, 0xe7, 0x63, 0x01, 0x24, 0xea, +0xf5, 0xfa, 0x87, 0x9d, 0x4e, 0x67, 0xb7, 0xcf, +0xe7, 0xeb, 0x53, 0x28, 0x14, 0x83, 0x06, 0x83, +0xc1, 0xaa, 0x56, 0xab, 0x1d, 0x49, 0x49, 0x49, +0xde, 0xca, 0xca, 0x4a, 0xf1, 0xbb, 0x80, 0xc0, +0xdc, 0xcf, 0xce, 0xfc, 0xe2, 0xa7, 0x4e, 0x9d, +0xaa, 0x1c, 0x1c, 0x1c, 0xd4, 0x5b, 0xad, 0xd6, +0x38, 0x9e, 0xe7, 0xa7, 0x3f, 0xf2, 0xc8, 0x23, +0x2f, 0xa4, 0xa6, 0xa6, 0x16, 0xa5, 0xa7, 0xa7, +0x47, 0x5c, 0xbf, 0x7e, 0xdd, 0x77, 0xf9, 0xf2, +0xe5, 0xb6, 0x0b, 0x17, 0x2e, 0x7c, 0x28, 0x08, +0xc2, 0xb7, 0x11, 0x11, 0x11, 0xfd, 0x6e, 0xb7, +0xdb, 0x6e, 0x32, 0x99, 0x78, 0x42, 0xc8, 0x03, +0x87, 0x70, 0xdf, 0x00, 0x8c, 0x14, 0x6f, 0xb7, +0xdb, 0x13, 0x1c, 0x0e, 0x47, 0xca, 0xa3, 0x8f, +0x3e, 0xfa, 0xb3, 0x85, 0x0b, 0x17, 0xe6, 0x3f, +0xf7, 0xdc, 0x73, 0x11, 0xb7, 0x2f, 0x55, 0x1f, +0x39, 0x72, 0x64, 0xb1, 0x46, 0xa3, 0x49, 0x69, +0x6f, 0x6f, 0xdf, 0x42, 0x08, 0xa1, 0x95, 0x4a, +0x25, 0x99, 0x36, 0x6d, 0x1a, 0xfb, 0x5d, 0x40, +0xb8, 0x2f, 0x00, 0x46, 0x8a, 0x67, 0x59, 0x36, +0xd1, 0x6e, 0xb7, 0xa7, 0x64, 0x65, 0x65, 0xbd, +0x54, 0x54, 0x54, 0xf4, 0x54, 0x71, 0x71, 0xb1, +0x6a, 0xf8, 0xf5, 0xf3, 0xe6, 0xcd, 0x53, 0x68, +0xb5, 0xda, 0x4c, 0x59, 0x96, 0x37, 0x1c, 0x3d, +0x7a, 0x74, 0x8b, 0x2c, 0xcb, 0x24, 0x32, 0x32, +0x12, 0xdf, 0x05, 0x84, 0x7b, 0x06, 0x30, 0x96, +0xf8, 0xc2, 0xc2, 0xc2, 0x10, 0xf1, 0x7e, 0xcb, +0xcb, 0xcb, 0xa3, 0x65, 0x59, 0x4e, 0x07, 0xb0, +0xfe, 0xd8, 0xb1, 0x63, 0xbf, 0x95, 0x24, 0x89, +0x44, 0x45, 0x45, 0x61, 0xda, 0xb4, 0x69, 0x6c, +0x65, 0x65, 0xe5, 0x03, 0x83, 0x70, 0x4f, 0x00, +0x86, 0x3b, 0xbc, 0xd1, 0xc4, 0x2f, 0x5d, 0xba, +0x74, 0x54, 0xf1, 0x7e, 0x9b, 0x3d, 0x7b, 0x36, +0x4d, 0x08, 0x49, 0x07, 0xf0, 0x9b, 0x63, 0xc7, +0x8e, 0xbd, 0x09, 0x00, 0x51, 0x51, 0x51, 0xe8, +0xec, 0xec, 0x7c, 0x60, 0x10, 0xee, 0x1a, 0xc0, +0x70, 0xf1, 0x82, 0x20, 0xe8, 0xed, 0x76, 0x7b, +0x82, 0xdd, 0x6e, 0x4f, 0x79, 0xf4, 0xd1, 0x47, +0x7f, 0x36, 0x1e, 0xf1, 0x7e, 0xcb, 0xcb, 0xcb, +0xa3, 0x09, 0x21, 0x69, 0x84, 0x90, 0x37, 0xda, +0xdb, 0xdb, 0x37, 0x03, 0xff, 0x82, 0xf0, 0x20, +0xa6, 0xc3, 0x5d, 0x01, 0x18, 0x2e, 0x1e, 0x80, +0x8e, 0xe7, 0xf9, 0x04, 0x97, 0xcb, 0x95, 0x9a, +0x99, 0x99, 0xf9, 0xd3, 0xc2, 0xc2, 0xc2, 0xfc, +0xa5, 0x4b, 0x97, 0xaa, 0xec, 0x76, 0x3b, 0x8e, +0x1f, 0x3f, 0x0e, 0x87, 0xc3, 0x81, 0x39, 0x73, +0xe6, 0x60, 0xda, 0xb4, 0x69, 0x61, 0xfb, 0xcb, +0xcd, 0xcd, 0xa5, 0x01, 0x3c, 0x02, 0x20, 0x08, +0xc2, 0x83, 0xf0, 0x09, 0x13, 0x06, 0x30, 0x52, +0xbc, 0xcb, 0xe5, 0x4a, 0x70, 0xbb, 0xdd, 0x29, +0x19, 0x19, 0x19, 0xff, 0x5d, 0x54, 0x54, 0x64, +0x7a, 0xf6, 0xd9, 0x67, 0x55, 0x76, 0xbb, 0x1d, +0xfb, 0xf7, 0xef, 0x87, 0xd3, 0xe9, 0x04, 0x00, +0xb4, 0xb4, 0xb4, 0xc0, 0x64, 0x32, 0x21, 0x39, +0x39, 0x39, 0x6c, 0xbf, 0xb9, 0xb9, 0xb9, 0x14, +0x80, 0x54, 0x00, 0xbf, 0x69, 0x6f, 0x6f, 0x7f, +0x93, 0xa2, 0x28, 0x99, 0x61, 0x98, 0x49, 0x87, +0x30, 0x21, 0x00, 0x23, 0xc5, 0x3b, 0x9d, 0xce, +0x44, 0xb7, 0xdb, 0x9d, 0x92, 0x9e, 0x9e, 0xbe, +0xba, 0xb0, 0xb0, 0x70, 0xc1, 0x68, 0xe2, 0x01, +0x40, 0x92, 0x24, 0xb4, 0xb5, 0xb5, 0x01, 0xc0, +0x9d, 0x20, 0xd0, 0xb2, 0x2c, 0xa7, 0x49, 0x92, +0xb4, 0xbe, 0xbd, 0xbd, 0xfd, 0x4d, 0x83, 0xc1, +0x00, 0x96, 0x65, 0x27, 0x15, 0xc2, 0xb8, 0x01, +0x0c, 0x17, 0xaf, 0xd3, 0xe9, 0x74, 0x36, 0x9b, +0x2d, 0xc1, 0x2f, 0xbe, 0xa0, 0xa0, 0x60, 0xc1, +0xb2, 0x65, 0xcb, 0x46, 0x15, 0xef, 0xb7, 0xf1, +0x42, 0xb8, 0xbd, 0x3a, 0xcc, 0x24, 0x84, 0xac, +0x3f, 0x7a, 0xf4, 0xe8, 0x96, 0xc9, 0x86, 0x30, +0x2e, 0x00, 0xa3, 0x89, 0xb7, 0xd9, 0x6c, 0xa9, +0xe9, 0xe9, 0xe9, 0xab, 0x17, 0x2e, 0x5c, 0xb8, +0xa0, 0xa4, 0xa4, 0x64, 0x4c, 0xf1, 0x7e, 0x1b, +0x2f, 0x84, 0xd9, 0xb3, 0x67, 0xd3, 0x00, 0xd2, +0x01, 0x4c, 0x3a, 0x84, 0x3b, 0x02, 0x18, 0x39, +0xec, 0x6d, 0x36, 0x5b, 0x02, 0xc7, 0x71, 0xa9, +0xe9, 0xe9, 0xe9, 0xab, 0x7f, 0xf0, 0x83, 0x1f, +0x2c, 0x28, 0x2d, 0x2d, 0x1d, 0x97, 0x78, 0xbf, +0xfd, 0xbb, 0x41, 0x18, 0x13, 0xc0, 0x68, 0x0e, +0xcf, 0xe5, 0x72, 0x05, 0xc4, 0x97, 0x95, 0x95, +0x4d, 0x48, 0xbc, 0xdf, 0xfe, 0x9d, 0x20, 0x84, +0x05, 0x30, 0x96, 0xf8, 0x85, 0x0b, 0x17, 0x4e, +0xf8, 0xcd, 0x8f, 0xb4, 0x7b, 0x81, 0xe0, 0xf3, +0xf9, 0x02, 0x11, 0x23, 0x00, 0x91, 0x10, 0x82, +0xbb, 0x05, 0x31, 0xea, 0x76, 0x78, 0x2c, 0x6f, +0x5f, 0x50, 0x50, 0x10, 0x76, 0xce, 0x6b, 0x34, +0x1a, 0x30, 0x0c, 0x03, 0x8f, 0xc7, 0x03, 0xaf, +0xd7, 0x3b, 0xae, 0x07, 0xa0, 0x28, 0xea, 0x8e, +0x4b, 0x24, 0x00, 0x9c, 0x3a, 0x75, 0x4a, 0xdc, +0xb3, 0x67, 0xcf, 0xa5, 0xa3, 0x47, 0x8f, 0xfe, +0xd6, 0x60, 0x30, 0x5c, 0xd2, 0x6a, 0xb5, 0x7d, +0x00, 0x58, 0xa3, 0xd1, 0xc8, 0x5b, 0xad, 0x56, +0xc9, 0x9f, 0x69, 0xda, 0xb8, 0x71, 0xa3, 0x3c, +0x11, 0x20, 0x21, 0x00, 0x86, 0x8b, 0x8f, 0x88, +0x88, 0xd0, 0x5b, 0x2c, 0x96, 0x84, 0xe1, 0x4b, +0x5d, 0x38, 0x6f, 0x3f, 0x75, 0xea, 0x54, 0x24, +0x26, 0x26, 0x02, 0xb8, 0xf5, 0x76, 0xaf, 0x5c, +0xb9, 0x02, 0x8e, 0xe3, 0x26, 0x03, 0xc2, 0xe5, +0x63, 0xc7, 0x8e, 0x6d, 0xd1, 0x68, 0x34, 0x57, +0x22, 0x23, 0x23, 0xcd, 0x00, 0x1c, 0x7a, 0xbd, +0xde, 0xe7, 0xf3, 0xf9, 0xa4, 0xd8, 0xd8, 0x58, +0x49, 0x10, 0x04, 0x29, 0x26, 0x26, 0x46, 0xc4, +0x38, 0xb3, 0x4d, 0x41, 0x53, 0xc0, 0x2f, 0xde, +0xe3, 0xf1, 0xa8, 0xa2, 0xa2, 0xa2, 0x74, 0x2c, +0xcb, 0x26, 0xba, 0x5c, 0xae, 0x94, 0x8c, 0x8c, +0x8c, 0x9f, 0x2e, 0x5a, 0xb4, 0x68, 0xd4, 0x20, +0x07, 0xb8, 0xf5, 0xe6, 0xfd, 0xe2, 0xfd, 0x82, +0xd2, 0xd2, 0xd2, 0x70, 0xf1, 0xe2, 0x45, 0x78, +0x3c, 0x9e, 0x3b, 0x02, 0xf0, 0x4f, 0x87, 0xe8, +0xe8, 0x68, 0x18, 0x0c, 0x86, 0xb0, 0xd7, 0xcd, +0x9e, 0x3d, 0x9b, 0xa6, 0x28, 0x6a, 0x26, 0x80, +0xdf, 0x1c, 0x3e, 0x7c, 0xf8, 0x1d, 0x00, 0x5a, +0x9a, 0xa6, 0xad, 0x3c, 0xcf, 0xbb, 0x29, 0x8a, +0x12, 0x3c, 0x1e, 0x8f, 0x8f, 0x61, 0x18, 0x7e, +0x68, 0x68, 0xc8, 0x1d, 0x1d, 0x1d, 0xcd, 0x97, +0x95, 0x95, 0x09, 0x84, 0x90, 0x31, 0xb3, 0x4d, +0x01, 0x00, 0x7e, 0xf1, 0x46, 0xa3, 0x51, 0xc5, +0x71, 0x9c, 0x9e, 0x65, 0xd9, 0x04, 0x96, 0x65, +0x53, 0xb3, 0xb2, 0xb2, 0x7e, 0x5a, 0x54, 0x54, +0x14, 0x08, 0x6f, 0x47, 0x9b, 0xf3, 0x0c, 0x13, +0xea, 0x4a, 0x28, 0x8a, 0x42, 0x5c, 0x5c, 0x1c, +0x6e, 0xdc, 0xb8, 0x71, 0x47, 0x00, 0x7e, 0x08, +0x3d, 0x3d, 0x3d, 0x63, 0x02, 0x00, 0x6e, 0x05, +0x4b, 0x84, 0x90, 0x34, 0x59, 0x96, 0xd7, 0x1f, +0x3a, 0x74, 0xe8, 0x03, 0x85, 0x42, 0x61, 0x61, +0x18, 0xc6, 0x45, 0x51, 0x14, 0xaf, 0x54, 0x2a, +0x5d, 0x0a, 0x85, 0x82, 0x55, 0x2a, 0x95, 0x96, +0xc1, 0xc1, 0x41, 0x2b, 0x00, 0x67, 0x59, 0x59, +0x99, 0x77, 0x2c, 0x08, 0xcc, 0x70, 0xf1, 0x53, +0xa7, 0x4e, 0x55, 0x9a, 0xcd, 0x66, 0x3d, 0xc7, +0x71, 0x89, 0x76, 0xbb, 0x3d, 0x75, 0xd6, 0xac, +0x59, 0x3f, 0x2f, 0x2a, 0x2a, 0x9a, 0x5b, 0x5c, +0x5c, 0x3c, 0xa6, 0xc3, 0x73, 0xbb, 0xdd, 0x10, +0x45, 0x11, 0x34, 0x4d, 0x07, 0x95, 0xc7, 0xc6, +0xc6, 0xa2, 0xa7, 0xa7, 0x07, 0x92, 0x24, 0xdd, +0x11, 0x80, 0x52, 0xa9, 0xc4, 0x8c, 0x19, 0x33, +0x46, 0xad, 0xf3, 0x7a, 0xbd, 0x50, 0x2a, 0x95, +0x81, 0xdf, 0x39, 0x39, 0x39, 0x34, 0x45, 0x51, +0xc9, 0x31, 0x31, 0x31, 0x1b, 0x28, 0x8a, 0x12, +0x08, 0x21, 0x32, 0x00, 0x99, 0x10, 0x22, 0x99, +0xcd, 0xe6, 0x7f, 0x9e, 0x39, 0x73, 0x66, 0x87, +0x56, 0xab, 0xfd, 0x36, 0x32, 0x32, 0xb2, 0x3f, +0x36, 0x36, 0x96, 0x1b, 0x0b, 0x02, 0x01, 0x10, +0x34, 0xe7, 0xad, 0x56, 0xeb, 0x43, 0x4e, 0xa7, +0x33, 0x75, 0xd6, 0xac, 0x59, 0xaf, 0x2c, 0x5a, +0xb4, 0xe8, 0xf1, 0xc5, 0x8b, 0x17, 0x2b, 0xc7, +0xe3, 0xed, 0xf5, 0x7a, 0x3d, 0xd2, 0xd2, 0xd2, +0x40, 0x51, 0x54, 0x50, 0x39, 0xc7, 0x71, 0x70, +0xbb, 0xdd, 0xf0, 0x7a, 0xbd, 0xe0, 0x79, 0x1e, +0x36, 0x9b, 0x0d, 0x23, 0x9f, 0x43, 0xa9, 0x54, +0x62, 0xd1, 0xa2, 0x45, 0x88, 0x8b, 0x8b, 0x0b, +0xe9, 0xb7, 0xa1, 0xa1, 0x01, 0xa2, 0x28, 0xa2, +0xac, 0xac, 0x2c, 0x3c, 0xbd, 0x61, 0xd6, 0xd2, +0xd2, 0xe2, 0x6d, 0x6a, 0x6a, 0x3a, 0x76, 0xf6, +0xec, 0xd9, 0x77, 0x0d, 0x06, 0x43, 0xa7, 0x52, +0xa9, 0x34, 0x6b, 0xb5, 0x5a, 0x6e, 0xc6, 0x8c, +0x19, 0xde, 0x8d, 0x1b, 0x37, 0x86, 0xbc, 0x09, +0xba, 0xb2, 0xb2, 0x92, 0xa2, 0x69, 0x5a, 0x21, +0x8a, 0xa2, 0xd6, 0xe1, 0x70, 0x24, 0xda, 0xed, +0xf6, 0xd4, 0xec, 0xec, 0xec, 0xd7, 0x9f, 0x79, +0xe6, 0x99, 0xc7, 0x16, 0x2d, 0x5a, 0xa4, 0xbc, +0xdd, 0x29, 0xac, 0x56, 0xeb, 0x98, 0x37, 0xf6, +0x7a, 0xbd, 0xb0, 0x5a, 0xad, 0x90, 0x65, 0x19, +0x6a, 0xb5, 0x3a, 0x00, 0x42, 0xa5, 0x52, 0x41, +0xab, 0xd5, 0x22, 0x32, 0x32, 0x12, 0xd1, 0xd1, +0xd1, 0x88, 0x8d, 0x8d, 0x85, 0xcf, 0xe7, 0x83, +0xdb, 0xed, 0xbe, 0xa3, 0xf8, 0xe6, 0xe6, 0x66, +0x74, 0x77, 0x77, 0xa3, 0xa2, 0xa2, 0x62, 0x5c, +0xe2, 0x01, 0x20, 0x25, 0x25, 0x85, 0xa6, 0x69, +0x3a, 0xc9, 0x6e, 0xb7, 0x4f, 0xe9, 0xee, 0xee, +0xbe, 0x48, 0x51, 0x94, 0x5b, 0xad, 0x56, 0xf3, +0x2e, 0x97, 0x4b, 0x28, 0x2e, 0x2e, 0x0e, 0x19, +0x01, 0xb4, 0xc9, 0x64, 0xa2, 0x7b, 0x7a, 0x7a, +0xd4, 0x3c, 0xcf, 0xc7, 0x72, 0x1c, 0x97, 0x9c, +0x99, 0x99, 0xb9, 0xa6, 0xb8, 0xb8, 0xf8, 0x89, +0xc2, 0xc2, 0x42, 0x25, 0x00, 0xc8, 0xb2, 0x8c, +0x13, 0x27, 0x4e, 0x40, 0x14, 0xc5, 0x3b, 0xde, +0x5c, 0x10, 0x04, 0xd8, 0xed, 0x76, 0x0c, 0x0c, +0x0c, 0x40, 0xa7, 0xd3, 0x41, 0xa5, 0x0a, 0x4d, +0x09, 0xd0, 0x34, 0x0d, 0xa3, 0xd1, 0x08, 0x9e, +0xe7, 0x21, 0x8a, 0x62, 0x58, 0xf1, 0xad, 0xad, +0xad, 0x38, 0x7e, 0xfc, 0x38, 0x5e, 0x7b, 0xed, +0xb5, 0x71, 0x8b, 0xf7, 0x5b, 0x6a, 0x6a, 0x2a, +0x4d, 0x08, 0x49, 0x72, 0x3a, 0x9d, 0xf1, 0x66, +0xb3, 0xf9, 0x9f, 0x0c, 0xc3, 0x38, 0x08, 0x21, +0xfc, 0xd9, 0xb3, 0x67, 0x25, 0x93, 0xc9, 0x14, +0x04, 0x81, 0xb2, 0x58, 0x2c, 0xb4, 0x24, 0x49, +0x6a, 0x8f, 0xc7, 0x13, 0x9b, 0x9c, 0x9c, 0x5c, +0x96, 0x9f, 0x9f, 0xff, 0x54, 0x41, 0x41, 0x41, +0x60, 0xc2, 0x11, 0x42, 0x90, 0x9d, 0x9d, 0x3d, +0xa1, 0x07, 0x90, 0x24, 0x69, 0x4c, 0xef, 0x6f, +0x36, 0x9b, 0xc1, 0x71, 0x5c, 0x58, 0xf1, 0x1d, +0x1d, 0x1d, 0xf8, 0xea, 0xab, 0xaf, 0xb0, 0x7e, +0xfd, 0xfa, 0xa0, 0xf2, 0xc6, 0xc6, 0x46, 0x98, +0xcd, 0xe6, 0x71, 0x3d, 0x43, 0x51, 0x51, 0x91, +0xf2, 0x7b, 0xdf, 0xfb, 0xde, 0x3c, 0xb5, 0x5a, +0x9d, 0x26, 0xcb, 0xb2, 0x5a, 0xa3, 0xd1, 0x30, +0x1d, 0x1d, 0x1d, 0x84, 0x10, 0x42, 0x86, 0x5f, +0x47, 0xf1, 0x3c, 0x4f, 0xcb, 0xb2, 0xac, 0x16, +0x04, 0x21, 0x76, 0xe6, 0xcc, 0x99, 0x25, 0xcf, +0x3f, 0xff, 0x7c, 0xc4, 0xc8, 0xce, 0xb2, 0xb3, +0xb3, 0x91, 0x93, 0x93, 0x33, 0xae, 0x1b, 0xfb, +0x4d, 0x10, 0x84, 0x51, 0xcb, 0xfb, 0xfb, 0xfb, +0x31, 0x30, 0x30, 0x10, 0x56, 0xfc, 0x2f, 0x7e, +0xf1, 0x0b, 0xb8, 0xdd, 0x6e, 0xfc, 0xea, 0x57, +0xbf, 0xc2, 0xf0, 0x67, 0x3d, 0x74, 0xe8, 0x10, +0x9c, 0x4e, 0x67, 0xd0, 0x72, 0x7b, 0x27, 0x33, +0x18, 0x0c, 0x94, 0x28, 0x8a, 0x06, 0x8f, 0xc7, +0xa3, 0xa2, 0x69, 0x9a, 0xca, 0xca, 0xca, 0x22, +0x23, 0xaf, 0xa1, 0x22, 0x23, 0x23, 0x89, 0x2c, +0xcb, 0x74, 0x74, 0x74, 0x74, 0x46, 0x46, 0x46, +0x46, 0xd8, 0x34, 0xd6, 0x9c, 0x39, 0x73, 0x26, +0x04, 0x61, 0x34, 0x00, 0x66, 0xb3, 0x19, 0xfd, +0xfd, 0xfd, 0x61, 0xc5, 0xb7, 0xb5, 0xb5, 0xc1, +0x62, 0xb1, 0x60, 0xce, 0x9c, 0x39, 0x81, 0x32, +0x87, 0xc3, 0x81, 0x6d, 0xdb, 0xb6, 0x21, 0x33, +0x33, 0x13, 0x2b, 0x56, 0xac, 0x18, 0xf7, 0xfd, +0x87, 0x99, 0x52, 0x14, 0x45, 0x85, 0xc5, 0x62, +0xa1, 0x7b, 0x7b, 0x7b, 0x43, 0x01, 0xd8, 0xed, +0x76, 0x99, 0x10, 0x22, 0x3a, 0x1c, 0x8e, 0xce, +0xaf, 0xbf, 0xfe, 0xda, 0x35, 0x56, 0xe0, 0x34, +0x11, 0x08, 0x0e, 0x87, 0x23, 0xe8, 0xb7, 0xd9, +0x6c, 0x1e, 0xf3, 0xcd, 0x03, 0xc0, 0x94, 0x29, +0x53, 0xf0, 0xf1, 0xc7, 0x1f, 0x07, 0x7e, 0xb7, +0xb7, 0xb7, 0xa3, 0xaa, 0xaa, 0x0a, 0xbf, 0xfc, +0xe5, 0x2f, 0x47, 0x6d, 0xd3, 0xdb, 0xdb, 0x3b, +0xa6, 0x6f, 0xa2, 0x28, 0x8a, 0x88, 0xa2, 0x18, +0x01, 0x40, 0x45, 0xd3, 0xb4, 0x42, 0xa5, 0x52, +0x51, 0xb8, 0xb5, 0xf2, 0xfd, 0xeb, 0x1a, 0x95, +0x4a, 0x25, 0xea, 0x74, 0x3a, 0xb7, 0x24, 0x49, +0x7d, 0x57, 0xae, 0x5c, 0x69, 0xfc, 0xec, 0xb3, +0xcf, 0xc6, 0x0c, 0xdd, 0xc6, 0x0b, 0xc1, 0xe9, +0x74, 0x06, 0x3c, 0xfd, 0x9d, 0x86, 0xbd, 0xdf, +0xd2, 0xd2, 0xd2, 0x02, 0xb1, 0x04, 0xcb, 0xb2, +0x78, 0xe5, 0x95, 0x57, 0xf0, 0xe3, 0x1f, 0xff, +0x38, 0x24, 0xbe, 0x10, 0x45, 0x11, 0xdb, 0xb7, +0x6f, 0x87, 0xd5, 0x6a, 0x0d, 0xa9, 0x1b, 0x61, +0x84, 0xe7, 0xf9, 0x48, 0x9e, 0xe7, 0xa3, 0x3c, +0x1e, 0x8f, 0xd6, 0xe9, 0x74, 0x2a, 0x4d, 0x26, +0x13, 0x35, 0xdc, 0x0f, 0xd0, 0x4f, 0x3f, 0xfd, +0x34, 0xe9, 0xef, 0xef, 0x27, 0x84, 0x10, 0x32, +0x30, 0x30, 0xd0, 0x33, 0x34, 0x34, 0x64, 0x60, +0x59, 0x36, 0x79, 0xd6, 0xac, 0x59, 0xcc, 0x08, +0x7f, 0x11, 0xb0, 0xa4, 0xa4, 0x24, 0x48, 0x92, +0x84, 0xfe, 0xfe, 0xfe, 0x31, 0x21, 0x38, 0x1c, +0x0e, 0x48, 0x92, 0x34, 0x2e, 0xf1, 0x23, 0xad, +0xbf, 0xbf, 0x1f, 0xab, 0x57, 0xaf, 0x86, 0x4e, +0xa7, 0x0b, 0x2a, 0xf7, 0xf9, 0x7c, 0x58, 0xb7, +0x6e, 0x1d, 0x56, 0xad, 0x5a, 0x85, 0x99, 0x33, +0x67, 0x8e, 0xd9, 0x07, 0x45, 0x51, 0x94, 0xd5, +0x6a, 0x4d, 0xe8, 0xec, 0xec, 0x3c, 0x4f, 0x08, +0x71, 0x52, 0x14, 0xe5, 0x31, 0x1a, 0x8d, 0x42, +0x7a, 0x7a, 0xba, 0x58, 0x5e, 0x5e, 0x8e, 0xca, +0xca, 0x4a, 0xd0, 0x26, 0x93, 0x09, 0x31, 0x31, +0x31, 0x92, 0xc3, 0xe1, 0x90, 0x24, 0x49, 0x12, +0xcc, 0x66, 0x73, 0x97, 0xc5, 0x62, 0x51, 0xb2, +0x2c, 0xfb, 0x48, 0x4e, 0x4e, 0xce, 0x3d, 0x41, +0x10, 0x04, 0x01, 0x1e, 0x8f, 0x67, 0x54, 0xf1, +0x92, 0x24, 0x21, 0x5c, 0xdf, 0xc0, 0xad, 0xac, +0x70, 0x44, 0x44, 0xb0, 0x3f, 0x66, 0x59, 0x16, +0xd5, 0xd5, 0xd5, 0x58, 0xb3, 0x66, 0x0d, 0x12, +0x12, 0x12, 0x42, 0xda, 0x74, 0x74, 0x74, 0xe0, +0xf0, 0xe1, 0xc3, 0x98, 0x3e, 0x7d, 0x3a, 0x94, +0x4a, 0x25, 0x62, 0x62, 0x62, 0x48, 0x5c, 0x5c, +0x9c, 0xc1, 0xe7, 0xf3, 0xa5, 0x5f, 0xb9, 0x72, +0xe5, 0x02, 0x21, 0xc4, 0xc3, 0x30, 0x0c, 0xaf, +0x56, 0xab, 0x7d, 0xcf, 0x3d, 0xf7, 0x9c, 0x64, +0x32, 0x99, 0x64, 0xba, 0xad, 0xad, 0x0d, 0x26, +0x93, 0x49, 0x66, 0x59, 0x56, 0x22, 0x84, 0x08, +0x84, 0x10, 0xdf, 0xe0, 0xe0, 0xe0, 0x8d, 0xc1, +0xc1, 0x41, 0xb0, 0x2c, 0x3b, 0x33, 0x27, 0x27, +0x47, 0x71, 0xb7, 0x10, 0xc2, 0x05, 0x39, 0xdb, +0xb7, 0x6f, 0xc7, 0xea, 0xd5, 0xab, 0xf1, 0xd4, +0x53, 0x4f, 0x21, 0x3e, 0x3e, 0x3e, 0x2c, 0x84, +0x91, 0xb6, 0x72, 0xe5, 0x4a, 0x64, 0x67, 0x67, +0xe3, 0xb1, 0xc7, 0x1e, 0x0b, 0x2a, 0x97, 0x65, +0x19, 0x1f, 0x7d, 0xf4, 0x11, 0xde, 0x7b, 0xef, +0x3d, 0x6c, 0xd8, 0xb0, 0x01, 0x1a, 0x8d, 0x26, +0x50, 0x17, 0x1f, 0x1f, 0x4f, 0xc5, 0xc6, 0xc6, +0x46, 0x0b, 0x82, 0x90, 0xf1, 0xcd, 0x37, 0xdf, +0x9c, 0xa6, 0x28, 0xca, 0x45, 0xd3, 0xb4, 0x87, +0xe7, 0x79, 0xa1, 0xb8, 0xb8, 0x58, 0xa6, 0x65, +0x59, 0xc6, 0xfc, 0xf9, 0xf3, 0x91, 0x96, 0x96, +0x26, 0xab, 0xd5, 0x6a, 0x91, 0xa2, 0x28, 0x1f, +0x4d, 0xd3, 0xde, 0xdb, 0xd3, 0x81, 0xd8, 0x6c, +0xb6, 0x99, 0xb9, 0xb9, 0xb9, 0x13, 0x86, 0x10, +0x4e, 0x3c, 0xcf, 0xf3, 0x58, 0xbc, 0x78, 0x31, +0x2e, 0x5d, 0xba, 0x84, 0xa4, 0xa4, 0xa4, 0x71, +0x8b, 0x07, 0x6e, 0x45, 0x95, 0x25, 0x25, 0x25, +0x41, 0xf3, 0x5e, 0x14, 0x45, 0x24, 0x27, 0x27, +0xe3, 0xef, 0x7f, 0xff, 0x3b, 0x76, 0xee, 0xdc, +0x89, 0xe9, 0xd3, 0xa7, 0x87, 0xb4, 0x8b, 0x8b, +0x8b, 0xa3, 0xb4, 0x5a, 0xad, 0xd1, 0xe3, 0xf1, +0xc4, 0x77, 0x75, 0x75, 0x9d, 0x8e, 0x88, 0x88, +0x70, 0xa8, 0x54, 0x2a, 0xfe, 0xd4, 0xa9, 0x53, +0x22, 0x73, 0x9b, 0xa0, 0x4c, 0x08, 0x91, 0xca, +0xca, 0xca, 0x7c, 0x5a, 0xad, 0xd6, 0xa1, 0x50, +0x28, 0x64, 0x8a, 0xa2, 0xe4, 0xee, 0xee, 0xee, +0xba, 0xd6, 0xd6, 0x56, 0x09, 0xc0, 0xf2, 0x8a, +0x8a, 0x0a, 0x75, 0x38, 0x08, 0xfe, 0x65, 0xeb, +0xec, 0xd9, 0xb3, 0x63, 0x8a, 0x07, 0x80, 0x53, +0xa7, 0x4e, 0x21, 0x23, 0x23, 0x03, 0x6a, 0xb5, +0x3a, 0xa8, 0xfc, 0xc8, 0x91, 0x23, 0xa0, 0x28, +0x0a, 0x4f, 0x3c, 0xf1, 0x44, 0x58, 0x00, 0xcb, +0x96, 0x2d, 0x0b, 0xfa, 0xcd, 0xf3, 0x3c, 0x76, +0xed, 0xda, 0x05, 0x9f, 0xcf, 0x87, 0x4b, 0x97, +0x2e, 0x21, 0x2a, 0x2a, 0x2a, 0x6c, 0xdb, 0xbc, +0xbc, 0x3c, 0x45, 0x4f, 0x4f, 0xcf, 0x13, 0x5d, +0x5d, 0x5d, 0x39, 0x1c, 0xc7, 0xf5, 0xa9, 0x54, +0x2a, 0x16, 0x00, 0x15, 0xd8, 0xc7, 0x8e, 0x80, +0xe0, 0xd4, 0x6a, 0xb5, 0xf0, 0x7a, 0xbd, 0xe8, +0xe9, 0xe9, 0xf9, 0xb4, 0xb5, 0xb5, 0x15, 0xb2, +0x2c, 0x2f, 0xff, 0xd1, 0x8f, 0x7e, 0x34, 0x26, +0x84, 0x84, 0x84, 0x04, 0xdc, 0xbc, 0x79, 0x13, +0x69, 0x69, 0x69, 0xd0, 0xeb, 0xf5, 0x41, 0xf5, +0x07, 0x0f, 0x1e, 0xc4, 0x9a, 0x35, 0x6b, 0x30, +0x67, 0xce, 0x1c, 0xcc, 0x9d, 0x3b, 0x37, 0xa8, +0xee, 0xcc, 0x99, 0x33, 0xd8, 0xbf, 0x7f, 0x3f, +0xb6, 0x6c, 0xd9, 0x12, 0x56, 0xc0, 0x68, 0xb6, +0x66, 0xcd, 0x1a, 0x34, 0x37, 0x37, 0x63, 0xf7, +0xee, 0xdd, 0x41, 0xe2, 0x0f, 0x1c, 0x38, 0x80, +0x81, 0x81, 0x01, 0x2c, 0x5b, 0xb6, 0x2c, 0xe8, +0x39, 0x72, 0x73, 0x73, 0x35, 0x67, 0xce, 0x9c, +0xf9, 0x8f, 0x93, 0x27, 0x4f, 0xfe, 0x1f, 0xc7, +0x71, 0x54, 0x4c, 0x4c, 0x4c, 0x70, 0x42, 0x64, +0x24, 0x04, 0xa3, 0xd1, 0x08, 0x00, 0xe8, 0xe9, +0xe9, 0xf9, 0xf4, 0x76, 0xfe, 0x6e, 0x4c, 0x08, +0xd3, 0xa6, 0x4d, 0x0b, 0xfb, 0x09, 0xec, 0x93, +0x4f, 0x3e, 0x41, 0x5f, 0x5f, 0x1f, 0xbe, 0xfc, +0xf2, 0x4b, 0x7c, 0xfe, 0xf9, 0xe7, 0x81, 0x72, +0x51, 0x14, 0x51, 0x5a, 0x5a, 0x8a, 0xda, 0xda, +0xda, 0x31, 0x9d, 0xe2, 0x70, 0xeb, 0xe8, 0xe8, +0x40, 0x7b, 0x7b, 0x3b, 0x2c, 0x16, 0x0b, 0x36, +0x6f, 0xde, 0x8c, 0x82, 0x82, 0x02, 0xff, 0xf3, +0xa3, 0xaa, 0xaa, 0x0a, 0xbf, 0xfb, 0xdd, 0xef, +0xf0, 0xf5, 0xd7, 0x5f, 0x87, 0xb4, 0xbb, 0x76, +0xed, 0x9a, 0xa7, 0xb7, 0xb7, 0xf7, 0x22, 0x45, +0x51, 0x82, 0x52, 0xa9, 0x94, 0x81, 0x51, 0x92, +0xa2, 0x7e, 0x08, 0x95, 0x95, 0x95, 0xde, 0xae, +0xae, 0x2e, 0x4c, 0x14, 0xc2, 0x88, 0xbe, 0xf0, +0xe7, 0x3f, 0xff, 0x19, 0x19, 0x19, 0x19, 0x30, +0x9b, 0xcd, 0xa8, 0xaa, 0xaa, 0xc2, 0xb3, 0xcf, +0x3e, 0x0b, 0x00, 0xb0, 0x58, 0x2c, 0x28, 0x29, +0x29, 0x81, 0xc7, 0xe3, 0x41, 0x4a, 0x4a, 0x4a, +0x88, 0x63, 0x1b, 0xcb, 0x9a, 0x9a, 0x9a, 0xb0, +0x75, 0xeb, 0x56, 0x68, 0x34, 0x1a, 0xbc, 0xf9, +0xe6, 0x9b, 0x81, 0xf2, 0x5d, 0xbb, 0x76, 0xa1, +0xa1, 0xa1, 0x01, 0xed, 0xed, 0xed, 0x21, 0x6d, +0x7a, 0x7b, 0x7b, 0xa5, 0x8e, 0x8e, 0x8e, 0xae, +0xab, 0x57, 0xaf, 0x7e, 0x15, 0x17, 0x17, 0xe7, +0x72, 0xbb, 0xdd, 0x42, 0x47, 0x47, 0x87, 0x3c, +0x6a, 0x56, 0xf8, 0x36, 0x04, 0xdc, 0x0b, 0x84, +0x96, 0x96, 0x16, 0x7c, 0xf9, 0xe5, 0x97, 0xd8, +0xb0, 0x61, 0x03, 0xe2, 0xe2, 0xe2, 0xa0, 0xd1, +0x68, 0x30, 0x6b, 0xd6, 0xac, 0x40, 0xfd, 0x91, +0x23, 0x47, 0x20, 0x08, 0x02, 0xde, 0x7b, 0xef, +0x3d, 0x7c, 0xff, 0xfb, 0xdf, 0x0f, 0x69, 0xcf, +0x71, 0x5c, 0xd8, 0xd8, 0x7f, 0xed, 0xda, 0xb5, +0xa8, 0xa8, 0xa8, 0x80, 0x42, 0xa1, 0x40, 0x74, +0x74, 0x34, 0x80, 0x5b, 0x1b, 0xa5, 0x6d, 0xdb, +0xb6, 0x61, 0xf7, 0xee, 0xdd, 0x81, 0xe7, 0xf5, +0x9b, 0xc5, 0x62, 0x91, 0x9b, 0x9a, 0x9a, 0xcc, +0xfb, 0xf6, 0xed, 0xdb, 0xa2, 0x52, 0xa9, 0xfa, +0x19, 0x86, 0x71, 0xb8, 0xdd, 0x6e, 0xdf, 0xa7, +0x9f, 0x7e, 0x2a, 0x85, 0x4d, 0x8b, 0x0f, 0x87, +0x60, 0xb1, 0x58, 0x02, 0xf1, 0xf1, 0x78, 0x20, +0xb8, 0x5c, 0x2e, 0x14, 0x15, 0x15, 0x81, 0x61, +0x18, 0xe8, 0x74, 0x3a, 0xbc, 0xf6, 0xda, 0x6b, +0x28, 0x2c, 0x2c, 0x44, 0x4a, 0x4a, 0x0a, 0x06, +0x06, 0x06, 0xe0, 0xf5, 0x7a, 0x71, 0xf8, 0xf0, +0x61, 0x14, 0x16, 0x16, 0x8e, 0x2a, 0xfe, 0xfa, +0xf5, 0xeb, 0x78, 0xfb, 0xed, 0xb7, 0xf1, 0xc7, +0x3f, 0xfe, 0x31, 0xa8, 0xfc, 0xdc, 0xb9, 0x73, +0xf0, 0x7a, 0xbd, 0xb8, 0x71, 0xe3, 0x46, 0x90, +0x43, 0xb4, 0xdb, 0xed, 0x28, 0x2f, 0x2f, 0xc7, +0xde, 0xbd, 0x7b, 0xf1, 0xf8, 0xe3, 0x8f, 0x87, +0x88, 0xdf, 0xbb, 0x77, 0xaf, 0xb9, 0xbe, 0xbe, +0xbe, 0x52, 0xa9, 0x54, 0x5e, 0xd1, 0xe9, 0x74, +0x37, 0x23, 0x22, 0x22, 0xdc, 0x6e, 0xb7, 0x5b, +0x24, 0x84, 0x8c, 0xfd, 0x61, 0x64, 0x18, 0x04, +0x1f, 0x80, 0x40, 0x70, 0x7f, 0x27, 0x08, 0x43, +0x43, 0x43, 0x20, 0x84, 0x40, 0xa1, 0x50, 0x20, +0x3e, 0x3e, 0x1e, 0x6b, 0xd7, 0xae, 0x05, 0x70, +0x2b, 0x76, 0xcf, 0xcc, 0xcc, 0x0c, 0xcc, 0x7b, +0x7f, 0xb9, 0xdf, 0x44, 0x51, 0x0c, 0xbc, 0xc1, +0xf7, 0xdf, 0x7f, 0x3f, 0x28, 0xbb, 0x74, 0xf0, +0xe0, 0x41, 0x2c, 0x59, 0xb2, 0x04, 0xaf, 0xbe, +0xfa, 0x2a, 0x36, 0x6e, 0xdc, 0x18, 0x00, 0x7d, +0xed, 0xda, 0x35, 0x7c, 0xf1, 0xc5, 0x17, 0x28, +0x2d, 0x2d, 0x45, 0x51, 0x51, 0xd1, 0x68, 0xe2, +0xfb, 0xf7, 0xec, 0xd9, 0xb3, 0x89, 0x61, 0x98, +0x0b, 0x0a, 0x85, 0xa2, 0x57, 0x14, 0x45, 0xfb, +0xe5, 0xcb, 0x97, 0xbd, 0x6d, 0x6d, 0x6d, 0x92, +0x2c, 0xcb, 0xa3, 0x4f, 0x81, 0x7b, 0x85, 0xe0, +0x72, 0xb9, 0x20, 0xcb, 0x32, 0x7e, 0xff, 0xfb, +0xdf, 0x63, 0xde, 0xbc, 0x79, 0x81, 0xf2, 0x03, +0x07, 0x0e, 0xa0, 0xac, 0xac, 0x0c, 0xaf, 0xbf, +0xfe, 0x3a, 0x32, 0x32, 0x32, 0x46, 0xde, 0x07, +0x2b, 0x56, 0xac, 0xc0, 0x5b, 0x6f, 0xbd, 0x85, +0xd4, 0xd4, 0xd4, 0xa0, 0x3a, 0x49, 0x92, 0x70, +0xe2, 0xc4, 0x09, 0xe4, 0xe4, 0xe4, 0x04, 0x56, +0x8a, 0x96, 0x96, 0x16, 0x54, 0x54, 0x54, 0x60, +0x68, 0x68, 0x08, 0x0b, 0x16, 0x2c, 0xc0, 0xce, +0x9d, 0x3b, 0x43, 0xc4, 0xef, 0xdb, 0xb7, 0x6f, +0xa0, 0xbe, 0xbe, 0x7e, 0x33, 0x21, 0xe4, 0xbc, +0x5e, 0xaf, 0xef, 0xe1, 0x79, 0xde, 0x96, 0x95, +0x95, 0xe5, 0x19, 0x7e, 0x24, 0x6f, 0x5c, 0x1f, +0x47, 0x27, 0x0a, 0x41, 0xa3, 0xd1, 0xa0, 0xb6, +0xb6, 0x16, 0xcb, 0x97, 0x2f, 0x87, 0x28, 0x8a, +0xa8, 0xad, 0xad, 0xc5, 0x82, 0x05, 0x0b, 0x50, +0x57, 0x57, 0x87, 0xb5, 0x6b, 0xd7, 0x86, 0x88, +0x07, 0x80, 0xf7, 0xdf, 0x7f, 0x1f, 0x3f, 0xfc, +0xe1, 0x0f, 0x43, 0xc4, 0x03, 0xc0, 0x92, 0x25, +0x4b, 0x60, 0xb1, 0x58, 0x82, 0xa6, 0xc4, 0xf4, +0xe9, 0xd3, 0x41, 0x08, 0x81, 0xdb, 0xed, 0xc6, +0x4b, 0x2f, 0xbd, 0x84, 0x87, 0x1e, 0x7a, 0x28, +0x50, 0x67, 0xb5, 0x5a, 0xe5, 0x7d, 0xfb, 0xf6, +0x0d, 0x7c, 0xf6, 0xd9, 0x67, 0x9b, 0x24, 0x49, +0x3a, 0x17, 0x15, 0x15, 0xd5, 0xad, 0xd7, 0xeb, +0xad, 0x46, 0xa3, 0xd1, 0x33, 0xf2, 0x3c, 0xe2, +0x84, 0x0e, 0x4a, 0xfa, 0x8f, 0xbf, 0x5a, 0x2c, +0x16, 0x05, 0xcb, 0xb2, 0x3a, 0xab, 0xd5, 0x1a, +0xe7, 0x74, 0x3a, 0x93, 0xa7, 0x4c, 0x99, 0x52, +0x6e, 0x32, 0x99, 0x46, 0x9d, 0x0e, 0x3b, 0x76, +0xec, 0xc0, 0xba, 0x75, 0xeb, 0x90, 0x98, 0x98, +0x88, 0x17, 0x5f, 0x7c, 0x11, 0xbf, 0xfe, 0xf5, +0xaf, 0x83, 0xea, 0xaf, 0x5d, 0xbb, 0x86, 0x0f, +0x3f, 0xfc, 0x10, 0x2f, 0xbf, 0xfc, 0xf2, 0xa8, +0xf1, 0xfd, 0xd0, 0xd0, 0x10, 0xe6, 0xce, 0x9d, +0x8b, 0xba, 0xba, 0xba, 0x90, 0x5d, 0xe8, 0xae, +0x5d, 0xbb, 0xb0, 0x6d, 0xdb, 0x36, 0x1c, 0x3c, +0x78, 0x30, 0x10, 0x55, 0xda, 0x6c, 0x36, 0xf9, +0xf3, 0xcf, 0x3f, 0x1f, 0xa8, 0xaf, 0xaf, 0xdf, +0x04, 0xe0, 0x9c, 0x4e, 0xa7, 0xbb, 0xa1, 0xd7, +0xeb, 0xad, 0x0c, 0xc3, 0x78, 0x3e, 0xf8, 0xe0, +0x03, 0x01, 0x40, 0x90, 0xe0, 0x09, 0x9f, 0x14, +0x9d, 0x28, 0x84, 0xb2, 0xb2, 0x32, 0x3c, 0xf9, +0xe4, 0x93, 0xa8, 0xa8, 0xa8, 0x40, 0x64, 0x64, +0x64, 0x48, 0x7f, 0xf9, 0xf9, 0xf9, 0x78, 0xf7, +0xdd, 0x77, 0x91, 0x97, 0x97, 0x17, 0x52, 0xb7, +0x76, 0xed, 0x5a, 0x54, 0x55, 0x55, 0xe1, 0xc5, +0x17, 0x5f, 0xc4, 0xd6, 0xad, 0x5b, 0x03, 0xe5, +0x3c, 0xcf, 0x43, 0xa1, 0x50, 0x84, 0x64, 0xa0, +0x59, 0x96, 0x95, 0xf7, 0xee, 0xdd, 0x3b, 0xb0, +0x67, 0xcf, 0x9e, 0x71, 0x89, 0x07, 0xee, 0xe2, +0x88, 0xcc, 0x1d, 0xa6, 0x03, 0x01, 0x50, 0x3e, +0x1c, 0xc2, 0x93, 0x4f, 0x3e, 0x89, 0xd2, 0xd2, +0xd2, 0x10, 0xf1, 0x03, 0x03, 0x03, 0xf8, 0xf6, +0xdb, 0x6f, 0xa1, 0xd7, 0xeb, 0x43, 0xc4, 0xbb, +0x5c, 0x2e, 0xf4, 0xf6, 0xf6, 0xe2, 0xc4, 0x89, +0x13, 0xe8, 0xef, 0xef, 0x0f, 0x04, 0x48, 0x36, +0x9b, 0x0d, 0xcd, 0xcd, 0xcd, 0x98, 0x3b, 0x77, +0x6e, 0x48, 0xcc, 0x6f, 0xb3, 0xd9, 0xf0, 0xd7, +0xbf, 0xfe, 0x75, 0x42, 0xe2, 0x01, 0x80, 0x1a, +0xad, 0x70, 0x3c, 0x10, 0x2a, 0x2b, 0x2b, 0xe5, +0x98, 0x98, 0x18, 0x9f, 0xc1, 0x60, 0x70, 0x18, +0x8d, 0xc6, 0x9b, 0x46, 0xa3, 0xf1, 0x7a, 0x77, +0x77, 0xf7, 0xa7, 0xad, 0xad, 0xad, 0xf5, 0x55, +0x55, 0x55, 0x6e, 0xff, 0xc8, 0x7a, 0xf9, 0xe5, +0x97, 0x31, 0x65, 0xca, 0x94, 0xa0, 0xf6, 0x6f, +0xbd, 0xf5, 0x16, 0xf2, 0xf2, 0xf2, 0xf0, 0xd1, +0x47, 0x1f, 0xa1, 0xba, 0xba, 0x3a, 0xa8, 0x6e, +0xfb, 0xf6, 0xed, 0x58, 0xba, 0x74, 0x29, 0x4e, +0x9e, 0x3c, 0x89, 0x96, 0x96, 0x96, 0x80, 0xf8, +0xbe, 0xbe, 0x3e, 0xfc, 0xe4, 0x27, 0x3f, 0x41, +0x6e, 0x6e, 0x6e, 0x88, 0x78, 0x96, 0x65, 0xd1, +0xd8, 0xd8, 0xd8, 0xff, 0xc9, 0x27, 0x9f, 0x6c, +0x12, 0x04, 0x61, 0xdc, 0xe2, 0x81, 0x7b, 0x3c, +0x2c, 0xed, 0x9f, 0x0e, 0x5d, 0x5d, 0x5d, 0x4a, +0x49, 0x92, 0xb4, 0x1c, 0xc7, 0xc5, 0xdb, 0x6c, +0xb6, 0xe4, 0x87, 0x1f, 0x7e, 0x78, 0x85, 0xc9, +0x64, 0x7a, 0xfe, 0x85, 0x17, 0x5e, 0x08, 0xf1, +0x09, 0x3e, 0x9f, 0x0f, 0x46, 0xa3, 0x11, 0x9d, +0x9d, 0x9d, 0x21, 0x73, 0x9e, 0xe7, 0x79, 0xa4, +0xa6, 0xa6, 0xe2, 0xea, 0xd5, 0xab, 0x41, 0xb9, +0x80, 0x7d, 0xfb, 0xf6, 0xa1, 0xb9, 0xb9, 0x19, +0x6f, 0xbc, 0xf1, 0x46, 0xc8, 0x0e, 0xd2, 0x2f, +0xbe, 0xa6, 0xa6, 0x66, 0x93, 0x2c, 0xcb, 0xe7, +0xa2, 0xa2, 0xa2, 0xc6, 0x2d, 0x1e, 0xb8, 0xc7, +0x83, 0x92, 0xfe, 0xe9, 0xe0, 0xdf, 0x3b, 0xe8, +0xf5, 0xfa, 0x01, 0x00, 0xe8, 0xe9, 0xe9, 0xa9, +0x3b, 0x74, 0xe8, 0x10, 0x28, 0x8a, 0x7a, 0x7e, +0xd5, 0xaa, 0x55, 0x41, 0xdb, 0xbe, 0x9a, 0x9a, +0x1a, 0xf0, 0x3c, 0x1f, 0xd8, 0x29, 0xfa, 0x53, +0xe8, 0x1b, 0x36, 0x6c, 0x80, 0xd9, 0x6c, 0xc6, +0x3b, 0xef, 0xbc, 0x13, 0x24, 0xbe, 0xa7, 0xa7, +0x07, 0x37, 0x6e, 0xdc, 0xc0, 0x1f, 0xfe, 0xf0, +0x87, 0x90, 0xef, 0x0c, 0x2c, 0xcb, 0xa2, 0xa9, +0xa9, 0xe9, 0xae, 0xc5, 0x03, 0xf7, 0xe9, 0xb8, +0xbc, 0xff, 0xdb, 0xa2, 0x56, 0xab, 0x55, 0xf8, +0x47, 0x82, 0xc3, 0xe1, 0x48, 0x9e, 0x31, 0x63, +0xc6, 0xca, 0xf9, 0xf3, 0xe7, 0x97, 0xae, 0x5c, +0xb9, 0x32, 0x00, 0xe1, 0xfc, 0xf9, 0xf3, 0xb8, +0x7a, 0xf5, 0x2a, 0x96, 0x2d, 0x5b, 0x06, 0xbb, +0xdd, 0x8e, 0xfc, 0xfc, 0x7c, 0x30, 0x0c, 0x03, +0xa7, 0xd3, 0x89, 0x7f, 0xfc, 0xe3, 0x1f, 0xe3, +0x4e, 0x9b, 0xd9, 0xed, 0x76, 0x34, 0x36, 0x36, +0x0e, 0x54, 0x57, 0x57, 0x57, 0xde, 0xad, 0x78, +0xe0, 0x3e, 0xfe, 0x5f, 0x20, 0x1c, 0x84, 0xd4, +0xd4, 0xd4, 0x95, 0xf3, 0xe7, 0xcf, 0x2f, 0x2d, +0x2f, 0x2f, 0x57, 0x8f, 0x6c, 0xd3, 0xdb, 0xdb, +0x1b, 0xf0, 0x0f, 0x4b, 0x96, 0x2c, 0x41, 0x63, +0x63, 0x63, 0xa0, 0xce, 0xff, 0x2d, 0x71, 0xe4, +0xb6, 0x1a, 0xb8, 0xb5, 0x4f, 0x68, 0x6a, 0x6a, +0x1a, 0xa8, 0xae, 0xae, 0xde, 0x24, 0x8a, 0xe2, +0xd9, 0xbb, 0x15, 0x0f, 0xdc, 0xa5, 0x13, 0x1c, +0xcd, 0x64, 0x59, 0x96, 0xeb, 0xeb, 0xeb, 0x25, +0xa7, 0xd3, 0xe9, 0xa3, 0x28, 0xca, 0xa9, 0xd7, +0xeb, 0x07, 0x74, 0x3a, 0xdd, 0xf5, 0xce, 0xce, +0xce, 0xff, 0x6d, 0x6b, 0x6b, 0x6b, 0x68, 0x68, +0x68, 0x70, 0x8f, 0x6c, 0x13, 0x1f, 0x1f, 0x0f, +0x8a, 0xa2, 0xb0, 0x73, 0xe7, 0x4e, 0x34, 0x34, +0x34, 0x04, 0xca, 0x2f, 0x5f, 0xbe, 0x8c, 0x55, +0xab, 0x56, 0x85, 0x24, 0x4d, 0x80, 0x5b, 0xe2, +0xff, 0xf6, 0xb7, 0xbf, 0xdd, 0xac, 0xa9, 0xa9, +0xf9, 0x9f, 0x7b, 0x15, 0x0f, 0xdc, 0xe7, 0x3f, +0x4c, 0x8c, 0xcc, 0x27, 0xf8, 0x7d, 0xc2, 0x37, +0xdf, 0x7c, 0x53, 0x4b, 0xd3, 0x34, 0x18, 0x86, +0x29, 0x59, 0xba, 0x74, 0x69, 0x40, 0x15, 0xc3, +0x30, 0x48, 0x4a, 0x4a, 0x82, 0xc5, 0x62, 0x81, +0x42, 0xa1, 0x80, 0x2c, 0xcb, 0xd8, 0xb1, 0x63, +0x07, 0x6a, 0x6a, 0x6a, 0xf0, 0xea, 0xab, 0xaf, +0x86, 0x9c, 0x3b, 0xe0, 0x38, 0x0e, 0xfb, 0xf7, +0xef, 0xbf, 0x59, 0x53, 0x53, 0xb3, 0x19, 0xc0, +0xe9, 0x7b, 0x15, 0x0f, 0xdc, 0x67, 0x00, 0x40, +0x78, 0x08, 0x97, 0x2e, 0x5d, 0xaa, 0x25, 0x84, +0x80, 0x10, 0x52, 0x52, 0x5c, 0x5c, 0x1c, 0x80, +0x70, 0xf2, 0xe4, 0xc9, 0xc0, 0x6a, 0x70, 0xee, +0xdc, 0x39, 0xac, 0x5b, 0xb7, 0x0e, 0x9b, 0x36, +0x6d, 0xc2, 0xf2, 0xe5, 0xcb, 0x83, 0xfa, 0xe5, +0x38, 0x0e, 0xcd, 0xcd, 0xcd, 0x37, 0xab, 0xab, +0xab, 0x37, 0x4b, 0x92, 0x74, 0x46, 0xa3, 0xd1, +0x74, 0xdf, 0xab, 0x78, 0x60, 0x92, 0xff, 0x35, +0x36, 0xd2, 0x27, 0xd8, 0x6c, 0xb6, 0xe4, 0xec, +0xec, 0xec, 0xff, 0x2c, 0x28, 0x28, 0x28, 0x79, +0xe6, 0x99, 0x67, 0x82, 0xc6, 0x77, 0x5f, 0x5f, +0x1f, 0x4a, 0x4b, 0x4b, 0xe1, 0x74, 0x3a, 0x03, +0xb9, 0x45, 0xbf, 0xf9, 0xc5, 0xef, 0xde, 0xbd, +0xdb, 0x2f, 0xfe, 0x46, 0x54, 0x54, 0xd4, 0xd0, +0xbd, 0x8a, 0x07, 0x26, 0x61, 0x04, 0xf8, 0x2d, +0xdc, 0x48, 0xb8, 0x78, 0xf1, 0x62, 0x2d, 0x45, +0x51, 0x32, 0x21, 0xa4, 0xf4, 0xe9, 0xa7, 0x9f, +0x0e, 0x82, 0x90, 0x99, 0x99, 0x19, 0xb2, 0x51, +0xe2, 0x38, 0x0e, 0x07, 0x0e, 0x1c, 0x98, 0x14, +0xf1, 0xc0, 0x24, 0x8e, 0x80, 0xc0, 0x0d, 0xc2, +0xac, 0x0e, 0xd9, 0xd9, 0xd9, 0x2b, 0x17, 0x2e, +0x5c, 0x58, 0x5a, 0x54, 0x54, 0x14, 0x36, 0xb3, +0x74, 0x5b, 0xfc, 0x60, 0x75, 0x75, 0xf5, 0x66, +0x41, 0x10, 0x4e, 0xdf, 0x6f, 0xf1, 0xc0, 0x24, +0x8e, 0x00, 0xbf, 0x85, 0x1b, 0x09, 0xa7, 0x4f, +0x9f, 0xae, 0x95, 0x24, 0x49, 0xa0, 0x28, 0xaa, +0xbc, 0xa0, 0xa0, 0x40, 0x33, 0x12, 0x02, 0xc7, +0x71, 0xf8, 0xe2, 0x8b, 0x2f, 0x06, 0x3f, 0xfe, +0xf8, 0xe3, 0xcd, 0xa2, 0x28, 0x9e, 0xd2, 0x68, +0x34, 0xdd, 0xf7, 0x5b, 0x3c, 0xf0, 0x00, 0x00, +0x00, 0xa3, 0x43, 0x10, 0x04, 0x41, 0x3e, 0x7f, +0xfe, 0x7c, 0x1d, 0x4d, 0xd3, 0x3c, 0x21, 0xe4, +0xbf, 0xf2, 0xf3, 0xf3, 0xb5, 0xfe, 0x83, 0x50, +0xd7, 0xaf, 0x5f, 0x17, 0x8e, 0x1f, 0x3f, 0xde, +0x5b, 0x57, 0x57, 0xb7, 0xd5, 0xe3, 0xf1, 0x9c, +0x33, 0x18, 0x0c, 0xf7, 0xc5, 0xe1, 0x8d, 0x66, +0x0f, 0x04, 0x00, 0x10, 0x0a, 0x21, 0x22, 0x22, +0x42, 0x56, 0x2a, 0x95, 0xe2, 0x85, 0x0b, 0x17, +0xea, 0xac, 0x56, 0x6b, 0x17, 0xcb, 0xb2, 0x3f, +0x8f, 0x8b, 0x8b, 0x33, 0x78, 0x3c, 0x1e, 0xb1, +0xab, 0xab, 0xeb, 0x9f, 0xf5, 0xf5, 0xf5, 0x7f, +0xd2, 0x68, 0x34, 0xdf, 0xaa, 0xd5, 0x6a, 0xb3, +0x5e, 0xaf, 0xb7, 0x4d, 0x86, 0x78, 0xe0, 0x01, +0xf8, 0x80, 0x90, 0x1b, 0x0e, 0xcb, 0x27, 0x70, +0x1c, 0xa7, 0xb6, 0xdb, 0xed, 0x06, 0x41, 0x10, +0xa2, 0x7d, 0x3e, 0x9f, 0x51, 0xa7, 0xd3, 0x19, +0xed, 0x76, 0xbb, 0x53, 0xa5, 0x52, 0x71, 0x34, +0x4d, 0x0f, 0x31, 0x0c, 0x63, 0x8d, 0x88, 0x88, +0xe0, 0xd4, 0x6a, 0xb5, 0x77, 0x32, 0xc4, 0x03, +0x0f, 0x70, 0x04, 0xf8, 0x6d, 0x78, 0x3e, 0x81, +0xe7, 0x79, 0x49, 0xab, 0xd5, 0xfa, 0x04, 0x41, +0x70, 0x52, 0x14, 0x75, 0x53, 0x14, 0x45, 0x26, +0x32, 0x32, 0x52, 0xd2, 0x6a, 0xb5, 0x5e, 0x00, +0x1e, 0x00, 0x9e, 0xae, 0xae, 0x2e, 0xa1, 0xb5, +0xb5, 0x55, 0xc4, 0x24, 0x88, 0x07, 0xbe, 0x03, +0x00, 0x00, 0xfc, 0x07, 0x99, 0x65, 0x00, 0x72, +0x79, 0x79, 0xb9, 0x04, 0xc0, 0xa7, 0xd5, 0x6a, +0x1d, 0x5a, 0xad, 0x96, 0xd2, 0x6a, 0xb5, 0xf2, +0xf0, 0xf3, 0xbe, 0x7f, 0xf9, 0xcb, 0x5f, 0xfc, +0xd7, 0x4e, 0x8a, 0xfd, 0x3f, 0x0b, 0x3c, 0x81, +0x98, 0xf9, 0x7b, 0xef, 0x9d, 0x00, 0x00, 0x00, +0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, +0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/bigimgs/contactpersonicon64.png b/source/bitmaps/bigimgs/contactpersonicon64.png new file mode 100644 index 0000000000000000000000000000000000000000..c78062aaaac9ff02d884bce2844cebefcb60f976 GIT binary patch literal 5057 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 TvY7{78=|Xec)d#fPSpPaA_&Uz literal 0 HcmV?d00001 diff --git a/source/bitmaps/buttons.h b/source/bitmaps/buttons.h new file mode 100644 index 0000000..25b6508 --- /dev/null +++ b/source/bitmaps/buttons.h @@ -0,0 +1,14 @@ +#include + +#ifndef BUTTONS_H +#define BUTTONS_H + +// List all CPP files in the directory. + +#include "buttons/play.cpp" +#include "buttons/add.cpp" +#include "buttons/stop.cpp" +#include "buttons/minus.cpp" + +#endif + diff --git a/source/bitmaps/buttons/add.cpp b/source/bitmaps/buttons/add.cpp new file mode 100644 index 0000000..76d2a89 --- /dev/null +++ b/source/bitmaps/buttons/add.cpp @@ -0,0 +1,81 @@ +#include + +#ifndef BUTTONS_ADD_CPP +#define BUTTONS_ADD_CPP + +static unsigned char buttons_add_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x77, 0x3d, +0xf8, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x01, 0xb9, 0x49, +0x44, 0x41, 0x54, 0x48, 0x89, 0xb5, 0x94, 0xbb, +0x6e, 0x13, 0x41, 0x14, 0x86, 0xff, 0xff, 0xcc, +0xcc, 0xae, 0xb5, 0x10, 0x9b, 0x20, 0x44, 0x61, +0x37, 0x44, 0xc8, 0x85, 0x1b, 0xaa, 0x94, 0x79, +0x81, 0x54, 0xa9, 0xa0, 0xa0, 0x43, 0xa2, 0x06, +0x0a, 0x1e, 0x83, 0x92, 0x97, 0xe0, 0x05, 0x78, +0x03, 0x44, 0x4b, 0x93, 0xa4, 0x88, 0x52, 0x51, +0x20, 0x21, 0xe1, 0xc2, 0x76, 0x7c, 0x89, 0x77, +0xe6, 0xa4, 0x30, 0xbe, 0xac, 0xb5, 0x6b, 0x26, +0xd8, 0x3e, 0xcd, 0x4a, 0xb3, 0xe7, 0xcc, 0x37, +0xff, 0xb9, 0x51, 0x55, 0xb1, 0x4f, 0x93, 0xbd, +0xde, 0x0e, 0xc0, 0xc6, 0x38, 0xf1, 0xf4, 0xe0, +0x1d, 0xad, 0xbc, 0x5c, 0x3d, 0x53, 0xaf, 0x5d, +0xfd, 0xda, 0x3b, 0xdb, 0x09, 0xc0, 0x24, 0xe6, +0x85, 0x7b, 0x9a, 0x9e, 0x24, 0xcd, 0x0c, 0x00, +0x10, 0x26, 0x1e, 0xc3, 0xcb, 0xde, 0x28, 0x26, +0x36, 0x0a, 0x80, 0x84, 0x62, 0x9f, 0xa4, 0xa8, +0x3d, 0x7f, 0x08, 0x00, 0xf0, 0x83, 0x1c, 0xa3, +0xeb, 0x41, 0x54, 0x68, 0x54, 0x0d, 0xc4, 0x89, +0xd0, 0xb0, 0x70, 0x46, 0xcb, 0x0a, 0xef, 0xff, +0x00, 0x70, 0x1d, 0x40, 0x40, 0x5c, 0x5c, 0x7f, +0xc4, 0x29, 0x48, 0x45, 0x68, 0x97, 0xae, 0x24, +0xc0, 0x74, 0x87, 0x00, 0x5a, 0x31, 0x28, 0x28, +0x20, 0x18, 0xa9, 0x60, 0x51, 0xe4, 0xec, 0x7d, +0xeb, 0x3b, 0x89, 0x46, 0x39, 0x80, 0xad, 0xf5, +0x14, 0xd1, 0xb0, 0xf6, 0xe0, 0x43, 0xeb, 0xa2, +0xe2, 0xde, 0xa9, 0xe4, 0xe1, 0x75, 0xff, 0xf3, +0xaf, 0xf3, 0x05, 0x40, 0x2c, 0x8f, 0x93, 0x66, +0x66, 0xab, 0x72, 0xcb, 0x9a, 0x01, 0xfe, 0x0e, +0x3d, 0x9d, 0x20, 0x6b, 0xd7, 0x09, 0xa0, 0x53, +0xe6, 0x3b, 0xfe, 0x79, 0x33, 0xf1, 0x86, 0x07, +0x05, 0x05, 0x74, 0x02, 0x49, 0xa5, 0x5a, 0xba, +0x2a, 0xc2, 0xd8, 0x2f, 0x81, 0x1b, 0x6a, 0xc0, +0x44, 0xbc, 0xcb, 0x67, 0xbe, 0x05, 0x40, 0x98, +0x04, 0x30, 0xdf, 0x7e, 0x37, 0x89, 0x25, 0x40, +0x57, 0x02, 0x18, 0x7b, 0xa0, 0xa2, 0xbd, 0x49, +0x16, 0xfe, 0x69, 0xd8, 0xf0, 0x10, 0x23, 0x16, +0xa2, 0x45, 0x80, 0x38, 0xf9, 0x06, 0xa2, 0x5e, +0x1a, 0xa0, 0x38, 0x52, 0x1f, 0x1e, 0xe9, 0x5c, +0x1d, 0x01, 0x49, 0x8d, 0x02, 0xf8, 0x51, 0xfa, +0x18, 0x27, 0x53, 0x01, 0x7a, 0x00, 0xc0, 0x98, +0x75, 0xfd, 0xf8, 0x53, 0xfb, 0x8b, 0x1f, 0xe6, +0xaf, 0xc2, 0x70, 0x96, 0x57, 0x1a, 0xc2, 0x1e, +0x26, 0xa3, 0xee, 0xc7, 0xab, 0xec, 0x5f, 0xb1, +0x71, 0xdb, 0xd4, 0x0a, 0x10, 0xb0, 0x28, 0x32, +0x9d, 0x80, 0x2e, 0x6e, 0x55, 0x44, 0x01, 0xc4, +0xb1, 0xd0, 0x45, 0x82, 0xf8, 0x55, 0x11, 0xad, +0x40, 0xc3, 0x4a, 0x9b, 0x0a, 0xee, 0x3f, 0xc9, +0x1b, 0xcd, 0x11, 0xba, 0x9a, 0x22, 0x4b, 0xd0, +0x99, 0x1d, 0x02, 0x00, 0x20, 0x28, 0xd4, 0xcf, +0x1a, 0x62, 0xfe, 0xdd, 0x19, 0x80, 0x22, 0xd3, +0xac, 0xd3, 0x40, 0xd6, 0x59, 0x59, 0x55, 0x0a, +0x5f, 0x1d, 0x71, 0x4f, 0xc0, 0xef, 0xdb, 0xf4, +0xcd, 0xb3, 0xe4, 0xcf, 0xdb, 0x42, 0x60, 0xdf, +0x46, 0xc9, 0x88, 0x9a, 0x83, 0x6d, 0xec, 0x0e, +0x24, 0xfe, 0x7f, 0xc9, 0x1f, 0x25, 0xb3, 0x9b, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/buttons/add.png b/source/bitmaps/buttons/add.png new file mode 100644 index 0000000000000000000000000000000000000000..e55565f3bcbad6fec461f4d284b3fde1fa9fc019 GIT binary patch literal 572 zcmV-C0>k}@P)k# zL!t%>9)psX;01UCL`##Th*D7?A>qPye2I7Fq%gj$wQDBWKFvzA=gc?%xlvWIPm{gg z4#37Z@$}#wt-M@4Q?Fh9+B@3`z$E5{dzzjk%?tn#CLY7f-Y6zE3V?)SpQNZge+U5Z zgB+vlK~!i|4aAAiuy97p3h(~_a2-HETwH&|DM&?Vm#!qhbcX<1F(@b?7^z@Uogi!137}KvJN|hy z@rDNl1#|*QrCPcw!q_i?8*0Eryvt|41wfbtFyDSRi6uZ+0vLOsqP8CsP4>0Kk}a{rFS+iy!8%!f=*X8p0kXqwdG6 z>|e2Q+tdmWuqZN}fG%!TL;=LH&_#myRS~T~!%CY9?mx*J%@MkqB1_Pj9RdI#DAdmy zV*cG3fFjeZ(?Hf)Syc*O9dS><@7wgvv*gd)LSWxU$%vYRZR`#t{(s3IC9|6V0000< KMNUMnLSTaHR`aL; literal 0 HcmV?d00001 diff --git a/source/bitmaps/buttons/minus.cpp b/source/bitmaps/buttons/minus.cpp new file mode 100644 index 0000000..ab8a898 --- /dev/null +++ b/source/bitmaps/buttons/minus.cpp @@ -0,0 +1,47 @@ +#include + +#ifndef BUTTONS_MINUS_CPP +#define BUTTONS_MINUS_CPP + +static unsigned char buttons_minus_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x77, 0x3d, +0xf8, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x00, 0xa5, 0x49, +0x44, 0x41, 0x54, 0x48, 0x89, 0xed, 0xd4, 0x41, +0x0a, 0xc2, 0x30, 0x10, 0x05, 0xd0, 0xff, 0x27, +0x49, 0x6b, 0x04, 0xf5, 0x18, 0x5e, 0xc0, 0xd3, +0x78, 0x85, 0x5e, 0xc8, 0x0b, 0x89, 0x27, 0x10, +0xef, 0x21, 0xb8, 0x48, 0x4b, 0x33, 0xdd, 0xd4, +0x62, 0xb1, 0x82, 0xc5, 0x66, 0x21, 0x64, 0x56, +0x21, 0x90, 0xff, 0x08, 0x0c, 0x9f, 0xaa, 0x8a, +0x94, 0x23, 0x49, 0xd3, 0x33, 0x90, 0x81, 0xff, +0x00, 0xec, 0xf3, 0x70, 0x72, 0xfe, 0x62, 0x88, +0xdd, 0xdc, 0x00, 0x4e, 0xdc, 0x29, 0xb4, 0xa9, +0xa9, 0xc7, 0x2a, 0x84, 0xeb, 0x00, 0x38, 0xe2, +0xb0, 0x77, 0x85, 0x2d, 0x39, 0xf5, 0x64, 0xde, +0xdc, 0xea, 0x10, 0xa8, 0xb2, 0x01, 0x5e, 0x7e, +0xe0, 0x49, 0xac, 0x85, 0x58, 0x2d, 0x00, 0x78, +0xb2, 0x35, 0x7d, 0x03, 0x0d, 0x40, 0x49, 0x22, +0x44, 0x45, 0xfc, 0x3d, 0x1f, 0x8e, 0x84, 0xe9, +0x85, 0x11, 0xf0, 0x50, 0x85, 0x2c, 0x50, 0x7e, +0x8e, 0xb4, 0x82, 0x77, 0xe0, 0x0c, 0xe8, 0x36, +0x7e, 0x1d, 0xf3, 0x79, 0x01, 0x0b, 0x4a, 0x23, +0x2d, 0xef, 0x00, 0xc0, 0x5c, 0xd7, 0x19, 0xc8, +0x40, 0x7a, 0xa0, 0x03, 0x37, 0x60, 0x28, 0x8f, +0x01, 0xb3, 0x7f, 0xfb, 0x00, 0x00, 0x00, 0x00, +0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, +0x82, }; + +#endif + diff --git a/source/bitmaps/buttons/minus.png b/source/bitmaps/buttons/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ab0c4f8d8cb25b73a77688f41aaafe3b486245 GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4;uM%+wE?2b1o#5_N7kIC@!^7M7?v2ZML&YZ3T4r7cPbC-EKeqCHEiYRIKLoVu1l09yX)1rf^TMo7_H!j8x0kZ+ jdxirs*CkIlR4rgOPtfRR++6<~=wJp + +#ifndef BUTTONS_PLAY_CPP +#define BUTTONS_PLAY_CPP + +static unsigned char buttons_play_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x77, 0x3d, +0xf8, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x01, 0x4c, 0x49, +0x44, 0x41, 0x54, 0x48, 0x89, 0xb5, 0xd6, 0xbd, +0x4a, 0xc3, 0x50, 0x18, 0xc6, 0xf1, 0xff, 0x53, +0x03, 0xd5, 0x6a, 0xa1, 0x93, 0x83, 0xa3, 0x50, +0x04, 0x17, 0x75, 0x16, 0xbc, 0x83, 0x5e, 0x82, +0x57, 0xe2, 0xec, 0x05, 0xb8, 0xe9, 0xe0, 0x05, +0x38, 0x64, 0x50, 0x07, 0x27, 0x05, 0xc5, 0x2b, +0x70, 0xf1, 0x16, 0xd4, 0x56, 0x29, 0x7e, 0x80, +0x1f, 0x49, 0x5e, 0x87, 0x1c, 0xa1, 0x96, 0x34, +0x39, 0x6d, 0x92, 0x17, 0x32, 0x84, 0x73, 0xf2, +0xfc, 0xce, 0x9b, 0x73, 0x20, 0x91, 0x99, 0x51, +0x67, 0x35, 0x6a, 0x4d, 0x2f, 0x02, 0x24, 0x75, +0x24, 0x95, 0x5a, 0x44, 0xd1, 0xc3, 0x9b, 0x40, +0x28, 0xa9, 0x59, 0x17, 0x90, 0x00, 0x3d, 0xe0, +0x46, 0x52, 0xa7, 0x0e, 0x20, 0x06, 0x86, 0xc0, +0x06, 0x70, 0x2d, 0x69, 0xa5, 0x6a, 0x20, 0x72, +0x48, 0x13, 0x58, 0x07, 0x2e, 0x25, 0x75, 0xeb, +0x00, 0x00, 0x02, 0x60, 0x0d, 0x38, 0x97, 0xb4, +0x55, 0x15, 0x10, 0x93, 0xee, 0xc3, 0x5f, 0xc9, +0x21, 0x27, 0x92, 0x76, 0xaa, 0x00, 0x46, 0x3b, +0x18, 0xad, 0x2e, 0x70, 0x2c, 0xa9, 0x57, 0x16, +0x88, 0x1d, 0x92, 0x64, 0x5c, 0xab, 0xc0, 0x81, +0xa4, 0xdd, 0xbc, 0x80, 0xa0, 0x00, 0x88, 0x80, +0x77, 0xe0, 0x69, 0xc2, 0x78, 0x0b, 0xd8, 0x93, +0xd4, 0x06, 0x0e, 0xcd, 0x2c, 0x19, 0x9f, 0xe0, +0x03, 0xbc, 0x16, 0xcc, 0x99, 0x07, 0xb6, 0x81, +0x10, 0x78, 0x9c, 0x16, 0x88, 0x1d, 0xf0, 0x39, +0x61, 0xbc, 0x05, 0x5c, 0x01, 0xfb, 0x66, 0x36, +0xc8, 0x9a, 0xe0, 0xd3, 0xc1, 0x90, 0xf4, 0xf4, +0x8c, 0xd7, 0x12, 0x70, 0x01, 0x1c, 0x99, 0xd9, +0xc7, 0xa4, 0x00, 0x9f, 0x0e, 0x5e, 0xf8, 0x7f, +0x92, 0x04, 0xb4, 0x81, 0x33, 0x20, 0x34, 0xb3, +0x9f, 0xbc, 0x00, 0x9f, 0x0e, 0x9e, 0x81, 0x6f, +0x77, 0xdf, 0x00, 0x16, 0x49, 0xdf, 0xf7, 0x6d, +0xd6, 0xa6, 0xce, 0x02, 0xf4, 0x81, 0x2f, 0x60, +0x0e, 0x58, 0x20, 0x5d, 0xf5, 0x7d, 0x51, 0xb0, +0x2f, 0x10, 0x3b, 0x20, 0x76, 0xc0, 0xa9, 0x99, +0x3d, 0xf8, 0x86, 0xfb, 0x00, 0x11, 0x30, 0x20, +0xed, 0xe0, 0xce, 0xcc, 0xde, 0xa6, 0x09, 0x07, +0x50, 0xde, 0x37, 0x59, 0x52, 0x00, 0x2c, 0x03, +0xfd, 0xa2, 0xcd, 0x9c, 0x15, 0x10, 0x80, 0x95, +0xf8, 0x33, 0xc8, 0x05, 0xaa, 0xa8, 0xda, 0xff, +0x2a, 0x7e, 0x01, 0x03, 0x83, 0x71, 0xd8, 0x94, +0x9e, 0x8b, 0x59, 0x00, 0x00, 0x00, 0x00, 0x49, +0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, +}; + +#endif + diff --git a/source/bitmaps/buttons/play.png b/source/bitmaps/buttons/play.png new file mode 100644 index 0000000000000000000000000000000000000000..616056288fb7da6fe39e3b0ca3a757743e7a9c11 GIT binary patch literal 463 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4*-ZQRUX5lmw%iKxgMlHpk{+yd#tT1tAV7h6RuRfDXsmjzSmy3sIJ7}zo6raFg z`@k(|IiCVs+X1!$-OQy~3Pm2m5$t-ZrLP$nm=bs`rf&%q6`1_)aQsO{^+{!`7~HHS z*6J1LtPB_Hke!qgv-&{elDm5v7BF-)lt0KkRKa~?@)b6|vpSOVA29C`J2R7gTcbe5 z9H80{mWg{CbonS0AP z*#qvGM+PzIF#lb2c8;h(!_*(fCs!@WzyR-I2h+XYh3Ob6Mw<&;$UN C3bO(L literal 0 HcmV?d00001 diff --git a/source/bitmaps/buttons/stop.cpp b/source/bitmaps/buttons/stop.cpp new file mode 100644 index 0000000..18f7472 --- /dev/null +++ b/source/bitmaps/buttons/stop.cpp @@ -0,0 +1,51 @@ +#include + +#ifndef BUTTONS_STOP_CPP +#define BUTTONS_STOP_CPP + +static unsigned char buttons_stop_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x77, 0x3d, +0xf8, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x00, 0xc8, 0x49, +0x44, 0x41, 0x54, 0x48, 0x89, 0xdd, 0x95, 0x31, +0x0e, 0xc2, 0x30, 0x0c, 0x45, 0x9f, 0x11, 0x62, +0x42, 0x9c, 0x02, 0x89, 0x0b, 0xb2, 0x72, 0x53, +0x6e, 0xc0, 0x46, 0x5a, 0xd2, 0x50, 0x81, 0x19, +0x5a, 0x21, 0x11, 0x82, 0x70, 0xdd, 0x76, 0x00, +0x8f, 0x91, 0xe3, 0x97, 0xff, 0xed, 0xc8, 0xa2, +0xaa, 0xcc, 0x19, 0x8b, 0x59, 0xab, 0xff, 0x05, +0x60, 0x99, 0x1f, 0x88, 0xc8, 0x1e, 0x38, 0x38, +0xeb, 0xdd, 0x80, 0x9d, 0xaa, 0x9e, 0x3e, 0x02, +0x80, 0x15, 0xb0, 0x71, 0x02, 0x02, 0x99, 0x2b, +0x25, 0x8b, 0x1a, 0x67, 0x71, 0x80, 0x2b, 0x70, +0xff, 0x06, 0x48, 0x23, 0x01, 0x2f, 0x73, 0x3f, +0xb5, 0x82, 0xd6, 0x02, 0x18, 0xa3, 0xa0, 0x25, +0xb3, 0xa8, 0xd4, 0xe4, 0x44, 0x37, 0x0d, 0x9e, +0x2f, 0x9e, 0xf2, 0x7b, 0x25, 0x40, 0x03, 0xc4, +0xfe, 0x35, 0x43, 0x23, 0x62, 0x54, 0x10, 0xf1, +0xf5, 0x22, 0x62, 0x54, 0x50, 0x03, 0x17, 0x07, +0xa0, 0xb6, 0x00, 0x52, 0x9f, 0x58, 0x39, 0x00, +0x15, 0x06, 0x8b, 0x9a, 0x3e, 0x31, 0x38, 0x00, +0x01, 0xa3, 0x82, 0xe0, 0x04, 0x54, 0x43, 0x00, +0x1e, 0x8b, 0x02, 0x46, 0x8b, 0x6a, 0xba, 0x6f, +0x3f, 0x34, 0xce, 0x64, 0x0a, 0x24, 0x5f, 0x99, +0x22, 0xb2, 0x06, 0xb6, 0x8e, 0xe2, 0xd0, 0x4d, +0xde, 0x51, 0x55, 0x9f, 0x2a, 0xde, 0x00, 0x53, +0xc7, 0xef, 0xaf, 0xcc, 0xd9, 0x01, 0x0f, 0x25, +0xb2, 0x4d, 0xab, 0xef, 0x02, 0xae, 0x93, 0x00, +0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, +0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/buttons/stop.png b/source/bitmaps/buttons/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..763eb1521ae8feab0cbdfb41a53c4797290d5f53 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR44dhCl;+bBiS9f z`af&JO!5X`HP4QzL3BeQ6Vps>)o!Wu!UpYv|7;%0jQYj)Tbr&iNi1HV zx_QNwCobl^^YrI^s#bMiKJw4hSve_0;Nw@Nq>un+arOn<7=q?USTcyRbxyi_{y2*F- Ud!}`hfqr7}boFyt=akR{0A!zZCjbBd literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons.h b/source/bitmaps/icons.h new file mode 100644 index 0000000..bab4ac0 --- /dev/null +++ b/source/bitmaps/icons.h @@ -0,0 +1,31 @@ +#include + +#ifndef ICONS_H +#define ICONS_H + +// List all CPP files in the directory. + +#include "icons/accgroup.cpp" +#include "icons/accinet.cpp" +#include "icons/acclocal.cpp" +#include "icons/accnone.cpp" +#include "icons/act1.cpp" +#include "icons/act2.cpp" +#include "icons/act3.cpp" +#include "icons/act4.cpp" +#include "icons/activitywindow.cpp" +#include "icons/actsleep.cpp" +#include "icons/ciext.cpp" +#include "icons/cikey.cpp" +#include "icons/cilog.cpp" +#include "icons/cipto.cpp" +#include "icons/cisnd.cpp" +#include "icons/civen.cpp" +#include "icons/nossl.cpp" +#include "icons/offline.cpp" +#include "icons/online.cpp" +#include "icons/ssl.cpp" +#include "icons/sslwarning.cpp" + +#endif + diff --git a/source/bitmaps/icons/.directory b/source/bitmaps/icons/.directory new file mode 100644 index 0000000..b00ef51 --- /dev/null +++ b/source/bitmaps/icons/.directory @@ -0,0 +1,4 @@ +[Dolphin] +PreviewsShown=true +Timestamp=2014,12,31,18,24,36 +Version=3 diff --git a/source/bitmaps/icons/accgroup.cpp b/source/bitmaps/icons/accgroup.cpp new file mode 100644 index 0000000..7c4edad --- /dev/null +++ b/source/bitmaps/icons/accgroup.cpp @@ -0,0 +1,70 @@ +#include + +#ifndef ICONS_ACCGROUP_CPP +#define ICONS_ACCGROUP_CPP + +static unsigned char icons_accgroup_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0x17, 0x00, 0x9a, 0x00, 0x36, 0x14, +0xbd, 0x58, 0x52, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x02, 0x1c, 0x12, 0x16, 0x24, 0xbb, +0xd6, 0x4a, 0xa0, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x45, +0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xa5, 0x92, +0xb1, 0x4b, 0xc3, 0x50, 0x10, 0xc6, 0x7f, 0x29, +0x0e, 0x2e, 0x5d, 0x2c, 0x76, 0xd1, 0x86, 0x92, +0xc1, 0x82, 0x83, 0x22, 0x2e, 0x0a, 0xb1, 0xd8, +0x45, 0xc1, 0x41, 0x32, 0x4b, 0x06, 0xe9, 0x2a, +0xe2, 0x64, 0x66, 0xbb, 0xda, 0xdd, 0x7f, 0xa0, +0x01, 0x37, 0x71, 0x12, 0xb7, 0x86, 0x76, 0xd0, +0x39, 0x43, 0x11, 0x87, 0x28, 0x29, 0x48, 0xa1, +0xd1, 0xa1, 0x83, 0xd8, 0x0e, 0xc6, 0xa1, 0x34, +0xed, 0x4b, 0x1e, 0xad, 0xe2, 0x2d, 0xdf, 0xdd, +0x7b, 0xf7, 0x7d, 0x77, 0xef, 0xde, 0xc1, 0x3f, +0x4d, 0x99, 0x0c, 0x6c, 0xdb, 0x0e, 0x7f, 0x43, +0x32, 0x4d, 0x33, 0xe2, 0xcd, 0xc5, 0x2f, 0x35, +0x4d, 0x9b, 0x4a, 0xf6, 0x3c, 0x4f, 0x88, 0x53, +0xb2, 0xa4, 0xa7, 0x8d, 0xed, 0x04, 0x8e, 0xfc, +0xb8, 0x25, 0x3a, 0xe8, 0x76, 0xbb, 0x34, 0x1d, +0x87, 0xcc, 0xa0, 0x27, 0x20, 0x40, 0x66, 0xd0, +0x4b, 0x08, 0x48, 0x3b, 0xd0, 0xdf, 0xbc, 0x04, +0x1a, 0x12, 0x72, 0x42, 0xc0, 0x75, 0x5d, 0x82, +0x20, 0x40, 0x39, 0x2a, 0x27, 0xf0, 0x7d, 0xef, +0x90, 0x20, 0x08, 0x70, 0x5d, 0x77, 0xfa, 0x13, +0x00, 0x9a, 0x8e, 0x83, 0x1e, 0x43, 0x00, 0x7d, +0xd6, 0x37, 0x5a, 0x96, 0x15, 0x3e, 0xdc, 0x5f, +0x0b, 0x09, 0xc7, 0x67, 0x17, 0x00, 0x94, 0xf7, +0x3f, 0xc7, 0xa4, 0xe5, 0x53, 0x45, 0x2a, 0xb0, +0xb3, 0x96, 0x8b, 0xf6, 0xa0, 0x6a, 0x94, 0x38, +0xbf, 0xad, 0x03, 0xd0, 0xb8, 0xb3, 0x60, 0x61, +0x6b, 0x9c, 0xf8, 0xf1, 0x18, 0x89, 0x48, 0x87, +0x58, 0x35, 0x4a, 0x02, 0x4e, 0xb3, 0x94, 0xac, +0x7a, 0xdc, 0x8a, 0x07, 0x97, 0xb3, 0x05, 0xfe, +0xb4, 0xff, 0xb2, 0x19, 0x8c, 0x3a, 0x78, 0x6d, +0x7f, 0xd1, 0x5c, 0x5d, 0x19, 0x9e, 0xb5, 0x9e, +0xc9, 0xe7, 0xe6, 0x01, 0x58, 0xd4, 0x7d, 0xa1, +0xf0, 0xcd, 0x95, 0x12, 0x0a, 0xdf, 0x58, 0x4b, +0xab, 0xf4, 0x7d, 0x9f, 0x13, 0x35, 0x4f, 0xdf, +0x1f, 0x26, 0x17, 0xd4, 0x3c, 0xfd, 0xb0, 0x03, +0x40, 0xdd, 0x69, 0x44, 0xec, 0xd2, 0x6e, 0xf1, +0x7b, 0x54, 0x5c, 0xd8, 0x83, 0xca, 0xfa, 0x26, +0x59, 0xa0, 0x92, 0x5b, 0x02, 0x20, 0x0b, 0xb4, +0xfd, 0x0e, 0xb5, 0xb4, 0x4a, 0xc1, 0x7f, 0x99, +0x9c, 0x4a, 0xe4, 0xfd, 0x00, 0xd5, 0x71, 0x76, +0x1b, 0xc3, 0x8e, 0xc5, 0x0a, 0x00, 0x00, 0x00, +0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, +0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/accgroup.png b/source/bitmaps/icons/accgroup.png new file mode 100644 index 0000000000000000000000000000000000000000..60339fa49636fd430d62e6471faffac5f49a648f GIT binary patch literal 481 zcmV<70UrK|P)WFU8GbZ8()Nlj2>E@cM*00BiwL_t(I%cYXBOT$nQ z#(yaeE?q2k(T0-2f`cM13bEKl!9g-h2I(r|WM;eC-G86~H*pfThIY_7LlK84DM+Ew zp@Y~C#-TLrOCGJ_E#KXH_kDNo-oZajnG9^(4u3;3O*7)n#V<8Yn@aXPPl!{pq^FJT z1djZ;B|7MKyEGk#%%CSAKxWWO2uM57-@F7G5^_SobzOoWKshQW@O|%)AP8_>clr|m znvR1WLjZl&H(HhzKHOgm3CCv_0F?JX$E4*`MJlkfmW%eFYLqy?tpm`wvtVIsocQq= ziAaZ7HA(_bvy`lQ+=>U6vjzUN|FRj3I(Th=(Og{_p0%FI=jH)e)P14w&6N@g-&jkl z^nITbHBa9kCKuE^{jdW--DyPZ(r)p4R9x7D%K9c*ppshxAPcnp4z;vO!GD>YO62_j X)p2$k!;ZxY00000NkvXXu0mjf;mN)i literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/accinet.cpp b/source/bitmaps/icons/accinet.cpp new file mode 100644 index 0000000..6daaddd --- /dev/null +++ b/source/bitmaps/icons/accinet.cpp @@ -0,0 +1,83 @@ +#include + +#ifndef ICONS_ACCINET_CPP +#define ICONS_ACCINET_CPP + +static unsigned char icons_accinet_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0x17, 0x00, 0x9a, 0x00, 0x36, 0x14, +0xbd, 0x58, 0x52, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x02, 0x1c, 0x12, 0x1f, 0x07, 0xc8, +0x73, 0x80, 0x9b, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0xaf, +0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xa5, 0x93, +0x3f, 0x48, 0x1b, 0x51, 0x1c, 0xc7, 0x3f, 0x07, +0xd1, 0x41, 0x11, 0x24, 0x62, 0x2a, 0xa8, 0x28, +0x3d, 0xac, 0x28, 0xc5, 0x45, 0xea, 0x1f, 0x10, +0x97, 0x92, 0xc9, 0x45, 0xbb, 0x67, 0x52, 0x11, +0xda, 0xa5, 0xa0, 0x88, 0x20, 0x08, 0xed, 0x54, +0x8a, 0x5b, 0x41, 0x5c, 0x3a, 0x49, 0x41, 0x17, +0x5d, 0xa4, 0x43, 0xdb, 0xa1, 0xa0, 0x20, 0x22, +0x22, 0x64, 0x50, 0x63, 0x0c, 0x6a, 0xa9, 0xc5, +0x96, 0x5e, 0x0c, 0xb9, 0xf8, 0x2e, 0xbd, 0x77, +0xde, 0x75, 0x88, 0xf7, 0x2e, 0x92, 0x4a, 0x03, +0xfe, 0xa6, 0xcf, 0xfb, 0xfe, 0xf8, 0x7e, 0xdf, +0xef, 0xee, 0xbd, 0x07, 0xf7, 0x2c, 0x0d, 0xe0, +0x65, 0xf7, 0x17, 0xaf, 0x58, 0x0c, 0xbd, 0xae, +0x29, 0xcb, 0x3c, 0x3f, 0xd4, 0xab, 0x85, 0xfc, +0x45, 0x47, 0x5b, 0x17, 0x00, 0x07, 0xc9, 0x38, +0x8f, 0x3b, 0xc3, 0xff, 0x35, 0xef, 0xed, 0xfd, +0x28, 0x6c, 0x06, 0x90, 0x33, 0x1c, 0xac, 0xfa, +0x42, 0x23, 0x67, 0x38, 0x00, 0x3c, 0xb9, 0x58, +0xba, 0xd3, 0xbc, 0xd3, 0x10, 0x0b, 0xa6, 0xf5, +0xc1, 0x14, 0x86, 0x12, 0x45, 0xd6, 0x44, 0x58, +0x36, 0x2d, 0x8f, 0xda, 0x4a, 0xcc, 0x67, 0x47, +0x49, 0x44, 0xd6, 0x44, 0xe6, 0xad, 0x20, 0x40, +0x5c, 0x1b, 0x48, 0x37, 0x82, 0xcf, 0x10, 0x51, +0x86, 0x48, 0xd3, 0xa8, 0xe2, 0x5f, 0xdf, 0xdf, +0x97, 0x04, 0xaa, 0x09, 0x84, 0xcc, 0x28, 0xd1, +0xb6, 0x2c, 0xf2, 0x79, 0x49, 0x22, 0xbe, 0xcf, +0xc6, 0xc7, 0x49, 0xa5, 0x27, 0xe2, 0xfb, 0xaa, +0x6f, 0x5b, 0x22, 0x08, 0xb0, 0x5d, 0x81, 0x9d, +0xad, 0xc0, 0x67, 0x80, 0xdd, 0xf0, 0xb3, 0xb2, +0x4e, 0x22, 0xf4, 0x2f, 0xd1, 0x91, 0x76, 0x89, +0xb6, 0xf8, 0xb9, 0x8b, 0x85, 0x81, 0x5d, 0x9e, +0x6f, 0x76, 0x03, 0x30, 0xd8, 0x78, 0x1e, 0x04, +0x5c, 0x7b, 0x81, 0xa1, 0x98, 0xfd, 0x5a, 0x58, +0xd7, 0xc9, 0xfc, 0x4e, 0x12, 0x8d, 0x46, 0x49, +0xaf, 0x6c, 0x03, 0xf0, 0xf5, 0x4f, 0xdf, 0xdd, +0x13, 0xe4, 0xaf, 0x84, 0xe2, 0x77, 0xdf, 0x5e, +0x51, 0x39, 0x50, 0x45, 0x35, 0x50, 0x37, 0xf6, +0x86, 0xea, 0xe1, 0x19, 0x00, 0x24, 0xf0, 0x40, +0xef, 0xf1, 0x6e, 0x4e, 0x21, 0xcd, 0x45, 0xf6, +0x18, 0x9f, 0xa1, 0xf5, 0x56, 0xa0, 0x9b, 0x73, +0x10, 0xeb, 0xb3, 0xc0, 0x25, 0x6e, 0xce, 0x29, +0xe3, 0x1f, 0xd8, 0xc1, 0x67, 0x54, 0x1d, 0x2f, +0x93, 0x39, 0x4f, 0x20, 0xd3, 0x29, 0x6a, 0x46, +0x96, 0x70, 0x4d, 0x30, 0xd7, 0x62, 0x54, 0x84, +0x75, 0x6a, 0x1b, 0xdb, 0x0b, 0x01, 0xae, 0x17, +0xa4, 0x16, 0xb3, 0x5f, 0x32, 0x9d, 0x2a, 0x5c, +0xb6, 0xb5, 0xd8, 0x6d, 0xcd, 0x0f, 0x00, 0xb8, +0x94, 0xa7, 0xaa, 0x79, 0x78, 0xf0, 0x53, 0x71, +0x6f, 0xdd, 0x27, 0xb6, 0xf4, 0x7e, 0x8c, 0xd4, +0x16, 0x00, 0xab, 0x73, 0x4f, 0x01, 0x18, 0xff, +0x20, 0x38, 0x79, 0xfb, 0x50, 0xd3, 0xca, 0x7d, +0xb6, 0xcd, 0x13, 0x1b, 0xde, 0x0b, 0x7d, 0x5b, +0xad, 0x67, 0xa6, 0xa7, 0x34, 0x80, 0xbf, 0x18, +0x8d, 0xb2, 0xb1, 0xd9, 0xda, 0xb2, 0x7b, 0x00, +0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, +0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/accinet.png b/source/bitmaps/icons/accinet.png new file mode 100644 index 0000000000000000000000000000000000000000..e346b61c73753a8d3bbe47edb9299059827cd3a9 GIT binary patch literal 587 zcmV-R0<`^!P)DfSUjS03B&m zSad^gZEa<4bN~PV002XBWnpw>WFU8GbZ8()Nlj2>E@cM*00FN_L_t(I%cYY)NE=Zc z$3F+rK@lWkDyS$utSH4r>K_o7lF3E8XHpT`rJ#r)2<=pgTR~hpNkJD~q(j@Gpdcb5 zWKd%aYN^GRUJSYTF1>f&b%^&al1c;qrqBES_1EDhjg_ZP2N485)?%RE2S ztA+eUM_U&F2gx{(JH!7q@9q64YzB}s9IX06BWE}OJh@o9)4bCV3#RqK6owK-)L8%Q^T&k#|DNYkj|U*F%C1gZ&y%qY>eEb@6tBEHYY$4R9p z;`^#^TOtUsU4fmgz-NHn@UyZ`BJ?lOk#>o;__>RPfnA<&b^|cjcpd~?dx4>t{aRSp z$^1?djYdhYYyfspxB=A7*@or8b%|-SYpP}_u zpqq0L>$AWmZq6y=AK1ZXR2?sqIZq(dDQZTRa7{4RVpN26Y8%@N0j?LM7PDV6ohn?m zwb*UV4*c2)@KbSb-6yv6evH%>0IPFP0T}-vIC=X})5?9e%@Z5m3w>LyXQrn# ZfWH`xva#9PvU>mk002ovPDHLkV1nJ!^SuB7 literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/acclocal.cpp b/source/bitmaps/icons/acclocal.cpp new file mode 100644 index 0000000..ee5f059 --- /dev/null +++ b/source/bitmaps/icons/acclocal.cpp @@ -0,0 +1,64 @@ +#include + +#ifndef ICONS_ACCLOCAL_CPP +#define ICONS_ACCLOCAL_CPP + +static unsigned char icons_acclocal_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0x17, 0x00, 0x9a, 0x00, 0x36, 0x14, +0xbd, 0x58, 0x52, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x02, 0x1c, 0x12, 0x1e, 0x2b, 0xe3, +0xb0, 0xdd, 0x39, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x14, +0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xbd, 0x91, +0xb1, 0x4a, 0x03, 0x41, 0x14, 0x45, 0x4f, 0xc2, +0x5a, 0xda, 0x04, 0x5c, 0x2c, 0x04, 0x6d, 0x22, +0x28, 0x62, 0x23, 0xe2, 0x47, 0xd8, 0xd9, 0x5b, +0xf9, 0x03, 0x82, 0x7f, 0x60, 0xed, 0x2f, 0x58, +0xf9, 0x0f, 0x56, 0x76, 0x96, 0x22, 0x81, 0x2d, +0x12, 0x63, 0x2c, 0x14, 0x44, 0xa2, 0xb0, 0x2a, +0xbb, 0x71, 0x66, 0x9d, 0x99, 0xec, 0x5a, 0x2c, +0x33, 0xb3, 0x10, 0x65, 0xa3, 0x01, 0xa7, 0xba, +0x73, 0x1f, 0xe7, 0xcd, 0x9d, 0xf7, 0x60, 0xc6, +0xd3, 0x00, 0x38, 0xdc, 0xba, 0x28, 0xaa, 0x66, +0x70, 0x3c, 0x3f, 0x15, 0x7c, 0xb2, 0xbb, 0xd3, +0x08, 0xec, 0x65, 0xad, 0xbd, 0x09, 0x40, 0x6f, +0x10, 0xb1, 0xb1, 0xde, 0xaa, 0x85, 0x3b, 0x9d, +0xa7, 0xf2, 0x31, 0x80, 0x51, 0x6c, 0x90, 0x0b, +0x65, 0x61, 0x14, 0x1b, 0x00, 0xb6, 0x87, 0x67, +0x3f, 0xc2, 0x57, 0x8b, 0xfb, 0x3e, 0xad, 0x15, +0xa9, 0x88, 0x9d, 0x29, 0x92, 0x14, 0x21, 0x15, +0xcb, 0xab, 0xed, 0x09, 0xf8, 0xe1, 0x76, 0x80, +0x48, 0x52, 0x74, 0x26, 0x7d, 0x03, 0x31, 0x8e, +0xd1, 0x79, 0x88, 0xd5, 0x10, 0x3a, 0x20, 0x5c, +0x3a, 0x70, 0xfa, 0xe5, 0xf1, 0x74, 0xa2, 0xa1, +0x4b, 0x20, 0xf4, 0xbb, 0x33, 0x95, 0x94, 0x64, +0x99, 0xa6, 0x1f, 0x75, 0xb9, 0x3c, 0x3f, 0x72, +0x7e, 0x3f, 0xea, 0xba, 0xba, 0x92, 0xc2, 0x37, +0x50, 0xb9, 0x40, 0x25, 0x73, 0x58, 0x0d, 0x70, +0xdd, 0xda, 0x9b, 0x6a, 0x13, 0xc1, 0x77, 0xa6, +0xd1, 0xaa, 0x16, 0xcc, 0x4d, 0x39, 0xec, 0x26, +0xc0, 0xb8, 0xf0, 0x40, 0x55, 0xff, 0x39, 0x41, +0xf6, 0x21, 0x6a, 0x41, 0xf3, 0x99, 0x55, 0xb7, +0xf0, 0xca, 0x30, 0xb9, 0xc3, 0x6a, 0x58, 0x99, +0x2d, 0x81, 0x51, 0xf5, 0xdf, 0xb0, 0x73, 0x6a, +0x02, 0xe4, 0x85, 0xf1, 0xc3, 0xa9, 0xe8, 0x5f, +0x25, 0x78, 0xd3, 0xf7, 0xce, 0xbc, 0xe9, 0x3d, +0xf3, 0x6f, 0xe7, 0x0b, 0x31, 0xce, 0x7a, 0x05, +0x02, 0x4b, 0xe6, 0x93, 0x00, 0x00, 0x00, 0x00, +0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, +0x82, }; + +#endif + diff --git a/source/bitmaps/icons/acclocal.png b/source/bitmaps/icons/acclocal.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8723e8b113e62d462c5d91f1dd0a76a9a892d7 GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)3!fvlz@o_C|n|a29w( z7Bet#3xhBt!>l$!3N`lsM<-=BDPA0J#hd&PAz- zC8;S2<(VZJ3hti10V#T^>?q>ue<f zH=}p|x^^$8L%zVqjrUfyTF+hn$*>_XX99O>qKGuZw)S-U zL*d=O?beE}?3k-LNkmcf^y;^qKOUAfcm$QG)iN9QU99Z5Dqy7$V^#3$>Bo{q3%wP- z>^7b{C1vI^`O=*>_CxxJvAdujL!H13NxA zg#Nd5{HB=Y_<3gN_7A5Fb{@`(n5o+s`1SsV;w+{otsf7sd=al&aryhXJuhuP=RfB* XJXgia + +#ifndef ICONS_ACCNONE_CPP +#define ICONS_ACCNONE_CPP + +static unsigned char icons_accnone_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xdf, 0x05, 0x0e, 0x11, 0x1f, 0x30, 0xf1, +0xe4, 0x0b, 0x6c, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x00, 0xe0, +0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xc5, 0x91, +0x3b, 0x6e, 0x84, 0x30, 0x18, 0x84, 0x3f, 0x22, +0x0a, 0x0a, 0x2e, 0x41, 0x01, 0x12, 0x37, 0xe1, +0x0a, 0x54, 0x1c, 0x92, 0x8b, 0x50, 0x58, 0x42, +0x82, 0x82, 0x1b, 0x20, 0xc4, 0xd3, 0xe6, 0xe1, +0xa4, 0x88, 0xec, 0x25, 0xfb, 0xd0, 0xae, 0xb2, +0x52, 0x32, 0xd5, 0x78, 0xac, 0xf9, 0x35, 0xff, +0x3f, 0xf0, 0x26, 0x1c, 0x80, 0x24, 0x49, 0x3e, +0xcf, 0x62, 0x96, 0x65, 0x2f, 0x99, 0xd3, 0x34, +0x75, 0x5c, 0xf3, 0x88, 0xa2, 0x08, 0x80, 0xaa, +0xaa, 0x88, 0xe3, 0xf8, 0xa9, 0xb9, 0x28, 0x0a, +0x00, 0x5c, 0x80, 0xae, 0xeb, 0x18, 0x86, 0x01, +0xc3, 0x01, 0xc6, 0x71, 0x7c, 0x68, 0xf6, 0x7d, +0xdf, 0x72, 0x9b, 0x60, 0x9a, 0x26, 0x2b, 0xf6, +0x7d, 0x8f, 0x94, 0x92, 0x30, 0x0c, 0x6f, 0xcc, +0x75, 0x5d, 0xa3, 0xb5, 0x46, 0x29, 0x75, 0x19, +0xb0, 0xae, 0x2b, 0xfb, 0xbe, 0x63, 0xf8, 0x19, +0x41, 0x10, 0x58, 0xde, 0x34, 0xcd, 0xcd, 0x40, +0x9b, 0xe0, 0x6c, 0x54, 0x4a, 0xa1, 0x94, 0x42, +0x08, 0x41, 0x9e, 0xe7, 0x56, 0x17, 0x42, 0x7c, +0x5f, 0xde, 0x71, 0x90, 0x52, 0x5e, 0x06, 0x1c, +0xc7, 0xc1, 0x3c, 0xcf, 0x18, 0x0e, 0xe0, 0x79, +0xde, 0x4b, 0x4d, 0xb8, 0xf7, 0xc4, 0xeb, 0x35, +0xee, 0xc1, 0xac, 0xfc, 0x01, 0xa0, 0xb5, 0xb6, +0x1f, 0x67, 0xfe, 0xeb, 0x04, 0xcb, 0xb2, 0x3c, +0x35, 0xfe, 0x68, 0x61, 0xdb, 0x36, 0xda, 0xb6, +0xc5, 0xf0, 0xb7, 0x13, 0xfc, 0xcf, 0x0d, 0x4c, +0x8d, 0x00, 0x65, 0x59, 0xf2, 0x67, 0xf8, 0x02, +0x84, 0x6e, 0x7a, 0x1f, 0x87, 0xdb, 0x41, 0xa7, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/accnone.png b/source/bitmaps/icons/accnone.png new file mode 100644 index 0000000000000000000000000000000000000000..2660584e627c7f89fe92484dd3ef739778f50f94 GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~E1#ge!N(`uIY1%V%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6^dDE`3H#WBR<^wEjdc`XJKE%r)WTzZa-Lgo*-LS!a&2ShkE zHAyQRx%}+ml8!g3zb~xY6l8R@V$Dy}|Mnl$WExaF?an7nOVyuw*`ze)bH^f%hE=ON z9{*UmQ-g~kreWP{i8jW=jK>OVGQQQ`FPfb&OHKP*ZU2->20Zy^N@Evqb<-@B+^|mj z_rByGl8yoq_e{>7b(sAiC&X*v6ekYHdC$YdooeFm6;23>W0N_4(B`}Z--F6~-o87& zA9-#1?% + +#ifndef ICONS_ACT1_CPP +#define ICONS_ACT1_CPP + +static unsigned char icons_act1_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, +0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, +0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x1c, 0x3a, 0x15, +0x37, 0x5a, 0xa8, 0x00, 0x00, 0x02, 0x2e, 0x49, +0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x53, 0x41, +0x6b, 0x13, 0x51, 0x10, 0xfe, 0xde, 0xdb, 0xb7, +0xbb, 0xc9, 0x6e, 0x52, 0x6b, 0x12, 0xdb, 0xc6, +0xb4, 0x34, 0x05, 0x5d, 0x90, 0x22, 0x2d, 0x78, +0x08, 0x81, 0x5a, 0xd2, 0x83, 0xf5, 0x14, 0x08, +0xa8, 0x37, 0x6f, 0xb5, 0xbd, 0x08, 0x39, 0xe4, +0xa0, 0x60, 0x15, 0x04, 0x89, 0xa4, 0xe0, 0xc1, +0x93, 0x05, 0x51, 0x44, 0xf4, 0x90, 0x1c, 0x9a, +0x1f, 0x50, 0x31, 0xe0, 0xa9, 0xc1, 0x1e, 0xb4, +0xd0, 0x10, 0x6b, 0xa5, 0xb5, 0x21, 0xb5, 0xa4, +0xb1, 0x69, 0x2b, 0x34, 0x09, 0xd9, 0xdd, 0xac, +0x87, 0x6d, 0x17, 0x42, 0x2c, 0x16, 0xc4, 0x81, +0x81, 0x6f, 0x66, 0x78, 0xdf, 0xcc, 0xf7, 0xe6, +0x3d, 0xe0, 0x1f, 0x8d, 0x1c, 0x57, 0x50, 0x14, +0xc5, 0x23, 0x49, 0xd2, 0x88, 0x61, 0x18, 0xb4, +0xd1, 0x68, 0x2c, 0xe4, 0xf3, 0xf9, 0xad, 0x13, +0x11, 0x04, 0x86, 0x02, 0xe3, 0x67, 0x6d, 0xbd, +0x6f, 0xce, 0xe8, 0x1e, 0x57, 0xe7, 0x81, 0x9b, +0x23, 0x06, 0xb0, 0x27, 0xef, 0xea, 0x3f, 0x59, +0x79, 0xbf, 0x50, 0x2f, 0xde, 0x5e, 0x5c, 0xca, +0xa6, 0x8e, 0x25, 0x18, 0x1d, 0x1e, 0x7d, 0x78, +0x41, 0x18, 0x9c, 0x1e, 0x58, 0x3f, 0xcf, 0x88, +0x4e, 0x00, 0x02, 0x18, 0xd4, 0x00, 0xd1, 0x09, +0x40, 0x81, 0x82, 0x7f, 0x5d, 0xcf, 0xeb, 0xcb, +0xaf, 0x32, 0x9f, 0x32, 0x93, 0x47, 0x67, 0x38, +0xab, 0xf3, 0xa5, 0xc0, 0xd8, 0x60, 0xc7, 0xc5, +0x17, 0xde, 0xb5, 0x5e, 0xa6, 0x51, 0x15, 0x2a, +0x67, 0xfa, 0xfd, 0xd2, 0x1d, 0xbc, 0x7b, 0xfa, +0x1e, 0x2a, 0x55, 0x21, 0xfd, 0x92, 0xa9, 0xbd, +0xc7, 0x36, 0xc4, 0xf7, 0x88, 0xdf, 0x8b, 0x9b, +0x85, 0xa5, 0x96, 0x09, 0xae, 0x5f, 0xb9, 0xf1, +0x63, 0xe0, 0xdb, 0x39, 0x2f, 0xd1, 0xcd, 0xd4, +0xcc, 0x46, 0xbc, 0x45, 0xda, 0xdd, 0xfe, 0x69, +0x13, 0x50, 0xa0, 0xa0, 0xac, 0x55, 0x92, 0xf3, +0x49, 0xf7, 0x61, 0x08, 0x84, 0x42, 0x21, 0x9b, +0x93, 0xeb, 0x70, 0xd7, 0xb8, 0x1a, 0x6a, 0x62, +0x0d, 0x33, 0x1b, 0x71, 0x44, 0x95, 0x18, 0xa2, +0x4a, 0x0c, 0x00, 0x10, 0x55, 0x62, 0xa8, 0x89, +0x66, 0xad, 0xca, 0xaa, 0x90, 0x9b, 0xce, 0x53, +0xc1, 0x60, 0xd0, 0x07, 0x00, 0xec, 0xb0, 0xc1, +0x30, 0x67, 0x70, 0xac, 0x2a, 0x1c, 0x00, 0x00, +0x26, 0x06, 0xa7, 0x00, 0x1e, 0x6d, 0xd8, 0xd2, +0xad, 0x51, 0x4e, 0x92, 0xa4, 0x31, 0x00, 0x6f, +0x19, 0x00, 0x30, 0xc6, 0x40, 0x79, 0x0a, 0xc3, +0xd6, 0x04, 0xa5, 0xf4, 0xaf, 0xbb, 0xe7, 0x44, +0x0a, 0x06, 0x46, 0x2c, 0x09, 0x9a, 0xa6, 0x7d, +0xe6, 0x9d, 0x4c, 0x93, 0x25, 0x19, 0x76, 0x9b, +0xdd, 0xf2, 0xe7, 0x8b, 0xb3, 0x7f, 0xc4, 0x7c, +0x27, 0xd3, 0x54, 0x55, 0xcd, 0xb4, 0x5c, 0xe2, +0xe4, 0xcd, 0xa9, 0xa2, 0xa7, 0xdc, 0xe5, 0x43, +0xd3, 0x8c, 0x1f, 0xcf, 0x3f, 0x6a, 0xe9, 0x7a, +0x6f, 0xfc, 0x81, 0xb5, 0xf8, 0x3d, 0x6f, 0x65, +0x67, 0xf6, 0xf5, 0x33, 0x8f, 0x35, 0x01, 0x00, +0x6c, 0x57, 0x4a, 0xd7, 0x88, 0xdf, 0xd0, 0x64, +0x49, 0x86, 0x2c, 0xc9, 0x88, 0x47, 0x12, 0x00, +0x80, 0x78, 0x24, 0x81, 0x78, 0x24, 0x81, 0xa3, +0x3c, 0xd7, 0x4f, 0xf4, 0xed, 0xfd, 0xd2, 0xad, +0xb6, 0x77, 0xb0, 0xb2, 0xba, 0xb2, 0xe9, 0xed, +0xf3, 0xd2, 0x6e, 0x7f, 0xf7, 0x65, 0x59, 0x75, +0x50, 0x81, 0x09, 0xc8, 0xce, 0x7d, 0x84, 0xc0, +0x0b, 0xa6, 0x8b, 0x02, 0x9a, 0x3e, 0x4d, 0x5f, +0x2d, 0x7f, 0x7d, 0x99, 0x4a, 0xa7, 0x9e, 0xb4, +0x11, 0x00, 0x40, 0xee, 0x4b, 0xee, 0x83, 0xab, +0xcf, 0x95, 0x15, 0xbb, 0x84, 0xab, 0x82, 0x9b, +0x17, 0x05, 0x59, 0x20, 0xd4, 0x49, 0xd0, 0x38, +0x5d, 0xd7, 0x2b, 0xe2, 0xce, 0x6e, 0xae, 0xb8, +0x3c, 0x91, 0x9c, 0x4b, 0x26, 0x4e, 0xf4, 0x99, +0xc2, 0xe1, 0xb0, 0xc7, 0xe1, 0x70, 0x8c, 0x10, +0x42, 0x68, 0xbd, 0x5e, 0x5f, 0x48, 0xa7, 0xd3, +0x5b, 0xf8, 0x1f, 0xf6, 0x1b, 0x0d, 0xc1, 0xb9, +0x3e, 0x90, 0x96, 0xaf, 0xc6, 0x00, 0x00, 0x00, +0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, +0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/act1.png b/source/bitmaps/icons/act1.png new file mode 100644 index 0000000000000000000000000000000000000000..2e65ce890a6c844557ac7af86f7e32c00da36ca1 GIT binary patch literal 673 zcmV;S0$%-zP)65GbKGzDFdA}x3bfm+go^%MxGH*dAQ2sz}SU=;+3 zq~O7m1yMxwkQ|yHP%+@C!5*~G5NoBiA+@BjX)81d+1;#%Z5Ki;7Q}&pZ)SMk%=hL! z;2(_~S5OqiBT3STVHmX0Xe{LO`K=QX1cn0RXKlT2&gdRj=Yg9e2CygZ>OWa|zfdpU zUR=tijwKi!9({O07@QthKhKCx00J1)0MQ9Rfr5Ws&+E&tGM_S&M`t*z^QFMpV8_K5 z-nCw)Q57m@`u)-!ynFf{Dpeuu}e&8fszv|Qrk&8ecN+~q^lj33WGYUz4!{DHOjJ#S@a z_VqK5H30x@S4!82-_T@9hAhd5M-l*lcqD;%B!Qzm*H85A{nD+rcd)X$vgz&f(r$nE zWm$DlfeFaYeT2XZri%iaK22XOe|?!sr=GMC06^|b?t`n(l@+^$tAd*s1z8}}Nzgc5 z*DK=AZmzgIk(^5=PV||=;jqWyaEuT_XuV!vNT<_V_#gHg4Z*oSke08;00000NkvXX Hu0mjf{0=Lh literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/act2.cpp b/source/bitmaps/icons/act2.cpp new file mode 100644 index 0000000..018bf31 --- /dev/null +++ b/source/bitmaps/icons/act2.cpp @@ -0,0 +1,92 @@ +#include + +#ifndef ICONS_ACT2_CPP +#define ICONS_ACT2_CPP + +static unsigned char icons_act2_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, +0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, +0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x1d, 0x0a, 0x2a, +0xf5, 0x5b, 0x45, 0x00, 0x00, 0x02, 0x23, 0x49, +0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x53, 0xcf, +0x6b, 0x13, 0x41, 0x18, 0x7d, 0x33, 0x3b, 0x99, +0xdd, 0xec, 0x26, 0x1a, 0xd3, 0x24, 0x6d, 0x6c, +0x62, 0x13, 0xa4, 0x01, 0x09, 0xd2, 0x82, 0x48, +0x2e, 0xb5, 0xa4, 0x97, 0x7a, 0x0a, 0x08, 0x5e, +0xbd, 0xd5, 0x16, 0x44, 0x3c, 0x78, 0x13, 0x7f, +0x80, 0x20, 0x95, 0x0a, 0xa2, 0xe8, 0xc1, 0x82, +0x28, 0xe2, 0x2f, 0x68, 0x0e, 0xe6, 0x0f, 0xf0, +0x10, 0x10, 0x85, 0x2d, 0xf4, 0xa0, 0x85, 0xc4, +0xd8, 0x1f, 0x58, 0x0d, 0x09, 0xb5, 0x8d, 0x4d, +0x5b, 0x21, 0xe9, 0x92, 0xec, 0x66, 0x3d, 0x84, +0xac, 0x86, 0x58, 0x29, 0x88, 0x1f, 0x7c, 0xcc, +0x1b, 0x86, 0xef, 0x7d, 0x6f, 0xbe, 0x37, 0x03, +0xfc, 0x63, 0x90, 0xdd, 0x0e, 0x22, 0x91, 0x88, +0x47, 0x96, 0xe5, 0x21, 0xd3, 0x34, 0x69, 0xad, +0x56, 0x53, 0x73, 0xb9, 0xdc, 0xea, 0x9e, 0x08, +0x62, 0x03, 0xb1, 0xd1, 0x83, 0x52, 0xe0, 0xb9, +0xd7, 0xf0, 0xb8, 0x5d, 0x95, 0x2e, 0x81, 0x98, +0xc0, 0x96, 0xb2, 0x69, 0x7c, 0x67, 0xa5, 0xed, +0xbc, 0x56, 0x38, 0x3f, 0x37, 0x3f, 0x9b, 0xdc, +0x95, 0x60, 0x78, 0x70, 0xf8, 0xfa, 0x11, 0x1e, +0xbd, 0x12, 0x5e, 0xe9, 0x67, 0xc4, 0x20, 0x00, +0x01, 0x4c, 0x6a, 0x82, 0x18, 0x04, 0xa0, 0x40, +0x3e, 0xb4, 0x62, 0xe4, 0x8c, 0xcc, 0x93, 0xf4, +0xfb, 0xf4, 0x78, 0xab, 0x46, 0xb0, 0x3a, 0x1f, +0x8b, 0x8d, 0x44, 0xf7, 0x1d, 0x7d, 0xe4, 0xff, +0x1c, 0x60, 0x3a, 0xad, 0xa3, 0x2e, 0x34, 0xd3, +0xc2, 0xb4, 0x0e, 0xf9, 0x87, 0x42, 0xed, 0x3d, +0xd2, 0x80, 0xad, 0x47, 0xfc, 0x52, 0x28, 0xe6, +0xe7, 0x01, 0x80, 0xb5, 0x08, 0x82, 0xee, 0x43, +0x2f, 0x5d, 0xcb, 0x6e, 0x61, 0x87, 0x57, 0x2d, +0x45, 0xb7, 0xbe, 0x4e, 0x5a, 0xf8, 0x52, 0xf8, +0x2a, 0xcc, 0x86, 0x09, 0x67, 0x61, 0xbf, 0xd0, +0x17, 0x09, 0xdc, 0x55, 0x81, 0x67, 0xd6, 0x15, +0xe2, 0xf1, 0xb8, 0x14, 0x96, 0x0e, 0x6f, 0x2b, +0xcb, 0x4e, 0x4e, 0x48, 0xe7, 0x5c, 0xef, 0x2f, +0xde, 0xb1, 0xf0, 0x85, 0xfe, 0x8b, 0xd8, 0x09, +0x55, 0x8c, 0x8f, 0x95, 0x4c, 0x9f, 0xaa, 0xaa, +0xc5, 0x96, 0x82, 0x41, 0xc1, 0x14, 0x58, 0x95, +0x57, 0xfe, 0x6a, 0xd9, 0x58, 0x74, 0x02, 0xe0, +0x80, 0xa0, 0x53, 0x41, 0x96, 0xe5, 0x11, 0x00, +0x2f, 0x18, 0x00, 0x30, 0xc6, 0x40, 0x6d, 0x14, +0xa6, 0xd4, 0x00, 0xa5, 0x14, 0x0f, 0xe7, 0xa6, +0x01, 0x00, 0x13, 0xc7, 0xcf, 0xb5, 0xad, 0x82, +0xdc, 0x1c, 0x99, 0x20, 0x52, 0x30, 0x30, 0x62, +0xcd, 0x40, 0xd7, 0xf5, 0x0f, 0x36, 0x27, 0xd3, +0x25, 0xd9, 0xc6, 0xef, 0xbd, 0xfd, 0x25, 0xd7, +0x2e, 0xd9, 0xff, 0xa8, 0xc4, 0x74, 0x19, 0x7a, +0xbd, 0x54, 0x4f, 0xb7, 0xd9, 0x38, 0x7e, 0x66, +0xa2, 0xe0, 0x29, 0xf9, 0x7a, 0xd1, 0x68, 0xee, +0x6f, 0xbe, 0xbe, 0x61, 0x15, 0x5c, 0x1e, 0xbd, +0xd6, 0x66, 0xfc, 0x96, 0xbf, 0xbc, 0x31, 0xfd, +0xf4, 0x81, 0xa7, 0xcd, 0x85, 0xf5, 0xf2, 0xda, +0x69, 0x6f, 0xc8, 0xfb, 0x4e, 0xfe, 0xe6, 0x60, +0x00, 0x30, 0x79, 0x6a, 0xca, 0xaa, 0x51, 0x64, +0xc5, 0xc2, 0x9a, 0xaf, 0x6a, 0xac, 0x97, 0xd6, +0xce, 0x76, 0xbc, 0x83, 0x85, 0xa5, 0x85, 0xa2, +0x3f, 0xe8, 0xa7, 0xdd, 0xa1, 0xee, 0x13, 0x4a, +0xdd, 0x41, 0x39, 0xe3, 0xe0, 0xb6, 0xdf, 0x52, +0xe4, 0x68, 0xf4, 0xea, 0xc6, 0x52, 0x69, 0xf1, +0x71, 0x32, 0x95, 0xbc, 0xdd, 0x41, 0x00, 0x00, +0xd9, 0x4f, 0xd9, 0x37, 0xee, 0xa0, 0x7b, 0x56, +0xf4, 0xf1, 0x93, 0xbc, 0xcb, 0x26, 0x72, 0x85, +0x13, 0xea, 0x24, 0xa8, 0x1d, 0xd0, 0x8c, 0xb2, +0xb8, 0xb1, 0x99, 0x2d, 0x64, 0xc6, 0x66, 0x5e, +0xcd, 0x4c, 0xed, 0xe9, 0x33, 0x25, 0x12, 0x09, +0x8f, 0xc3, 0xe1, 0x18, 0x22, 0x84, 0x50, 0x4d, +0xd3, 0xd4, 0x54, 0x2a, 0xb5, 0x8a, 0xff, 0x11, +0x3f, 0x01, 0x3c, 0x31, 0xb6, 0xc1, 0x6f, 0xfe, +0x37, 0x57, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, +0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/act2.png b/source/bitmaps/icons/act2.png new file mode 100644 index 0000000000000000000000000000000000000000..ca810f8f64ff1e1aeb46ef1f4e5c6a674081ec2d GIT binary patch literal 662 zcmV;H0%`q;P)0wYO8 zK~y-)wNuY)6G0e#Gdr2x>?Ru1ByDVB6QltN(t=1XwWODN3J6}k)fPlNcoTnsAe9QD z=)r<0;xA|p<`3`?5QQ!DpoPTPA6N|uwT(?%A?cFrW<7+ghFB?xAAHOkhVOlEzBdE> zW02hrB9VwkmgOPSG-<6?Q**i8>YfN<1F_MAQsBAQ@VH%-E`gZ9ma=JlXQl1DRyaR5 zKbzc@V0du&`Vk(z5?<+N#2^3xOlpD{1fW1Zv|{9p%#-x{^mwaAusR=$jYRhyedPZf zU^=a%E;Q4^v<~@)LhU`$fUQUTQYhx<0f4m#g6=~vUCVA^hgU5{x4uqV_)_>P%!UbP zVZYE93EWkIXVw+s@wgP04sR>VPEJVYT<z^RPuVx_pnF#I@sqsECUS)n>LjQg(2TOUv6(Go#%5m4 wOzr72B@zjb!{HbrgiuY>)Kn_9ivJNm0X#9b!EgRIR{#J207*qoM6N<$f_-f)^Z)<= literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/act3.cpp b/source/bitmaps/icons/act3.cpp new file mode 100644 index 0000000..02c66dd --- /dev/null +++ b/source/bitmaps/icons/act3.cpp @@ -0,0 +1,94 @@ +#include + +#ifndef ICONS_ACT3_CPP +#define ICONS_ACT3_CPP + +static unsigned char icons_act3_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, +0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, +0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x1d, 0x11, 0xa0, +0x90, 0x92, 0xa9, 0x00, 0x00, 0x02, 0x30, 0x49, +0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x93, 0xdf, +0x4b, 0x93, 0x51, 0x1c, 0xc6, 0x9f, 0xf3, 0xe3, +0xfd, 0xbd, 0xe9, 0xda, 0xe6, 0x74, 0x6d, 0xab, +0x75, 0xd1, 0x20, 0x24, 0x14, 0x42, 0x86, 0xe0, +0x64, 0xde, 0xd8, 0xd5, 0x20, 0xe8, 0xb6, 0xbb, +0x52, 0x90, 0x20, 0x61, 0x97, 0x49, 0x20, 0x84, +0x61, 0x10, 0x06, 0x5e, 0x14, 0x48, 0x23, 0x22, +0x02, 0xbd, 0x68, 0x7f, 0x40, 0x17, 0x83, 0x20, +0x50, 0xe8, 0xa2, 0x04, 0xc7, 0x52, 0x21, 0x6b, +0x4c, 0x4c, 0x97, 0xd3, 0xc2, 0xed, 0x1d, 0x7b, +0xdf, 0xd7, 0xb7, 0x8b, 0xb1, 0x17, 0xcb, 0x04, +0x21, 0xfa, 0xc2, 0x03, 0xdf, 0xf3, 0x1c, 0x9e, +0xcf, 0x39, 0x70, 0xbe, 0x07, 0xf8, 0xc7, 0x22, +0x27, 0x6d, 0xc4, 0x62, 0x31, 0xbf, 0xaa, 0xaa, +0x03, 0xb6, 0x6d, 0xd3, 0x46, 0xa3, 0xb1, 0x58, +0x28, 0x14, 0xb6, 0x4e, 0x05, 0x88, 0xf7, 0xc4, +0x87, 0xcf, 0xca, 0xe1, 0x97, 0x1d, 0x96, 0xdf, +0xeb, 0xa9, 0xfa, 0x18, 0xb1, 0x81, 0x7d, 0x6d, +0xcf, 0xfa, 0xce, 0xcb, 0x3f, 0x8a, 0xf5, 0xd2, +0xed, 0xf7, 0xcb, 0x4b, 0x0b, 0x27, 0x02, 0x06, +0x7b, 0x07, 0x27, 0x2f, 0x89, 0xdd, 0x13, 0x17, +0x36, 0x2e, 0x72, 0x62, 0x11, 0x80, 0x00, 0x36, +0xb5, 0x41, 0x2c, 0x02, 0x50, 0xa0, 0x18, 0xdd, +0xb0, 0x0a, 0xd6, 0xca, 0xf3, 0xdc, 0x87, 0xdc, +0x48, 0x2b, 0xc3, 0x9c, 0x93, 0xaf, 0xc4, 0x87, +0xba, 0xdb, 0x2e, 0x3f, 0x0b, 0x7e, 0x0e, 0x73, +0x93, 0x1a, 0x30, 0x58, 0x53, 0x4e, 0x4f, 0x0d, +0xa8, 0x3f, 0x35, 0xaa, 0x74, 0xc9, 0x3d, 0x42, +0x97, 0xf4, 0xa5, 0xb4, 0x59, 0x5c, 0x06, 0x00, +0xda, 0x02, 0x44, 0xbc, 0xe7, 0x5e, 0x79, 0x8a, +0x5e, 0xa6, 0x8b, 0x35, 0xfc, 0xa9, 0xc9, 0xad, +0x09, 0xa7, 0x77, 0x97, 0xda, 0xd9, 0x79, 0x4f, +0xf8, 0x71, 0x2b, 0x47, 0x01, 0x20, 0x99, 0x4c, +0xca, 0x6e, 0xd6, 0xe6, 0xd3, 0x99, 0x0e, 0x5d, +0xd2, 0xf1, 0xf0, 0xeb, 0x14, 0x74, 0x49, 0x77, +0x74, 0x27, 0x96, 0x76, 0xbc, 0x1a, 0xaf, 0x41, +0x3b, 0x74, 0xb7, 0xf7, 0xf7, 0xf7, 0x87, 0x8e, +0xde, 0xa0, 0x97, 0xd9, 0x8c, 0xd7, 0xc4, 0x2a, +0x66, 0xd7, 0x66, 0x00, 0x00, 0xb3, 0x6b, 0x33, +0xa8, 0x0a, 0x07, 0x8e, 0x00, 0xa0, 0x2a, 0x1c, +0xa0, 0x26, 0x56, 0x41, 0x4d, 0xca, 0x54, 0x55, +0x1d, 0x72, 0x00, 0x9c, 0x73, 0x50, 0x81, 0x82, +0xc8, 0x04, 0xa3, 0x7d, 0x63, 0x00, 0x80, 0xd1, +0xbe, 0x31, 0x30, 0x95, 0x81, 0xa9, 0x0c, 0x99, +0xfc, 0x1c, 0x00, 0x20, 0x93, 0x9f, 0x6b, 0x7a, +0x12, 0x03, 0xe7, 0x9c, 0x38, 0x00, 0xd3, 0x34, +0x3f, 0x0a, 0x6e, 0x6e, 0x6a, 0xaa, 0x06, 0x45, +0x56, 0x00, 0x00, 0x8a, 0xac, 0x38, 0x1a, 0x4f, +0xa4, 0x01, 0x00, 0xe3, 0x89, 0x34, 0x14, 0x59, +0x81, 0xe0, 0xe1, 0xa6, 0x61, 0x18, 0xb9, 0xdf, +0x9e, 0x71, 0xe4, 0xc6, 0x68, 0xc9, 0x5f, 0x0e, +0x84, 0x70, 0xd8, 0x5c, 0x3f, 0x78, 0x73, 0x1f, +0x77, 0x87, 0xef, 0xfd, 0x75, 0x72, 0xf6, 0x83, +0x95, 0xdd, 0xa7, 0x2f, 0x9e, 0xf8, 0x01, 0x80, +0xb7, 0xfc, 0x9d, 0xca, 0xf6, 0xf5, 0x8e, 0x68, +0xc7, 0x3b, 0xf5, 0x9b, 0x8b, 0x03, 0xc0, 0xd4, +0xb5, 0x69, 0x68, 0xaa, 0x76, 0x2c, 0x5f, 0x0f, +0xd4, 0xac, 0x9d, 0xf2, 0xf6, 0xad, 0x63, 0x73, +0xb0, 0xba, 0xbe, 0xba, 0x19, 0x8c, 0x04, 0x69, +0x67, 0xb4, 0x33, 0xa1, 0x19, 0x2e, 0x2a, 0x72, +0x11, 0xa2, 0x70, 0x44, 0x92, 0x88, 0xc3, 0x90, +0x69, 0xad, 0x97, 0xd7, 0x32, 0x0b, 0xd9, 0x85, +0x47, 0xc7, 0x00, 0x00, 0x90, 0xff, 0x94, 0x7f, +0xeb, 0x8d, 0x78, 0x97, 0xa4, 0x80, 0x78, 0x55, +0xf4, 0x09, 0x92, 0xa8, 0x89, 0x84, 0xba, 0x09, +0x1a, 0x67, 0xea, 0x56, 0x45, 0xda, 0xdd, 0xcb, +0x97, 0x56, 0x6e, 0xce, 0xbf, 0x9e, 0x9f, 0x3e, +0xd5, 0x67, 0x4a, 0xa5, 0x52, 0x7e, 0x97, 0xcb, +0x35, 0x40, 0x08, 0xa1, 0xf5, 0x7a, 0x7d, 0x31, +0x9b, 0xcd, 0x6e, 0xe1, 0x7f, 0xd4, 0x2f, 0x48, +0xf5, 0xce, 0x67, 0xed, 0xc2, 0xa9, 0xc3, 0x00, +0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, +0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/act3.png b/source/bitmaps/icons/act3.png new file mode 100644 index 0000000000000000000000000000000000000000..a630b23c59bbe8100f8ba528859482859d4f05bc GIT binary patch literal 675 zcmV;U0$lxxP)^BkVfIdHxQ_{SnA zZNy?RzpAPOwr$f!qp?^h6t+$Ui1);Y&&uJK9hTqgsrnePfqiYy`p(NgiuKa%_sdHQ zCjth02PZFy-4ho!E^=ZKfB-hNK`a7Lpcvh-3f9W=+=tvqE5n?Vuf&JC+b%x~ehzb! z8ZcN>PEQS}KQ*d!$vr}s^rf^}Tm}Hz0z|y$UU`aMri(TFsmZMgr+1gy*?CX+aVtjw zAel_cZr0}0nGRjj@$l;ubV+w~Czf`+8m~b+bhr2S_lJ(&pqJT<*TgDj*Jc0!vuiV` z3I~n=peh`oCRRaB%2ZVyasZrjP=SKT1fzXp0D#fHF))>ZsSKI?8~`AbpKE#&1LvGL z0Mj%-3T|#{ss=??004@tI2uo+0RZEPG!$8Z;NhlW7`fk`apcBm$zKkHaM)Zwcyk|j zhwuG$a`uCj-KQ^}_yK^o{GH17^^R!AJN2831Hja^X=ti;EME`Qtex`qtz&bry1u#@ zj09nqHsi#h{KR+t(Vs_3)zK7#{dA3|CE30jd+)&fOu8(36iLZgt`eD zXX;i(+TF{SR&LI}o}WI|XG*0~ewWKNKnS7rdVMjQ&2Hg;)GtW&&S&kyslxyO002ov JPDHLkV1k*WEgb*= literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/act4.cpp b/source/bitmaps/icons/act4.cpp new file mode 100644 index 0000000..7fd1ced --- /dev/null +++ b/source/bitmaps/icons/act4.cpp @@ -0,0 +1,94 @@ +#include + +#ifndef ICONS_ACT4_CPP +#define ICONS_ACT4_CPP + +static unsigned char icons_act4_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, +0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, +0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x2a, 0x1e, 0xa0, +0x28, 0x2f, 0x0c, 0x00, 0x00, 0x02, 0x2f, 0x49, +0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x53, 0xcf, +0x6b, 0x13, 0x41, 0x14, 0xfe, 0xe6, 0xc7, 0xce, +0x6e, 0x76, 0x93, 0x36, 0x26, 0x4d, 0xdb, 0xd8, +0x46, 0xeb, 0xc1, 0x80, 0x14, 0x69, 0xc1, 0x43, +0x08, 0xb4, 0x25, 0xbd, 0xd4, 0x53, 0x41, 0xf0, +0x4f, 0xa8, 0x7a, 0xf1, 0x20, 0x78, 0xf0, 0x60, +0x28, 0xf4, 0x52, 0xa8, 0x20, 0x15, 0xaf, 0x62, +0xf1, 0xa0, 0x42, 0x73, 0x68, 0xfe, 0x02, 0x59, +0x2a, 0x0a, 0x0d, 0x7a, 0xd0, 0x42, 0x43, 0xac, +0x05, 0xab, 0x21, 0xa1, 0xb6, 0xd1, 0xd6, 0x0a, +0xcd, 0x2e, 0xfb, 0x23, 0xeb, 0x21, 0xee, 0x62, +0x2d, 0x85, 0x82, 0xf8, 0xe0, 0x63, 0x66, 0xbe, +0x79, 0xef, 0x9b, 0xf7, 0xde, 0xcc, 0x00, 0xff, +0x68, 0xe4, 0xb8, 0x8d, 0x74, 0x3a, 0xdd, 0xa5, +0xaa, 0xea, 0x88, 0xe7, 0x79, 0xd4, 0xb2, 0xac, +0x95, 0x4a, 0xa5, 0xb2, 0x75, 0x22, 0x81, 0xcc, +0x50, 0x66, 0xe2, 0xb4, 0xd2, 0xff, 0x34, 0xe1, +0x76, 0xc5, 0xa2, 0x07, 0x71, 0x46, 0x3c, 0xe0, +0x87, 0xb6, 0xe7, 0x7e, 0xe3, 0x8d, 0xfd, 0xaa, +0x59, 0xbb, 0xf9, 0x76, 0xb5, 0x54, 0x38, 0x56, +0x60, 0x6c, 0x78, 0x6c, 0xe6, 0x82, 0x18, 0xcc, +0x9f, 0xdb, 0x3c, 0xcf, 0x89, 0x4b, 0x00, 0x02, +0x78, 0xd4, 0x03, 0x71, 0x09, 0x40, 0x81, 0xea, +0xc0, 0xa6, 0x5b, 0x71, 0xd7, 0x9e, 0xe8, 0xef, +0xf4, 0xeb, 0x7e, 0x0c, 0x0b, 0x4e, 0xbe, 0x94, +0x19, 0x1f, 0xec, 0xb8, 0xf8, 0x38, 0xf9, 0xa9, +0x9f, 0x3b, 0xd4, 0x86, 0xcd, 0x6c, 0xe4, 0x77, +0xee, 0xe0, 0xc5, 0xbc, 0x0e, 0x9b, 0xd9, 0xb0, +0xa9, 0x0d, 0xf5, 0xa7, 0x46, 0x43, 0xbd, 0xca, +0x90, 0xd4, 0x2b, 0x7f, 0xae, 0xd5, 0xab, 0xab, +0x00, 0x40, 0x7d, 0x81, 0x54, 0xec, 0xcc, 0xf3, +0x68, 0x35, 0xc6, 0x0c, 0xd1, 0x84, 0x21, 0x9a, +0x98, 0xd9, 0xca, 0x03, 0x00, 0xfc, 0xb5, 0x8f, +0x48, 0xad, 0x93, 0x9d, 0x8d, 0xf6, 0x3f, 0xf0, +0xe3, 0x28, 0x00, 0xe4, 0x72, 0x39, 0x25, 0xc2, +0x3a, 0xe2, 0x06, 0x33, 0x60, 0xc8, 0x06, 0xee, +0x7d, 0x99, 0x0d, 0xca, 0x32, 0x64, 0xe3, 0x10, +0x9a, 0xbc, 0x09, 0xad, 0x15, 0xe9, 0xcc, 0x66, +0xb3, 0x7d, 0x00, 0xc0, 0x7f, 0xfb, 0x0d, 0x33, +0x8f, 0xf1, 0xa6, 0x38, 0x08, 0x02, 0xa7, 0x06, +0x6f, 0xb4, 0x27, 0x52, 0x7b, 0x58, 0x28, 0x3f, +0x0a, 0x38, 0xe6, 0x50, 0xa6, 0xaa, 0xea, 0x38, +0x80, 0x67, 0x1c, 0x00, 0x38, 0xe7, 0xa0, 0x12, +0x85, 0xa7, 0xb4, 0x40, 0x69, 0xbb, 0x2a, 0xa6, +0xb2, 0x23, 0x57, 0xe6, 0x73, 0x4c, 0xa6, 0xe0, +0xe0, 0x24, 0xc8, 0xc0, 0x71, 0x9c, 0xf7, 0x52, +0x84, 0x3b, 0x8a, 0x2a, 0x09, 0x00, 0xb8, 0x35, +0x7a, 0x1b, 0x21, 0x25, 0x04, 0x00, 0x78, 0xf8, +0x6a, 0x3e, 0x10, 0xf0, 0x39, 0x2f, 0xea, 0x3a, +0x76, 0xc3, 0xd6, 0x83, 0x1e, 0x2c, 0x2f, 0x2f, +0x9b, 0x16, 0xb3, 0x1a, 0x9a, 0xa6, 0x41, 0x0b, +0x1d, 0x86, 0x6f, 0x77, 0x27, 0xa6, 0xdb, 0x9c, +0xaa, 0xc1, 0x51, 0x9c, 0x7d, 0x5d, 0xd7, 0xeb, +0x7f, 0xf6, 0x00, 0x3b, 0xbb, 0xdb, 0x57, 0x13, +0x03, 0x89, 0xd7, 0xea, 0xd7, 0x30, 0xff, 0x3b, +0xf5, 0xd9, 0x2b, 0x73, 0xd0, 0xd4, 0xb6, 0x98, +0xd9, 0xdd, 0x74, 0x77, 0x1a, 0xdb, 0xd7, 0x8e, +0xbc, 0x83, 0xf5, 0x8d, 0xf5, 0x7a, 0x32, 0x95, +0xa4, 0x3d, 0x03, 0x3d, 0xa3, 0x9a, 0x1d, 0xa6, +0x82, 0x0b, 0x08, 0x49, 0xa0, 0xb4, 0xf4, 0x06, +0x42, 0x12, 0x10, 0xb2, 0x40, 0xab, 0xcf, 0x71, +0x37, 0x1a, 0x1f, 0x17, 0x0a, 0xc5, 0xc2, 0xfd, +0x23, 0x02, 0x00, 0x50, 0xfe, 0x50, 0x7e, 0x19, +0x4b, 0xc5, 0x4a, 0x72, 0xb7, 0xb8, 0x2c, 0xe2, +0x92, 0x2c, 0x34, 0x41, 0x68, 0x84, 0xc0, 0x3a, +0x65, 0xba, 0xbb, 0xf2, 0xf7, 0xbd, 0x72, 0x6d, +0x6d, 0x6a, 0x71, 0x69, 0x71, 0xee, 0x44, 0x9f, +0x69, 0x72, 0x72, 0xb2, 0x2b, 0x1c, 0x0e, 0x8f, +0x10, 0x42, 0xa8, 0x69, 0x9a, 0x2b, 0xc5, 0x62, +0x71, 0x0b, 0xff, 0xc3, 0x7e, 0x01, 0x4b, 0x89, +0xc3, 0x0b, 0x6e, 0x03, 0xa3, 0xa2, 0x00, 0x00, +0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, +0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/act4.png b/source/bitmaps/icons/act4.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb1f166e3002364c11f4ae613a918b4e2f2226e GIT binary patch literal 674 zcmV;T0$u%yP)%o8&X~9DXv?aaNQ$g@gsCw}rc<^8-^irrG z6|Z9Pph9zK{sLJl3JrSDLPM+tt0AGb(bfvhF8d?vA?{)=g@X9tV`jd2@0<7D%mDvr zWJrg)UvFVN~N-OB7w|MX5zHc|1{xt#i9psMm*q$w&#B1js2=wyZLst zR5(^(Yp6KuN>wXLiPQH{GAMCjJIQglc zJJg2FY~*+D;KjTSo7u3b4fUr+L%qt7)GL3k)vK!jKz)H!?9B6MHO36lgdv)k*~$X| z{I!ort&^RN_CN6BC;;SgIVHk6;s!Hd$Oi6xnGMP^WaAK;ya}xp>C9%ceE`6J`wcUX z@uoNk0;dLVv?o$~SSUXVIOb5Ms_Hm^XB+@H=b#dWr?fz6yDFx#BUk2gOs3%AB*?&V zocB_MJBlg^0Jt@J8zChG0C@OnJ`nIZFX}pW!`6cyEH5vc7PA_fra=oGhHrN#rrVsV z!BL!jUDxY>_5eG(+gB3e}BYH?|C?nIwya&odO91f2VLa1q)E5%}Q3;)A@0ZWO)3vL6Wq5uE@07*qo IM6N<$f*Hy%7ytkO literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/activitywindow.cpp b/source/bitmaps/icons/activitywindow.cpp new file mode 100644 index 0000000..bbe20fb --- /dev/null +++ b/source/bitmaps/icons/activitywindow.cpp @@ -0,0 +1,618 @@ +#include + +#ifndef ICONS_ACTIVITYWINDOW_CPP +#define ICONS_ACTIVITYWINDOW_CPP + +static unsigned char icons_activitywindow_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x12, 0x7c, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xfb, +0x6f, 0x5c, 0xc7, 0x75, 0xc7, 0x3f, 0x33, 0x73, +0x5f, 0xfb, 0xe0, 0x63, 0x25, 0x52, 0x94, 0x28, +0x91, 0x7a, 0xd9, 0x94, 0x64, 0xc9, 0xa2, 0x64, +0x3d, 0xfc, 0x92, 0x6c, 0x29, 0x76, 0x1a, 0xc5, +0x28, 0x6a, 0xd7, 0x2d, 0xda, 0xc2, 0x30, 0x52, +0xb4, 0x0d, 0x9c, 0xa2, 0xbf, 0x04, 0xe8, 0xbf, +0x51, 0xe4, 0xa7, 0x22, 0x48, 0x0b, 0xe4, 0x97, +0x14, 0x76, 0x62, 0x20, 0x6d, 0xea, 0xfa, 0x51, +0x27, 0x91, 0x9c, 0x38, 0x6a, 0x64, 0xb9, 0xa2, +0x69, 0x4b, 0x8e, 0x23, 0xd9, 0x7a, 0xd1, 0x12, +0xa9, 0xd7, 0x8a, 0xd4, 0x8a, 0x5c, 0xee, 0xe3, +0xbe, 0xfb, 0xc3, 0xdd, 0xbb, 0xbc, 0xbb, 0x5c, +0x52, 0x4b, 0x4b, 0x4e, 0x1b, 0x74, 0x80, 0x83, +0xbb, 0x7b, 0x77, 0x76, 0xee, 0x9c, 0xef, 0xf9, +0x9e, 0x33, 0x73, 0x67, 0xce, 0x88, 0x30, 0x0c, +0xf9, 0x32, 0x8b, 0x10, 0x42, 0x2c, 0xf4, 0x53, +0x8b, 0x7b, 0xf3, 0x3a, 0x13, 0x7e, 0xc9, 0x1d, +0xd4, 0xbe, 0x8c, 0x46, 0x9b, 0x94, 0x16, 0x0b, +0x5c, 0x17, 0x2a, 0x61, 0xf2, 0xda, 0x8c, 0xdf, +0xbd, 0x06, 0x44, 0xdc, 0xab, 0xf6, 0x5a, 0x28, +0x2d, 0x9a, 0x3e, 0xcb, 0x16, 0xf7, 0x92, 0x25, +0xa9, 0xf8, 0x62, 0x12, 0x55, 0xba, 0x47, 0x1d, +0xbf, 0x6b, 0x06, 0x2c, 0xa0, 0xb8, 0x4c, 0x5c, +0x5b, 0x89, 0xa0, 0x11, 0x84, 0x58, 0x99, 0xa0, +0xf6, 0x39, 0x58, 0x40, 0xea, 0x40, 0xc4, 0x8f, +0xbd, 0x5b, 0x20, 0xee, 0x0a, 0x80, 0x84, 0xf2, +0xcd, 0x4a, 0xab, 0x84, 0x68, 0x35, 0x51, 0x4d, +0xd2, 0xcc, 0x82, 0xa4, 0xa2, 0x1e, 0xe0, 0xb7, +0xb8, 0xfa, 0x34, 0x81, 0x71, 0xb7, 0x40, 0x7c, +0x21, 0x17, 0x68, 0x52, 0xbc, 0x59, 0x69, 0x0d, +0xd0, 0x13, 0x62, 0xd4, 0x24, 0xfe, 0x1e, 0x03, +0x92, 0x64, 0x42, 0x6c, 0xf5, 0x58, 0x59, 0xb7, +0x26, 0x4e, 0xd3, 0x35, 0x96, 0x56, 0x60, 0x7c, +0x21, 0x10, 0x96, 0xcc, 0x80, 0x84, 0xf2, 0xb1, +0x02, 0x49, 0x2b, 0x1b, 0x80, 0x59, 0x13, 0xab, +0x26, 0xa9, 0xc4, 0xf7, 0x18, 0x8c, 0x98, 0x11, +0x31, 0x00, 0x49, 0xcb, 0xc7, 0x0a, 0xdb, 0x35, +0xa9, 0x02, 0x95, 0xda, 0xb5, 0x5a, 0xbb, 0x17, +0x03, 0x12, 0x33, 0x23, 0xa0, 0xc6, 0x86, 0xa5, +0x82, 0xb0, 0x24, 0x00, 0x6a, 0xca, 0xc7, 0x12, +0x5b, 0x3c, 0xb6, 0x72, 0xac, 0x70, 0x1a, 0xc8, +0x24, 0x24, 0x0d, 0xa4, 0x57, 0xac, 0x58, 0xb1, +0x7a, 0xf5, 0xea, 0xd5, 0x9b, 0x2d, 0xcb, 0x5a, +0x66, 0x59, 0x56, 0xb7, 0x61, 0x18, 0x9d, 0x86, +0x61, 0x74, 0x4a, 0x29, 0x75, 0xc7, 0x71, 0x8a, +0x8e, 0xe3, 0xcc, 0xd8, 0xb6, 0x7d, 0xdb, 0xb6, +0xed, 0xc2, 0xed, 0xdb, 0xb7, 0x27, 0x2e, 0x5c, +0xb8, 0x70, 0x26, 0x08, 0x82, 0x12, 0x50, 0x06, +0x4a, 0x09, 0x29, 0x27, 0x00, 0xb1, 0x9b, 0x81, +0x58, 0xaa, 0x4b, 0xb4, 0xed, 0x02, 0x09, 0xe5, +0x63, 0xba, 0xc7, 0x16, 0x8f, 0xad, 0x9c, 0x01, +0x3a, 0x6a, 0xd2, 0x09, 0x74, 0x0c, 0x0e, 0x0e, +0x6e, 0x1a, 0x18, 0x18, 0xd8, 0xdd, 0xd3, 0xd3, +0xb3, 0x35, 0x9d, 0x4e, 0xf7, 0xb5, 0xf5, 0xa0, +0x5a, 0xf1, 0x3c, 0xaf, 0x5c, 0x28, 0x14, 0x3e, +0xbb, 0x7e, 0xfd, 0xfa, 0x47, 0xe7, 0xce, 0x9d, +0x3b, 0x69, 0xdb, 0xf6, 0x14, 0x30, 0x03, 0x14, +0x6b, 0x32, 0xcb, 0x1c, 0x18, 0x31, 0x23, 0x92, +0x6e, 0xd1, 0x16, 0x08, 0x6d, 0x01, 0xd0, 0x42, +0x79, 0x9d, 0x88, 0xd6, 0x29, 0x20, 0x5b, 0x53, +0xba, 0x1b, 0xe8, 0x02, 0x96, 0xed, 0xd8, 0xb1, +0xe3, 0x89, 0x8d, 0x1b, 0x37, 0x1e, 0xb2, 0x2c, +0x6b, 0x79, 0xdc, 0x86, 0x72, 0x35, 0x72, 0xf9, +0x65, 0x58, 0xb3, 0x29, 0x8c, 0xaa, 0x81, 0x6e, +0x1b, 0x18, 0x55, 0x13, 0xe9, 0x4b, 0x5c, 0xcb, +0xc1, 0x31, 0x1d, 0x1c, 0xcb, 0xc6, 0x49, 0xd9, +0xdc, 0x5e, 0x51, 0xa0, 0x9a, 0xa9, 0xd4, 0x9f, +0x1f, 0x04, 0x81, 0x7b, 0xed, 0xda, 0xb5, 0xf7, +0x47, 0x47, 0x47, 0xdf, 0x28, 0x16, 0x8b, 0x57, +0x81, 0x02, 0x30, 0x9d, 0x00, 0xa4, 0xcc, 0x9c, +0x6b, 0x78, 0x4b, 0x01, 0xe1, 0x8e, 0x00, 0x34, +0x29, 0x1f, 0x07, 0x38, 0x8b, 0x39, 0x8b, 0x77, +0x01, 0xcb, 0x80, 0x65, 0x9b, 0x37, 0x6f, 0x7e, +0x64, 0xcb, 0x96, 0x2d, 0x7f, 0x94, 0xc9, 0x64, +0x56, 0x01, 0xe8, 0x55, 0x83, 0xdc, 0xf5, 0x65, +0xe4, 0xae, 0xf6, 0xd0, 0x39, 0xd9, 0x85, 0x08, +0xee, 0x34, 0x07, 0x9a, 0x2b, 0x95, 0x8e, 0x32, +0x85, 0xfe, 0x29, 0x0a, 0xab, 0xa6, 0x28, 0x75, +0xcf, 0x02, 0xe0, 0xfb, 0xbe, 0x3d, 0x3e, 0x3e, +0xfe, 0xcb, 0x91, 0x91, 0x91, 0xb7, 0x6c, 0xdb, +0xbe, 0x01, 0xdc, 0xaa, 0x81, 0x31, 0x43, 0xe4, +0x1e, 0x95, 0x1a, 0x10, 0x6d, 0x83, 0xb0, 0x28, +0x00, 0x0b, 0x28, 0x1f, 0xd3, 0xbd, 0x0b, 0xc8, +0x01, 0x3d, 0x5d, 0x5d, 0x5d, 0xeb, 0x9e, 0x7c, +0xf2, 0xc9, 0x6f, 0x76, 0x77, 0x77, 0x0f, 0x45, +0x8a, 0xeb, 0xac, 0x3a, 0xb3, 0x86, 0xe5, 0x97, +0x7b, 0x11, 0x61, 0xfb, 0x4a, 0x2f, 0x54, 0xca, +0x5d, 0x25, 0xae, 0x6c, 0xbb, 0x4c, 0xb1, 0x77, +0x06, 0x00, 0xd7, 0x75, 0x8b, 0xa7, 0x4e, 0x9d, +0x7a, 0xf9, 0xf4, 0xe9, 0xd3, 0xc7, 0x81, 0x49, +0x60, 0x8a, 0x88, 0x11, 0x49, 0x36, 0xb4, 0x05, +0xc2, 0x82, 0x00, 0xb4, 0xa0, 0xbd, 0xc1, 0x1c, +0xe5, 0xbb, 0x81, 0xe5, 0x40, 0xef, 0xe0, 0xe0, +0xe0, 0xf0, 0xa3, 0x8f, 0x3e, 0xfa, 0x92, 0x65, +0x59, 0xdd, 0xd2, 0x93, 0xf4, 0x9e, 0x5b, 0x45, +0xef, 0xf9, 0x3e, 0xa4, 0x2f, 0xef, 0x5a, 0xf1, +0xe6, 0x52, 0xec, 0x9b, 0xe6, 0xda, 0xd6, 0x09, +0xaa, 0x9d, 0x15, 0x80, 0xe0, 0xec, 0xd9, 0xb3, +0x6f, 0x1d, 0x3f, 0x7e, 0xfc, 0x35, 0x20, 0x4f, +0x04, 0x44, 0x81, 0xf9, 0x20, 0xf8, 0x44, 0xfa, +0xb7, 0x0f, 0x40, 0xd3, 0x50, 0xd7, 0x4a, 0xf9, +0x5e, 0x60, 0xc5, 0xf0, 0xf0, 0xf0, 0x53, 0xc3, +0xc3, 0xc3, 0x2f, 0x28, 0xa5, 0x8c, 0x54, 0x21, +0xcd, 0xc0, 0x7f, 0xaf, 0x43, 0xab, 0xea, 0xf7, +0x4e, 0xe3, 0x96, 0x3d, 0x86, 0x9b, 0x9b, 0xaf, +0x73, 0x73, 0xd3, 0x0d, 0x00, 0x6e, 0xdc, 0xb8, +0x31, 0x7a, 0xf8, 0xf0, 0xe1, 0xef, 0xbb, 0xae, +0x7b, 0x15, 0xb8, 0x49, 0xe4, 0x16, 0x33, 0xcc, +0x67, 0x42, 0x4b, 0x10, 0x16, 0x03, 0x20, 0x1e, +0xea, 0x62, 0xda, 0x67, 0xa9, 0x51, 0x1e, 0x58, +0xf9, 0xf8, 0xe3, 0x8f, 0x3f, 0x3f, 0x34, 0x34, +0xf4, 0x9c, 0x10, 0x42, 0x74, 0x8e, 0x77, 0xd3, +0xf7, 0x51, 0xff, 0x92, 0x7c, 0xfc, 0x6e, 0x4b, +0xb1, 0x7f, 0x86, 0xeb, 0xbb, 0xae, 0x10, 0xaa, +0x80, 0x99, 0x99, 0x99, 0xb1, 0x37, 0xde, 0x78, +0xe3, 0x1f, 0x6c, 0xdb, 0x9e, 0x20, 0x62, 0x43, +0x12, 0x84, 0x7a, 0x60, 0x6c, 0x0b, 0x80, 0x26, +0xea, 0xc7, 0xd1, 0x3e, 0x69, 0xf9, 0x95, 0x0f, +0x3e, 0xf8, 0xe0, 0xc1, 0x87, 0x1f, 0x7e, 0xf8, +0x9b, 0x80, 0x58, 0xfe, 0x49, 0x2f, 0x5d, 0xe7, +0x97, 0x7d, 0x69, 0x8a, 0x2e, 0x56, 0x9c, 0x2e, +0x9b, 0xeb, 0x8f, 0x4c, 0xe0, 0xa5, 0x3c, 0xf2, +0xf9, 0xfc, 0xa9, 0xd7, 0x5f, 0x7f, 0xfd, 0x1f, +0x81, 0xab, 0xcc, 0x81, 0x50, 0x24, 0x0a, 0x8c, +0xf5, 0x21, 0xb2, 0x19, 0x84, 0x06, 0x47, 0x6d, +0x9a, 0xe2, 0xc6, 0x63, 0x7d, 0x1c, 0xf1, 0xbb, +0x80, 0xe5, 0x03, 0x03, 0x03, 0x5b, 0xf7, 0xec, +0xd9, 0xf3, 0x0d, 0x21, 0x84, 0xc8, 0x7d, 0xba, +0x9c, 0xec, 0x85, 0x2e, 0x7c, 0xe1, 0xe3, 0x0b, +0x9f, 0x40, 0x05, 0xf5, 0xcf, 0x5f, 0xaa, 0xc8, +0xe8, 0xaa, 0x66, 0x34, 0x56, 0x1c, 0xef, 0x47, +0xfa, 0x8a, 0xbe, 0xbe, 0xbe, 0xe1, 0x03, 0x07, +0x0e, 0xfc, 0x29, 0x91, 0x91, 0x72, 0x44, 0x23, +0x54, 0x8a, 0xc8, 0x7d, 0xeb, 0xb3, 0xce, 0xe6, +0xf5, 0x89, 0x56, 0x91, 0xaa, 0x55, 0xe0, 0xeb, +0x00, 0x72, 0x9d, 0x9d, 0x9d, 0x03, 0x07, 0x0f, +0x1e, 0xfc, 0x5b, 0x5d, 0xd7, 0xcd, 0xcc, 0xb5, +0x2c, 0xd9, 0x73, 0x5d, 0x04, 0x32, 0xa8, 0x8b, +0xd6, 0xa1, 0x61, 0xe4, 0x0c, 0x02, 0x15, 0x34, +0xdc, 0xbf, 0x67, 0xa2, 0x02, 0xcc, 0x65, 0x26, +0x5a, 0x56, 0xab, 0xdf, 0x53, 0x25, 0x8d, 0xe5, +0x1f, 0xae, 0x40, 0x0a, 0xc9, 0xd0, 0xd0, 0xd0, +0xd7, 0x76, 0xee, 0xdc, 0xf9, 0x04, 0xd1, 0xb0, +0xdc, 0x49, 0x34, 0x0b, 0x35, 0x69, 0x7c, 0xf7, +0x68, 0x28, 0xad, 0xa6, 0xc2, 0xc9, 0x61, 0xcf, +0xac, 0x59, 0xbf, 0x13, 0x58, 0xf6, 0xd4, 0x53, +0x4f, 0x7d, 0x23, 0x9d, 0x4e, 0x2f, 0xd7, 0xa6, +0x75, 0x3a, 0x4e, 0xe6, 0xf0, 0xa5, 0x5f, 0xff, +0x93, 0x91, 0xd6, 0x51, 0x59, 0x89, 0x91, 0x31, +0xb0, 0x7a, 0x4c, 0x0a, 0x97, 0x0b, 0x04, 0xfe, +0xbd, 0x5b, 0xbb, 0x90, 0x9a, 0x64, 0xd9, 0xda, +0x1c, 0x61, 0x10, 0x62, 0xcf, 0xda, 0xc8, 0x50, +0xe0, 0x56, 0x3d, 0x00, 0xf4, 0xbc, 0x41, 0xc7, +0xa7, 0x5d, 0xcc, 0x3e, 0x30, 0x23, 0x76, 0xef, +0xda, 0xfd, 0xe2, 0xc5, 0x8b, 0x17, 0x3f, 0x9d, +0x9e, 0x9e, 0x2e, 0xd3, 0xf8, 0xee, 0x10, 0x07, +0x43, 0x91, 0x7c, 0x67, 0xa8, 0x33, 0xe0, 0x4e, +0xc3, 0xde, 0xc6, 0x8d, 0x1b, 0xb7, 0xf5, 0xf5, +0xf5, 0x0d, 0x8b, 0x50, 0xd0, 0xf1, 0x41, 0x37, +0x61, 0x10, 0x10, 0x08, 0x9f, 0x40, 0xf8, 0x08, +0x3d, 0x44, 0xa5, 0x25, 0x2a, 0x25, 0xd1, 0x32, +0x8a, 0xcc, 0xaa, 0x34, 0xab, 0x77, 0xf7, 0x23, +0x4d, 0xea, 0x75, 0x5a, 0x89, 0x4a, 0xcb, 0x86, +0xeb, 0x62, 0xf5, 0xd6, 0xec, 0xed, 0x27, 0xd5, +0x6b, 0xa1, 0x65, 0x14, 0x2a, 0xa3, 0x50, 0x69, +0x09, 0x7a, 0x58, 0xaf, 0x63, 0x9d, 0x4f, 0x63, +0x4c, 0x99, 0x68, 0xba, 0x66, 0xee, 0xdb, 0xb7, +0xef, 0x39, 0xe6, 0xdc, 0x60, 0x51, 0x16, 0x34, +0xbb, 0x40, 0xd2, 0xfa, 0x0d, 0x00, 0xec, 0xd9, +0xb3, 0xe7, 0x8f, 0x95, 0x52, 0xc2, 0xba, 0x9c, +0x86, 0x8a, 0xc0, 0x97, 0x41, 0x5d, 0x3c, 0x19, +0x20, 0x52, 0x0a, 0x95, 0xd1, 0x22, 0x49, 0x6b, +0x64, 0x57, 0x65, 0x19, 0x3a, 0x34, 0x84, 0xde, +0x65, 0x34, 0xd4, 0x8d, 0x65, 0xdd, 0xfe, 0xb5, +0x0c, 0x3e, 0x36, 0x88, 0x2f, 0x03, 0xee, 0xff, +0x83, 0xfb, 0x59, 0xb5, 0x73, 0x55, 0xcb, 0x7a, +0x56, 0x8f, 0xc5, 0xa6, 0x43, 0x43, 0xa4, 0x57, +0x64, 0xd0, 0x32, 0x1a, 0x32, 0xa3, 0x50, 0x69, +0x85, 0x48, 0x29, 0x7c, 0xd1, 0x54, 0xf7, 0x4c, +0x06, 0x29, 0x25, 0x83, 0x83, 0x83, 0x8f, 0xf4, +0xf7, 0xf7, 0x6f, 0x20, 0x62, 0x6e, 0xa6, 0x06, +0x80, 0x4e, 0x8b, 0x58, 0x20, 0x9b, 0xac, 0xdf, +0x4c, 0xff, 0x34, 0xd0, 0xb9, 0x7d, 0xfb, 0xf6, +0x5d, 0x3d, 0x3d, 0x3d, 0xf7, 0x49, 0x4f, 0xa2, +0x9f, 0x35, 0xe7, 0x59, 0xc8, 0xf3, 0x5d, 0x8a, +0xb7, 0x66, 0x10, 0x3a, 0x68, 0x69, 0x85, 0x9e, +0x56, 0x68, 0x19, 0x8d, 0x6c, 0x5f, 0x86, 0x87, +0xfe, 0x7c, 0x98, 0xec, 0xca, 0x74, 0x43, 0xfd, +0x8d, 0x4f, 0xae, 0xe7, 0xe1, 0xbf, 0xdc, 0x8b, +0xd4, 0x23, 0x86, 0x68, 0x96, 0x64, 0xff, 0xdf, +0x3d, 0xce, 0x9a, 0x5d, 0xfd, 0x0d, 0xf5, 0xba, +0xd7, 0x76, 0xb1, 0xf3, 0xcf, 0x86, 0x49, 0x2f, +0x4f, 0xa1, 0xa5, 0xa2, 0x36, 0xb5, 0x94, 0x02, +0x15, 0x52, 0xbc, 0x35, 0x83, 0x17, 0xb8, 0x0d, +0xf5, 0xc5, 0xb4, 0x40, 0xbf, 0x62, 0xa0, 0x94, +0x52, 0x8f, 0x3d, 0xf6, 0xd8, 0x73, 0x09, 0x00, +0x52, 0x09, 0x00, 0x1a, 0x8c, 0xde, 0xcc, 0x80, +0xe4, 0xcb, 0x4e, 0x7d, 0xbe, 0x3f, 0x3c, 0x3c, +0xfc, 0x75, 0x29, 0x25, 0xda, 0x05, 0x93, 0xc0, +0x0b, 0x5b, 0x5a, 0xca, 0x76, 0x1d, 0xae, 0x5d, +0xbc, 0x81, 0x4f, 0x80, 0xca, 0x68, 0x68, 0x69, +0x0d, 0x3d, 0xa3, 0x93, 0x59, 0x91, 0x61, 0xdf, +0xb7, 0x1e, 0xa7, 0x67, 0x73, 0x6f, 0x64, 0xed, +0xa7, 0xee, 0x67, 0xdf, 0x4b, 0x8f, 0x63, 0x76, +0x18, 0xa0, 0x47, 0x4c, 0x12, 0x86, 0xc4, 0xea, +0x34, 0xf9, 0xca, 0xb7, 0x0f, 0x30, 0xb0, 0x77, +0x00, 0x5f, 0x06, 0xf4, 0xef, 0xec, 0xe7, 0xd1, +0xbf, 0x7e, 0x18, 0x2b, 0x67, 0xa1, 0x65, 0x74, +0xb4, 0x8c, 0x86, 0x4a, 0x29, 0x5c, 0xdf, 0xe3, +0xda, 0xc5, 0x1b, 0x38, 0xbe, 0xdb, 0xb2, 0x1f, +0xea, 0x53, 0x13, 0x19, 0x4a, 0x56, 0xad, 0x5a, +0x35, 0xbc, 0x7a, 0xf5, 0xea, 0x75, 0x35, 0x06, +0xc7, 0x6b, 0x11, 0xf3, 0xdc, 0x20, 0x19, 0x04, +0x93, 0x93, 0x9f, 0x78, 0x61, 0x23, 0x9d, 0xcb, +0xe5, 0xfa, 0x96, 0x2d, 0x5b, 0xb6, 0x8e, 0x00, +0xc4, 0xa5, 0xc8, 0x57, 0x17, 0x2a, 0xb6, 0xed, +0x73, 0xe1, 0x83, 0x0b, 0x3c, 0xf0, 0x95, 0x2d, +0x64, 0x7b, 0x33, 0x68, 0xa9, 0x08, 0x04, 0x33, +0x63, 0xf2, 0xf4, 0xb7, 0x0f, 0x72, 0xe9, 0xa3, +0xcb, 0x6c, 0xfb, 0xea, 0x03, 0x28, 0x5d, 0x21, +0xa5, 0x40, 0x68, 0x11, 0x03, 0x84, 0x06, 0x66, +0xd6, 0x20, 0x08, 0x42, 0xbe, 0xf6, 0xf7, 0x4f, +0xf3, 0xdb, 0x77, 0x4e, 0xb3, 0x6e, 0xd7, 0x5a, +0x9c, 0xb2, 0x03, 0x12, 0xfc, 0xc0, 0x47, 0xf3, +0x14, 0xa5, 0x2b, 0x25, 0xc6, 0x3e, 0x1c, 0xc3, +0xf7, 0xfc, 0x85, 0xd7, 0x96, 0xab, 0x20, 0xf3, +0x8a, 0xb0, 0x3f, 0x10, 0x5b, 0xb6, 0x6c, 0xd9, +0x7b, 0xe5, 0xca, 0x95, 0xb3, 0x34, 0x0e, 0x87, +0xf5, 0x95, 0x28, 0x21, 0xc4, 0x3c, 0x00, 0x9a, +0x19, 0x90, 0xde, 0xbe, 0x7d, 0xfb, 0x6e, 0x29, +0xa5, 0x08, 0x27, 0x05, 0xbe, 0xef, 0xb7, 0x1e, +0x38, 0x13, 0xc5, 0x77, 0x7d, 0x3e, 0xfe, 0xc5, +0x6f, 0x78, 0xe8, 0x0f, 0x77, 0x90, 0x5d, 0x91, +0x45, 0x4f, 0x69, 0x18, 0xe9, 0x08, 0x84, 0xed, +0x5f, 0xdf, 0x86, 0x9e, 0xd2, 0xd1, 0x74, 0x05, +0x40, 0xa8, 0xc2, 0x68, 0x24, 0xd1, 0xc1, 0xc8, +0x18, 0x00, 0x78, 0xa6, 0xc6, 0x83, 0x5f, 0xdf, +0x86, 0x5d, 0xb6, 0x09, 0x09, 0xf1, 0x7d, 0x1f, +0xdf, 0xd7, 0x98, 0x38, 0x33, 0xc5, 0xe9, 0xff, +0x3a, 0x43, 0x10, 0x04, 0x77, 0xec, 0x83, 0xb8, +0x21, 0x90, 0x6b, 0x24, 0x03, 0x03, 0x03, 0x0f, +0x32, 0xe7, 0x02, 0xad, 0x19, 0xb0, 0x80, 0xff, +0xc7, 0x00, 0xa4, 0x06, 0x06, 0x06, 0x1e, 0x14, +0x42, 0x10, 0x5c, 0x0f, 0x09, 0x44, 0x7b, 0xc3, +0x5a, 0xe0, 0x05, 0x8c, 0xbc, 0x31, 0x8a, 0xd4, +0x25, 0x43, 0x8f, 0xdd, 0x8f, 0x9e, 0xd2, 0x31, +0xd2, 0x06, 0x66, 0xc6, 0xc0, 0x48, 0x9b, 0x28, +0x4d, 0x12, 0x06, 0x21, 0x28, 0x08, 0x44, 0xa4, +0x90, 0x91, 0x32, 0x10, 0x52, 0xa0, 0x0c, 0x1f, +0x21, 0x21, 0x0c, 0x43, 0x7c, 0x2f, 0x40, 0xf3, +0x7c, 0xc6, 0x8e, 0x7d, 0xc6, 0xc9, 0x9f, 0x9f, +0x22, 0x0c, 0xc3, 0x3b, 0xef, 0x2a, 0x00, 0xdc, +0x00, 0x3d, 0x14, 0xe4, 0x72, 0xb9, 0xc1, 0x5c, +0x2e, 0xd7, 0x53, 0x28, 0x14, 0x6e, 0x34, 0x01, +0x20, 0xa9, 0xbd, 0x1f, 0x24, 0xb1, 0x6c, 0x66, +0x80, 0x91, 0x4a, 0xa5, 0x3a, 0x57, 0xf4, 0xae, +0xd8, 0x28, 0xa5, 0xc4, 0xcb, 0x07, 0xd1, 0x0c, +0xac, 0x4d, 0x71, 0x43, 0x97, 0x63, 0x3f, 0x39, +0xce, 0x8d, 0x4b, 0x79, 0x94, 0xa5, 0x1a, 0x40, +0x30, 0x33, 0x26, 0x9a, 0xa9, 0x11, 0x88, 0xa8, +0xcd, 0x40, 0x84, 0xe8, 0x56, 0xc4, 0x12, 0x2b, +0x63, 0xa2, 0xa7, 0x0c, 0xf4, 0x94, 0x86, 0x9e, +0xd2, 0xb8, 0xf4, 0xdb, 0x4b, 0x7c, 0xf0, 0xd3, +0x51, 0x3c, 0xe1, 0xb5, 0xff, 0xfc, 0xc0, 0x27, +0xbc, 0x05, 0x52, 0x4a, 0xb1, 0x63, 0xc7, 0x8e, +0x87, 0x88, 0xdc, 0xb9, 0x25, 0x03, 0x64, 0x42, +0xf9, 0x64, 0x0c, 0xd0, 0x00, 0x63, 0xfd, 0xfa, +0xf5, 0x83, 0x4a, 0x53, 0x7a, 0x38, 0x1b, 0xe2, +0xdb, 0x3e, 0x81, 0x08, 0x96, 0x24, 0x1b, 0xf7, +0x6e, 0x60, 0x60, 0xeb, 0x1a, 0x34, 0x43, 0x43, +0x33, 0x14, 0x9a, 0xa9, 0x61, 0xa4, 0xcd, 0xba, +0xb5, 0xfd, 0xa0, 0xd6, 0x66, 0xe8, 0x23, 0xa4, +0x88, 0x7e, 0x4b, 0x1b, 0xe8, 0x96, 0x8e, 0x66, +0xea, 0x28, 0x43, 0x71, 0xdf, 0x9e, 0x8d, 0xac, +0xd9, 0xb6, 0x7a, 0xc9, 0xcf, 0xf6, 0x27, 0x03, +0x84, 0x10, 0xf4, 0xf6, 0xf6, 0xae, 0x65, 0x6e, +0x18, 0x6c, 0x5e, 0x8c, 0x6d, 0x39, 0x0a, 0xd4, +0xdd, 0xa0, 0xbb, 0xbb, 0xbb, 0x47, 0x4a, 0x49, +0x68, 0x43, 0x20, 0xfd, 0x25, 0xc9, 0x86, 0x3d, +0xeb, 0xd8, 0xff, 0xc2, 0xe3, 0x48, 0x5d, 0x22, +0xb5, 0x39, 0x11, 0x02, 0x3c, 0xc7, 0xc3, 0x73, +0x7d, 0xbc, 0xc0, 0x23, 0x90, 0xd1, 0xd5, 0xf3, +0x7c, 0x7c, 0xd7, 0x03, 0x21, 0x90, 0xaa, 0x26, +0x9a, 0x44, 0x33, 0x35, 0xbe, 0xf2, 0x57, 0x07, +0x58, 0xfd, 0xc0, 0xaa, 0xa5, 0xf5, 0xc1, 0x0e, +0x90, 0x52, 0x92, 0x4e, 0xa7, 0xbb, 0x16, 0x52, +0x1e, 0x10, 0xcd, 0x2e, 0xd0, 0xb0, 0xe8, 0xd9, +0xd1, 0xd1, 0x91, 0x13, 0x42, 0x10, 0x54, 0x97, +0xf6, 0x92, 0xb3, 0x76, 0xc7, 0x5a, 0x1e, 0x7e, +0x76, 0x2f, 0x42, 0x09, 0x84, 0x14, 0x20, 0x62, +0x9f, 0xf6, 0xb1, 0xcb, 0x36, 0xd5, 0x72, 0x15, +0xa7, 0x6a, 0xe3, 0x7a, 0x2e, 0xbe, 0xf0, 0x71, +0x5d, 0x17, 0xbb, 0x62, 0x53, 0x2d, 0x55, 0x71, +0x2a, 0x36, 0xbe, 0x1f, 0x10, 0x12, 0xd6, 0x7b, +0x23, 0x75, 0xc9, 0xbe, 0xbf, 0xd8, 0xc7, 0xca, +0xa1, 0xbe, 0xb6, 0xfb, 0xe0, 0xd9, 0x1e, 0x42, +0x08, 0x52, 0xa9, 0x54, 0x67, 0x42, 0xf9, 0xe6, +0x9d, 0xa9, 0xfa, 0x28, 0xd0, 0xbc, 0xc3, 0x23, +0x01, 0x95, 0xcd, 0x66, 0xbb, 0xa4, 0x94, 0x04, +0x4e, 0xf4, 0xe2, 0xd1, 0x4e, 0xe9, 0x5e, 0xd1, +0xcd, 0x9a, 0x2d, 0xab, 0xb9, 0x3a, 0x76, 0x0d, +0xc3, 0xd4, 0xd1, 0x6b, 0xa2, 0x34, 0x85, 0x90, +0x12, 0x08, 0xf1, 0x5c, 0x0f, 0xb7, 0xea, 0x92, +0xbf, 0x9a, 0x27, 0x90, 0x01, 0x57, 0xc6, 0xae, +0x72, 0xe2, 0xa7, 0x23, 0x18, 0xa6, 0x8e, 0xd2, +0x23, 0x23, 0x85, 0x41, 0x80, 0xe7, 0x7a, 0x78, +0x8e, 0x87, 0x63, 0xbb, 0x38, 0x55, 0x87, 0xf5, +0x3b, 0xd6, 0x53, 0x98, 0xba, 0xcd, 0xec, 0xed, +0xd9, 0x3b, 0xf6, 0xc3, 0xb3, 0x7d, 0xa4, 0x94, +0x31, 0x00, 0x0d, 0xc3, 0x5f, 0xb2, 0x9e, 0xd6, +0xa4, 0x7c, 0x83, 0x64, 0xb3, 0xd9, 0x2e, 0x21, +0xa2, 0x97, 0x0e, 0x7f, 0x91, 0xf1, 0x3f, 0x59, +0xa6, 0x6e, 0x4e, 0xf1, 0xce, 0x8f, 0x7f, 0xd1, +0x56, 0xdd, 0xf8, 0xa9, 0x67, 0x3f, 0x3e, 0xcb, +0xd9, 0x8f, 0xcf, 0x2e, 0xe9, 0x3f, 0x77, 0x2a, +0x81, 0x1d, 0xc5, 0x00, 0xcb, 0xb2, 0x32, 0x34, +0x5a, 0xbe, 0xa1, 0x2c, 0xba, 0x31, 0x22, 0x84, +0x40, 0x4a, 0x89, 0x94, 0x32, 0xa2, 0xf2, 0xef, +0x51, 0x11, 0x32, 0xea, 0xfb, 0x9d, 0x56, 0xbd, +0x35, 0x16, 0xd9, 0x96, 0x2e, 0x97, 0xcb, 0xd3, +0x42, 0x08, 0xf4, 0x8c, 0x86, 0x54, 0xed, 0x2d, +0x72, 0x76, 0xf7, 0x76, 0xb3, 0xe7, 0xab, 0xbb, +0x30, 0x53, 0x16, 0x86, 0x65, 0xa0, 0x9b, 0x3a, +0xa6, 0x65, 0xa0, 0x74, 0x85, 0x52, 0x8a, 0x30, +0x08, 0xf1, 0x3c, 0x0f, 0xa7, 0xea, 0xf2, 0xde, +0x9b, 0xef, 0x71, 0xe9, 0xd3, 0xcb, 0x6c, 0xda, +0x35, 0xc4, 0x43, 0x07, 0x1f, 0xc2, 0xb0, 0x0c, +0x34, 0x4d, 0x45, 0x23, 0x84, 0xe7, 0xe3, 0xb9, +0x11, 0xfd, 0x5d, 0xdb, 0xc5, 0xa9, 0xda, 0x94, +0x8b, 0x15, 0x4e, 0xfc, 0x6c, 0x84, 0xd9, 0xe9, +0x3b, 0xbb, 0x80, 0x96, 0x56, 0x08, 0x21, 0xb0, +0x6d, 0xbb, 0x44, 0xd3, 0x1e, 0x62, 0x33, 0x00, +0xd0, 0x08, 0x42, 0x5c, 0xd9, 0xaf, 0x03, 0x90, +0xd2, 0x51, 0x52, 0xb5, 0x05, 0x40, 0x71, 0xaa, +0xc8, 0xf9, 0x8f, 0x2e, 0xf0, 0xe4, 0x9f, 0x3c, +0x41, 0xba, 0x33, 0x4d, 0xba, 0x23, 0x4d, 0x2a, +0x9b, 0x22, 0x95, 0x4d, 0x61, 0xa5, 0x4c, 0x94, +0xae, 0x08, 0xfc, 0x00, 0xbb, 0x6c, 0xf3, 0xd9, +0x07, 0x9f, 0x31, 0x71, 0xf6, 0x0a, 0x2b, 0x07, +0xfa, 0x18, 0xde, 0xbf, 0x1d, 0x33, 0x65, 0x20, +0x95, 0xc4, 0x73, 0x3d, 0xaa, 0x25, 0x9b, 0x6a, +0xa9, 0x42, 0x79, 0xb6, 0x42, 0xa5, 0x58, 0xa1, +0x58, 0x28, 0xf2, 0xe1, 0x3b, 0x27, 0xa9, 0x14, +0x2b, 0x6d, 0xf5, 0x45, 0x4f, 0x1b, 0x31, 0x00, +0x33, 0x24, 0xf6, 0x0f, 0x9b, 0x41, 0x48, 0x9a, +0x35, 0xfe, 0xb1, 0xbe, 0x4b, 0x5b, 0x2c, 0x16, +0x6f, 0x49, 0x29, 0xd1, 0x33, 0x11, 0x00, 0xed, +0xca, 0x95, 0x73, 0x57, 0x39, 0xf6, 0x1f, 0xef, +0x11, 0xfa, 0x61, 0xbd, 0x55, 0x01, 0x48, 0x4d, +0x61, 0xa6, 0x4c, 0xcc, 0xda, 0x5c, 0x40, 0x37, +0xa2, 0x76, 0x75, 0xc3, 0xc0, 0xb4, 0x0c, 0xac, +0xb4, 0x85, 0x61, 0x99, 0x91, 0xcb, 0x25, 0x32, +0x07, 0x3c, 0xd7, 0xe3, 0x57, 0xff, 0x7a, 0x94, +0xc9, 0x89, 0xc9, 0xb6, 0xfb, 0x60, 0xa4, 0x75, +0xa4, 0x94, 0x38, 0x8e, 0x33, 0x43, 0xe3, 0x26, +0x6a, 0x03, 0x10, 0xcd, 0xbc, 0x6e, 0xd8, 0xa5, +0x2d, 0x14, 0x0a, 0x53, 0x42, 0x08, 0xb4, 0xb4, +0x86, 0x52, 0x6a, 0x49, 0x32, 0x71, 0xf6, 0x0a, +0xef, 0xfe, 0xf8, 0x57, 0x78, 0xae, 0x17, 0x2d, +0x9e, 0xf8, 0x91, 0x84, 0x61, 0x88, 0xa6, 0x6b, +0x28, 0x4d, 0xa1, 0xeb, 0x3a, 0x4a, 0xa9, 0xe8, +0xbb, 0xae, 0x50, 0xba, 0x46, 0x18, 0x86, 0xf5, +0xba, 0xbe, 0x17, 0xe0, 0x56, 0x1d, 0x8e, 0xbc, +0xf2, 0x0b, 0x6e, 0x8e, 0x4f, 0x2e, 0xe9, 0xf9, +0x7a, 0x46, 0x47, 0x08, 0x41, 0xb9, 0x5c, 0x9e, +0x66, 0x6e, 0x45, 0xc8, 0x6f, 0x62, 0x41, 0x98, +0x74, 0x81, 0x58, 0xe2, 0x3d, 0x7a, 0xe7, 0xe2, +0xc5, 0x8b, 0x97, 0xc3, 0x30, 0x74, 0x8d, 0x4e, +0x5d, 0xd7, 0xd2, 0x1a, 0x41, 0xb5, 0xbd, 0xa1, +0x30, 0x2e, 0xe3, 0x9f, 0x4d, 0x70, 0xf5, 0xfc, +0x55, 0x36, 0x6c, 0xdf, 0x10, 0x0d, 0x7d, 0xb6, +0x8b, 0x52, 0x12, 0xa5, 0x45, 0xb1, 0x40, 0x69, +0x0a, 0x29, 0xe7, 0xbe, 0x3b, 0x15, 0xbb, 0x3e, +0xf4, 0x79, 0xae, 0x8f, 0xef, 0xfa, 0x8c, 0xfd, +0xf6, 0x12, 0xf9, 0x4b, 0x79, 0xa4, 0x5c, 0xda, +0x46, 0x8b, 0xb5, 0x22, 0x62, 0xd2, 0xcd, 0x9b, +0x37, 0x2f, 0x31, 0x7f, 0x3b, 0xbd, 0x25, 0x03, +0x92, 0xf4, 0x77, 0x01, 0x67, 0x76, 0x76, 0x76, +0xe6, 0xe6, 0xcd, 0x9b, 0x17, 0x84, 0x10, 0xa4, +0x57, 0xa5, 0x96, 0x64, 0x01, 0xc3, 0x34, 0x78, +0xe2, 0xf9, 0xfd, 0xf4, 0x0e, 0xf4, 0xe2, 0x39, +0x1e, 0xae, 0xed, 0xe1, 0x54, 0x9d, 0x68, 0xc2, +0x53, 0xb6, 0x71, 0x9d, 0x68, 0xa2, 0xa2, 0x54, +0x14, 0xac, 0x5c, 0xc7, 0xa5, 0x5a, 0xb6, 0xb1, +0x2b, 0x0e, 0x4e, 0xd5, 0xc1, 0xb5, 0x5d, 0x3c, +0xd7, 0x63, 0x70, 0xd3, 0x00, 0x8f, 0x3c, 0xf3, +0x70, 0xc4, 0x92, 0x36, 0x9f, 0xad, 0x99, 0x1a, +0x56, 0x8f, 0x09, 0x10, 0x9c, 0x38, 0x71, 0x62, +0x94, 0x68, 0x6d, 0x30, 0xb9, 0x2e, 0x58, 0x8f, +0x03, 0xb2, 0xb6, 0x38, 0x98, 0xf4, 0xff, 0x38, +0x49, 0xa1, 0x0a, 0x54, 0xc6, 0xc6, 0xc6, 0x3e, +0x96, 0x52, 0x92, 0x5a, 0x69, 0xb5, 0xed, 0x7f, +0xa6, 0x65, 0xb2, 0xf7, 0xd0, 0x1e, 0x7a, 0x57, +0xf7, 0xe0, 0xd9, 0x91, 0xe5, 0xdd, 0xda, 0x64, +0xa6, 0x5a, 0xb2, 0x71, 0x2a, 0x36, 0x6e, 0xd5, +0x41, 0x22, 0xa3, 0x80, 0x16, 0x82, 0x53, 0x71, +0x70, 0x2a, 0x36, 0x76, 0xb9, 0x8a, 0x5d, 0x71, +0x70, 0x63, 0x10, 0x1c, 0x8f, 0xfe, 0x8d, 0xfd, +0xec, 0x7e, 0x7a, 0x17, 0x86, 0x61, 0xb4, 0xf5, +0xfc, 0x54, 0x9f, 0x85, 0x54, 0x92, 0x42, 0xa1, +0x30, 0x3e, 0x39, 0x39, 0x39, 0xd9, 0x02, 0x80, +0x3a, 0x08, 0x0b, 0x31, 0xc0, 0xa9, 0xfd, 0xa9, +0x3c, 0x32, 0x32, 0xf2, 0x01, 0x10, 0x98, 0x3d, +0x06, 0x9a, 0xa1, 0x50, 0x52, 0x2e, 0x2a, 0x56, +0xca, 0x64, 0xfb, 0xbe, 0x6d, 0x64, 0xbb, 0x32, +0x11, 0x95, 0x9d, 0x68, 0xd6, 0x57, 0x9e, 0x2e, +0x71, 0xe2, 0xad, 0x11, 0xaa, 0xa5, 0x2a, 0x76, +0xd9, 0xc6, 0xa9, 0x38, 0x10, 0x86, 0x28, 0x29, +0x21, 0x08, 0x71, 0x2a, 0x0e, 0x76, 0xd9, 0xa6, +0x3c, 0x5d, 0x66, 0xe4, 0x3f, 0x47, 0xa8, 0x96, +0x6c, 0xbc, 0x1a, 0x70, 0x9e, 0xe3, 0xd2, 0xdd, +0xd3, 0xc5, 0xd6, 0xc7, 0x1e, 0xc0, 0x34, 0x8d, +0x3b, 0xf6, 0x21, 0xb5, 0xd2, 0x44, 0x08, 0xc1, +0xe7, 0x9f, 0x7f, 0xfe, 0x31, 0xd1, 0xee, 0xd0, +0x82, 0x0c, 0xd0, 0x9a, 0x00, 0x88, 0x63, 0x80, +0x4b, 0xb4, 0x9c, 0x5c, 0xce, 0xe7, 0xf3, 0xf9, +0x5b, 0xb7, 0x6e, 0x7d, 0xde, 0xdb, 0xdb, 0xbb, +0x21, 0xb3, 0x2e, 0x4d, 0x65, 0xac, 0xba, 0xa0, +0xdf, 0x19, 0x96, 0xc1, 0xda, 0xad, 0x6b, 0xd1, +0x4d, 0x03, 0xdf, 0xf1, 0xf1, 0x74, 0x0f, 0x57, +0x8b, 0x94, 0x38, 0xf1, 0xe6, 0x08, 0x85, 0x1b, +0x05, 0x0a, 0xd7, 0x0a, 0x1c, 0x7c, 0xe1, 0x49, +0xa4, 0x8a, 0xa6, 0xbc, 0x4a, 0x29, 0xc2, 0x90, +0xc8, 0xea, 0xb6, 0xcb, 0xe1, 0x1f, 0x1c, 0xe1, +0xfa, 0xc5, 0xeb, 0x5c, 0x3d, 0x7f, 0x8d, 0xdd, +0x5f, 0x7b, 0x08, 0xdf, 0x0b, 0xa2, 0xb6, 0x5c, +0x8f, 0x54, 0xda, 0x62, 0xc3, 0xf6, 0xf5, 0x5c, +0x3a, 0x7d, 0x19, 0xcf, 0xf1, 0x5a, 0xf6, 0x41, +0xa6, 0x24, 0xe6, 0x4a, 0x13, 0x04, 0xe1, 0x87, +0x1f, 0x7e, 0x78, 0x82, 0x28, 0x91, 0x22, 0x4e, +0xa2, 0x68, 0x18, 0x0e, 0xc3, 0x30, 0x0c, 0x5b, +0x8d, 0x02, 0x31, 0x00, 0x55, 0xa2, 0x3d, 0xf7, +0xe2, 0xf1, 0xe3, 0xc7, 0x7f, 0x2a, 0x84, 0x20, +0xb5, 0xc1, 0x42, 0x59, 0x1a, 0x52, 0xaa, 0x79, +0x62, 0xa6, 0x2c, 0xfa, 0xd6, 0xf6, 0x21, 0x84, +0xa8, 0x5b, 0xde, 0x73, 0x7c, 0x8a, 0x53, 0xb3, +0x1c, 0xfb, 0xb7, 0xe3, 0x4c, 0xdf, 0x9c, 0x41, +0x4a, 0xc5, 0xf8, 0x99, 0x09, 0x7e, 0xf9, 0xc3, +0xa3, 0xd8, 0x25, 0x1b, 0x42, 0x90, 0x52, 0x41, +0x10, 0x52, 0x99, 0xa9, 0x70, 0xe4, 0x07, 0xef, +0x90, 0xff, 0xfc, 0x26, 0x52, 0x2a, 0x26, 0xc7, +0xa7, 0x38, 0xf6, 0x93, 0xf7, 0x29, 0x4d, 0x97, +0x71, 0xed, 0xa8, 0x2d, 0xcf, 0xf1, 0x91, 0x4a, +0xd1, 0xb7, 0xb6, 0x0f, 0xc3, 0x34, 0x5b, 0xf6, +0x23, 0x33, 0x94, 0x46, 0x2a, 0xc9, 0xe5, 0xcb, +0x97, 0x4f, 0x8d, 0x8d, 0x8d, 0x5d, 0x62, 0x2e, +0x6f, 0xa0, 0x75, 0x0c, 0x80, 0xfa, 0xde, 0x79, +0x73, 0x1c, 0xb0, 0x6b, 0xf4, 0x99, 0xf9, 0xf5, +0xaf, 0x7f, 0x3d, 0x9a, 0xcf, 0xe7, 0xcf, 0x2b, +0x43, 0x91, 0xb9, 0x6f, 0x7e, 0x30, 0x34, 0x4c, +0x9d, 0x8e, 0x5c, 0x96, 0xc0, 0x0f, 0xf1, 0x6b, +0xd1, 0xdb, 0x73, 0x7c, 0xa6, 0xf3, 0xd3, 0x9c, +0x3c, 0x72, 0x0a, 0xbb, 0x64, 0x37, 0xd4, 0xbf, +0x7a, 0xf6, 0x2a, 0xc7, 0x7e, 0xf2, 0x1e, 0x81, +0x1f, 0xa0, 0x94, 0xc2, 0xb5, 0x3d, 0x7e, 0xf5, +0xea, 0x51, 0x26, 0xc7, 0xa7, 0x1a, 0xea, 0x95, +0xa7, 0xcb, 0x9c, 0x3c, 0x72, 0x8a, 0xd2, 0xed, +0x52, 0x6d, 0x64, 0xf0, 0xf0, 0x5d, 0x1f, 0x42, +0xe8, 0xc8, 0x65, 0xd1, 0x9b, 0x02, 0xa3, 0x91, +0x33, 0xb0, 0xfa, 0x4d, 0x00, 0xff, 0xed, 0xb7, +0xdf, 0x7e, 0x8d, 0x68, 0x83, 0x74, 0xb6, 0x66, +0xcc, 0x64, 0x0a, 0x0d, 0x0d, 0x00, 0x34, 0xb9, +0x41, 0x0c, 0x80, 0x53, 0x43, 0x6e, 0x16, 0xb8, +0x7d, 0xf8, 0xf0, 0xe1, 0x7f, 0x07, 0x42, 0x6b, +0xc0, 0x44, 0xcf, 0x36, 0x4f, 0x8c, 0x34, 0x02, +0x37, 0x24, 0x70, 0x23, 0xba, 0xfa, 0x8e, 0xcf, +0xcc, 0x64, 0x91, 0x0b, 0xa3, 0x17, 0x09, 0xdc, +0xa0, 0x65, 0xa0, 0xba, 0x7e, 0xfe, 0x06, 0x97, +0x7f, 0x33, 0x8e, 0x92, 0x8a, 0xf3, 0x23, 0x17, +0xb8, 0x75, 0xa5, 0xd0, 0xb2, 0x9e, 0x57, 0xf5, +0x38, 0x37, 0x72, 0x9e, 0xd2, 0xad, 0x12, 0xbe, +0x13, 0xd4, 0x25, 0xf0, 0x42, 0x64, 0x53, 0xdd, +0xf4, 0x90, 0x85, 0x10, 0x82, 0x73, 0xe7, 0xce, +0xbd, 0x7f, 0xf1, 0xe2, 0xc5, 0x8b, 0x34, 0x6e, +0x93, 0xc7, 0x00, 0xd4, 0xe9, 0xdf, 0x00, 0x40, +0x82, 0x05, 0xc9, 0x40, 0x58, 0x07, 0xe0, 0xe4, +0xc9, 0x93, 0x9f, 0x8c, 0x8f, 0x8f, 0x9f, 0x92, +0x4a, 0x92, 0xdd, 0x9e, 0x42, 0x33, 0x64, 0x34, +0xa6, 0x2b, 0x09, 0x61, 0x48, 0xe0, 0xf9, 0x04, +0x5e, 0x64, 0xa1, 0xd9, 0x5b, 0xb3, 0x5c, 0xbf, +0x70, 0x2d, 0x5a, 0x5e, 0x52, 0x72, 0x41, 0x21, +0x0c, 0x1b, 0xae, 0x0b, 0xd6, 0x0b, 0x42, 0xae, +0x9d, 0xbf, 0x46, 0x65, 0xba, 0x44, 0xe0, 0x7a, +0xb5, 0x67, 0xf9, 0x48, 0x21, 0xea, 0x75, 0x52, +0x1b, 0x4c, 0x8c, 0xe5, 0x3a, 0x9e, 0xe7, 0x55, +0x5f, 0x7b, 0xed, 0xb5, 0xd7, 0x68, 0x9d, 0x2c, +0x31, 0xef, 0x7d, 0xa0, 0xd5, 0xec, 0xa2, 0xd9, +0x0d, 0x4a, 0x35, 0x24, 0x6f, 0xbd, 0xfc, 0xf2, +0xcb, 0xff, 0x52, 0x2a, 0x95, 0xa6, 0x54, 0xa7, +0x22, 0xf5, 0x40, 0xaa, 0xc1, 0xf7, 0x7c, 0x37, +0xc0, 0x73, 0x02, 0x2a, 0x33, 0x55, 0x66, 0x6e, +0x16, 0x91, 0x62, 0xbe, 0x7f, 0xde, 0x8d, 0x08, +0x24, 0xb7, 0xf3, 0x33, 0x54, 0x67, 0xed, 0x06, +0x06, 0x48, 0xa9, 0x30, 0x7a, 0x0d, 0xac, 0x8d, +0x26, 0x40, 0x78, 0xf8, 0xf0, 0xe1, 0x57, 0xf2, +0xf9, 0xfc, 0x65, 0xe0, 0x36, 0xf3, 0xb7, 0xc7, +0x1b, 0xac, 0x7f, 0x27, 0x00, 0x92, 0x2c, 0x28, +0x02, 0x85, 0xc9, 0xc9, 0xc9, 0xf1, 0x57, 0x5e, +0x79, 0xe5, 0x9f, 0x7c, 0xdf, 0xb7, 0x8d, 0x95, +0x3a, 0xd6, 0x7a, 0xb3, 0x81, 0x82, 0xbe, 0xe3, +0xe3, 0x55, 0xbd, 0x25, 0xbd, 0x37, 0x2c, 0x49, +0x84, 0xc2, 0xad, 0x44, 0x2c, 0x8b, 0xef, 0xe9, +0x59, 0x8d, 0xd4, 0x36, 0x13, 0xa9, 0x24, 0xa3, +0xa3, 0xa3, 0x3f, 0x3b, 0x7c, 0xf8, 0xf0, 0x51, +0x16, 0xc9, 0x12, 0x69, 0x56, 0xf6, 0x0b, 0x25, +0x48, 0x3c, 0xfd, 0xf4, 0xd3, 0x07, 0x9f, 0x7d, +0xf6, 0xd9, 0x6f, 0x0a, 0x21, 0x84, 0x7b, 0xc1, +0xc7, 0x9b, 0x68, 0x6f, 0xb1, 0xe4, 0x5e, 0x17, +0x99, 0x15, 0x18, 0xdb, 0x34, 0x84, 0x29, 0x18, +0x1b, 0x1b, 0x3b, 0xf5, 0x9d, 0xef, 0x7c, 0x67, +0xc9, 0x09, 0x12, 0xf3, 0x16, 0x44, 0xc2, 0x30, +0x8c, 0x13, 0x90, 0x63, 0x37, 0x10, 0xb5, 0x46, +0xe2, 0xd5, 0x62, 0x75, 0xe4, 0xc8, 0x91, 0xa3, +0xbd, 0xbd, 0xbd, 0x3d, 0xfb, 0xf6, 0xed, 0x7b, +0xce, 0xb8, 0x4f, 0x13, 0xaa, 0x43, 0xe2, 0x9d, +0xf3, 0x9b, 0xe2, 0xeb, 0x97, 0x5b, 0x64, 0x8f, +0x44, 0xdb, 0x24, 0x11, 0x4a, 0x90, 0xcf, 0xe7, +0xc7, 0xbe, 0xf7, 0xbd, 0xef, 0xfd, 0x33, 0xf3, +0xd3, 0x63, 0x92, 0x89, 0x52, 0xed, 0xa5, 0xc8, +0x40, 0xfb, 0x49, 0x52, 0xcf, 0x3c, 0xf3, 0xcc, +0x53, 0x87, 0x0e, 0x1d, 0x7a, 0x41, 0xd7, 0x75, +0x23, 0x2c, 0x86, 0x78, 0xa7, 0x7d, 0x42, 0xe7, +0x9e, 0xeb, 0x3a, 0xaf, 0xa8, 0xb5, 0x12, 0x35, +0x18, 0x79, 0xef, 0xb9, 0x73, 0xe7, 0x46, 0xbf, +0xfb, 0xdd, 0xef, 0x7e, 0xdf, 0xb6, 0xed, 0x7b, +0x97, 0x24, 0x05, 0xed, 0xa7, 0xc9, 0xed, 0xdc, +0xb9, 0x73, 0xfb, 0x8b, 0x2f, 0xbe, 0xf8, 0xad, +0x4c, 0x26, 0xd3, 0x8d, 0x0f, 0xc1, 0x44, 0x48, +0x70, 0x25, 0xfc, 0x52, 0xd8, 0x20, 0x72, 0x02, +0xb9, 0x4e, 0x20, 0x32, 0x10, 0x86, 0x61, 0x70, +0xec, 0xd8, 0xb1, 0xb7, 0x5e, 0x7e, 0xf9, 0xe5, +0x7b, 0x9f, 0x26, 0x57, 0xff, 0xb1, 0xcd, 0x44, +0xc9, 0x95, 0x2b, 0x57, 0xae, 0x7d, 0xe9, 0xa5, +0x97, 0xfe, 0x66, 0xcd, 0x9a, 0x35, 0x9b, 0x01, +0x70, 0x20, 0xb8, 0x1c, 0x12, 0xdc, 0xa0, 0x45, +0xd8, 0xf9, 0x02, 0x8a, 0x67, 0x89, 0x14, 0xef, +0x8e, 0xbe, 0x97, 0xcb, 0xe5, 0xe9, 0x37, 0xdf, +0x7c, 0xf3, 0x87, 0x47, 0x8e, 0x1c, 0x79, 0x8f, +0x28, 0x49, 0x72, 0x8a, 0x28, 0xea, 0xc7, 0xf9, +0xc3, 0x77, 0x9f, 0x28, 0x59, 0xaf, 0xb0, 0x70, +0xaa, 0x6c, 0x9a, 0x68, 0xff, 0xbd, 0x9e, 0x2a, +0x7b, 0xe0, 0xc0, 0x81, 0xdd, 0x87, 0x0e, 0x1d, +0x7a, 0x6e, 0xf9, 0xf2, 0xe5, 0xab, 0x01, 0x70, +0x21, 0xbc, 0x15, 0x75, 0x2f, 0x9c, 0x66, 0x69, +0x60, 0xa4, 0x41, 0x2c, 0x8b, 0x84, 0x6c, 0x74, +0xcb, 0x71, 0x9c, 0xea, 0xe8, 0xe8, 0xe8, 0x3b, +0xaf, 0xbe, 0xfa, 0xea, 0xdb, 0xe5, 0x72, 0x39, +0x4e, 0x95, 0xbd, 0x4d, 0xe3, 0x8c, 0xef, 0xde, +0xa5, 0xca, 0x2e, 0x00, 0xc2, 0x42, 0xc9, 0xd2, +0x5d, 0x44, 0xae, 0x91, 0x7b, 0xfe, 0xf9, 0xe7, +0xf7, 0xef, 0xdf, 0xbf, 0xff, 0x99, 0xce, 0xce, +0xce, 0x7a, 0xb2, 0x34, 0x7e, 0xad, 0xab, 0x36, +0x84, 0x8e, 0x98, 0x3b, 0x11, 0x10, 0x50, 0x3f, +0x45, 0x20, 0xcc, 0x30, 0xfa, 0xdc, 0x49, 0x04, +0x71, 0xad, 0x78, 0x9e, 0xe7, 0x9c, 0x3e, 0x7d, +0xfa, 0xfd, 0x1f, 0xfd, 0xe8, 0x47, 0xaf, 0xe7, +0xf3, 0xf9, 0x6b, 0xb5, 0x96, 0xa6, 0x6b, 0x92, +0xb4, 0xfa, 0xbd, 0x4f, 0x96, 0x5e, 0x04, 0x84, +0xe4, 0x01, 0x89, 0xf8, 0x8c, 0x40, 0xb6, 0xd6, +0xfd, 0x4e, 0xa0, 0x63, 0xef, 0xde, 0xbd, 0x9b, +0xf6, 0xec, 0xd9, 0xb3, 0x7b, 0xc3, 0x86, 0x0d, +0x5b, 0x73, 0xb9, 0xdc, 0x92, 0xd2, 0xe5, 0x6d, +0xdb, 0x2e, 0x5f, 0xba, 0x74, 0xe9, 0xb3, 0x4f, +0x3e, 0xf9, 0xe4, 0xa3, 0x77, 0xdf, 0x7d, 0xf7, +0xa3, 0xd9, 0xd9, 0xd9, 0x38, 0xb8, 0xc5, 0xd6, +0xfe, 0xdd, 0xa5, 0xcb, 0xd7, 0x2b, 0x2f, 0x7e, +0x60, 0x22, 0x66, 0x44, 0xcb, 0x03, 0x13, 0x9b, +0x37, 0x6f, 0x5e, 0xbd, 0x73, 0xe7, 0xce, 0xcd, +0x9d, 0x9d, 0x9d, 0xb9, 0x8e, 0x8e, 0x8e, 0xae, +0x74, 0x3a, 0xdd, 0x99, 0xc9, 0x64, 0x3a, 0x34, +0x4d, 0xd3, 0xca, 0xe5, 0xf2, 0xec, 0xec, 0xec, +0xec, 0x4c, 0xa9, 0x54, 0x9a, 0x29, 0x16, 0x8b, +0x85, 0x89, 0x89, 0x89, 0x2b, 0x47, 0x8f, 0x1e, +0x3d, 0xe3, 0xba, 0xee, 0x62, 0x07, 0x26, 0x92, +0x8a, 0x37, 0x9c, 0x1c, 0x69, 0x57, 0xf9, 0x25, +0x03, 0x90, 0x00, 0x01, 0xbe, 0xf8, 0x91, 0x99, +0xe4, 0x46, 0x65, 0x3c, 0x13, 0x8d, 0xd7, 0x21, +0xea, 0xcb, 0x71, 0xcc, 0x1d, 0x97, 0x69, 0x96, +0x05, 0x8f, 0xcc, 0xb0, 0x48, 0xb4, 0x5f, 0x50, +0x9f, 0xff, 0xa5, 0x43, 0x53, 0xc9, 0x93, 0x63, +0xd0, 0x38, 0xfd, 0x8e, 0x41, 0xf8, 0x9d, 0x1c, +0x9a, 0xba, 0xab, 0x83, 0x93, 0x77, 0x71, 0x6c, +0xae, 0x79, 0xaf, 0xae, 0xf9, 0x4d, 0x34, 0x96, +0x3b, 0x1e, 0x9b, 0xe3, 0x2e, 0x94, 0x87, 0xbb, +0x04, 0x00, 0x1a, 0x40, 0x80, 0x46, 0x46, 0x24, +0x77, 0x9a, 0xdb, 0x39, 0x38, 0xd9, 0xbc, 0x28, +0xb3, 0xe8, 0xc1, 0x49, 0xee, 0x52, 0xf1, 0x7a, +0x87, 0xff, 0xbf, 0x1f, 0x9d, 0xbd, 0x67, 0x00, +0x34, 0x34, 0x7a, 0x0f, 0x0f, 0x4f, 0x27, 0xae, +0xd1, 0x97, 0xff, 0xab, 0x87, 0xa7, 0x7f, 0x5f, +0xcb, 0xff, 0x00, 0xc6, 0x3e, 0xcf, 0xb7, 0x9c, +0x33, 0x99, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x49, +0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, +}; + +#endif + diff --git a/source/bitmaps/icons/activitywindow.png b/source/bitmaps/icons/activitywindow.png new file mode 100644 index 0000000000000000000000000000000000000000..7a35534eac9070140a50c2e2ae54b93bf192b723 GIT binary patch literal 4863 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 + +#ifndef ICONS_ACTSLEEP_CPP +#define ICONS_ACTSLEEP_CPP + +static unsigned char icons_actsleep_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, +0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, +0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x1d, 0x20, 0xf1, +0x4e, 0x92, 0x93, 0x00, 0x00, 0x02, 0x1f, 0x49, +0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x93, 0xdf, +0x4b, 0x53, 0x61, 0x1c, 0xc6, 0x9f, 0xf7, 0x7d, +0xcf, 0xce, 0xe6, 0x79, 0xb7, 0xb2, 0x6d, 0x06, +0x5a, 0x32, 0x05, 0x1b, 0x84, 0xa0, 0x83, 0x88, +0x31, 0x30, 0x99, 0x17, 0xad, 0xab, 0x41, 0x50, +0xf9, 0x07, 0x64, 0x19, 0x12, 0x14, 0x78, 0x13, +0x28, 0xa3, 0x81, 0x4c, 0xf2, 0x46, 0xa8, 0xcb, +0x40, 0x82, 0xda, 0xc5, 0x22, 0xda, 0x1f, 0xb0, +0xe0, 0xb0, 0x28, 0x98, 0xd4, 0x45, 0x0a, 0x1b, +0xab, 0x88, 0xc4, 0x61, 0x0e, 0xb7, 0x9a, 0xed, +0xc2, 0xed, 0x70, 0x3c, 0x67, 0xa7, 0x8b, 0xd6, +0xa1, 0xd3, 0x12, 0x84, 0xe8, 0x0b, 0xcf, 0xc5, +0xf7, 0xfd, 0xf1, 0xf9, 0x3e, 0x3c, 0xbc, 0x2f, +0xf0, 0x8f, 0x45, 0x0e, 0xda, 0xf0, 0xfb, 0xfd, +0x5e, 0x49, 0x92, 0xc6, 0x0c, 0xc3, 0xa0, 0xaa, +0xaa, 0xe6, 0x8a, 0xc5, 0x62, 0xf9, 0x50, 0x80, +0xe0, 0x68, 0x30, 0xd2, 0xe7, 0x38, 0xf9, 0xa4, +0x47, 0xf7, 0xba, 0xbb, 0xf7, 0x3c, 0x8c, 0x18, +0xc0, 0x77, 0xbe, 0xab, 0x7f, 0x15, 0xaa, 0xf5, +0x92, 0xb2, 0x75, 0xf3, 0xed, 0xfa, 0xea, 0xd3, +0x03, 0x01, 0xe3, 0x81, 0xf1, 0xf8, 0x69, 0x71, +0x78, 0x7e, 0x70, 0xe3, 0x94, 0x40, 0x74, 0x02, +0x10, 0xc0, 0xa0, 0x06, 0x88, 0x4e, 0x00, 0x0a, +0x94, 0x06, 0x36, 0xf4, 0xa2, 0x9e, 0x7f, 0x24, +0xbf, 0x93, 0xaf, 0x77, 0x00, 0x82, 0x67, 0x82, +0x13, 0x23, 0xce, 0xc0, 0x8b, 0xbe, 0x0f, 0xfd, +0xec, 0xd7, 0x5a, 0xbc, 0x3c, 0x6f, 0x71, 0x17, +0xef, 0x4d, 0xa0, 0x32, 0x54, 0xd6, 0xd7, 0xd4, +0xf5, 0xab, 0xb9, 0x37, 0xaf, 0x1f, 0x5b, 0x00, +0x97, 0xcf, 0x5f, 0xd9, 0x1e, 0xfc, 0x34, 0xd4, +0x4b, 0xf4, 0xce, 0x58, 0x96, 0x36, 0x13, 0xb8, +0xe3, 0x6b, 0xc3, 0x28, 0x50, 0xf2, 0x7f, 0xae, +0xa5, 0x32, 0x29, 0x4f, 0xbb, 0x05, 0xc2, 0xe1, +0xb0, 0xc3, 0xc5, 0x8e, 0x78, 0x9a, 0xac, 0x89, +0xa6, 0xdd, 0xaa, 0xa5, 0xcd, 0x04, 0x6e, 0xf9, +0x67, 0xcd, 0xbe, 0x21, 0x34, 0xc0, 0x5b, 0xae, +0xa3, 0xa1, 0x50, 0xe8, 0x04, 0x00, 0x08, 0xed, +0x21, 0x01, 0x66, 0x30, 0xa1, 0x21, 0xee, 0x59, +0x26, 0xaf, 0x14, 0x1e, 0x02, 0x00, 0x1e, 0x7c, +0x5c, 0x06, 0x00, 0x4c, 0x0d, 0x4f, 0x03, 0x00, +0x98, 0x46, 0x99, 0x24, 0x49, 0x13, 0x00, 0x92, +0x02, 0x00, 0x08, 0x82, 0x00, 0x6a, 0xa3, 0x30, +0x1c, 0x2d, 0x50, 0x4a, 0x4d, 0xc0, 0xf4, 0xd9, +0x19, 0x0b, 0x90, 0x49, 0x3f, 0xe3, 0x61, 0x76, +0x0a, 0x01, 0x02, 0x31, 0x1d, 0x68, 0x9a, 0xb6, +0x66, 0x73, 0x09, 0x9a, 0x43, 0xb2, 0x89, 0x00, +0x70, 0xff, 0xd5, 0xb2, 0x79, 0xe9, 0xf6, 0xb9, +0xd9, 0x8e, 0x4c, 0x8c, 0x6e, 0x5d, 0xdb, 0xaf, +0xee, 0xcb, 0x66, 0x06, 0xd9, 0x6c, 0x56, 0x51, +0x99, 0x5a, 0xe5, 0x9c, 0x83, 0x77, 0x71, 0xcc, +0x45, 0x62, 0x00, 0x80, 0xb9, 0x48, 0x0c, 0xbc, +0x8b, 0x5b, 0x25, 0x71, 0x68, 0x0e, 0xad, 0x2e, +0xcb, 0xf2, 0x17, 0x13, 0x00, 0x00, 0x95, 0xda, +0xce, 0x25, 0x32, 0x60, 0x68, 0x5c, 0xe2, 0x58, +0xcc, 0x2c, 0x00, 0x00, 0x16, 0x33, 0x0b, 0xe0, +0x12, 0xb7, 0x88, 0xf9, 0x88, 0x5e, 0xa9, 0xef, +0x5c, 0xfb, 0xeb, 0x43, 0x9a, 0xbc, 0x38, 0x79, +0x77, 0xc4, 0x37, 0x1a, 0xe3, 0x55, 0x17, 0x43, +0xeb, 0x0f, 0xdf, 0x14, 0x50, 0x7a, 0x1a, 0x7a, +0x61, 0x3b, 0xbf, 0x92, 0x7c, 0x96, 0xbc, 0x61, +0xe6, 0xf2, 0xfb, 0x99, 0xc2, 0xfb, 0xc2, 0x4b, +0x77, 0xbf, 0x7b, 0xd5, 0x7e, 0x5c, 0xbc, 0x20, +0x7a, 0x6c, 0x76, 0x91, 0x8b, 0x84, 0xba, 0x08, +0xd4, 0x63, 0x8a, 0x5e, 0xb3, 0x7f, 0xdb, 0x2d, +0x6c, 0xe5, 0xa7, 0x52, 0xcf, 0x53, 0xf7, 0x0e, +0xf5, 0x99, 0xa2, 0xd1, 0xa8, 0xd7, 0xe9, 0x74, +0x8e, 0x11, 0x42, 0xa8, 0xa2, 0x28, 0xb9, 0x74, +0x3a, 0x5d, 0xc6, 0xff, 0xa8, 0x1f, 0x64, 0xde, +0xbb, 0x0a, 0xfc, 0x56, 0x4c, 0x10, 0x00, 0x00, +0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, +0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/actsleep.png b/source/bitmaps/icons/actsleep.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ec09e075b659b3a5a88bc8a584e0e8475fe79e GIT binary patch literal 658 zcmV;D0&V??P)el9K=c0v}04 zK~y-)wUggVQ(+v&pZ9&w&gOZyvTX)hG6fripo54pFqs#vt3got2V@x%6nGOTqk&BF zMySg`g4)F*+8?msuqc?+MG70Mh{RzIx0>z3?QlG2r;FC1(-MT}3(v*({qgxeJiIUP zk3|mJ@caE}IQgVU_qx0HJd7B?cfPBC6{_`;vUT(A z`s&jI0po%3_-S!?esJTIKy(5Sz@P?*P5=s&1~&Afo_{32ldpFGf@gvgBhJ8!z7PHE z*IK+hZ*dpzO`tMV*4NbatGPF?A6o#I&tKUd{4~@{^v+n8HWRqxYr`l|@_(+SGAU2H z1;XL5!^MtxnyiVY-KwR{1aA3f&AuTtz+0}Pp-|`q00`|N0cJ3vA?{fwuM{2v03Li? z1^`SAPXhp$Mwui@69AF|00@ErYNIe5El^5L!1UP}3y?`a<6(9R0Rk}{XqvWWa|xP5 zvWWn2|JAa2>GrwVj!cYhUE8nj%Vq}IY*ta3TIHOBcX7-`VgP`-NDRD-TP1O54y`WB z@)r{T0F~O#B{E=WT;f>FEC2u&GYjAnw}|`@&0izkAhwT)ZH9Y<7{0gt`dSV~Sq0f7>l=<)>25Q}+(_ snWE9C*XeYQ5kjb^YA7tLU3j9_~5C8xG07*qoM6N<$f=CA@Hvj+t literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/ciext.cpp b/source/bitmaps/icons/ciext.cpp new file mode 100644 index 0000000..d771cc8 --- /dev/null +++ b/source/bitmaps/icons/ciext.cpp @@ -0,0 +1,159 @@ +#include + +#ifndef ICONS_CIEXT_CPP +#define ICONS_CIEXT_CPP + +static unsigned char icons_ciext_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, +0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x2c, 0x32, 0xc2, +0xaf, 0xb3, 0xa3, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x0e, +0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, +0xc1, 0x6e, 0x14, 0x47, 0x10, 0x86, 0xbf, 0xea, +0x99, 0xb5, 0x21, 0x12, 0x0a, 0x51, 0x1c, 0x22, +0x61, 0xc1, 0xc1, 0x91, 0x85, 0x2f, 0x98, 0x07, +0xc8, 0x03, 0x20, 0x11, 0x4b, 0x44, 0x48, 0x7e, +0x10, 0x0e, 0xbc, 0x00, 0x4f, 0x40, 0xde, 0x23, +0x87, 0x20, 0x71, 0xcd, 0x09, 0xe5, 0x12, 0xe0, +0x10, 0x1b, 0xc5, 0x20, 0x84, 0xc4, 0x69, 0xd7, +0x76, 0x76, 0x49, 0xbc, 0xbb, 0xac, 0x77, 0x76, +0xbb, 0xaa, 0x72, 0xe8, 0x99, 0xd9, 0x9d, 0x35, +0x6b, 0x81, 0x14, 0x29, 0x25, 0x8d, 0xa6, 0xa7, +0x7b, 0xa6, 0xab, 0xe6, 0xaf, 0xbf, 0xfe, 0x6a, +0x21, 0x99, 0xf3, 0xff, 0x98, 0x08, 0x60, 0xf7, +0xee, 0xdd, 0x13, 0x33, 0x6b, 0xac, 0xa8, 0xea, +0x92, 0x2f, 0xe4, 0xa3, 0xcf, 0xee, 0x7e, 0x66, +0xed, 0x3c, 0x7b, 0xf0, 0xe0, 0x01, 0x9d, 0x4e, +0x87, 0x1c, 0x90, 0xe9, 0x74, 0xca, 0x4f, 0x8f, +0x1e, 0x21, 0x41, 0x10, 0x11, 0x44, 0x02, 0x21, +0x94, 0x97, 0x04, 0x42, 0x16, 0x08, 0x21, 0x23, +0xcb, 0x03, 0x59, 0x96, 0x93, 0x85, 0x40, 0x9e, +0xe7, 0xe4, 0x79, 0x4e, 0x96, 0x65, 0x4c, 0x63, +0x44, 0x63, 0x44, 0xa3, 0xa2, 0x16, 0x89, 0xaa, +0x98, 0x1a, 0xaa, 0x86, 0x9b, 0xa1, 0x66, 0x98, +0x2b, 0x6e, 0x8e, 0x9b, 0x63, 0x38, 0x9d, 0x76, +0x1b, 0x80, 0xbc, 0x8a, 0x5e, 0xcd, 0x11, 0x20, +0x08, 0x48, 0x30, 0x30, 0xe8, 0x74, 0x3a, 0x9f, +0x8d, 0xe9, 0xe6, 0xe6, 0x26, 0xa6, 0x8e, 0x99, +0xa5, 0xcb, 0xd3, 0xdd, 0xcd, 0x30, 0x77, 0xdc, +0x1d, 0x9f, 0x43, 0x3b, 0x07, 0x88, 0x31, 0x62, +0x66, 0x04, 0xc0, 0x24, 0x10, 0x5c, 0xf8, 0xeb, +0xef, 0x1e, 0x1b, 0x1b, 0x1b, 0x9f, 0x1d, 0xc0, +0xdb, 0xb7, 0x6f, 0xb9, 0x7e, 0xfd, 0xfa, 0x2c, +0x00, 0xd3, 0x7a, 0xec, 0xee, 0x98, 0x39, 0x3e, +0x47, 0xb9, 0x50, 0xe5, 0xd1, 0x5d, 0x31, 0x73, +0xb4, 0x84, 0x6c, 0x34, 0x1a, 0x35, 0x36, 0x5e, +0x5b, 0x5b, 0x03, 0xa0, 0x7f, 0xff, 0xfe, 0xb9, +0xf3, 0xa3, 0xd1, 0x08, 0x55, 0x43, 0x55, 0xb1, +0x32, 0x15, 0x75, 0x30, 0x5a, 0x21, 0xa2, 0x4d, +0x04, 0xaa, 0xc8, 0x04, 0x03, 0x11, 0x5c, 0x84, +0x7e, 0xbf, 0xcf, 0x60, 0x30, 0x68, 0x38, 0x1b, +0x0c, 0x06, 0xc8, 0xc3, 0x87, 0xe7, 0xce, 0xf7, +0xfb, 0x7d, 0xf6, 0xf6, 0xfe, 0x68, 0xac, 0xaf, +0xaf, 0xaf, 0xd3, 0x6a, 0xad, 0xe0, 0x9e, 0x50, +0x98, 0x47, 0x20, 0xaf, 0x10, 0x50, 0xd5, 0x44, +0x40, 0x04, 0x09, 0x42, 0xb7, 0xdb, 0x25, 0xc6, +0x58, 0xbf, 0xf8, 0xe6, 0xcd, 0x9b, 0xc6, 0xf3, +0xb2, 0xf9, 0x6e, 0xb7, 0xcb, 0xe6, 0xe6, 0x66, +0xe3, 0x9d, 0x97, 0x2f, 0x5f, 0xb2, 0x7d, 0xeb, +0x16, 0xb8, 0x63, 0x6e, 0xf8, 0x5c, 0xc1, 0xe5, +0xd5, 0xc0, 0x2c, 0xfd, 0xbd, 0x00, 0xc1, 0x85, +0x5e, 0xaf, 0xc7, 0x78, 0x3c, 0xe6, 0xe6, 0xcd, +0x9b, 0x00, 0xec, 0xef, 0xef, 0x7f, 0xd2, 0xb8, +0xd7, 0xeb, 0x71, 0xe1, 0xc2, 0x85, 0xda, 0xc1, +0xb5, 0x6b, 0xd7, 0xd2, 0xfe, 0x1a, 0x31, 0x07, +0xdc, 0xd3, 0xb5, 0x88, 0x80, 0xa9, 0x81, 0x80, +0x00, 0x26, 0xc2, 0xc9, 0xc9, 0x09, 0x45, 0x51, +0xf0, 0xfc, 0xf9, 0x73, 0x80, 0x4f, 0x1e, 0x9f, +0x9c, 0x9c, 0x70, 0xe7, 0xce, 0x1d, 0x4e, 0x4f, +0x4f, 0x79, 0xf1, 0xe2, 0x05, 0x21, 0x04, 0x06, +0x83, 0x01, 0x31, 0xea, 0x4c, 0xf1, 0xca, 0x00, +0x44, 0x64, 0x86, 0x80, 0x56, 0xc4, 0x28, 0x51, +0xf8, 0xf1, 0xee, 0x5d, 0x7e, 0x79, 0xfc, 0xf8, +0xb3, 0xab, 0x60, 0x77, 0x77, 0x97, 0xc9, 0x64, +0x42, 0x08, 0xa1, 0x31, 0x1f, 0xa3, 0x52, 0xe9, +0x94, 0x7f, 0x14, 0x81, 0xba, 0x36, 0x9d, 0x84, +0x03, 0xec, 0xec, 0xec, 0x2c, 0xc8, 0x20, 0xe0, +0x82, 0x48, 0xd2, 0xd0, 0x10, 0x72, 0xae, 0x5c, +0xf9, 0x86, 0xe3, 0xa3, 0xe3, 0x94, 0x5b, 0x77, +0x4e, 0x4f, 0x4f, 0xcb, 0xaf, 0x13, 0x91, 0x87, +0xc3, 0x21, 0xfd, 0x7e, 0x1f, 0xd5, 0x58, 0xcf, +0x57, 0xe6, 0xee, 0x73, 0x1c, 0x50, 0x6b, 0xb0, +0x33, 0x05, 0xe9, 0x8d, 0x68, 0xe7, 0x6d, 0x34, +0xfa, 0xc0, 0x70, 0xf8, 0x81, 0x67, 0xcf, 0x7e, +0xe7, 0xea, 0xd5, 0xab, 0x5c, 0xbc, 0x78, 0x91, +0x3c, 0x6f, 0x91, 0x85, 0x90, 0xca, 0x7a, 0x41, +0x95, 0x4d, 0x15, 0x2f, 0xd1, 0x9d, 0xb7, 0x46, +0x0a, 0xe6, 0xf3, 0xe3, 0xee, 0x84, 0x10, 0xb8, +0x71, 0xe3, 0x46, 0x5a, 0x1f, 0x8f, 0x19, 0x4d, +0xa7, 0xc4, 0x18, 0x19, 0x8f, 0xc7, 0x00, 0x1c, +0x1e, 0x1e, 0xa2, 0xaa, 0x0c, 0x07, 0x43, 0xcc, +0x8c, 0x95, 0x95, 0x55, 0xb2, 0x3c, 0x23, 0x0f, +0x01, 0x09, 0x19, 0xef, 0xde, 0xbd, 0x63, 0x7d, +0x7d, 0x9d, 0x6e, 0xb7, 0x5b, 0xa7, 0x38, 0x85, +0x20, 0x35, 0x10, 0x61, 0xbe, 0x0a, 0x4c, 0x35, +0x09, 0x91, 0xc6, 0x86, 0xf3, 0x79, 0xbb, 0x74, +0x94, 0xd2, 0xb2, 0xba, 0xba, 0xca, 0xc6, 0xc6, +0x77, 0x38, 0x50, 0x4c, 0x26, 0x14, 0x45, 0x41, +0x31, 0x19, 0x33, 0x2d, 0x26, 0x4c, 0xa6, 0x53, +0x8a, 0xa2, 0x38, 0xc3, 0x01, 0x55, 0x23, 0xda, +0x47, 0x84, 0x28, 0x75, 0x3f, 0x83, 0x52, 0x24, +0xdc, 0x9d, 0x3c, 0x5f, 0xc2, 0xb2, 0xcb, 0xcd, +0xe6, 0xfd, 0xea, 0xe0, 0x60, 0x29, 0x21, 0xb7, +0xb7, 0xb7, 0x6b, 0xd1, 0x52, 0x35, 0x24, 0x24, +0x04, 0x5c, 0x84, 0x90, 0x65, 0x8b, 0x3a, 0xa0, +0xb5, 0x4a, 0xb9, 0xcd, 0x3c, 0xc4, 0x57, 0xdf, +0xc3, 0x65, 0x90, 0xcb, 0xbf, 0x26, 0xd5, 0x5b, +0x7d, 0x02, 0x65, 0x0a, 0x2a, 0x27, 0xe7, 0xd9, +0xde, 0xde, 0x1e, 0x3f, 0xec, 0xec, 0xa0, 0x16, +0x11, 0x17, 0x82, 0x84, 0x46, 0xdb, 0x6e, 0x08, +0x51, 0xea, 0x54, 0x8e, 0xcf, 0x49, 0x55, 0xbe, +0xf5, 0x5b, 0xcd, 0x01, 0x80, 0x4b, 0xc5, 0x0e, +0x63, 0x7e, 0x6e, 0x38, 0x38, 0xcf, 0x6e, 0xdf, +0xbe, 0x9d, 0x08, 0x68, 0x92, 0x4a, 0x53, 0x1c, +0x24, 0x9c, 0x13, 0x40, 0xd9, 0x17, 0x96, 0xda, +0x3f, 0xc0, 0x97, 0xb3, 0xc7, 0xad, 0xad, 0x2d, +0x5a, 0x79, 0x4e, 0xab, 0xb5, 0x42, 0xd6, 0xca, +0xc8, 0xb3, 0xf2, 0x9c, 0x50, 0x9e, 0x1f, 0xaa, +0x7d, 0xb3, 0x90, 0xa1, 0x58, 0xaa, 0x84, 0xb0, +0xd0, 0x0d, 0x6b, 0x12, 0x5a, 0xd9, 0xc5, 0x5c, +0x79, 0xff, 0xbe, 0xc7, 0xeb, 0xd7, 0xaf, 0xcf, +0xf8, 0x1f, 0x7c, 0xfb, 0xa4, 0x56, 0xbd, 0xbd, +0xfd, 0x7d, 0xf0, 0x44, 0x09, 0x73, 0xc3, 0xab, +0x73, 0x80, 0x56, 0x7b, 0x19, 0x5a, 0xb6, 0x63, +0xb5, 0xb9, 0xce, 0xa8, 0x76, 0x16, 0x81, 0xfa, +0xc0, 0x60, 0x55, 0xc3, 0x30, 0x8e, 0x8e, 0x8f, +0x97, 0x02, 0x71, 0x70, 0xf0, 0x67, 0x4d, 0xda, +0x4a, 0x2f, 0x2a, 0x02, 0x9b, 0x1b, 0xe2, 0x02, +0x56, 0x4a, 0x7b, 0xa8, 0x44, 0xd6, 0x81, 0x40, +0x58, 0xe0, 0xc0, 0x07, 0x11, 0xf9, 0xc2, 0xdc, +0xa5, 0x3a, 0xc1, 0xcc, 0x73, 0xa1, 0xdd, 0x6e, +0xd7, 0x25, 0x1a, 0xcd, 0xb0, 0xa8, 0x44, 0x8b, +0x33, 0xa2, 0x4a, 0xd5, 0x5f, 0x92, 0xe3, 0x60, +0x01, 0x0b, 0x8e, 0x98, 0x95, 0xaa, 0x67, 0x84, +0x74, 0x23, 0x84, 0x50, 0x36, 0xbd, 0xd0, 0x10, +0xd7, 0xde, 0xd3, 0xa7, 0x4f, 0xbf, 0x92, 0x19, +0x35, 0x1d, 0x10, 0x9f, 0x49, 0xa0, 0x2c, 0x3b, +0x90, 0x2e, 0x9b, 0xfb, 0x54, 0x6b, 0xb7, 0xdb, +0xe4, 0xc0, 0xd7, 0x87, 0x87, 0x87, 0xbe, 0xa0, +0xf8, 0x4d, 0xd1, 0xfe, 0xef, 0x6d, 0x0a, 0x14, +0xbb, 0xbb, 0xbb, 0x97, 0xfe, 0x05, 0xbe, 0x89, +0x07, 0xb5, 0xe5, 0xbd, 0x0f, 0x37, 0x00, 0x00, +0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, +0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/ciext.png b/source/bitmaps/icons/ciext.png new file mode 100644 index 0000000000000000000000000000000000000000..eccef793fb78f1c644c2aa8baa134778eda17a86 GIT binary patch literal 1194 zcmV;b1XcTqP)WFU8GbZ8()Nlj2>E@cM*00a(6L_t(Y$HkVxZWKol zhQI2WwILD;Q5+&+!NHM*FPI0&10WGgL`Z%R4!i(QK;9#VAaTtJE`AprjD7V%hTP> zFn8P?pF=wbh%sVj1i&N^T=?tn9vd4QpB=#4w{N+A{rW5b(|YXgm^nU2xlrZNT`_aC zglse#H8x&bTLYkf|Ngo2qtOUeLshXd6?HILA)-wLs>lQb5nP0Rzt3PWXgC`T2FSyQ z=g#;0efIYLXsoZVuhVL+;GR&JMi=H|_t0POGYf6}v7@2h1$WjYuD2L z8Zigl)3u0zseyn1Cc??d2}M!x{P}Z$PadC~oN(vP9ZpYAdGX=}Ap{140Ws=K@yY;1 zWQKrN#3)ht@$OxIdHndZt6+C`m&s&82%#|_qf+UVe-webHl2h6?Ck6;$ROZ?NYc;{ za;{wYhU25-lv{UBPfyFQ6Oo6*A^meZ`Uym*m3Z;^$N%6dVSO%*TEowr5`=JVt3gb=uK<3?H^j~Pv;#26Wm#{e829-^uY z2Sdz^m6cVpJR=VQ2^sI+y<>fSoo=^Vr#OWmH4tIG3QRQ#k;aDedAoF!(z3d`%Ercb zI8aO`6h%QX88a;=Or}$cqBz3=RU_I*geY}CgHj~iojhN{vdhip{p#RgDIvGFw`Sg0%Zy+C+FGT-X1^f?4TAA7lMRF+inO^ z>Qs);Nmah}Tg?H0OT`Xjer`B8&u-tood{@>N>dypoD)FV7na&Tz?ZYft*tFuc}}af zLe|R2v+|r!o*$}xvyh=!s)Vr64Qmow*~MIW|GvlT*RRj`AAI|yR=vIbeegsHbHl51 zfL41MTDD`gxz4C|7J>S}U{%8~j*gF)0&#HgXHD8lFDe3?8{z_1N_(h8)`37+;J^nF z`NG_#I>F3yq1|rRB^u4Js6>l1qDs|YlH*_j3yzqTs%M0BBZN>kz0eTX-qWW~zmgd> z9T1;Mpe#F(E}Q#QYq#6vz}JU|hrXcrP0{}EZ3+~-yStbE1-^*~wdK7JHvj+t07*qo IM6N<$g48%J#Q*>R literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/cikey.cpp b/source/bitmaps/icons/cikey.cpp new file mode 100644 index 0000000..5bf6eb8 --- /dev/null +++ b/source/bitmaps/icons/cikey.cpp @@ -0,0 +1,166 @@ +#include + +#ifndef ICONS_CIKEY_CPP +#define ICONS_CIKEY_CPP + +static unsigned char icons_cikey_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, +0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x23, 0x38, 0xa5, +0xe2, 0x46, 0x72, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x49, +0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, +0xcf, 0x6b, 0x54, 0x57, 0x14, 0xc7, 0x3f, 0xe7, +0xbe, 0x09, 0x82, 0x90, 0x80, 0x26, 0x93, 0x9a, +0x8a, 0x45, 0xa4, 0x44, 0x51, 0xfb, 0x03, 0x9a, +0x06, 0x22, 0x76, 0x31, 0x05, 0x8b, 0x34, 0xd0, +0x45, 0x40, 0xdd, 0x55, 0xa4, 0x50, 0xfa, 0x0f, +0xb8, 0xee, 0x5f, 0x20, 0xa8, 0x90, 0x4d, 0x8b, +0x1b, 0x17, 0xd2, 0x85, 0x8b, 0xb6, 0x50, 0x28, +0x94, 0xae, 0x42, 0x0d, 0x04, 0xe9, 0xa2, 0x98, +0xa2, 0x20, 0x44, 0xfc, 0x31, 0x13, 0x53, 0x8d, +0xad, 0x3f, 0x48, 0xc7, 0xb9, 0xe7, 0x9c, 0x2e, +0xee, 0x7b, 0x6f, 0xe6, 0x25, 0x99, 0x9a, 0x4d, +0xe9, 0x85, 0xcb, 0x3d, 0xf3, 0xee, 0x7b, 0x73, +0xbf, 0xf7, 0x7b, 0xbe, 0xf7, 0x7b, 0xae, 0x90, +0x9a, 0xf3, 0xff, 0x34, 0x11, 0xc0, 0x66, 0x66, +0x66, 0xc4, 0xcc, 0x2a, 0x33, 0xaa, 0xda, 0xe7, +0x0b, 0xd9, 0xf4, 0xb7, 0xbb, 0x6f, 0x98, 0xfb, +0xb7, 0x76, 0xf6, 0xec, 0x59, 0x5a, 0xad, 0x16, +0x35, 0x40, 0x3a, 0x9d, 0x0e, 0x17, 0xce, 0x9f, +0x47, 0x82, 0x20, 0x22, 0x88, 0x04, 0x42, 0xc8, +0xbb, 0x04, 0x42, 0x16, 0x08, 0x21, 0x23, 0xab, +0x05, 0xb2, 0xac, 0x46, 0x16, 0x02, 0xb5, 0x5a, +0x8d, 0x5a, 0xad, 0x46, 0x96, 0x65, 0x74, 0x62, +0x44, 0x63, 0x44, 0xa3, 0xa2, 0x16, 0x89, 0xaa, +0x98, 0x1a, 0xaa, 0x86, 0x9b, 0xa1, 0x66, 0x98, +0x2b, 0x6e, 0x8e, 0x9b, 0x63, 0x38, 0xad, 0x66, +0x13, 0x80, 0x5a, 0x81, 0x5e, 0xcd, 0x11, 0x20, +0x08, 0x48, 0x30, 0xb0, 0x3c, 0x2f, 0xc1, 0xc1, +0x41, 0x5c, 0x70, 0x13, 0x5c, 0x0c, 0x17, 0xc1, +0xdd, 0x71, 0xc0, 0x3d, 0x65, 0xd0, 0x71, 0x0c, +0xc3, 0xcc, 0x31, 0x75, 0xcc, 0x2c, 0x75, 0x4f, +0xa3, 0x9b, 0x61, 0xee, 0xe9, 0xbb, 0x1e, 0xb6, +0x6b, 0x00, 0x31, 0x46, 0xcc, 0x8c, 0x00, 0x98, +0x04, 0x82, 0x0b, 0x16, 0xe0, 0xef, 0xab, 0x1f, +0x55, 0x68, 0x1b, 0xfe, 0x74, 0x0e, 0x11, 0x21, +0x84, 0x00, 0xf9, 0x9f, 0x89, 0x24, 0x05, 0x95, +0xbb, 0x33, 0xc3, 0xf3, 0x45, 0x53, 0xd7, 0x32, +0x76, 0x77, 0xcc, 0x12, 0xd8, 0x0a, 0x00, 0x11, +0xc1, 0x5d, 0x31, 0x0b, 0x90, 0xef, 0x30, 0x7e, +0xfb, 0x31, 0x7b, 0x1b, 0x1f, 0x56, 0x00, 0xdc, +0xb9, 0xfc, 0x01, 0xf5, 0xd3, 0xbf, 0xe4, 0x3b, +0x73, 0x32, 0xcf, 0xf7, 0xee, 0xdd, 0xc5, 0x55, +0x8b, 0x9e, 0xd2, 0x50, 0x65, 0x21, 0xd1, 0xef, +0xbe, 0x8e, 0x81, 0x02, 0x99, 0x60, 0x20, 0xc2, +0x93, 0xcb, 0x13, 0x1c, 0x38, 0x7e, 0x8c, 0xf6, +0xb3, 0x65, 0x6e, 0xfe, 0xf8, 0x13, 0x00, 0x07, +0x8e, 0x1f, 0x63, 0x6c, 0xe2, 0x20, 0x37, 0xcf, +0xed, 0xdd, 0x92, 0xc8, 0xc6, 0xbe, 0x58, 0x44, +0x4d, 0xd3, 0x8e, 0x2d, 0xa5, 0xc6, 0xdd, 0xf2, +0xd4, 0x6d, 0xc2, 0x80, 0xaa, 0x26, 0x01, 0x92, +0x94, 0xfc, 0xe2, 0x69, 0x8b, 0x7b, 0xd7, 0x6e, +0xb0, 0xe3, 0xcc, 0xaf, 0x64, 0x21, 0x70, 0xf3, +0xd2, 0xbb, 0xec, 0x39, 0x72, 0x98, 0x3d, 0x47, +0x0e, 0xbf, 0x72, 0xf1, 0x7b, 0xd7, 0x6e, 0xa0, +0x1a, 0x7b, 0x18, 0x70, 0xcc, 0x1d, 0xdc, 0x31, +0x37, 0x7a, 0x08, 0x48, 0x00, 0x00, 0xcc, 0xd2, +0xee, 0x05, 0x68, 0xad, 0xae, 0xb1, 0xeb, 0xf9, +0x03, 0x5a, 0xab, 0x6b, 0x0c, 0xc5, 0x88, 0x87, +0x50, 0x3e, 0xdb, 0x4a, 0x6b, 0xad, 0xae, 0xb1, +0x33, 0xc6, 0x24, 0xc8, 0x3c, 0xff, 0xe0, 0x58, +0xa1, 0x5a, 0xdf, 0x84, 0x01, 0x53, 0x03, 0x81, +0xe2, 0x24, 0xbf, 0x6c, 0x3f, 0xe7, 0xd0, 0xd4, +0x10, 0x8b, 0x17, 0xde, 0x02, 0xe0, 0xd0, 0xd4, +0x10, 0x2f, 0xdb, 0xcf, 0x59, 0x9c, 0x7f, 0xba, +0x61, 0xc1, 0x43, 0x53, 0x43, 0x00, 0x2c, 0xce, +0x3f, 0x2d, 0xe3, 0x4e, 0x27, 0x76, 0x69, 0x27, +0x69, 0xa4, 0x74, 0xbc, 0x1c, 0x80, 0x88, 0x74, +0x19, 0x50, 0xd3, 0xd2, 0x9b, 0xde, 0xf8, 0x7c, +0x81, 0xc5, 0xaf, 0x26, 0x19, 0xd9, 0xbf, 0x8d, +0x91, 0xfd, 0xdb, 0xd2, 0xfc, 0xe3, 0xd1, 0xa4, +0x85, 0xf1, 0x34, 0x0e, 0x7c, 0xf2, 0x03, 0x83, +0x83, 0x83, 0x5c, 0xfb, 0xf2, 0x75, 0x1e, 0xae, +0xb6, 0x79, 0x74, 0xab, 0x0d, 0xc0, 0xc3, 0xd5, +0x76, 0x0e, 0xa0, 0x93, 0xf2, 0xed, 0x9e, 0x8e, +0xa9, 0x4b, 0x69, 0xb8, 0xbe, 0x29, 0x03, 0xe5, +0xd9, 0x74, 0x40, 0xd8, 0xfd, 0xd9, 0x3c, 0x0f, +0x2e, 0x4d, 0x95, 0x2f, 0x8e, 0x8c, 0x53, 0x39, +0x15, 0x77, 0xbe, 0x9f, 0x66, 0x15, 0x38, 0x30, +0xfe, 0x26, 0x78, 0x9a, 0x2f, 0x3e, 0x1f, 0x19, +0x07, 0x7e, 0x3e, 0x55, 0xbe, 0xfb, 0xec, 0xe8, +0xe5, 0x64, 0xba, 0x9e, 0xfe, 0xbb, 0x68, 0xee, +0xde, 0xa3, 0x01, 0xb5, 0x8a, 0x3a, 0xdd, 0xe1, +0xb5, 0xd3, 0x73, 0x38, 0xb0, 0x73, 0xfe, 0x0c, +0x63, 0x13, 0x07, 0x69, 0x3f, 0x5b, 0xee, 0xaa, +0x7c, 0xe2, 0xe0, 0xd6, 0xf4, 0x70, 0xfd, 0x77, +0xa2, 0x2a, 0x02, 0xb8, 0x08, 0xeb, 0xcd, 0xba, +0x92, 0x82, 0xde, 0xfc, 0x78, 0xa1, 0xda, 0x7c, +0xfe, 0xcf, 0xe6, 0xf5, 0xbe, 0x8b, 0x2c, 0xff, +0xf6, 0x84, 0x5d, 0x6f, 0xef, 0xd8, 0x30, 0xae, +0x35, 0xb7, 0xf3, 0xc7, 0xfb, 0x5f, 0x23, 0x51, +0x91, 0x90, 0x67, 0x18, 0xa1, 0x57, 0x6c, 0x95, +0x53, 0x50, 0xd8, 0x2b, 0x6e, 0xa4, 0x8c, 0xa4, +0xe3, 0xf3, 0xd7, 0xa3, 0x07, 0x64, 0xc3, 0x03, +0xd5, 0x45, 0xf7, 0x7d, 0xd7, 0xfd, 0xb1, 0x1b, +0xee, 0xf6, 0x19, 0x4b, 0xa3, 0xb6, 0x7c, 0x53, +0x22, 0x04, 0x20, 0x64, 0xd9, 0x3a, 0x06, 0xd4, +0x92, 0xbd, 0xf6, 0x38, 0x9b, 0xe3, 0xa5, 0x36, +0x0a, 0x71, 0x95, 0x6d, 0x1f, 0xdc, 0xbe, 0x7d, +0x7b, 0xcb, 0xd5, 0x6f, 0x61, 0x61, 0x81, 0x93, +0xa7, 0x4e, 0x22, 0x08, 0x2e, 0x52, 0x02, 0x08, +0x5d, 0x06, 0x14, 0x2d, 0xba, 0xe6, 0x63, 0x4c, +0x95, 0xed, 0xf1, 0xd1, 0x6f, 0x78, 0x74, 0xab, +0x5d, 0xe9, 0x00, 0x8d, 0x46, 0x83, 0x95, 0x95, +0x95, 0x4d, 0xe3, 0x46, 0xa3, 0x01, 0xc0, 0xca, +0xca, 0x4a, 0x19, 0xab, 0x6a, 0x8f, 0x2f, 0xf4, +0x4b, 0x41, 0x7e, 0x76, 0x2d, 0x8f, 0xd5, 0x0d, +0x57, 0x83, 0xe3, 0x57, 0xd1, 0xa8, 0x44, 0x8d, +0xc4, 0x4e, 0x64, 0x18, 0xb8, 0xbb, 0xb4, 0x44, +0xeb, 0xfe, 0x7d, 0x46, 0x47, 0x47, 0x2b, 0xf1, +0xf9, 0x73, 0xe7, 0x98, 0x99, 0x99, 0x01, 0x60, +0x6a, 0x72, 0x92, 0xbb, 0x4b, 0x4b, 0xa5, 0xd0, +0x11, 0xa7, 0x14, 0xc4, 0xa6, 0x00, 0x8a, 0x8a, +0xd5, 0x53, 0xd1, 0x34, 0xaf, 0x6a, 0x25, 0x43, +0x9e, 0x3c, 0xe3, 0xe2, 0xec, 0x2c, 0x00, 0xef, +0xac, 0x8b, 0xef, 0xb7, 0x5a, 0x5c, 0x9c, 0x9d, +0x65, 0x7a, 0x7a, 0xba, 0x7c, 0x5e, 0xaf, 0xd7, +0x51, 0x4b, 0x85, 0x4e, 0x82, 0xf7, 0x07, 0x60, +0x56, 0x38, 0x57, 0x01, 0xc0, 0xbb, 0x9e, 0x6e, +0x86, 0xab, 0xe3, 0xea, 0x5c, 0xb9, 0x72, 0x85, +0x7a, 0xbd, 0x5e, 0xe6, 0xf7, 0x55, 0x71, 0xc9, +0x40, 0x10, 0xc4, 0x65, 0x23, 0x80, 0xf2, 0xc2, +0x60, 0x45, 0xc1, 0x30, 0xd4, 0x7d, 0x43, 0x4d, +0x37, 0x12, 0xd0, 0x89, 0x89, 0xf7, 0xe8, 0x74, +0x22, 0xaa, 0xca, 0xc0, 0x40, 0x8d, 0x2c, 0xeb, +0xde, 0x90, 0x8a, 0x1e, 0x42, 0x20, 0x0b, 0x01, +0xc9, 0x6f, 0x57, 0x66, 0x0a, 0x04, 0x82, 0x54, +0x01, 0xbc, 0x10, 0x91, 0xed, 0xe6, 0x2e, 0x45, +0xed, 0xee, 0xd5, 0x82, 0x97, 0xda, 0xc8, 0x01, +0x6a, 0xba, 0xf9, 0x14, 0xde, 0x8e, 0x14, 0xf5, +0x25, 0x01, 0x0f, 0x16, 0xb0, 0xe0, 0x88, 0x59, +0xee, 0x7a, 0x46, 0x48, 0x43, 0x0e, 0xc2, 0x2a, +0x1a, 0x10, 0xe0, 0xf1, 0xdc, 0xdc, 0xdc, 0x0e, +0xe9, 0xde, 0x28, 0x1d, 0x10, 0xef, 0x1a, 0xb6, +0xf4, 0xbb, 0x90, 0xf6, 0x7b, 0xb6, 0xd5, 0xd6, +0x6c, 0x36, 0xa9, 0x01, 0xc3, 0xcb, 0xcb, 0xcb, +0xbd, 0xd7, 0x72, 0x59, 0xbf, 0xf0, 0x7f, 0xd0, +0x3a, 0x40, 0xfb, 0xc4, 0x89, 0x13, 0x83, 0xff, +0x00, 0xd2, 0x81, 0x69, 0x4d, 0x17, 0x7c, 0x45, +0x7c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, +0x44, 0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/cikey.png b/source/bitmaps/icons/cikey.png new file mode 100644 index 0000000000000000000000000000000000000000..29f177fbec96f0a7028d3bae1033e7a562890156 GIT binary patch literal 1253 zcmVWFU8GbZ8()Nlj2>E@cM*00c=%L_t(Y$HkV7tmTAVmBz6H|??KS;;9=bSF?dvE3?nVL=Mh08tj?t62;_j|tgd#;e0^Zzsv zz-DG<#LOx)s@mrZ+4Q%&ZM@1VYHW1VR=FAtS2= zvaCiH0<~I=TCGNwWprXhV??8(7Ky5u8mfkyp=OvXZjPH{IIU(AfLeiG%@H67NHDNG zFTueU%Oalk!g&~XgI%rSM$EOk$#n_=$hyB@Y{05L|)i~yJff(sVl@2ekG zXdC`?4iO=Q0QsMZBn6ebGsE*mQ`a(fcgzyl3IGwoT`>!g?=XJ*F?$;yRsh_&`~mgT zzvMe}GSBz!-NjXlp3+cdA<^%?j)4N1U?9Si%M%j8i!kcfOxy6*w^dCU}}JJ|7teem+&c z`|RlDWV)XIyJ+s-qXD&wI^E&5({nhmbN&ot69;KOTkfiS;^5ZwaQ%0pDgw9&>&?27 zg5Laiq1t@@&*t^Mi!A^4gk5j%*f6d&xAVvQUn5bGkY^a7S8SD2P}nPOq>QBF^Vg#X zWWxj1MfZKz{jnSF_8Ci~wtQ0}1R!MDItJ8|z4kbp=>UyJgO!z)P2)zR0l>=2N*Swak1zB~L4I~E zkJSxVgX34xs6>s#PGlIkyR<~>{(VMAM=SC9bLW_unE_yGa+14COQp~erxe7d0E&v$ zQ_(c9Y9&LSJmcc*ECBDUi|@BuT%4U{dV0EiUa!|tONCB?_Xl8BI9CC{yPj@_tK;fi zxpIYiy_vmyYs>;AXjV$Zlkcu8cAPWJ> zZ&zjt1cFonybzJ?<}O9;?$v^q+QNgr6NCQ%(t&AB7kov0 P00000NkvXXu0mjfSwBuH literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/cilog.cpp b/source/bitmaps/icons/cilog.cpp new file mode 100644 index 0000000..b640ff5 --- /dev/null +++ b/source/bitmaps/icons/cilog.cpp @@ -0,0 +1,157 @@ +#include + +#ifndef ICONS_CILOG_CPP +#define ICONS_CILOG_CPP + +static unsigned char icons_cilog_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, +0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x23, 0x0a, 0x6d, +0x35, 0x17, 0xf2, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x00, +0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, +0xc1, 0x6b, 0x5d, 0x45, 0x14, 0xc6, 0x7f, 0x67, +0xee, 0x8d, 0x82, 0xd5, 0x45, 0x48, 0x79, 0x58, +0x5c, 0x74, 0x17, 0x71, 0x25, 0x54, 0x37, 0x11, +0x52, 0xb1, 0x20, 0x41, 0x2d, 0x59, 0x04, 0xb2, +0xaa, 0x1b, 0x11, 0xfa, 0x07, 0x14, 0xb2, 0x73, +0x25, 0x2e, 0x5c, 0x85, 0xba, 0x51, 0x28, 0x8a, +0xab, 0xea, 0xc2, 0x9d, 0x96, 0x82, 0x9b, 0x6c, +0xde, 0x4a, 0xd0, 0x6c, 0xe5, 0x41, 0x15, 0xde, +0x22, 0x2f, 0x8f, 0xe0, 0x25, 0xad, 0xad, 0x84, +0xf0, 0xe6, 0x9c, 0xe3, 0x62, 0x66, 0xee, 0xbb, +0x2f, 0x79, 0x29, 0x46, 0x10, 0x07, 0x86, 0x3b, +0x73, 0xe7, 0xde, 0x39, 0xdf, 0x9c, 0xf3, 0x9d, +0xef, 0x8c, 0x90, 0x9a, 0xf3, 0xff, 0x34, 0x11, +0xc0, 0x36, 0x36, 0x36, 0xc4, 0xcc, 0x66, 0x56, +0x54, 0xf5, 0x8c, 0x3f, 0x64, 0xee, 0xdc, 0xdd, +0x4f, 0xad, 0x3d, 0xad, 0x6d, 0x6d, 0x6d, 0xb1, +0xbf, 0xbf, 0x4f, 0x0d, 0xc8, 0x64, 0x32, 0xe1, +0xb3, 0xdb, 0xb7, 0x91, 0x20, 0x88, 0x08, 0x22, +0x81, 0x10, 0x72, 0x97, 0x40, 0xa8, 0x02, 0x21, +0x54, 0x54, 0x75, 0xa0, 0xaa, 0x6a, 0xaa, 0x10, +0xa8, 0xeb, 0x9a, 0xba, 0xae, 0xa9, 0xaa, 0x8a, +0x49, 0x8c, 0x68, 0x8c, 0x68, 0x54, 0xd4, 0x22, +0x51, 0x15, 0x53, 0x43, 0xd5, 0x70, 0x33, 0xd4, +0x0c, 0x73, 0xc5, 0xcd, 0x71, 0x73, 0x0c, 0x67, +0x7f, 0x34, 0x02, 0xa0, 0x2e, 0xe8, 0xd5, 0x1c, +0x01, 0x82, 0x80, 0x04, 0x03, 0xcb, 0x71, 0x09, +0x0e, 0x0e, 0xe2, 0x82, 0x9b, 0xe0, 0x62, 0xb8, +0x08, 0xee, 0x8e, 0x03, 0xee, 0x29, 0x82, 0x8e, +0x63, 0x18, 0x66, 0x8e, 0xa9, 0x63, 0x66, 0xa9, +0x7b, 0x7a, 0xba, 0x19, 0xe6, 0x9e, 0xfe, 0xeb, +0x78, 0xbb, 0x06, 0x88, 0x31, 0x62, 0x66, 0x04, +0xc0, 0x24, 0x10, 0x5c, 0xb0, 0x00, 0xe2, 0x0e, +0x54, 0x80, 0x21, 0x08, 0x48, 0x72, 0x79, 0x08, +0x01, 0xf2, 0x66, 0x22, 0x89, 0x41, 0xed, 0xe9, +0xcc, 0xf0, 0x6c, 0x34, 0x75, 0x6d, 0xc7, 0xee, +0x8e, 0x59, 0x02, 0x3b, 0x03, 0x40, 0x44, 0x70, +0x57, 0xcc, 0x02, 0x88, 0xf1, 0xf3, 0xee, 0xee, +0xbf, 0x62, 0xd4, 0xda, 0xda, 0x1a, 0x9a, 0x5d, +0xaf, 0x39, 0x0c, 0xb3, 0x5e, 0x48, 0xee, 0x77, +0x3f, 0xe1, 0x81, 0x82, 0x4c, 0x30, 0x10, 0x61, +0x38, 0x1c, 0xb2, 0xb2, 0xb2, 0x72, 0x2e, 0xe3, +0xa3, 0xd1, 0x08, 0xd5, 0x74, 0x62, 0xd5, 0xdc, +0x4d, 0xd3, 0x89, 0x2d, 0x85, 0xc6, 0xdd, 0x72, +0xe8, 0xe6, 0x78, 0x40, 0x55, 0x13, 0x01, 0x99, +0x32, 0x79, 0x75, 0x75, 0x95, 0x7e, 0xbf, 0xdf, +0x8e, 0x4b, 0xeb, 0xf7, 0xfb, 0xed, 0xbc, 0xac, +0xa7, 0xcc, 0x89, 0xc4, 0xa8, 0x89, 0x90, 0x16, +0x3b, 0x1e, 0x70, 0xcc, 0x1d, 0xdc, 0x31, 0x37, +0x3a, 0x0e, 0x48, 0x00, 0x00, 0xcc, 0xd2, 0xe9, +0x8b, 0xf9, 0xaa, 0xaa, 0x18, 0x0c, 0x06, 0x54, +0x55, 0x05, 0xc0, 0x60, 0x30, 0xa0, 0x69, 0x1a, +0x96, 0x96, 0x96, 0xda, 0xb5, 0xa6, 0x69, 0xe8, +0xf5, 0x7a, 0x34, 0x4d, 0x03, 0xc0, 0x64, 0x32, +0x21, 0xc6, 0x49, 0xce, 0x82, 0x74, 0xfa, 0x12, +0x7f, 0x70, 0xac, 0xb0, 0xd6, 0xe7, 0x78, 0xc0, +0xd4, 0xc8, 0x3c, 0x03, 0x60, 0x6f, 0x6f, 0xaf, +0xfd, 0xa8, 0x3b, 0x6e, 0x9a, 0xe6, 0xcc, 0x79, +0xfc, 0x66, 0x7d, 0xf6, 0x54, 0xb9, 0x3d, 0x5a, +0xfb, 0x0a, 0x77, 0x99, 0x2a, 0x5e, 0x06, 0x20, +0x22, 0xd3, 0x6f, 0xd5, 0xb4, 0xa3, 0x4d, 0x30, +0x1e, 0x8f, 0x19, 0x8f, 0xc7, 0xed, 0x26, 0xdd, +0xf1, 0xbc, 0x79, 0xaf, 0xd7, 0xe3, 0xf2, 0xea, +0xfb, 0x73, 0xf9, 0x31, 0xfc, 0xf1, 0x43, 0x9a, +0x6b, 0x77, 0xda, 0xbd, 0x7d, 0xae, 0x07, 0xda, +0xdc, 0x4c, 0x8b, 0x47, 0x47, 0x47, 0xe7, 0x22, +0xe1, 0x70, 0x38, 0x84, 0x0b, 0x0f, 0xd2, 0xe4, +0xfa, 0x1d, 0xb8, 0x77, 0xb3, 0x5d, 0xbb, 0xfc, +0xca, 0x6b, 0xb0, 0x73, 0x93, 0x83, 0x37, 0xbf, +0x80, 0x0e, 0xc7, 0xdc, 0xbd, 0xc3, 0x01, 0xb5, +0x96, 0x9d, 0x57, 0xaf, 0x5e, 0xed, 0x08, 0x4c, +0x89, 0x1b, 0x29, 0xbf, 0xdd, 0x79, 0xf0, 0xf9, +0x3a, 0x1f, 0xac, 0xbf, 0x31, 0x03, 0x60, 0x70, +0x65, 0x1b, 0x76, 0x6f, 0x31, 0xb8, 0xb2, 0xcd, +0xcb, 0xdf, 0xbe, 0x37, 0x17, 0x64, 0x34, 0xe3, +0xa4, 0x58, 0xcf, 0x84, 0xa0, 0x1b, 0x1f, 0x2f, +0xac, 0xcd, 0x63, 0xcf, 0x64, 0x2a, 0x35, 0xe2, +0xf1, 0xde, 0xaf, 0x33, 0x1b, 0x3d, 0x59, 0x7e, +0xc2, 0x2f, 0xcb, 0x1f, 0xb3, 0xfc, 0xc3, 0x3b, +0x3c, 0x9e, 0x6b, 0x7e, 0x11, 0xd3, 0x98, 0xb3, +0x6c, 0x4a, 0xb6, 0x99, 0x2c, 0x28, 0xf2, 0x8a, +0x1b, 0x29, 0x22, 0x29, 0x7d, 0x5a, 0xe3, 0x66, +0x68, 0x8c, 0x00, 0xfc, 0x36, 0x3a, 0x9c, 0xd9, +0xfe, 0xf0, 0xf0, 0x90, 0x8b, 0xf7, 0x37, 0xf9, +0xe9, 0xdd, 0xef, 0xb8, 0x78, 0x7f, 0xf3, 0xb4, +0xf9, 0x4b, 0x8b, 0xa8, 0xa6, 0x4c, 0x0b, 0x40, +0xc8, 0xd9, 0x35, 0xf5, 0x80, 0x5a, 0x92, 0x57, +0x8a, 0x5e, 0x67, 0x7d, 0x2f, 0x4a, 0xa6, 0x86, +0x46, 0x25, 0x6a, 0x01, 0xf0, 0x70, 0xc6, 0xc0, +0xf1, 0xc1, 0x01, 0x8f, 0x46, 0x0f, 0xe1, 0xcb, +0xb7, 0x39, 0x58, 0xbf, 0xcb, 0xb3, 0xdf, 0xdf, +0x98, 0x59, 0x7f, 0xfd, 0x52, 0xf2, 0xb2, 0x20, +0xb8, 0xc8, 0x69, 0x00, 0x66, 0xda, 0xaa, 0x94, +0xdb, 0xb4, 0x68, 0xa8, 0x3b, 0x6e, 0x9a, 0xe4, +0x35, 0xa6, 0x4a, 0xf7, 0xfc, 0xf5, 0x6d, 0xfe, +0xbc, 0x77, 0x8b, 0xf1, 0x1f, 0x1d, 0x10, 0x5f, +0xdf, 0x98, 0x3f, 0x2e, 0x00, 0x72, 0x89, 0x0f, +0x12, 0x66, 0xca, 0xf6, 0xe9, 0x10, 0x64, 0xc9, +0xb4, 0x3c, 0x56, 0x37, 0x5c, 0x0d, 0x2d, 0x20, +0x54, 0x89, 0xb6, 0xc0, 0x85, 0x6b, 0x1f, 0xf1, +0xe2, 0xce, 0x27, 0xff, 0x38, 0x4b, 0x76, 0x76, +0x7f, 0xe7, 0xa5, 0x57, 0x0d, 0xc4, 0x41, 0xc2, +0x53, 0x00, 0x94, 0x8a, 0xd5, 0xa9, 0x68, 0x9a, +0xab, 0x9a, 0x96, 0x8e, 0x71, 0x5c, 0x2d, 0x32, +0x79, 0xeb, 0x53, 0x34, 0x2a, 0x0b, 0x75, 0xcd, +0xc2, 0xc2, 0x33, 0x54, 0x0b, 0x15, 0x75, 0x95, +0xef, 0x09, 0xf9, 0xfe, 0x10, 0x42, 0x85, 0x88, +0x50, 0x85, 0x0a, 0xb5, 0x54, 0xca, 0x25, 0xf8, +0xd9, 0x00, 0xcc, 0x2c, 0x87, 0xa1, 0x00, 0xf0, +0xa9, 0xa6, 0x9b, 0xe1, 0xea, 0xa9, 0xbb, 0xa7, +0x84, 0x49, 0x19, 0x8a, 0xb9, 0x11, 0x34, 0x60, +0x92, 0xf8, 0x22, 0x08, 0x68, 0x5a, 0x0b, 0xf9, +0xc4, 0xe2, 0x01, 0x82, 0x20, 0x3e, 0x27, 0x04, +0xed, 0x85, 0xc1, 0x4a, 0xc1, 0x48, 0xf1, 0x3f, +0x59, 0xd3, 0x0d, 0xcb, 0x4a, 0xe6, 0x2d, 0x69, +0x29, 0xc4, 0xcd, 0x4f, 0x73, 0x4b, 0x46, 0x92, +0xba, 0x63, 0xa1, 0x88, 0xac, 0x03, 0x81, 0x70, +0x82, 0x03, 0x7f, 0x89, 0xc8, 0x73, 0xe6, 0x2e, +0x85, 0xf1, 0x5d, 0x2e, 0x78, 0xcb, 0x8d, 0x0c, +0x50, 0xd3, 0xcd, 0xc7, 0x2d, 0xbb, 0x51, 0x4a, +0x7d, 0x49, 0x86, 0x83, 0x05, 0x2c, 0x38, 0x62, +0x96, 0x55, 0xcf, 0x08, 0xe9, 0x41, 0x08, 0x21, +0x17, 0xbd, 0x29, 0x07, 0x04, 0x68, 0xfa, 0xfd, +0xfe, 0xa2, 0x4c, 0xa9, 0xe9, 0x80, 0xf8, 0x54, +0xb0, 0xe5, 0xac, 0x0b, 0xe9, 0x59, 0xef, 0xce, +0x73, 0x87, 0xa8, 0x81, 0xa5, 0xf1, 0x78, 0xdc, +0xbd, 0x96, 0xcb, 0x49, 0xc3, 0xff, 0x41, 0x9b, +0x00, 0xc7, 0x9b, 0x9b, 0x9b, 0x2f, 0xfc, 0x0d, +0x48, 0x1f, 0x6f, 0x41, 0x3f, 0x6c, 0xcb, 0xb1, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/cilog.png b/source/bitmaps/icons/cilog.png new file mode 100644 index 0000000000000000000000000000000000000000..905fe1a1f9109051d18a433ecbffd8241809c1b0 GIT binary patch literal 1180 zcmV;N1Y`S&P)WFU8GbZ8()Nlj2>E@cM*00aO@L_t(Y$HkVxYh6VY z#(!t-je^xhNO@RXbQf_YR5uY)u^>S$Sp>4G8xi^k6tZ(AE?kAWQ7DS5>cX9tf}3pK zO3-ZOK^5L2FOT3Qt*wOc=A7eVX70N$c_~H^2ZlRy=iWKrob#RUjF6i1|1=T6Ha0fI z%w|?p^^8Ac?%dr^tv#)6ZEdl?zfTRwWHRBi+qaP*hzKHq5OSA5r~)BWRCS=LYN`;Z z>zcZ*sj7-ejA)E#RMa9-6;ngia5K~lbH&YZa|~yHGyqaxUYe(FoOaV%6MD(}^vG#@%x0=6FC=69Jhrd3AM_e!t(2OY8Uh?Yyj~ z%!$OPiI5gM9&pSZ+%Y#g4oCn1%+l$L`KqcI3$UFmJZ*Q;ts5@?&=FEBgW_|WlxjkC@3U`?*UIri{ z({I(ZqfIa#j~S20?Izvvym_zJZgEzl`4#(WR!vVFHoma13?FdYX8!5ltdGPrv}mY1ZkpsZrb_qx^=r*r;3w6!H!ZTD0 z6?K*G3HkmILWPJ>g$lJ)$|d;O0L(0hp#boyrkmmFsk^6yNg0Z{5j0?u_#y~sS_}Ea z;sJsnJ|_h2g~3X}Nbx^e(+$f?<}GO{#LZ80OGc8qW1)zw1A%aY1AmFgbLK9E@m(%> z%Z&_B)6K^%yHQGgNrr<3EI4A8RnG|NK?oriy(tF-X!`yBqD-mjfcR9f<*WNiA8$cFY|F6#0000 + +#ifndef ICONS_CIPTO_CPP +#define ICONS_CIPTO_CPP + +static unsigned char icons_cipto_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, +0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x22, 0x33, 0x2b, +0x2b, 0xae, 0xbb, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x52, +0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, +0xcf, 0x6f, 0x55, 0x45, 0x14, 0xc7, 0x3f, 0x67, +0xee, 0x6b, 0x42, 0x4c, 0x8a, 0xbf, 0x12, 0xa2, +0x16, 0x6a, 0x23, 0xa0, 0x21, 0xc4, 0x36, 0xc6, +0x04, 0xd9, 0x18, 0x45, 0x0d, 0xa2, 0x08, 0x36, +0x90, 0x26, 0xf6, 0x3f, 0x30, 0x41, 0xdc, 0x75, +0xc1, 0x92, 0x8d, 0x1b, 0x36, 0xb0, 0x30, 0x6e, +0x88, 0x1b, 0x62, 0xea, 0xc6, 0x68, 0x8c, 0x48, +0x53, 0x15, 0x35, 0x2c, 0x8c, 0x75, 0x41, 0x2c, +0x69, 0x21, 0x85, 0x47, 0x4b, 0x2d, 0xaf, 0xed, +0x82, 0x04, 0x6c, 0xad, 0x2d, 0xef, 0x9e, 0x73, +0x5c, 0xcc, 0xbd, 0xf7, 0xbd, 0xdb, 0xd7, 0x22, +0x9a, 0x18, 0x27, 0x99, 0xdc, 0xb9, 0x77, 0xe6, +0xce, 0x7c, 0xe7, 0xfb, 0x3d, 0xbf, 0x84, 0xd8, +0x9c, 0xff, 0xa7, 0x89, 0x00, 0x76, 0xe8, 0xd0, +0x21, 0x31, 0xb3, 0xd2, 0x8c, 0xaa, 0xae, 0xf3, +0x87, 0xac, 0xf9, 0xee, 0xee, 0x2d, 0x73, 0xf7, +0x6a, 0x03, 0x03, 0x03, 0xcc, 0xce, 0xce, 0x52, +0x01, 0xa4, 0x5e, 0xaf, 0x73, 0xea, 0xe4, 0x49, +0x24, 0x08, 0x22, 0x82, 0x48, 0x20, 0x84, 0xac, +0x4b, 0x20, 0x24, 0x81, 0x10, 0x12, 0x92, 0x4a, +0x20, 0x49, 0x2a, 0x24, 0x21, 0x50, 0xa9, 0x54, +0xa8, 0x54, 0x2a, 0x24, 0x49, 0x42, 0x3d, 0x4d, +0xd1, 0x34, 0x45, 0x53, 0x45, 0x2d, 0x25, 0x55, +0xc5, 0xd4, 0x50, 0x35, 0xdc, 0x0c, 0x35, 0xc3, +0x5c, 0x71, 0x73, 0xdc, 0x1c, 0xc3, 0x99, 0xad, +0xd5, 0x00, 0xa8, 0xe4, 0xe8, 0xd5, 0x1c, 0x01, +0x82, 0x80, 0x04, 0x03, 0xcb, 0x74, 0x09, 0x0e, +0x0e, 0xe2, 0x82, 0x9b, 0xe0, 0x62, 0xb8, 0x08, +0xee, 0x8e, 0x03, 0xee, 0x51, 0x41, 0xc7, 0x31, +0x0c, 0x33, 0xc7, 0xd4, 0x31, 0xb3, 0xd8, 0x3d, +0x3e, 0xdd, 0x0c, 0x73, 0x8f, 0xff, 0x35, 0xb1, +0x5d, 0x01, 0x48, 0xd3, 0x14, 0x33, 0x23, 0x00, +0x26, 0x81, 0xe0, 0xc2, 0xdc, 0x37, 0xbd, 0xff, +0x5a, 0xd8, 0xa7, 0x0e, 0x7f, 0xdb, 0x00, 0x60, +0x5a, 0x8c, 0xdd, 0x1d, 0xb3, 0x08, 0xb6, 0x04, +0x40, 0x44, 0x70, 0x57, 0xcc, 0x02, 0x88, 0x71, +0xeb, 0x7c, 0x1f, 0x00, 0xcf, 0x3e, 0x09, 0x97, +0x6e, 0x50, 0x8c, 0xd7, 0x6b, 0xcd, 0x6b, 0x2e, +0xdd, 0x80, 0xeb, 0x9f, 0xbd, 0x46, 0xc7, 0x5b, +0x67, 0x31, 0x5d, 0xcd, 0x42, 0xa4, 0xdf, 0x7d, +0x15, 0x03, 0x39, 0x32, 0xc1, 0x32, 0xbb, 0x8c, +0x9b, 0x7d, 0xb9, 0xef, 0xeb, 0x62, 0xe1, 0xe4, +0x7d, 0xdc, 0x7c, 0x12, 0x38, 0x38, 0xf4, 0x26, +0x97, 0x6e, 0x44, 0x23, 0x56, 0xd3, 0x78, 0x63, +0x8b, 0xd2, 0xb8, 0x5b, 0x26, 0xdd, 0x1a, 0x0c, +0xa8, 0x6a, 0x34, 0x40, 0xa4, 0xb8, 0xd5, 0x75, +0x96, 0x5a, 0x0e, 0x39, 0x76, 0x73, 0x08, 0x80, +0x91, 0xaf, 0x4e, 0xaf, 0xcd, 0x46, 0xf6, 0x9c, +0x3b, 0x77, 0xb0, 0xf4, 0xbd, 0xfd, 0xa5, 0x4f, +0xc1, 0x1d, 0x73, 0xa3, 0x89, 0x00, 0x42, 0x3e, +0xb0, 0xcc, 0x5a, 0xd5, 0xb4, 0x60, 0xa0, 0xca, +0x52, 0xa9, 0x1f, 0xbb, 0x39, 0x04, 0x8f, 0xec, +0x2e, 0x0e, 0xcf, 0x65, 0x69, 0x7e, 0xae, 0xf5, +0x0d, 0x60, 0xe1, 0xc7, 0x77, 0x0a, 0xef, 0x70, +0xd3, 0x56, 0x06, 0x4c, 0x0d, 0x04, 0xa4, 0x49, +0xd7, 0x31, 0x16, 0xd6, 0xa5, 0xbb, 0x59, 0xa2, +0xc9, 0x35, 0x64, 0x9a, 0x5c, 0x43, 0x16, 0x53, +0x8d, 0xe4, 0x47, 0xd7, 0x41, 0x44, 0x22, 0x00, +0xa0, 0xb8, 0x79, 0xb3, 0x0d, 0x4c, 0xb3, 0x5c, +0x3a, 0xb4, 0xa3, 0x63, 0x07, 0x37, 0x7f, 0x9f, +0x59, 0x53, 0xa2, 0x73, 0x3d, 0xaf, 0x94, 0xd6, +0xbe, 0xf1, 0xeb, 0xf9, 0x16, 0x23, 0xcd, 0x83, +0x9b, 0xbb, 0x97, 0x25, 0x10, 0x91, 0x86, 0xdb, +0x68, 0x5a, 0x4c, 0x26, 0x48, 0xa9, 0xef, 0x3e, +0xf2, 0x2a, 0x87, 0x8f, 0xf5, 0xb6, 0x48, 0xd4, +0x7c, 0xf8, 0x89, 0xde, 0x3d, 0x05, 0xa0, 0x7c, +0x3e, 0x97, 0x21, 0x0f, 0x56, 0xa6, 0x56, 0x00, +0x29, 0x18, 0x30, 0xb5, 0xc2, 0x3a, 0x65, 0xb1, +0xca, 0xe8, 0x18, 0xd4, 0x3a, 0x27, 0x8a, 0x8d, +0xdf, 0xfe, 0xf0, 0x5d, 0xc6, 0x2f, 0x5f, 0x8b, +0x2f, 0xdd, 0x65, 0x89, 0xda, 0x56, 0x1d, 0x7e, +0xa2, 0x77, 0x0f, 0x03, 0x5f, 0x7c, 0x5f, 0xcc, +0xe7, 0x0c, 0xa4, 0x66, 0xac, 0x0e, 0xd6, 0xa1, +0x59, 0x02, 0x35, 0x2b, 0x68, 0xea, 0xde, 0xb9, +0x95, 0x30, 0x3a, 0x55, 0x74, 0x80, 0xf9, 0xf9, +0x1a, 0xf3, 0xf3, 0xb5, 0x92, 0x44, 0x6d, 0x3d, +0xfd, 0xeb, 0xda, 0x49, 0x5b, 0x4f, 0x3f, 0xd3, +0x2c, 0x17, 0x0c, 0x98, 0xa6, 0x98, 0x36, 0x18, +0x68, 0xf1, 0x02, 0xd3, 0x08, 0x62, 0xf9, 0xae, +0x31, 0x72, 0xf1, 0x6a, 0xcb, 0x86, 0x4b, 0x0b, +0x93, 0x2c, 0x2d, 0x4c, 0xe2, 0x8b, 0x55, 0x46, +0xc7, 0xaa, 0x24, 0xfc, 0x7d, 0xf2, 0x49, 0x10, +0x46, 0xc7, 0xaa, 0xf8, 0x62, 0x15, 0x55, 0x23, +0xcd, 0xa2, 0x63, 0xc9, 0x0b, 0xa2, 0x81, 0x18, +0x64, 0x41, 0xe2, 0xcf, 0xbb, 0xc2, 0xcb, 0x2f, +0x6c, 0x83, 0xdb, 0xe5, 0xcd, 0x7c, 0xe5, 0x72, +0x31, 0xee, 0xde, 0xb9, 0x95, 0xda, 0xf8, 0x04, +0x5d, 0xd9, 0xfb, 0xd4, 0x6f, 0xcb, 0x3c, 0xf6, +0x5d, 0x15, 0x80, 0x17, 0xc7, 0x27, 0xe8, 0xda, +0xb2, 0x01, 0x80, 0xda, 0xf8, 0x04, 0xdd, 0x3b, +0xb7, 0x32, 0x3a, 0x56, 0x45, 0x4d, 0x11, 0x04, +0x17, 0x21, 0x24, 0x49, 0x19, 0x80, 0x99, 0x16, +0x51, 0x6a, 0xf6, 0xce, 0x06, 0x06, 0x87, 0x67, +0xb8, 0xb3, 0x77, 0x88, 0xc1, 0xe1, 0x68, 0xf5, +0xfd, 0x07, 0x86, 0xe0, 0x40, 0x5c, 0x3b, 0x72, +0x31, 0x32, 0x14, 0x6e, 0x4f, 0x71, 0xa6, 0xbd, +0x93, 0x95, 0xe9, 0x69, 0x8e, 0x74, 0x76, 0xb1, +0x32, 0x3d, 0x0d, 0xc0, 0x33, 0x9d, 0x5d, 0xac, +0xf8, 0x5c, 0xa4, 0x78, 0x74, 0x8a, 0x91, 0xc9, +0xab, 0x85, 0x17, 0x04, 0x09, 0xa5, 0xb4, 0x5d, +0x69, 0x96, 0x20, 0x66, 0x2a, 0x67, 0xf3, 0xeb, +0x9f, 0x70, 0xe5, 0xec, 0x7b, 0x7c, 0xf4, 0x79, +0xad, 0x50, 0x29, 0x8e, 0x63, 0xdb, 0xf1, 0x44, +0x99, 0xa1, 0xe3, 0x3d, 0xcf, 0xb3, 0x09, 0x38, +0xbe, 0xa5, 0x03, 0x80, 0x4d, 0xc0, 0x6f, 0xd3, +0x73, 0x9c, 0x69, 0xef, 0x64, 0x3b, 0xb0, 0xeb, +0xb9, 0xed, 0xfc, 0xf0, 0xf3, 0x35, 0x12, 0x35, +0x10, 0x07, 0x09, 0xf7, 0x00, 0x90, 0xe5, 0x85, +0x6d, 0xfb, 0x4e, 0x15, 0xae, 0xa9, 0x99, 0x6e, +0x9a, 0x2a, 0xa9, 0xa6, 0xcc, 0xfe, 0xf2, 0x7e, +0x83, 0xa1, 0x5d, 0x33, 0x9c, 0xde, 0xbb, 0xc8, +0xe0, 0xf0, 0x0c, 0xfd, 0x7b, 0x37, 0x03, 0xc4, +0xf1, 0x91, 0xcd, 0x0c, 0x0e, 0x5f, 0xe1, 0xce, +0x43, 0x8b, 0x19, 0x8b, 0x1b, 0x78, 0xdc, 0x62, +0x2a, 0x97, 0xd0, 0x88, 0x03, 0x02, 0xf8, 0xfe, +0xfd, 0xfb, 0x39, 0x7a, 0xf4, 0x68, 0x76, 0x78, +0x74, 0x47, 0x2f, 0xd2, 0xa9, 0xa3, 0x9a, 0x01, +0xd0, 0x0c, 0x44, 0x9a, 0x72, 0xeb, 0xa7, 0x81, +0x7f, 0x94, 0xa2, 0x9f, 0x3e, 0xf0, 0x71, 0x56, +0xe8, 0xc4, 0xa2, 0x67, 0xe3, 0xc6, 0x8d, 0xd4, +0x6a, 0xb5, 0x06, 0x03, 0x45, 0xc1, 0x60, 0x79, +0xc2, 0x30, 0xd4, 0xbd, 0x25, 0xa7, 0x1b, 0x91, +0xa9, 0x07, 0x77, 0x7d, 0x40, 0xbd, 0x9e, 0xa2, +0xaa, 0xb4, 0xb5, 0x55, 0x48, 0x92, 0x46, 0x85, +0x94, 0xf7, 0x10, 0x02, 0x49, 0x08, 0x48, 0x08, +0x98, 0x19, 0x22, 0x0e, 0x04, 0xc2, 0x2a, 0x1b, +0xf8, 0x43, 0x44, 0x1e, 0x30, 0x77, 0xc9, 0x73, +0x77, 0x6e, 0x0b, 0x9e, 0x01, 0xc9, 0xab, 0x18, +0x73, 0xc7, 0x35, 0x56, 0x3e, 0x6e, 0x5e, 0x70, +0xe8, 0x9e, 0xa5, 0x74, 0x37, 0x82, 0x05, 0x2c, +0x38, 0x62, 0x96, 0x11, 0x6c, 0x84, 0xf8, 0x20, +0x64, 0x40, 0x9a, 0x6d, 0x40, 0x80, 0x5b, 0x17, +0x2e, 0x5c, 0x78, 0x58, 0x1a, 0xa6, 0xe9, 0x80, +0x78, 0x23, 0x60, 0xcb, 0x7a, 0x05, 0xe9, 0x7a, +0xdf, 0xee, 0xb7, 0xe5, 0x12, 0x3c, 0x3a, 0x37, +0x37, 0xd7, 0x5c, 0x96, 0xcb, 0xea, 0x83, 0xff, +0x83, 0x56, 0x07, 0x56, 0xfa, 0xfa, 0xfa, 0xda, +0xff, 0x02, 0x76, 0x39, 0x10, 0xa3, 0x8b, 0xbe, +0xdd, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, +0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/cipto.png b/source/bitmaps/icons/cipto.png new file mode 100644 index 0000000000000000000000000000000000000000..4913953f70039c44ade77bcfb3e9a2bcd2610051 GIT binary patch literal 1262 zcmVWFU8GbZ8()Nlj2>E@cM*00dG=L_t(Y$HkV@1Ap9%)R%$+t(tR7$=$Bxp(HyeCPW;zl7MF|EGxn zcIeO{F|*Q)s;={gtoiQlEpzv30|Nuh&dyQ+q+YLc>f}iz2qJ<=AcU+-AS8hh5|TzIjsxydLB}x+Gso01v)Da8-3)V&|245)0Z7vnGa~>df#Aa2H@*K_ z*ryJE+W=r%jNKix2(|=3L~vKk0*G;VMJ_(m@P>k1W&1){*fa{;VM#o!cFn%v#m7V4%uUsUN#J1dr@44$oz2 zey;TmVByDi3h!{!Rt8KB1f)sVF&5UPyIG>iHDsDxLl#qwUrd9wc7%;WMI%ToS=or*GCyI^V{_tJKFJFr<-DQc|Rvmt#cMk(!d|%Ax z45VhP4%VSr0yQgW>fX7PFgjIqfcg0v^YgWmL~T9&>)J_MPe0Qv7YvxDm^K(_@dDEb zV)?Eya`9@*hD!^REGLE_K5!pkpg zgWKiJeC2X6?%uhT+V})r+56OQ%RKg76@VAVC+OO;0f5^01l>EgGCEd8O%VhaAtXr| zfSDFiYWB_s28U<3vv-KW;b`^!2ZrE4Tsv|xG8Ar4ai+bKmFa1Ybat^aJq^G!on5T> zT%>q(ijm2yg%<<~rLc-&$tm(Yj<0{H&@`#E~_Xm)sXM=#Q;qnZKG3`Cl8 z>!*Q#l%k(L@Nrh?#G+^8#*Nf!wFU!4!C-m9Fx0&zryG%}2X}oyy`G|~w6#@8l17D; z_YeX}2uKK+86pk@!YUj1Lqr}hcgb^iZVR3P$*UN1$2C?yZeDQco~3j*f(0x%VwMqX zg!mw2K$>kpfLj+XTzFU-rs;rqBVfyV1?hUVyA-RtHx4`uf`c Y0(LnNql>=X_y7O^07*qoM6N<$f+5&C@&Et; literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/cisnd.cpp b/source/bitmaps/icons/cisnd.cpp new file mode 100644 index 0000000..5efb634 --- /dev/null +++ b/source/bitmaps/icons/cisnd.cpp @@ -0,0 +1,185 @@ +#include + +#ifndef ICONS_CISND_CPP +#define ICONS_CISND_CPP + +static unsigned char icons_cisnd_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, +0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x23, 0x27, 0x28, +0xea, 0x4b, 0x87, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0xe0, +0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, +0x5d, 0x88, 0x55, 0x55, 0x14, 0xc7, 0x7f, 0x6b, +0x9f, 0x33, 0x63, 0x93, 0x0e, 0x39, 0x58, 0xd3, +0xe4, 0x47, 0x69, 0x45, 0x18, 0xf6, 0x41, 0x85, +0x10, 0xf4, 0x10, 0x81, 0x4f, 0x41, 0x3d, 0x08, +0x16, 0x48, 0xf4, 0x22, 0x41, 0x10, 0x45, 0x5a, +0x3e, 0x45, 0x3e, 0xd4, 0x83, 0x64, 0x0f, 0x4d, +0x24, 0x11, 0x84, 0x3d, 0x15, 0x11, 0x41, 0xd0, +0x83, 0xf5, 0x18, 0xa4, 0x0f, 0x89, 0x14, 0x64, +0x52, 0x26, 0x98, 0xc6, 0x38, 0x5f, 0xce, 0xdc, +0xc6, 0xe1, 0x3a, 0x77, 0xe6, 0xce, 0xd9, 0x6b, +0xad, 0x1e, 0xf6, 0x39, 0xe7, 0xce, 0xf5, 0x6a, +0xf4, 0x12, 0x2d, 0xd8, 0xec, 0x7b, 0xce, 0xb9, +0x7b, 0xaf, 0xff, 0xfa, 0xaf, 0x4f, 0x21, 0x89, +0xf3, 0xff, 0x88, 0x08, 0x60, 0x3b, 0x77, 0xee, +0x14, 0x33, 0xeb, 0xfa, 0xa2, 0xaa, 0xd7, 0x39, +0x21, 0xd7, 0x7c, 0x76, 0xf7, 0x9e, 0x6f, 0xff, +0x24, 0xfb, 0xf7, 0xef, 0x67, 0x72, 0x72, 0x92, +0x1c, 0x90, 0xa2, 0x28, 0x78, 0x7f, 0x74, 0x14, +0x09, 0x82, 0x88, 0x20, 0x12, 0x08, 0xa1, 0x5c, +0x12, 0x08, 0x59, 0x20, 0x84, 0x8c, 0x2c, 0x0f, +0x64, 0x59, 0x4e, 0x16, 0x02, 0x79, 0x9e, 0x93, +0xe7, 0x39, 0x59, 0x96, 0x51, 0xc4, 0x88, 0xc6, +0x88, 0x46, 0x45, 0x2d, 0x12, 0x55, 0x31, 0x35, +0x54, 0x0d, 0x37, 0x43, 0xcd, 0x30, 0x57, 0xdc, +0x1c, 0x37, 0xc7, 0x70, 0x26, 0x27, 0x26, 0x00, +0xc8, 0x2b, 0xf4, 0x6a, 0x8e, 0x00, 0x41, 0x40, +0x82, 0x81, 0x95, 0x7e, 0x09, 0x0e, 0x0e, 0xe2, +0x82, 0x9b, 0xe0, 0x62, 0xb8, 0x08, 0xee, 0x8e, +0x03, 0xee, 0xc9, 0x83, 0x8e, 0x63, 0x18, 0x66, +0x8e, 0xa9, 0x63, 0x66, 0x69, 0x79, 0xda, 0xdd, +0x0c, 0x73, 0x4f, 0xe7, 0x56, 0xb0, 0x9d, 0x03, +0xc4, 0x18, 0x31, 0x33, 0x02, 0x60, 0x12, 0x08, +0x2e, 0x58, 0x00, 0x71, 0x07, 0x32, 0xc0, 0x10, +0x04, 0x24, 0x51, 0x1e, 0x42, 0x80, 0xf2, 0x32, +0x91, 0x14, 0x41, 0xb5, 0x75, 0x66, 0x78, 0xa9, +0x34, 0x2d, 0xad, 0x7f, 0xbb, 0x3b, 0x66, 0x09, +0x6c, 0x17, 0x00, 0x11, 0xc1, 0x5d, 0x31, 0x0b, +0x50, 0x5a, 0x18, 0x1c, 0x24, 0x24, 0x9f, 0x26, +0x20, 0x49, 0x4c, 0x2a, 0xcb, 0x9c, 0xcc, 0x21, +0x6a, 0x2c, 0x2d, 0x4c, 0xca, 0x55, 0xab, 0x95, +0xdc, 0xd0, 0xcd, 0x42, 0xa2, 0xdf, 0xfd, 0x2a, +0x06, 0x2a, 0x64, 0x82, 0x81, 0x48, 0xa2, 0x38, +0x38, 0x82, 0x24, 0x72, 0xdd, 0x19, 0x1a, 0x7f, +0xa9, 0x03, 0xe2, 0xae, 0x51, 0x2c, 0x1b, 0xc6, +0x31, 0xf2, 0xd0, 0x87, 0x12, 0x6b, 0xe5, 0x66, +0xca, 0xd6, 0xc6, 0x0b, 0x9c, 0x1a, 0x3c, 0x8c, +0x9a, 0x26, 0x8b, 0x2d, 0xb9, 0xc6, 0xdd, 0x4a, +0xd7, 0x75, 0x0c, 0x0a, 0x15, 0x03, 0xaa, 0x9a, +0x0e, 0xa8, 0x62, 0xa6, 0xc9, 0x82, 0x68, 0xc4, +0xa8, 0x0c, 0x4d, 0xbd, 0x42, 0xff, 0xe6, 0xd5, +0xf4, 0x6f, 0x5e, 0x9d, 0x0e, 0x9d, 0x7b, 0x15, +0x6d, 0xfe, 0x86, 0x5b, 0xba, 0xc8, 0xd4, 0x89, +0xa6, 0xa8, 0x46, 0x62, 0x54, 0x4e, 0xad, 0x39, +0xcc, 0x03, 0xcd, 0x83, 0x3c, 0xb4, 0x70, 0x08, +0x8b, 0xb1, 0x73, 0xb7, 0x19, 0x6a, 0x8a, 0x46, +0xeb, 0x06, 0x00, 0x94, 0x1f, 0xad, 0x06, 0xa1, +0xaa, 0x44, 0x8d, 0xdc, 0xda, 0x78, 0x8d, 0xfe, +0xdb, 0x5b, 0x60, 0x33, 0x2c, 0x5f, 0x58, 0x00, +0x48, 0xcf, 0x7f, 0xbe, 0x4d, 0x5c, 0x9a, 0xc1, +0x9d, 0xf2, 0xd2, 0xc8, 0x3d, 0x33, 0x9f, 0x13, +0xe3, 0x32, 0x85, 0x16, 0x9c, 0xec, 0xdf, 0x0b, +0x6c, 0x65, 0x7b, 0xf1, 0x6d, 0x8a, 0x31, 0xed, +0x64, 0x87, 0x9b, 0xf6, 0x32, 0x60, 0x6a, 0xc9, +0x7a, 0x55, 0x62, 0x09, 0xe0, 0xe6, 0xb1, 0x9d, +0xdc, 0x74, 0xf7, 0x79, 0x06, 0xfa, 0xa7, 0x19, +0xe8, 0x9f, 0xa6, 0x3d, 0x7f, 0x36, 0x29, 0x2f, +0x41, 0x2c, 0xfc, 0xb0, 0x03, 0x70, 0x8a, 0x58, +0xd0, 0x6e, 0xb7, 0xf9, 0x69, 0xe0, 0x69, 0x1e, +0xbc, 0xf2, 0x0b, 0xc5, 0x72, 0x41, 0x51, 0x44, +0x8e, 0xfb, 0x0e, 0xe0, 0x4e, 0x1e, 0xe3, 0x0f, +0x62, 0x2c, 0x0d, 0x2b, 0x0d, 0xad, 0xf4, 0xd6, +0x0c, 0x68, 0x49, 0x7b, 0xb4, 0x14, 0x40, 0x23, +0x93, 0xcf, 0x30, 0xfc, 0x48, 0x5f, 0x4f, 0x01, +0x39, 0xf9, 0xcd, 0x04, 0x03, 0x7d, 0x67, 0x19, +0xe8, 0x3b, 0x9b, 0x0a, 0x90, 0x19, 0x5b, 0xc6, +0xcf, 0xd3, 0x6a, 0xb5, 0x68, 0x2f, 0x2d, 0x72, +0xdc, 0xb7, 0xf0, 0xa8, 0xb6, 0x28, 0x8a, 0x82, +0x18, 0x0b, 0x60, 0x03, 0xb0, 0x81, 0xc7, 0xf3, +0xd2, 0xad, 0xa5, 0x71, 0xbd, 0x0c, 0x54, 0x69, +0xa3, 0x91, 0x8d, 0x33, 0xbb, 0x19, 0x7e, 0xb8, +0x05, 0x3e, 0xdf, 0xbd, 0x80, 0xb5, 0x83, 0x7d, +0x7c, 0xff, 0xf5, 0x9a, 0xfa, 0x82, 0xa9, 0xe9, +0x69, 0xbe, 0x6b, 0x0b, 0xdb, 0x27, 0x97, 0x59, +0x68, 0xb5, 0x58, 0x5c, 0x5c, 0x84, 0xc6, 0xaa, +0x92, 0x85, 0x02, 0x1a, 0xab, 0xea, 0x55, 0x15, +0x2b, 0x53, 0xab, 0xab, 0x67, 0x27, 0x06, 0xca, +0xd4, 0x51, 0xed, 0x04, 0x48, 0xa3, 0xd1, 0xec, +0xda, 0x57, 0x4a, 0xf5, 0xee, 0xe8, 0xd1, 0xa3, +0x8c, 0x4f, 0x8c, 0xc3, 0x18, 0x2c, 0x2c, 0xb4, +0x68, 0x2f, 0xb5, 0x61, 0x0c, 0xda, 0xc5, 0x32, +0x31, 0x46, 0x18, 0xa3, 0x5e, 0xb1, 0x0a, 0xc2, +0x15, 0x31, 0x90, 0xaf, 0x74, 0x41, 0x2a, 0x6a, +0x4e, 0xa3, 0xd9, 0x4f, 0xd6, 0x98, 0xee, 0x01, +0xd1, 0x68, 0xae, 0xed, 0x06, 0xd1, 0xec, 0x47, +0x55, 0xb9, 0xd2, 0xbc, 0x02, 0xb3, 0xb0, 0xb8, +0x6e, 0x91, 0x2c, 0xcf, 0x60, 0x16, 0x8a, 0x0d, +0x05, 0x21, 0x00, 0xb3, 0x9d, 0xff, 0xdb, 0xe6, +0x98, 0x0a, 0x5a, 0x59, 0xd4, 0x7a, 0xb2, 0xa0, +0x0a, 0x92, 0x99, 0xe1, 0x0f, 0xb8, 0x74, 0x7a, +0x13, 0x7f, 0x5d, 0x4e, 0x31, 0x50, 0xed, 0x2b, +0xa5, 0x7a, 0xe7, 0xc0, 0x8b, 0x3f, 0xde, 0xcf, +0xc7, 0xeb, 0x7f, 0xa5, 0xbd, 0xbc, 0x44, 0xd1, +0x5e, 0x86, 0x31, 0xca, 0x18, 0xe8, 0x66, 0x40, +0xd5, 0x88, 0x65, 0x75, 0xec, 0x49, 0x43, 0x55, +0xab, 0x33, 0x41, 0xd5, 0x98, 0x1c, 0x1a, 0x25, +0x5e, 0x1c, 0xe9, 0x01, 0x71, 0xb9, 0x59, 0x70, +0xdb, 0x7d, 0x2b, 0xcc, 0x72, 0xe7, 0xbd, 0x6d, +0x27, 0x92, 0xc2, 0xa2, 0x60, 0xf7, 0x97, 0x77, +0xf0, 0xe9, 0x13, 0xe7, 0x89, 0x31, 0x52, 0x14, +0x31, 0x31, 0x30, 0x0b, 0x5f, 0x3d, 0x79, 0xa9, +0x93, 0xe2, 0x76, 0xcd, 0x3a, 0xa0, 0xb5, 0x7f, +0xaa, 0xc2, 0x31, 0x36, 0xf8, 0x2e, 0xf1, 0xe2, +0x08, 0x73, 0xf3, 0xc6, 0xdc, 0x7c, 0x3a, 0x74, +0xc3, 0xa6, 0x4b, 0xcc, 0xcd, 0x1b, 0xf1, 0xe2, +0x08, 0xc7, 0xe7, 0x5e, 0x2e, 0xcf, 0x3a, 0xaa, +0xca, 0x9e, 0x03, 0xf7, 0x72, 0xe4, 0xa9, 0x33, +0xc4, 0x18, 0x89, 0x1a, 0x79, 0x76, 0xdf, 0x46, +0x38, 0x09, 0x5f, 0xec, 0x1e, 0x47, 0x2d, 0x15, +0xa4, 0x2a, 0xd8, 0xaf, 0x59, 0x88, 0xcc, 0x0c, +0x8b, 0x56, 0xa7, 0x8a, 0xaa, 0x71, 0x6e, 0xe0, +0x20, 0x83, 0xcd, 0xf5, 0x00, 0x34, 0x07, 0x27, +0x18, 0x6c, 0xae, 0x67, 0xb0, 0xb9, 0x9e, 0x13, +0xcd, 0xbd, 0xb8, 0x7b, 0xea, 0x84, 0x96, 0xd8, +0xfb, 0xf0, 0x8d, 0x9f, 0x89, 0x51, 0xd1, 0xa8, +0xec, 0x7b, 0x6e, 0x0b, 0xb7, 0x8c, 0xc3, 0x67, +0x87, 0x2e, 0xa4, 0xfb, 0xca, 0xe8, 0xb7, 0xab, +0x02, 0x3d, 0x5f, 0x09, 0xc0, 0xcb, 0x0e, 0x57, +0xd5, 0xed, 0x0a, 0xd4, 0x99, 0xfc, 0x2d, 0xb6, +0x36, 0x0f, 0x74, 0x6a, 0xc1, 0xe2, 0xeb, 0x98, +0xc7, 0xb2, 0xa6, 0x4b, 0x7d, 0x4e, 0x4d, 0x11, +0x11, 0x3e, 0xd9, 0xb3, 0x8d, 0x77, 0x8e, 0xfc, +0x4e, 0x96, 0x07, 0xcc, 0x32, 0xdc, 0x9d, 0x2c, +0x64, 0x28, 0xa9, 0xd1, 0x49, 0xf0, 0xeb, 0x03, +0x30, 0xb3, 0xd4, 0x80, 0xea, 0x76, 0xea, 0x98, +0x1a, 0xa7, 0xfd, 0xcd, 0xc4, 0x4a, 0x54, 0x5c, +0x63, 0xa9, 0xb4, 0x6c, 0xc5, 0x80, 0xb9, 0x11, +0x34, 0x60, 0x62, 0x3c, 0xff, 0xd1, 0x69, 0xcc, +0x32, 0xd0, 0xf4, 0x2d, 0x48, 0x28, 0xbb, 0x6a, +0x80, 0x20, 0x88, 0x4b, 0x2f, 0x80, 0x7a, 0x60, +0x30, 0xc7, 0xbc, 0x9c, 0x64, 0xdc, 0x7b, 0x7a, +0xba, 0x61, 0x35, 0xf5, 0xd4, 0x9d, 0xcd, 0xeb, +0x2e, 0xe7, 0x9e, 0xce, 0x8b, 0x0b, 0x58, 0xca, +0x36, 0x0b, 0xd5, 0xf8, 0xe6, 0x40, 0x20, 0x48, +0x37, 0x80, 0x05, 0x11, 0xb9, 0xd1, 0xdc, 0xa5, +0xea, 0xdd, 0x5e, 0x02, 0xf1, 0x12, 0x48, 0x35, +0xc5, 0x98, 0x3b, 0xae, 0x69, 0xf2, 0xa9, 0x3a, +0x21, 0x92, 0xa6, 0xa2, 0x4a, 0x71, 0xb0, 0x80, +0x05, 0x47, 0xcc, 0x28, 0xd5, 0x13, 0xd2, 0x46, +0x08, 0x21, 0x05, 0xa0, 0x84, 0xce, 0x4c, 0x09, +0x34, 0x8e, 0x1d, 0x3b, 0x36, 0x24, 0x9d, 0x89, +0xd2, 0xd3, 0x0c, 0x52, 0x4f, 0x21, 0x72, 0xbd, +0x81, 0xf4, 0x7a, 0xef, 0xfe, 0xad, 0x4c, 0x4c, +0x4c, 0x90, 0x03, 0xeb, 0xa6, 0xa6, 0xa6, 0x56, +0x8e, 0xe5, 0x72, 0xb5, 0xe2, 0xff, 0x40, 0x0a, +0xa0, 0xbd, 0x6b, 0xd7, 0xae, 0xc1, 0xbf, 0x01, +0x6b, 0x68, 0x5f, 0x7f, 0xa2, 0xec, 0x8c, 0x1e, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/cisnd.png b/source/bitmaps/icons/cisnd.png new file mode 100644 index 0000000000000000000000000000000000000000..b615c7210b0f9e8423f70d3c8ebfb0b9d6ce71c1 GIT binary patch literal 1404 zcmV-?1%vvDP)WFU8GbZ8()Nlj2>E@cM*00iJkL_t(Y$HkUih*eb- z$A4>|Gh>quIat%=M`=YE_CbXZ^bmnhK|Kf-Nc18>5Jg%(MLyJnWDiXw5rjPz5kb&{ z^%$fNi4a&nR!kfJDfe{>WHf`}jz2%%gO2w5P6j4Tgi zSxy!Ld7hK!Ia!ub#E8a-Mnx?WRWUVG4L3v0Fjw3hH^*=$Cnf;MEA(oP06{>4ft7v< z4i4gio8V%&2=0yp?#Y9WV;E+RsbgkodD`6!b5G}1u$=?M7%?*fU=j!}SO9ScGQbc7 zBvBqhfbuet6hXChW_YPIEvz#S{NK8B%dZANlYrsoXjC=EG1FD)1sA8tcf@s933{Aa4|K`>7Z(f}aoqH8+{)St+$kd6Zs77K` zPOUl21I>dxv~UQEv2(W>YKlhd1^|>Ftp=g0M2+0qc#ZzsTVOLRUswQ0&wsv6T$;h1 z^3upXGoKUVGKChL?B5G)Wqa{$iZShEhnw~?U~0*FRbmO?=CPgJboY4%`llJ_pQb&3 zHYqPbEc~zoaEe&aZnybq;AtMb@(aasK~Y4G`wrkv9^(&UEDb9St@PFmXi0mt6hI@B z&oKN*Urzx!`OO3aePQxmh zQ>&|ICkD#YQSAgsqtWczS4#En=+UE$PmIGDEG)EWFSTI|+Ql+4Mi`@Bu?oT!F_5ox zK`LraquEc^nC=15Xs+!B(dv#_{sku1+(7K#l8Apowl%ayhPDnhB3+*=w?9Gh-G!`NkdhuGeOmu z92zBF9O(gZxmj@AeJjjz=e=zwlER{3_m_9@=@aLPF;WyUF)#~XJ$b2<;&#nCptXOh z!Z9}ZF7e_BbMwaBd^&W)rc2Dt8}Z@@$LC%y&pN8go&)!COErcHc%g3193U zM=cekD%h`Ch|CO&R;P-pacuN>p59skCgxfVmMgU}8M~(P_*w z(DW@xD7$KaAc#vZfO=ps$Gn_m+&P)k3jvYHTB%O)U z(+pBiA#%Ne^m_09txQZzkOS+crlwYo<#M&+|3C_$y=&L5!M_1(XkUM#?2H}&0000< KMNUMnLSTX+cYE*v literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/civen.cpp b/source/bitmaps/icons/civen.cpp new file mode 100644 index 0000000..2dff797 --- /dev/null +++ b/source/bitmaps/icons/civen.cpp @@ -0,0 +1,171 @@ +#include + +#ifndef ICONS_CIVEN_CPP +#define ICONS_CIVEN_CPP + +static unsigned char icons_civen_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, +0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, +0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x24, 0x0b, 0x55, +0x73, 0xb1, 0xa3, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x71, +0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, +0x4d, 0x68, 0x5c, 0x55, 0x14, 0xc7, 0x7f, 0xe7, +0xbe, 0x67, 0x93, 0x36, 0x89, 0x69, 0x48, 0x3f, +0xa6, 0x62, 0x4a, 0xa9, 0xb4, 0x31, 0x18, 0xb1, +0x1a, 0xf0, 0x73, 0x67, 0x41, 0x5c, 0x48, 0x0b, +0x81, 0xb8, 0xd1, 0xba, 0x71, 0xe3, 0xa6, 0x2e, +0xc4, 0xe8, 0x4e, 0x10, 0xa4, 0x22, 0x2e, 0x5a, +0x97, 0x2d, 0x88, 0xb8, 0x90, 0xae, 0xba, 0x71, +0x61, 0x41, 0x5a, 0xd2, 0x50, 0x04, 0xed, 0xa6, +0xa2, 0x0d, 0x95, 0x6e, 0x04, 0x53, 0x92, 0x14, +0xdb, 0x52, 0xe8, 0x64, 0x26, 0x33, 0xef, 0x9e, +0x73, 0x5c, 0xbc, 0x99, 0x37, 0x6f, 0x92, 0x8c, +0xb4, 0x0b, 0xf1, 0xc0, 0x70, 0xce, 0xbd, 0x77, +0xce, 0x3b, 0xff, 0x7b, 0x3e, 0xaf, 0x90, 0x93, +0xf3, 0xff, 0x90, 0x08, 0x60, 0xd3, 0xd3, 0xd3, +0x62, 0x66, 0x5d, 0x27, 0xaa, 0xda, 0x43, 0x43, +0x36, 0x5d, 0xbb, 0xfb, 0x86, 0xb3, 0x7f, 0xa3, +0xd9, 0xd9, 0x59, 0x96, 0x97, 0x97, 0x49, 0x01, +0xc9, 0xb2, 0x8c, 0xaf, 0x4e, 0x9d, 0x42, 0x82, +0x20, 0x22, 0x88, 0x04, 0x42, 0x68, 0xfd, 0x24, +0x10, 0x92, 0x40, 0x08, 0x09, 0x49, 0x1a, 0x48, +0x92, 0x94, 0x24, 0x04, 0xd2, 0x34, 0x25, 0x4d, +0x53, 0x92, 0x24, 0x21, 0x8b, 0x11, 0x8d, 0x11, +0x8d, 0x8a, 0x5a, 0x24, 0xaa, 0x62, 0x6a, 0xa8, +0x1a, 0x6e, 0x86, 0x9a, 0x61, 0xae, 0xb8, 0x39, +0x6e, 0x8e, 0xe1, 0x2c, 0x2f, 0x2d, 0x01, 0x90, +0xb6, 0xd1, 0xab, 0x39, 0x02, 0x04, 0x01, 0x09, +0x06, 0xd6, 0x8a, 0x4b, 0x70, 0x70, 0x10, 0x17, +0x4e, 0xff, 0x32, 0x0e, 0xc0, 0x85, 0x5f, 0x2f, +0xf6, 0xbc, 0xd9, 0x99, 0xd3, 0xf7, 0x01, 0x18, +0xfc, 0xf9, 0x20, 0x66, 0x86, 0xb9, 0x61, 0x96, +0x03, 0x31, 0x77, 0xdc, 0x1d, 0x2f, 0x79, 0x3b, +0x05, 0x88, 0x31, 0x62, 0x66, 0x04, 0xc0, 0x24, +0x10, 0x5c, 0xb0, 0x00, 0xe2, 0x0e, 0x24, 0x80, +0x71, 0xf6, 0xca, 0x34, 0x7d, 0x1c, 0xcc, 0xc3, +0xb3, 0x75, 0x47, 0x4f, 0x00, 0xf7, 0x76, 0xad, +0xe4, 0xfc, 0xc8, 0x55, 0x76, 0x9f, 0x7b, 0x1a, +0x33, 0xcd, 0x81, 0x98, 0xe1, 0xee, 0x98, 0x39, +0x5e, 0x4a, 0xb9, 0xb4, 0x1d, 0x47, 0x77, 0xc5, +0x2c, 0x80, 0x18, 0x2e, 0x42, 0x70, 0x90, 0x90, +0xc7, 0xf4, 0xd2, 0x5f, 0xc7, 0xd9, 0x31, 0xba, +0xbb, 0x50, 0x1a, 0xbf, 0x5b, 0xef, 0x09, 0x20, +0xdb, 0xdf, 0x91, 0x6f, 0xce, 0xfe, 0x4e, 0xe5, +0xc4, 0x93, 0x25, 0x2f, 0xe4, 0xee, 0x77, 0x5f, +0xe7, 0x81, 0x36, 0x32, 0xc1, 0x40, 0x04, 0x17, +0xc1, 0x83, 0x23, 0x08, 0x0b, 0xd5, 0x2f, 0x19, +0x19, 0xda, 0xd3, 0x65, 0xe4, 0xc0, 0x70, 0xa3, +0x27, 0x80, 0xd1, 0x9d, 0xdd, 0xde, 0xc9, 0x4e, +0xde, 0x86, 0xe3, 0xc3, 0xf9, 0xcd, 0x3d, 0xf7, +0xc2, 0xa6, 0x1e, 0x50, 0xd5, 0x3c, 0x01, 0x11, +0x24, 0x08, 0xee, 0x42, 0xb0, 0xc0, 0xf0, 0xe0, +0xae, 0x0d, 0x46, 0xf6, 0x6c, 0xdf, 0xd2, 0x13, +0xc0, 0xea, 0xc8, 0xbd, 0x0d, 0x7b, 0xfd, 0x3a, +0x88, 0xb9, 0x83, 0x3b, 0xe6, 0x46, 0xc9, 0x01, +0x39, 0x00, 0x00, 0xb3, 0xfc, 0xf6, 0x02, 0x04, +0x17, 0x10, 0xc1, 0xc4, 0x38, 0xff, 0xde, 0xa7, +0xbc, 0xf9, 0xc5, 0x55, 0x06, 0x07, 0x06, 0x08, +0x49, 0x42, 0x9a, 0x24, 0x9c, 0xff, 0x7c, 0x1f, +0x1f, 0x9e, 0xbd, 0x4d, 0xff, 0xd6, 0x6d, 0xf4, +0xf7, 0xf5, 0x53, 0xad, 0xde, 0xa7, 0xd1, 0x68, +0x70, 0xf2, 0xed, 0x5d, 0xbc, 0x72, 0xe6, 0x4f, +0xb2, 0x18, 0x71, 0x33, 0x9a, 0xcd, 0x8c, 0xef, +0x3e, 0x98, 0xe4, 0xad, 0x99, 0x6b, 0x80, 0x63, +0x0e, 0xb4, 0x80, 0xb4, 0x29, 0xb4, 0x3d, 0x60, +0x6a, 0x98, 0x2a, 0xa6, 0x4a, 0x54, 0x45, 0x55, +0xd1, 0x18, 0x19, 0xe8, 0x83, 0x34, 0x49, 0x68, +0x66, 0x91, 0x66, 0xd6, 0xa4, 0xd9, 0xcc, 0x18, +0xe8, 0x83, 0x66, 0xb3, 0x89, 0xc6, 0x08, 0x38, +0x6a, 0x4a, 0xb3, 0xd9, 0x6c, 0xed, 0x67, 0x1c, +0xfb, 0x71, 0x8e, 0x2c, 0x8b, 0x64, 0x59, 0xae, +0xaf, 0xa6, 0xc4, 0x98, 0x7f, 0x5b, 0x5b, 0x65, +0xd9, 0xb6, 0x1b, 0x8a, 0xc6, 0x63, 0xb9, 0xd1, +0x68, 0x56, 0x18, 0x8f, 0xaa, 0x0c, 0xf5, 0x41, +0x16, 0x73, 0xe3, 0xd9, 0x89, 0x09, 0xea, 0x9f, +0x1d, 0xe0, 0xc8, 0x08, 0xfc, 0xfd, 0xf1, 0x63, +0xd4, 0x6b, 0x75, 0xdc, 0x8c, 0xda, 0x6a, 0x9d, +0xd5, 0xd5, 0x55, 0x86, 0xfa, 0xe0, 0x9d, 0x0b, +0x97, 0x38, 0x3a, 0x35, 0xc5, 0xbb, 0xf3, 0x3f, +0x61, 0x96, 0xeb, 0x6b, 0x8c, 0xa8, 0xe6, 0xdf, +0xb5, 0xd6, 0xe5, 0x36, 0xe4, 0x40, 0xa7, 0x13, +0x3a, 0xd0, 0xe9, 0x68, 0xdb, 0xb6, 0x40, 0xfa, +0xc7, 0x73, 0xf9, 0xe2, 0x75, 0x78, 0xe4, 0xca, +0x58, 0x71, 0x76, 0xeb, 0xa3, 0xdd, 0x7c, 0x7d, +0x78, 0x5f, 0xb1, 0xfe, 0xfe, 0xd5, 0x33, 0x1c, +0x9d, 0x9a, 0x2a, 0xd6, 0x9f, 0x7c, 0xf3, 0x2d, +0x54, 0xde, 0xe7, 0xa5, 0xd8, 0x32, 0xe8, 0xdd, +0xdf, 0x76, 0xf7, 0x52, 0x0e, 0xa8, 0x75, 0x65, +0x67, 0x1e, 0x26, 0xe7, 0x85, 0x37, 0x80, 0xbb, +0xa5, 0xac, 0x7e, 0x7e, 0xb1, 0x0b, 0xc4, 0x8b, +0x87, 0x47, 0x3b, 0x87, 0x17, 0x4f, 0x00, 0xe7, +0x8a, 0xe5, 0xb3, 0x93, 0x4f, 0x71, 0xf5, 0xda, +0x02, 0x31, 0x46, 0x04, 0xf0, 0x56, 0x8e, 0x95, +0x29, 0x2d, 0x87, 0xc0, 0x3b, 0x96, 0xf1, 0x56, +0xb2, 0xdc, 0xdc, 0xfe, 0x03, 0x6c, 0x5f, 0xa7, +0xf5, 0x5a, 0x49, 0xfe, 0xad, 0x23, 0x1e, 0xda, +0x09, 0xdc, 0xb9, 0x05, 0xc0, 0x33, 0xfb, 0x1e, +0x07, 0xe0, 0xe5, 0xbd, 0x63, 0x68, 0x54, 0xa4, +0x15, 0xec, 0x1c, 0x82, 0x14, 0x8e, 0xe8, 0xaa, +0x82, 0xbc, 0x46, 0x01, 0x37, 0xf2, 0x88, 0x74, +0x0f, 0xc9, 0x89, 0x89, 0x89, 0x07, 0x1e, 0x36, +0xd7, 0xaf, 0x5f, 0x2f, 0xe4, 0xa8, 0x11, 0xb1, +0x7c, 0xce, 0xd0, 0x4a, 0xbc, 0x90, 0x24, 0x9d, +0x2a, 0xc8, 0xa7, 0x9f, 0x15, 0x95, 0xa0, 0x05, +0xef, 0x9e, 0x88, 0xf5, 0x7a, 0x9d, 0xb9, 0xb9, +0x39, 0xe6, 0xe6, 0xe6, 0x0a, 0xb9, 0xcc, 0xcb, +0xf2, 0xfa, 0xc9, 0xaa, 0x6a, 0xa8, 0x75, 0x2a, +0x61, 0x93, 0x3e, 0xa0, 0x45, 0x97, 0x72, 0xeb, +0x0c, 0x8d, 0x6a, 0xb5, 0x5a, 0xfc, 0xb9, 0x56, +0xab, 0x91, 0x65, 0x19, 0x53, 0x53, 0x53, 0x85, +0x5c, 0xe6, 0x40, 0x21, 0x97, 0xf5, 0x1e, 0x1d, +0x1e, 0x26, 0x04, 0x43, 0x5c, 0x08, 0x12, 0xba, +0xc6, 0x76, 0x28, 0x87, 0xc0, 0xcc, 0xb0, 0xd8, +0xb9, 0xbd, 0xaa, 0x51, 0xab, 0xd5, 0x8a, 0x5f, +0xa3, 0xd1, 0x60, 0x72, 0x72, 0x92, 0xf9, 0xf9, +0x79, 0x1a, 0x8d, 0x06, 0xd5, 0x6a, 0xb5, 0xe0, +0xeb, 0xf7, 0xca, 0x7a, 0xa6, 0x8a, 0x46, 0xed, +0xf2, 0xf0, 0xa6, 0x9d, 0xd0, 0x5b, 0xe3, 0xb2, +0xdd, 0xb7, 0xcd, 0xac, 0xcb, 0x9d, 0x6b, 0x6b, +0x6b, 0x79, 0xb2, 0x1d, 0x3a, 0xc4, 0xda, 0xda, +0x5a, 0x17, 0x6f, 0x9f, 0xb7, 0xf7, 0xca, 0x7a, +0xaa, 0x4a, 0x12, 0x12, 0x94, 0x7c, 0xd0, 0x49, +0xf0, 0xde, 0x00, 0xcc, 0xac, 0x15, 0x86, 0x1c, +0x40, 0xa5, 0x52, 0x61, 0x71, 0x71, 0x11, 0x80, +0x85, 0x85, 0x85, 0x87, 0x7e, 0x73, 0x8d, 0xed, +0x1d, 0x2b, 0x7a, 0x8c, 0x78, 0x80, 0x20, 0x88, +0xcb, 0x46, 0x00, 0xc5, 0x83, 0xc1, 0xda, 0x03, +0xc3, 0xd0, 0x16, 0xa0, 0x4a, 0xa5, 0xc2, 0x8d, +0x1b, 0x37, 0x1e, 0xda, 0xf8, 0xf8, 0xf8, 0x38, +0xae, 0x86, 0xb5, 0x4b, 0x50, 0x1c, 0x08, 0x04, +0xe9, 0x06, 0xb0, 0x2a, 0x22, 0xdb, 0xcc, 0x5d, +0xda, 0x2f, 0x18, 0xf7, 0x76, 0x22, 0xe6, 0x40, +0xdc, 0x9d, 0x27, 0xf6, 0xef, 0x27, 0x9a, 0x61, +0x51, 0x89, 0x16, 0x73, 0xae, 0x8a, 0x9a, 0x92, +0x26, 0xf9, 0xd3, 0x2c, 0x49, 0x13, 0xd2, 0x90, +0x12, 0xd2, 0x84, 0x24, 0x04, 0xcc, 0x1c, 0x30, +0x82, 0x00, 0x06, 0x21, 0x84, 0xd6, 0xd0, 0x0b, +0x9d, 0x37, 0x25, 0x70, 0xe7, 0xf2, 0xe5, 0xcb, +0x23, 0xd2, 0x49, 0x4d, 0x07, 0xc4, 0xbd, 0x18, +0x59, 0xd2, 0xeb, 0x41, 0xda, 0x6b, 0xef, 0x41, +0x69, 0x69, 0x69, 0x89, 0x14, 0x18, 0x5d, 0x59, +0x59, 0x29, 0x77, 0x1c, 0x59, 0x6f, 0xf8, 0x3f, +0xa0, 0x0c, 0x68, 0xcc, 0xcc, 0xcc, 0x0c, 0xfd, +0x03, 0xa9, 0x46, 0x3d, 0xa6, 0xb4, 0xee, 0x5d, +0x9f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, +0x44, 0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/civen.png b/source/bitmaps/icons/civen.png new file mode 100644 index 0000000000000000000000000000000000000000..e392f24c0010e203c1c26e7f79849c0bb347c61f GIT binary patch literal 1293 zcmV+o1@iidP)WFU8GbZ8()Nlj2>E@cM*00ePKL_t(Y$HkUSXk1kk z$A9O(XOlLGX-Ge&VoIsBF&MEL@N;KDTu2LnxY4?C&pW?d($+CxJ&UAy~+vwx%6*;$sCmq`K1vW%}zokD^jB8UV+X#FG*l0XOvNg7C! zlq3YwG$l<_k|ZIE5seXzidrP9Vrr-wZibp+uDCgFj^QjXEdh|W(W^NE1OW*K){0AT za1a+x|1u81gCE`5ypL-fJ&4HNV?wC1VO1ZQhM|Z_6fEX@9aFCG4^wM9) z*)h7iP#V8m?+GB=-;r<5{!Zn@lO-?Y?ss43fi^P1Km-@TgChtF)h`(t+S6s^z;L4{ zfYF`Z-pNkhhU3He%{}+RrXEn$JOL3T2<}3#!0_O%4Mz5C-_jGn>d3tfd;L0yxr00A zM#%v=006W6_5uVK5W&Pa|K6v(`NdTR2L=d9LYgF;|9l@Gp1n=~)@}6n^;50hr_pF| z^6g!`a^_F67;!V2&5Z9pnB=XQYk*@8w1BiJv^`*Im@1}9R7F+M7#Zk;G)ZV?k!IGU z*~}Q|gJ!dd#t1lSO0(H)?PnbOagHpDWLd7Sro@wi}AZW4Y02Rv3?}4D~@4 zbK}{G3F@C6;K&I4{qbYeYjxa=+G?HE)m4W2;GGMXI65`OyYoL`mg{SbsOI0b*5x+j zK&KNr(CKK~wm|yFbNS+Rc;w1hadzvY-F$s`U$OrF)iWHOnkv?xeDf_--sh#*GU(mk zcK1>asC8v$9wz67H-NjPtbTs63&e|uM>~fXPXOnN<+GDdarN2)F-8RNR*sb^Er-B6 zmho1y+}!>HY+tAKT1oz`BOclb+_?q7Gy5I~;N`tzXjG&X>>Pp=j_9g_yhZ^x@`!W~ z$%%=H2Oc)puU{|Zs1dPz&d^G{kR+Wd$futbm7oRho{05&ow>O==H})Kxy;M*`pK$l zsC6n~lRltDmvZY2jcT=8{JB=Ek!2ZEQ&WXp=0G8r^&TA_CImxV2ok!+b|{Cy%&^$G zy{b{G)rw!E(O`0NlKJ_08jS|kYPI0&_sV*vibn17@TQ&6TjR3bx6Q1}ooj1rd9ock z#M;_g7jK`p_sV*zN)i&3e9%eo-T=(36^0x@rBY#WaS?!pg@uQHbB*mCD|(E0fFOv= zMgYZw!P*1E&=#OdrNWIHHy+yf`1m-khP6vj90&yI2Cyn3+ss|sFBtcBBIZEcohSD1 zCz@eVi57FNikgxp`O_>(6Vi|p(u5=g%p5R+00tq1*3b)`HzjcA^5x4T(n(DR#Jw0< z((6ImYwtm6X=#ZR7+qOeDR&%MZ}>l;3~0>E%nbblsYX4fwC-J>00000NkvXXu0mjf DzEES- literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/nossl.cpp b/source/bitmaps/icons/nossl.cpp new file mode 100644 index 0000000..f2d6a19 --- /dev/null +++ b/source/bitmaps/icons/nossl.cpp @@ -0,0 +1,60 @@ +#include + +#ifndef ICONS_NOSSL_CPP +#define ICONS_NOSSL_CPP + +static unsigned char icons_nossl_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x09, 0x2d, 0xa1, +0x51, 0x39, 0x7b, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x00, 0xf8, +0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xad, 0x52, +0x31, 0x8a, 0x85, 0x30, 0x14, 0x9c, 0xac, 0x5b, +0x29, 0xd8, 0x59, 0xa6, 0xf5, 0x02, 0xa9, 0x3c, +0x86, 0xa7, 0x10, 0x3c, 0x90, 0xe0, 0x29, 0x3c, +0x82, 0xa5, 0x47, 0x10, 0x6c, 0x83, 0x84, 0x20, +0x04, 0x0c, 0x2a, 0x68, 0x93, 0xad, 0x94, 0x9f, +0xef, 0x13, 0xfe, 0xb2, 0x3b, 0x4d, 0xc8, 0xbc, +0x79, 0x93, 0x49, 0x5e, 0x80, 0x3f, 0x82, 0x51, +0xe4, 0xba, 0xae, 0x8e, 0xe2, 0xa3, 0x28, 0xba, +0xe9, 0xbf, 0xdf, 0x09, 0x6b, 0xad, 0xeb, 0xfb, +0x9e, 0x3c, 0xcd, 0x5a, 0xeb, 0xe2, 0x38, 0x66, +0x8f, 0x09, 0xa6, 0x69, 0x72, 0xc3, 0x30, 0x00, +0x00, 0xd2, 0x34, 0xf5, 0x9a, 0x5f, 0xf9, 0x24, +0x49, 0xd8, 0x2d, 0x81, 0x94, 0xd2, 0xb5, 0x6d, +0x0b, 0x00, 0xc8, 0xb2, 0xcc, 0x13, 0x9d, 0xf5, +0xae, 0xeb, 0x30, 0x8e, 0x23, 0xa4, 0x94, 0x8e, +0x73, 0xce, 0x00, 0xe0, 0xeb, 0x14, 0x1c, 0xc7, +0x01, 0x00, 0x10, 0x42, 0xe0, 0x2c, 0xbe, 0x82, +0x73, 0xce, 0x84, 0x10, 0x9e, 0xd6, 0x33, 0x30, +0xc6, 0x40, 0x6b, 0x0d, 0x63, 0xcc, 0xe3, 0x8b, +0x53, 0x9a, 0xcb, 0x60, 0xdb, 0x36, 0x6f, 0xa5, +0x40, 0x69, 0xae, 0xa8, 0x4d, 0xd3, 0xb8, 0xdf, +0xcc, 0x3f, 0xcf, 0x73, 0x76, 0x1b, 0x23, 0xe7, +0xfc, 0xa3, 0x66, 0x29, 0x25, 0xfd, 0x0f, 0xf6, +0x7d, 0xf7, 0x84, 0x45, 0x51, 0x00, 0x00, 0xea, +0xba, 0x7e, 0x34, 0xbb, 0x0c, 0x94, 0x52, 0x08, +0xc3, 0x90, 0x14, 0x2d, 0xcb, 0xe2, 0xed, 0x95, +0x52, 0x74, 0x82, 0x79, 0x9e, 0x49, 0x83, 0x27, +0xfe, 0x66, 0xa0, 0xb5, 0x26, 0xaf, 0xf0, 0xce, +0x07, 0x41, 0x40, 0x7f, 0xe5, 0xaa, 0xaa, 0x3e, +0x9a, 0x44, 0x59, 0x96, 0x0c, 0xff, 0x85, 0x1f, +0xd1, 0x46, 0x75, 0x8a, 0x55, 0xb0, 0xf8, 0x3b, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/nossl.png b/source/bitmaps/icons/nossl.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6cab9232618ac0172b4fe17adf6ec2b12c6d6e GIT binary patch literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqkGueYC1wPreuJ6%eja@JI-{;I;`}+4h zo3l}`A6caJb1us)I&8qeaLMHBtoWZQo;P$Gr(D{a%gu0N(;4BpU)Q}h=u=)YrLXuL z!-Ll%GRGMi1e_k|>}x7M*CH_Qnz6w#hiu;DGmpE2XPr*CZI-{(A#>dd-^)AhpRqq* zTqdpj{LkVvP1V2r-)g_NxCSyXyxLV~vYTg05Xa#OBD$v^y`36V(o{LmvswLL+JdcW r>pz@hcXX(Kx@wi(ESJb>JpWteFS?a>g>Lv^4GJ7jS3j3^P6 + +#ifndef ICONS_OFFLINE_CPP +#define ICONS_OFFLINE_CPP + +static unsigned char icons_offline_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x0d, 0x2f, 0x2b, +0x33, 0x9d, 0x53, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x18, +0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xc5, 0x93, +0x31, 0x4b, 0x03, 0x41, 0x10, 0x85, 0xbf, 0x0b, +0xe9, 0xce, 0x80, 0x20, 0x5e, 0x23, 0xc7, 0x81, +0x62, 0x21, 0xdc, 0x1f, 0x10, 0xaf, 0xb3, 0x48, +0x63, 0x65, 0x69, 0x29, 0xd8, 0x89, 0x90, 0x14, +0x69, 0x52, 0x8a, 0x8d, 0xe0, 0xd9, 0x58, 0x08, +0x76, 0x16, 0x69, 0xd3, 0xd8, 0x44, 0xc8, 0x0f, +0xb0, 0xdf, 0x4e, 0x14, 0xae, 0x08, 0xa8, 0xac, +0x44, 0x36, 0x7b, 0x2a, 0x26, 0xba, 0x76, 0x4b, +0xce, 0x04, 0xef, 0x14, 0xc1, 0xe9, 0xde, 0xdb, +0x99, 0x37, 0x6f, 0x98, 0x1d, 0xf8, 0xef, 0x70, +0xf2, 0x12, 0x92, 0x24, 0x31, 0xd3, 0xf8, 0x20, +0x08, 0x1c, 0x80, 0x72, 0x9e, 0x80, 0x31, 0x86, +0xbd, 0xf3, 0x43, 0xde, 0xaf, 0x12, 0x00, 0x76, +0xb7, 0x96, 0x58, 0x59, 0xab, 0xdb, 0xf7, 0x52, +0x9e, 0x80, 0xd6, 0xda, 0x16, 0x03, 0x9c, 0xb4, +0x6e, 0xd0, 0x5a, 0x5b, 0x9c, 0x71, 0x20, 0x84, +0x98, 0x03, 0xe4, 0x18, 0x35, 0xa3, 0x94, 0x9a, +0x10, 0x1d, 0xe7, 0xbe, 0x8e, 0x20, 0x17, 0x67, +0xbb, 0x16, 0xdc, 0x3e, 0xad, 0x6b, 0xa5, 0x14, +0xbe, 0xef, 0x17, 0x16, 0xe0, 0xae, 0x1b, 0x73, +0x74, 0xfa, 0x48, 0x7b, 0xb5, 0xcd, 0xe5, 0x36, +0x48, 0x29, 0x89, 0xa2, 0x28, 0xdb, 0x45, 0xca, +0xe9, 0x5b, 0x10, 0x42, 0x98, 0x34, 0x4d, 0x2d, +0x76, 0x5d, 0x97, 0x30, 0x0c, 0xbf, 0xdd, 0x54, +0xe9, 0xcf, 0x3f, 0x46, 0x35, 0xae, 0x99, 0xc6, +0x7d, 0xc7, 0x54, 0xe3, 0x9a, 0x29, 0x92, 0x3f, +0xe1, 0xa0, 0xe2, 0x7b, 0xbc, 0xf4, 0x07, 0x54, +0x7c, 0x8f, 0x5f, 0x09, 0xfc, 0x34, 0xca, 0x00, +0x9b, 0xad, 0x7d, 0x6b, 0x77, 0x7e, 0x39, 0x60, +0xf4, 0xfa, 0xc6, 0xc7, 0x70, 0x54, 0xec, 0x16, +0x36, 0xce, 0x9a, 0xc6, 0x0b, 0x16, 0x32, 0xe4, +0x43, 0xd2, 0xe3, 0x62, 0xe7, 0xc0, 0x29, 0xe4, +0x60, 0x38, 0x78, 0x06, 0xa0, 0x27, 0xae, 0x2d, +0xd9, 0xa9, 0x1f, 0x3b, 0x45, 0x47, 0xf8, 0x04, +0xbd, 0xca, 0x61, 0xc4, 0x36, 0x02, 0xb9, 0xe9, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/offline.png b/source/bitmaps/icons/offline.png new file mode 100644 index 0000000000000000000000000000000000000000..31eacdfb58a628b2bbb76231d7187d4f889cae42 GIT binary patch literal 436 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqkGue{zP9n)V4#p}W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<3fz`!Ws>Eak-ar)?FLvLnBf!6)pFV8h7#3>(dOj5ifFR*^I zM{;VW=8et?BAG#5y$^0iaFmHk*jZi51Q9-?UoqxoGp15 zqN3*%DzwaCej;JIc*-mR+2{NE6vWeai`}tXo4r(I-+OVf2kWGZOMZD&Z$10e%tNzt zk;ZM;Q!k?hoMxE#>XyY$H{jWSH{|7cdpFZ{Gmq6C4|zOGbCUhT1&^xtd|?l%>5u39 zV{(dN_S)L)@;b|eFTai*F9>-fW_E7YF>W!VC(f51Cp|x)`6R)jf^C8NI^CNq<*i-a af3WO5m3YLAY3EB&;CZ_GxvX + +#ifndef ICONS_ONLINE_CPP +#define ICONS_ONLINE_CPP + +static unsigned char icons_online_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x0d, 0x23, 0x22, +0x85, 0xd1, 0x78, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x00, 0xf2, +0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xc5, 0x92, +0x4f, 0x0e, 0x01, 0x31, 0x14, 0xc6, 0xbf, 0x62, +0x21, 0x48, 0x70, 0x01, 0xb3, 0x9d, 0xc4, 0x0d, +0x9c, 0xc1, 0x11, 0xba, 0x15, 0x6b, 0x11, 0x7b, +0x37, 0x60, 0x6f, 0xe9, 0x10, 0x6e, 0x60, 0x6f, +0x21, 0x99, 0x48, 0x2c, 0x66, 0x25, 0x92, 0x49, +0x63, 0xaa, 0x9a, 0x61, 0x8c, 0x5a, 0xa0, 0x22, +0x53, 0xea, 0xcf, 0xc2, 0x4b, 0xba, 0xe8, 0xd7, +0xf7, 0x7e, 0x7d, 0xfd, 0xfa, 0x80, 0x7f, 0x07, +0xb1, 0x25, 0xf8, 0xbe, 0xaf, 0x4c, 0xba, 0xe3, +0x38, 0x04, 0x00, 0x32, 0x36, 0x80, 0x52, 0x0a, +0xed, 0x78, 0x02, 0xc6, 0x18, 0x18, 0x63, 0xa8, +0x89, 0x2e, 0x94, 0xba, 0x33, 0x73, 0x36, 0x80, +0x10, 0x02, 0xc7, 0x52, 0x1e, 0xbd, 0xea, 0xec, +0xaa, 0x34, 0x31, 0x14, 0x42, 0x9f, 0x5b, 0x3b, +0xe0, 0x9c, 0x63, 0xb7, 0x5c, 0x61, 0x57, 0x24, +0x97, 0xb5, 0x5c, 0x81, 0x73, 0xfe, 0x19, 0x40, +0xae, 0x99, 0xde, 0xcb, 0x35, 0xfb, 0x0c, 0x10, +0x04, 0xc1, 0xdd, 0x8f, 0x38, 0x49, 0x69, 0x56, +0x00, 0xa5, 0x94, 0x9c, 0xa2, 0x83, 0x2e, 0x3e, +0x45, 0x07, 0x50, 0x4a, 0xc9, 0xdb, 0x26, 0xea, +0xff, 0xde, 0xee, 0x8d, 0x7a, 0xe6, 0xd7, 0x41, +0x7a, 0xe8, 0xc0, 0x1d, 0xb4, 0x8c, 0x43, 0x53, +0xac, 0xd7, 0x2e, 0x1e, 0x6c, 0x24, 0xe2, 0x50, +0x9a, 0x27, 0xd1, 0x1d, 0xb4, 0x54, 0xa5, 0xe1, +0xbe, 0xbc, 0x6d, 0x33, 0xf5, 0xe0, 0x75, 0x46, +0x24, 0x05, 0xf8, 0xb6, 0x58, 0x3f, 0x21, 0x1b, +0x46, 0x48, 0x42, 0x89, 0x6c, 0xb9, 0x80, 0x24, +0x94, 0x90, 0xd3, 0x45, 0x0a, 0xe0, 0xf5, 0xc7, +0xc4, 0xea, 0xc1, 0xad, 0x78, 0xfe, 0x24, 0xd9, +0x14, 0x67, 0xc1, 0x7a, 0x73, 0x35, 0xee, 0x14, +0xfb, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, +0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/online.png b/source/bitmaps/icons/online.png new file mode 100644 index 0000000000000000000000000000000000000000..2832c46939e615f32add3b64bc2a87bc7cb40436 GIT binary patch literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqkGue{vQq2C3ZRf|W=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6#wMu;uvCa`sgHoK1M^4WBZd7Jqj2%&ppCB=b+#&(QLtL z^Mw4D0(lAfiZeZQ(o`pTCa;>6*b}utDfrd-L*BbyT>oBI`}bEvJ^M!0AN$t(?0Rg$ z!eC_95XAMig6WuqMDmJGy(znli_IDYn2ra@?S1uTm5HH<)BI@b2Xm6Q$0UZUOy3&Q zSo}}YVcpDor%iwJ2(TQy+i&5S8OE@5%A7^bdUmet0bVC>tG)Vv?_F=zv+IskFAm6V z>2VHTb6rm^N99q#EcJ`BTSAsT+_xv!`0ImGHx + +#ifndef ICONS_SSL_CPP +#define ICONS_SSL_CPP + +static unsigned char icons_ssl_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x0a, 0x13, 0x4b, +0x1d, 0x77, 0x13, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x07, +0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0x63, 0x60, +0xa0, 0x10, 0x30, 0x62, 0x13, 0xfc, 0xf5, 0xfd, +0xf9, 0x7f, 0x6c, 0xe2, 0x6c, 0x9c, 0x92, 0x18, +0xea, 0x59, 0xd0, 0x05, 0x7e, 0x7e, 0xb9, 0xf7, +0xff, 0xd5, 0xcd, 0x2e, 0xac, 0xb6, 0xfd, 0xfc, +0x72, 0xef, 0x3f, 0x3b, 0x8f, 0x12, 0x23, 0x4e, +0x17, 0x7c, 0x7d, 0x7b, 0xea, 0xff, 0xeb, 0xbb, +0x93, 0x19, 0x18, 0x18, 0x18, 0x18, 0x44, 0x95, +0x73, 0x51, 0x34, 0x23, 0x8b, 0x73, 0x0b, 0x9b, +0x61, 0xba, 0xfc, 0xe3, 0xb3, 0x2d, 0xff, 0xcf, +0x6e, 0x50, 0xfb, 0x7f, 0x76, 0x83, 0xda, 0xff, +0x8f, 0xcf, 0xb6, 0xfc, 0x27, 0x56, 0x9e, 0x09, +0xc6, 0xf8, 0xf3, 0xfb, 0x03, 0x03, 0x03, 0x03, +0x03, 0x83, 0x82, 0x61, 0x1d, 0x03, 0xbf, 0x94, +0x0f, 0x86, 0x0d, 0xfc, 0x52, 0x3e, 0x8c, 0x0a, +0x86, 0x75, 0x28, 0x6a, 0x51, 0x0c, 0xf8, 0xf6, +0xee, 0x14, 0xc3, 0xe3, 0x17, 0xbf, 0x19, 0xbe, +0xbd, 0x3b, 0x85, 0x33, 0xc4, 0xb1, 0xa9, 0x81, +0x1b, 0xf0, 0xfb, 0xfb, 0x53, 0x14, 0x1a, 0x1b, +0xc0, 0xa6, 0x06, 0xee, 0xd4, 0x4b, 0x5b, 0xd5, +0xff, 0x93, 0x12, 0xff, 0x7a, 0xde, 0x37, 0x19, +0x31, 0xa2, 0x51, 0x48, 0xda, 0x8b, 0x28, 0xcd, +0xef, 0x9e, 0x6e, 0xc3, 0x9e, 0x0e, 0xfe, 0xfc, +0x7a, 0x83, 0xa2, 0x30, 0x3c, 0x75, 0x2d, 0x03, +0x03, 0x03, 0x03, 0xc3, 0xca, 0xd9, 0xc1, 0x38, +0x0d, 0x83, 0x1b, 0xf0, 0xe8, 0xd9, 0x2f, 0x06, +0x35, 0xce, 0x3b, 0x58, 0x15, 0xfd, 0xfa, 0x82, +0x2a, 0xfe, 0xe8, 0xd9, 0x2f, 0xec, 0x2e, 0xf8, +0xfc, 0xe9, 0x2d, 0x56, 0x03, 0x70, 0x89, 0x63, +0x18, 0xf0, 0xf8, 0xc5, 0x6f, 0x14, 0xc9, 0xca, +0x4c, 0x71, 0xac, 0xe2, 0x2c, 0xcc, 0x38, 0x92, +0xf2, 0x96, 0xd9, 0x8a, 0x44, 0xc5, 0x84, 0x4f, +0xea, 0x7d, 0x46, 0x06, 0x6a, 0x01, 0x00, 0x9d, +0x30, 0x7b, 0x4d, 0x6a, 0xf4, 0x5c, 0x16, 0x00, +0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, +0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/ssl.png b/source/bitmaps/icons/ssl.png new file mode 100644 index 0000000000000000000000000000000000000000..6db2227f9766fac50131764031f982da6591d90f GIT binary patch literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqkGuevu(xbEP>w-1GbEzKIX^cyHLnE7WngeFN=+Kwe%l}Quz8%vetiDT3teY3vAh=Ib&)78&qol`;+04TVq A-~a#s literal 0 HcmV?d00001 diff --git a/source/bitmaps/icons/sslwarning.cpp b/source/bitmaps/icons/sslwarning.cpp new file mode 100644 index 0000000..a255aa9 --- /dev/null +++ b/source/bitmaps/icons/sslwarning.cpp @@ -0,0 +1,71 @@ +#include + +#ifndef ICONS_SSLWARNING_CPP +#define ICONS_SSLWARNING_CPP + +static unsigned char icons_sslwarning_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, +0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, +0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, +0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, +0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, +0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, +0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, +0x07, 0xde, 0x0c, 0x1f, 0x10, 0x0a, 0x1b, 0x45, +0xc6, 0xff, 0x21, 0x00, 0x00, 0x00, 0x1d, 0x69, +0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, +0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, +0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, +0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, +0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x52, +0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xa5, 0x93, +0xcb, 0x4a, 0x42, 0x51, 0x14, 0x86, 0xbf, 0xdd, +0xc5, 0xb2, 0x02, 0xa9, 0x10, 0xd1, 0x26, 0x5a, +0xa0, 0x83, 0x48, 0x70, 0x60, 0x8f, 0xd0, 0x20, +0x1d, 0x34, 0xeb, 0x09, 0x1c, 0xf6, 0x0a, 0x3e, +0x40, 0xd3, 0x86, 0x3e, 0x43, 0x60, 0xa0, 0x3d, +0x84, 0xe2, 0x20, 0x1b, 0x19, 0x65, 0x90, 0x78, +0xd2, 0x4a, 0x53, 0x30, 0xe5, 0x78, 0x61, 0x35, +0x31, 0x69, 0x7b, 0xce, 0xa1, 0xa2, 0x35, 0xd9, +0x9b, 0xb5, 0xff, 0xf5, 0xff, 0x6b, 0xaf, 0x0b, +0xfc, 0xd3, 0x94, 0x9d, 0x73, 0x38, 0x78, 0x16, +0x3b, 0xbf, 0xcb, 0xed, 0xb7, 0xe0, 0x97, 0xe6, +0x1d, 0x66, 0xaf, 0x2a, 0x2f, 0x95, 0x73, 0x5b, +0x35, 0xb3, 0x57, 0x95, 0x95, 0x8d, 0x5d, 0xe5, +0x98, 0xc1, 0x47, 0xab, 0x20, 0xaf, 0x0f, 0x17, +0x00, 0x78, 0xf7, 0xce, 0xb4, 0xe0, 0xef, 0xfe, +0xf5, 0xed, 0x43, 0x6b, 0xe6, 0x5d, 0x23, 0x27, +0xa5, 0x6c, 0x58, 0x4a, 0xd9, 0xb0, 0x74, 0x8d, +0x9c, 0xfc, 0xf6, 0x7d, 0xe1, 0xeb, 0x32, 0x1e, +0x75, 0x00, 0x08, 0xc6, 0xd2, 0x78, 0x02, 0x49, +0x8b, 0x82, 0x27, 0x90, 0x54, 0xc1, 0x58, 0x5a, +0xc3, 0x6a, 0x04, 0xfd, 0x76, 0x81, 0x5a, 0x63, +0x44, 0xbf, 0x5d, 0x70, 0xac, 0xb8, 0x1d, 0x66, +0x46, 0x30, 0x1a, 0xd4, 0xb5, 0x73, 0xde, 0x04, +0xc4, 0x0e, 0x33, 0x4b, 0xb5, 0x9c, 0x8f, 0x88, +0x93, 0xf2, 0x41, 0xa2, 0x02, 0x22, 0xa0, 0x14, +0xb7, 0xf9, 0x08, 0x00, 0xd1, 0x44, 0x45, 0x59, +0xda, 0xb8, 0xb5, 0x73, 0x6c, 0x4b, 0xd0, 0xa4, +0x82, 0x0f, 0x68, 0x4e, 0x31, 0xed, 0xfa, 0xb5, +0xfd, 0x1c, 0x8c, 0x87, 0x6f, 0x5a, 0xe0, 0x69, +0xea, 0x92, 0xab, 0x9b, 0x3e, 0x3e, 0x11, 0x94, +0x52, 0x88, 0x08, 0x4d, 0xa5, 0x60, 0x9a, 0x85, +0x46, 0xf0, 0x64, 0x0c, 0x09, 0xbb, 0xef, 0x2d, +0xea, 0x2d, 0x60, 0x62, 0x18, 0x00, 0x18, 0x86, +0x41, 0x67, 0x8a, 0xb5, 0xd4, 0x20, 0x97, 0x09, +0x89, 0xdf, 0xbb, 0xac, 0x05, 0xaf, 0x9e, 0xdc, +0x31, 0x29, 0x97, 0x2d, 0xa4, 0x8b, 0xd1, 0x28, +0xfb, 0xd3, 0x58, 0xed, 0x0b, 0xb5, 0xc6, 0x48, +0x03, 0xae, 0x01, 0x9b, 0xa6, 0x09, 0x40, 0x3c, +0x1e, 0xa7, 0x58, 0x2c, 0x02, 0xf0, 0xee, 0x34, +0xca, 0xb9, 0x4c, 0x68, 0xd6, 0x09, 0x57, 0xea, +0xf1, 0xc7, 0x4d, 0x3c, 0x72, 0x58, 0xc6, 0x3f, +0xd9, 0x27, 0x66, 0x7e, 0x95, 0x5e, 0x15, 0x2f, +0x4c, 0x81, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, +0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/icons/sslwarning.png b/source/bitmaps/icons/sslwarning.png new file mode 100644 index 0000000000000000000000000000000000000000..d22af5f306d740fc2dd5fc6f540236f302f17b8e GIT binary patch literal 494 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPqkGuevwCl0|ia;UR%#er@=ltB<)VvZPmw~~#C^fMp zHASI3vm`^o-P1Q9MK6_|fq^l|)5S5w;`GwVr@fp4McVe?J-Uf$rNBkCs0Ga)1quBZ z6l6_abIN?;0$SZhtWSnQYp6E&Zv*(WaZjr%vsSeLCZy`)Y;t{NfB1-_LD%@c!S| zx6awmVwKgG=0tei+)&ax=g+s=hp&y~N*OqgU8-R6>~2z@5OOdg>Tnjz-?GN2WS9N1 z1#5Q5rnwnNUD;ZEkL3uTvG>+F{T-7(IWA&SS|GChCkMkt7uU#JJGK_*cwbo3#Gm13 z`1aSB%f@6v=>t!^JucsO^z*L|g%kR-t%(dL-mwe^a^ zbk5HEyVtO;pLfSlbGq)5?u#0~FGsxP-g?Y~c^%{IWt + +#ifndef MISC_H +#define MISC_H + +// List all CPP files in the directory. + +#include "misc/emptyimage.cpp" +#include "misc/activity3.cpp" +#include "misc/activity11.cpp" +#include "misc/activity2.cpp" +#include "misc/activity8.cpp" +#include "misc/activity4.cpp" +#include "misc/activity10.cpp" +#include "misc/activity6.cpp" +#include "misc/activity12.cpp" +#include "misc/activity9.cpp" +#include "misc/activity7.cpp" +#include "misc/activitysleep.cpp" +#include "misc/activity5.cpp" +#include "misc/activity1.cpp" + +#endif + diff --git a/source/bitmaps/misc/.directory b/source/bitmaps/misc/.directory new file mode 100644 index 0000000..415dd27 --- /dev/null +++ b/source/bitmaps/misc/.directory @@ -0,0 +1,4 @@ +[Dolphin] +PreviewsShown=true +Timestamp=2013,10,2,20,18,2 +Version=3 diff --git a/source/bitmaps/misc/activity1.cpp b/source/bitmaps/misc/activity1.cpp new file mode 100644 index 0000000..90a111d --- /dev/null +++ b/source/bitmaps/misc/activity1.cpp @@ -0,0 +1,554 @@ +#include + +#ifndef MISC_ACTIVITY1_CPP +#define MISC_ACTIVITY1_CPP + +static unsigned char misc_activity1_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x7f, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0x6b, +0x6c, 0x1c, 0xd7, 0x75, 0xc7, 0x7f, 0xf7, 0xce, +0xec, 0xec, 0x93, 0xfb, 0xe0, 0x6b, 0x49, 0x51, +0xa4, 0x28, 0xcb, 0x95, 0x28, 0x3f, 0x44, 0x0b, +0x96, 0x8c, 0xd8, 0x96, 0x63, 0x05, 0x6e, 0x6a, +0xd5, 0x68, 0x6c, 0xd9, 0x09, 0xd2, 0x24, 0x30, +0x82, 0x02, 0x6d, 0xed, 0x20, 0x9f, 0x12, 0xf4, +0x53, 0x80, 0x7c, 0xe8, 0xf7, 0xa2, 0x40, 0x8b, +0x36, 0x48, 0xdc, 0x06, 0x68, 0x91, 0xc8, 0xb5, +0xd3, 0x04, 0x88, 0x53, 0x5b, 0x51, 0x1b, 0xca, +0xb0, 0x21, 0x38, 0x55, 0x6a, 0x9b, 0x92, 0xe5, +0xda, 0xb2, 0x2d, 0x4a, 0x24, 0xf5, 0xa0, 0x24, +0x3e, 0x24, 0x8a, 0xbb, 0xdc, 0xe5, 0xce, 0xbb, +0x1f, 0x66, 0x67, 0x39, 0xbb, 0xdc, 0xe5, 0xee, +0x8a, 0x74, 0xd2, 0xa2, 0x07, 0x38, 0x98, 0x7d, +0xdc, 0x99, 0xb9, 0xe7, 0x7f, 0x1e, 0xf7, 0xde, +0x73, 0xcf, 0x15, 0xae, 0xeb, 0xf2, 0x69, 0x92, +0x10, 0x42, 0x34, 0xfa, 0xab, 0xce, 0x6f, 0x6b, +0x3a, 0xe3, 0x7e, 0xca, 0x1d, 0x54, 0x3f, 0x8d, +0x87, 0xd6, 0x08, 0x2d, 0x1a, 0x5c, 0x1b, 0x91, +0x1b, 0xbc, 0xd6, 0xe2, 0xb7, 0xd9, 0x80, 0x88, +0xcd, 0x7a, 0x5e, 0x1d, 0xa1, 0x45, 0xcd, 0x67, +0x59, 0xe7, 0xb7, 0x20, 0x05, 0x05, 0x5f, 0x8f, +0xbd, 0x46, 0x9b, 0xd4, 0xf1, 0x0d, 0x5b, 0x40, +0x03, 0xc1, 0x65, 0xe0, 0x5a, 0x8f, 0x05, 0xd5, +0x20, 0xf8, 0xc2, 0x38, 0xe5, 0xcf, 0x4e, 0x03, +0xae, 0x00, 0xe1, 0xbf, 0x76, 0xa3, 0x40, 0x6c, +0x08, 0x80, 0x80, 0xf0, 0xb5, 0x42, 0x2b, 0x01, +0x56, 0xcb, 0xac, 0xd4, 0x70, 0xad, 0x15, 0x04, +0x05, 0xb5, 0x00, 0xbb, 0xce, 0xd5, 0xa6, 0x06, +0x8c, 0x8d, 0x02, 0x71, 0x5b, 0x2e, 0x50, 0x23, +0x78, 0xad, 0xd0, 0x2a, 0x10, 0x0a, 0xb0, 0x56, +0x66, 0xff, 0xbb, 0x0f, 0x48, 0xd0, 0x12, 0x7c, +0xad, 0xfb, 0xc2, 0x9a, 0x65, 0x36, 0x6a, 0xae, +0x3e, 0xd7, 0x03, 0xe3, 0xb6, 0x40, 0x68, 0xdb, +0x02, 0x02, 0xc2, 0xfb, 0x02, 0x04, 0xb5, 0xac, +0x01, 0xe1, 0x32, 0x47, 0xca, 0x1c, 0x0d, 0x7c, +0xf7, 0xc1, 0xf0, 0x2d, 0xc2, 0x07, 0x20, 0xa8, +0x79, 0x5f, 0x60, 0xbd, 0xcc, 0x25, 0x60, 0xa5, +0x7c, 0x2d, 0x95, 0x7f, 0xf3, 0x01, 0xf1, 0x2d, +0xc3, 0xa1, 0x6c, 0x0d, 0xed, 0x82, 0xd0, 0x16, +0x00, 0x65, 0xe1, 0x7d, 0xf6, 0x35, 0xee, 0x6b, +0xd9, 0x17, 0x38, 0x06, 0xc4, 0x03, 0x1c, 0x03, +0x62, 0xbd, 0xbd, 0xbd, 0x03, 0x03, 0x03, 0x03, +0x23, 0x91, 0x48, 0xa4, 0x33, 0x12, 0x89, 0xa4, +0x35, 0x4d, 0x4b, 0x6a, 0x9a, 0x96, 0x94, 0x52, +0x86, 0x0c, 0xc3, 0xc8, 0x1b, 0x86, 0x91, 0xd3, +0x75, 0xfd, 0x96, 0xae, 0xeb, 0x8b, 0xb7, 0x6e, +0xdd, 0xba, 0x72, 0xe1, 0xc2, 0x85, 0x8f, 0x1c, +0xc7, 0x29, 0x00, 0x45, 0xa0, 0x10, 0xe0, 0x62, +0x00, 0x10, 0xbd, 0x16, 0x88, 0x76, 0x5d, 0xa2, +0x65, 0x17, 0x08, 0x08, 0xef, 0x9b, 0xbb, 0xaf, +0x71, 0x5f, 0xcb, 0x71, 0xa0, 0xa3, 0xcc, 0x49, +0xa0, 0x63, 0x68, 0x68, 0x68, 0xd7, 0xe0, 0xe0, +0xe0, 0xbe, 0xee, 0xee, 0xee, 0xbb, 0x63, 0xb1, +0x58, 0xb6, 0xa5, 0x17, 0x95, 0xc9, 0xb2, 0xac, +0xe2, 0xe2, 0xe2, 0xe2, 0x27, 0xd7, 0xaf, 0x5f, +0x3f, 0x3d, 0x31, 0x31, 0xf1, 0x9e, 0xae, 0xeb, +0x37, 0x80, 0x1c, 0x90, 0x2f, 0xf3, 0x32, 0xab, +0x60, 0xf8, 0x16, 0x11, 0x74, 0x8b, 0x96, 0x40, +0x68, 0x09, 0x80, 0x3a, 0xc2, 0x87, 0xf0, 0xcc, +0x3a, 0x0a, 0x24, 0xca, 0x42, 0xa7, 0x81, 0x14, +0xd0, 0x79, 0xdf, 0x7d, 0xf7, 0x7d, 0x76, 0xc7, +0x8e, 0x1d, 0x87, 0x22, 0x91, 0x48, 0x97, 0xff, +0x0c, 0xc5, 0x54, 0xc9, 0xcc, 0x75, 0x12, 0x59, +0x8e, 0xa2, 0x95, 0x34, 0x42, 0xba, 0x86, 0x56, +0x0a, 0x23, 0x6d, 0x89, 0x19, 0x31, 0x30, 0xc2, +0x06, 0x46, 0x44, 0xc7, 0x88, 0xea, 0xdc, 0xea, +0x5d, 0xa4, 0x14, 0x5f, 0xa9, 0xbc, 0xdf, 0x71, +0x1c, 0xf3, 0xda, 0xb5, 0x6b, 0xbf, 0x19, 0x1f, +0x1f, 0x7f, 0x35, 0x9f, 0xcf, 0x5f, 0x05, 0x16, +0x81, 0xa5, 0x00, 0x20, 0x45, 0x56, 0x5d, 0xc3, +0x6a, 0x07, 0x84, 0xa6, 0x00, 0xd4, 0x08, 0xef, +0x07, 0xb8, 0x08, 0xab, 0x1a, 0x4f, 0x01, 0x9d, +0x40, 0xe7, 0xc8, 0xc8, 0xc8, 0x67, 0x76, 0xef, +0xde, 0xfd, 0x64, 0x3c, 0x1e, 0xef, 0x07, 0x08, +0x95, 0x34, 0x32, 0xd7, 0x3b, 0xc9, 0x5c, 0xed, +0x26, 0xb9, 0x90, 0x42, 0x38, 0xcd, 0xe6, 0x40, +0xab, 0xb4, 0xd2, 0x51, 0x64, 0x71, 0xcb, 0x0d, +0x16, 0xfb, 0x6f, 0x50, 0x48, 0x2f, 0x03, 0x60, +0xdb, 0xb6, 0x7e, 0xf9, 0xf2, 0xe5, 0x37, 0xde, +0x79, 0xe7, 0x9d, 0xa3, 0xba, 0xae, 0xcf, 0x02, +0x37, 0xcb, 0x60, 0xe4, 0xf0, 0xdc, 0x63, 0xa5, +0x0c, 0x44, 0xcb, 0x20, 0xac, 0x0b, 0x40, 0x03, +0xe1, 0x7d, 0x73, 0x4f, 0x01, 0x19, 0xa0, 0x3b, +0x95, 0x4a, 0x0d, 0x3f, 0xfa, 0xe8, 0xa3, 0x7f, +0x96, 0x4e, 0xa7, 0x77, 0x7a, 0x82, 0x87, 0xe8, +0xff, 0x68, 0x2b, 0x5d, 0x97, 0x7a, 0x10, 0x6e, +0xeb, 0x42, 0x37, 0xa2, 0x62, 0xaa, 0xc0, 0xcc, +0x3d, 0x97, 0xc8, 0xf7, 0xe4, 0x00, 0x30, 0x4d, +0x33, 0x7f, 0xe6, 0xcc, 0x99, 0x23, 0x67, 0xcf, +0x9e, 0x3d, 0x09, 0x2c, 0x00, 0x37, 0xf0, 0x2c, +0x22, 0x68, 0x0d, 0x2d, 0x81, 0xd0, 0x10, 0x80, +0x3a, 0x66, 0xaf, 0xb1, 0x6a, 0xf2, 0x69, 0xa0, +0x0b, 0xe8, 0x19, 0x1a, 0x1a, 0x1a, 0x7d, 0xf0, +0xc1, 0x07, 0x9f, 0x8b, 0x44, 0x22, 0x69, 0x69, +0x49, 0x7a, 0x26, 0xfa, 0xe9, 0x39, 0x9f, 0x45, +0xda, 0x72, 0xc3, 0x82, 0xd7, 0x52, 0x3e, 0xbb, +0xc4, 0xb5, 0xbb, 0xaf, 0x50, 0x4a, 0xae, 0x00, +0x38, 0xe7, 0xce, 0x9d, 0x3b, 0x7a, 0xf2, 0xe4, +0xc9, 0x57, 0x80, 0x39, 0x3c, 0x20, 0x16, 0x59, +0x0b, 0x82, 0x8d, 0x27, 0x7f, 0xeb, 0x00, 0xd4, +0x0c, 0x75, 0xf5, 0x84, 0xef, 0x01, 0x7a, 0x47, +0x47, 0x47, 0x1f, 0x1b, 0x1d, 0x1d, 0xfd, 0x9a, +0xa2, 0x28, 0x5a, 0x74, 0x31, 0xc6, 0xe0, 0x7f, +0x0d, 0xa3, 0x96, 0x42, 0x2d, 0x0b, 0xa4, 0x68, +0x0a, 0xe1, 0x54, 0x98, 0xe2, 0x7c, 0xb1, 0xe5, +0x7b, 0x10, 0x30, 0x3f, 0x72, 0x9d, 0xf9, 0x5d, +0xb3, 0x00, 0xcc, 0xce, 0xce, 0x8e, 0x8f, 0x8d, +0x8d, 0xfd, 0xd0, 0x34, 0xcd, 0xab, 0xc0, 0x3c, +0x9e, 0x5b, 0xe4, 0x58, 0x6b, 0x09, 0x75, 0x41, +0x58, 0x0f, 0x00, 0x7f, 0xa8, 0xf3, 0xcd, 0x3e, +0x41, 0xd9, 0xe4, 0x81, 0xbe, 0x87, 0x1f, 0x7e, +0xf8, 0x99, 0x9d, 0x3b, 0x77, 0x1e, 0x16, 0x42, +0x88, 0xe4, 0xe5, 0x34, 0xd9, 0xd3, 0x5b, 0xda, +0xf2, 0x71, 0x00, 0x2d, 0x1e, 0xe2, 0xd0, 0xdf, +0xfc, 0x01, 0xc7, 0xbf, 0xf3, 0x06, 0xc5, 0x85, +0x36, 0x40, 0x00, 0xf2, 0x5b, 0x72, 0x5c, 0xbf, +0x7f, 0x06, 0x57, 0x71, 0xc8, 0xe5, 0x72, 0x53, +0xaf, 0xbe, 0xfa, 0xea, 0x5f, 0xe9, 0xba, 0x7e, +0x05, 0xcf, 0x1a, 0x82, 0x20, 0x54, 0x02, 0x63, +0x3d, 0x00, 0xd6, 0xd8, 0x69, 0x1d, 0xbf, 0xf7, +0xb5, 0xdf, 0x81, 0x07, 0x40, 0xcf, 0xbd, 0xf7, +0xde, 0xfb, 0xd9, 0xdd, 0xbb, 0x77, 0x1f, 0x56, +0x14, 0x45, 0xf4, 0x9c, 0xcd, 0xd2, 0x7b, 0xba, +0x1f, 0x17, 0x17, 0x47, 0x3a, 0x6d, 0x73, 0x6a, +0x5b, 0x92, 0x43, 0x7f, 0xfb, 0x79, 0x22, 0x3d, +0x91, 0xb6, 0xee, 0x8b, 0x5f, 0x4f, 0x30, 0xf8, +0xd6, 0x30, 0x9a, 0xae, 0x91, 0x4e, 0xa7, 0xb7, +0x3f, 0xfe, 0xf8, 0xe3, 0xcf, 0x03, 0xbd, 0x78, +0x01, 0x39, 0x89, 0x37, 0xff, 0x08, 0xb3, 0x3a, +0xe9, 0x92, 0xf5, 0x96, 0xe6, 0x55, 0x00, 0xd4, +0x4c, 0x71, 0xfd, 0xb1, 0xde, 0x8f, 0xf8, 0x29, +0xa0, 0x6b, 0x70, 0x70, 0xf0, 0xee, 0xfd, 0xfb, +0xf7, 0x7f, 0x5d, 0x08, 0x21, 0x32, 0x1f, 0x77, +0x91, 0xb8, 0x90, 0xc2, 0x16, 0xf6, 0x6d, 0xb2, +0x83, 0x12, 0x56, 0xe8, 0xdc, 0x91, 0xe6, 0x0b, +0x2f, 0x3c, 0x41, 0xb8, 0x3b, 0xdc, 0xd6, 0xfd, +0x4a, 0x4e, 0xa5, 0xf7, 0xe4, 0x16, 0xa4, 0xad, +0x90, 0xcd, 0x66, 0x47, 0x0f, 0x1e, 0x3c, 0xf8, +0x25, 0x3c, 0xf7, 0xcc, 0x94, 0x15, 0x16, 0x2d, +0x2b, 0xb0, 0x32, 0xeb, 0xac, 0x05, 0xa1, 0x5e, +0xa4, 0xaa, 0x17, 0xf8, 0x3a, 0x80, 0x4c, 0x32, +0x99, 0x1c, 0xfc, 0xdc, 0xe7, 0x3e, 0xf7, 0x8d, +0x50, 0x28, 0x14, 0x8e, 0x5f, 0x4b, 0x90, 0x98, +0x48, 0xdd, 0x96, 0xd6, 0x2b, 0xac, 0x38, 0x48, +0x4d, 0xa2, 0x44, 0x54, 0x7a, 0x76, 0x75, 0xf3, +0xc5, 0x7f, 0x3a, 0x4c, 0xb8, 0x2b, 0xdc, 0xd6, +0x33, 0x94, 0x82, 0x4a, 0xd7, 0xa9, 0x5e, 0xa4, +0x90, 0xec, 0xdc, 0xb9, 0xf3, 0xf1, 0xbd, 0x7b, +0xf7, 0x7e, 0xb6, 0x81, 0x15, 0x04, 0x97, 0xe3, +0x15, 0xaa, 0x37, 0x15, 0x0e, 0x9a, 0x7f, 0xb8, +0xac, 0xfd, 0x24, 0xd0, 0xf9, 0xd8, 0x63, 0x8f, +0x7d, 0x3d, 0x16, 0x8b, 0x75, 0xa9, 0x4b, 0x21, +0x3a, 0xde, 0xcb, 0x60, 0x4b, 0xbb, 0xce, 0xed, +0x8d, 0x29, 0xd6, 0x19, 0xa3, 0x6b, 0x7b, 0x27, +0x89, 0xde, 0x38, 0xc9, 0xbe, 0x24, 0xe9, 0xa1, +0x34, 0x52, 0x95, 0xc8, 0x90, 0x44, 0x8d, 0xaa, +0xf4, 0xdd, 0xdd, 0xcb, 0x97, 0xff, 0xf9, 0x19, +0x5e, 0xfa, 0x93, 0x7f, 0x65, 0x65, 0xa9, 0xd4, +0xf2, 0x73, 0x43, 0x73, 0x1a, 0x1d, 0x1f, 0xa7, +0x58, 0xbe, 0x2b, 0x27, 0xf6, 0xdd, 0xbf, 0xef, +0xd9, 0xc9, 0xc9, 0xc9, 0x8f, 0x97, 0x96, 0x96, +0x8a, 0x54, 0xaf, 0x1d, 0xfc, 0x60, 0x28, 0x82, +0x6b, 0x86, 0x0a, 0x00, 0xcd, 0x86, 0xbd, 0x1d, +0x3b, 0x76, 0xdc, 0x93, 0xcd, 0x66, 0x47, 0x85, +0x2b, 0xe8, 0x78, 0x37, 0x8d, 0xeb, 0x38, 0xb4, +0x32, 0xc4, 0x4b, 0x55, 0xd2, 0x73, 0x67, 0x37, +0x43, 0xfb, 0x87, 0xe8, 0xbf, 0x3b, 0x4b, 0x38, +0x11, 0x46, 0x4b, 0x84, 0x09, 0x27, 0x34, 0xc2, +0xf1, 0x30, 0x2e, 0x2e, 0x42, 0x0a, 0x14, 0x55, +0xa2, 0x86, 0x55, 0xb2, 0x77, 0x65, 0xf9, 0xd2, +0x0f, 0x9e, 0xe6, 0x27, 0xcf, 0xff, 0x94, 0x52, +0x5e, 0x6f, 0x19, 0x84, 0xc8, 0xf9, 0x18, 0x46, +0x56, 0xc7, 0xec, 0x36, 0xc2, 0x07, 0x0e, 0x1c, +0x38, 0x7c, 0xf4, 0xe8, 0xd1, 0x17, 0x58, 0x5d, +0x3b, 0xf8, 0x6b, 0x06, 0x9b, 0x9a, 0xc4, 0x4a, +0xad, 0x05, 0xd4, 0x0b, 0x7e, 0x09, 0x20, 0xbd, +0x7f, 0xff, 0xfe, 0xa7, 0x15, 0x45, 0x11, 0xda, +0x64, 0x04, 0x56, 0x04, 0xb6, 0x74, 0x9a, 0x76, +0x2a, 0x9a, 0x8a, 0x32, 0xf2, 0xf9, 0x5d, 0xa4, +0xb7, 0xa4, 0x08, 0x27, 0x34, 0x1c, 0x5c, 0x8f, +0x5d, 0x07, 0xc7, 0xf1, 0xae, 0xae, 0xe3, 0xe2, +0x3a, 0x0e, 0x4e, 0x99, 0xc1, 0x25, 0x33, 0x94, +0xa6, 0x63, 0x28, 0x49, 0xe1, 0xa3, 0xd9, 0x96, +0x01, 0x00, 0x88, 0x7c, 0x14, 0xc7, 0x7e, 0xd4, +0x62, 0x68, 0x68, 0xe8, 0x33, 0x5b, 0xb6, 0x6c, +0x19, 0xbb, 0x7a, 0xf5, 0x6a, 0x8e, 0xd5, 0x35, +0x43, 0x70, 0x48, 0xac, 0x58, 0x81, 0x04, 0x6a, +0x57, 0x79, 0x41, 0xf3, 0x8f, 0x01, 0xc9, 0x3d, +0x7b, 0xf6, 0xdc, 0xdf, 0xdd, 0xdd, 0x7d, 0xa7, +0xb4, 0x24, 0xa1, 0x73, 0x61, 0x1c, 0x61, 0x37, +0xe5, 0xd4, 0xd6, 0x0e, 0x76, 0xfd, 0xfe, 0x9d, +0x84, 0x93, 0x21, 0x1c, 0xd7, 0x2e, 0x0b, 0xed, +0xe0, 0x38, 0x36, 0x8e, 0xed, 0x60, 0x19, 0x26, +0xf9, 0xf9, 0x3c, 0x8e, 0x6d, 0x63, 0x99, 0x36, +0x96, 0x6e, 0x61, 0xae, 0x98, 0x94, 0x72, 0x25, +0x7e, 0xf2, 0xed, 0x9f, 0x71, 0xf5, 0xe3, 0xab, +0x2d, 0xbd, 0x27, 0xc8, 0x62, 0x49, 0x10, 0x9a, +0xd1, 0x50, 0x14, 0x45, 0x79, 0xe8, 0xa1, 0x87, +0x0e, 0xe3, 0xb9, 0x6e, 0xbc, 0xac, 0xc8, 0x10, +0xe5, 0xd1, 0x20, 0x08, 0x5a, 0xad, 0x05, 0x04, +0x17, 0x3b, 0x95, 0xf9, 0xfe, 0xe8, 0xe8, 0xe8, +0x1f, 0x4a, 0x29, 0x51, 0x2e, 0x68, 0x38, 0x96, +0x0b, 0x72, 0xfd, 0xf5, 0x43, 0x2c, 0x1d, 0x25, +0x7b, 0x4f, 0x1f, 0x8e, 0x74, 0xb1, 0x1d, 0x07, +0xcb, 0xb1, 0xa1, 0x64, 0x70, 0xfd, 0xfc, 0x2c, +0x33, 0x1f, 0x5e, 0x65, 0xf1, 0xca, 0x22, 0x7a, +0xc1, 0x20, 0x1c, 0xd7, 0xf8, 0xc6, 0xcb, 0x7f, +0x8e, 0x50, 0x04, 0x42, 0x80, 0x5e, 0x30, 0x78, +0xf9, 0x2f, 0x7e, 0xca, 0xf4, 0x7b, 0x17, 0xeb, +0x87, 0xe7, 0x16, 0x48, 0xf9, 0x38, 0x8c, 0x33, +0x60, 0xd3, 0xdf, 0xdf, 0x3f, 0x3a, 0x30, 0x30, +0x30, 0x3c, 0x33, 0x33, 0xe3, 0x2f, 0x9c, 0xb4, +0x80, 0x15, 0xf8, 0x49, 0x98, 0x2a, 0x00, 0x82, +0x93, 0x1f, 0x3f, 0xb1, 0x11, 0xcb, 0x64, 0x32, +0xd9, 0xce, 0xce, 0xce, 0x61, 0x1c, 0x10, 0x17, +0x25, 0x8e, 0x58, 0x3f, 0xf0, 0x29, 0xaa, 0x42, +0xf7, 0x9d, 0x5d, 0xd8, 0x8e, 0x85, 0x65, 0x2b, +0x28, 0xb6, 0x42, 0xee, 0x52, 0x8e, 0x4f, 0x4e, +0x9c, 0x43, 0x2f, 0x04, 0x7c, 0x5a, 0x80, 0x83, +0x8d, 0xa9, 0x9b, 0x20, 0xc0, 0xd4, 0x2d, 0x7e, +0xfe, 0x97, 0xbf, 0x60, 0x6a, 0x7c, 0xba, 0x79, +0xde, 0x78, 0x3d, 0x2a, 0x81, 0x9c, 0x53, 0x70, +0xb7, 0x38, 0x62, 0xf7, 0xee, 0xdd, 0x0f, 0xcc, +0xcc, 0xcc, 0x9c, 0xa3, 0x7a, 0x38, 0xac, 0x64, +0xa2, 0x84, 0x10, 0x6b, 0x00, 0xa8, 0xb5, 0x80, +0xd8, 0x9e, 0x3d, 0x7b, 0xf6, 0x49, 0x29, 0x85, +0xbb, 0x20, 0xb0, 0x6d, 0xbb, 0xa9, 0x66, 0x52, +0x5b, 0x52, 0xb8, 0x8a, 0x8b, 0xe5, 0x58, 0x28, +0x8e, 0xc2, 0x8d, 0xf3, 0x37, 0x3c, 0xa1, 0x60, +0xcd, 0xbd, 0x96, 0xb4, 0x31, 0x0d, 0x13, 0xdb, +0xb6, 0x39, 0xfa, 0xd7, 0xc7, 0x98, 0x3a, 0x35, +0x7d, 0xdb, 0x9a, 0x0f, 0x92, 0x98, 0x15, 0xc8, +0xad, 0x92, 0xc1, 0xc1, 0xc1, 0x7b, 0x59, 0x75, +0x01, 0x3f, 0x13, 0x55, 0x35, 0x1c, 0xaa, 0x0d, +0xfc, 0xdf, 0x07, 0x20, 0x3a, 0x38, 0x38, 0x78, +0xaf, 0x10, 0x02, 0xe7, 0xba, 0x8b, 0x23, 0xd6, +0x37, 0x7d, 0xa9, 0x48, 0x42, 0x31, 0x15, 0xd3, +0xf2, 0x84, 0x37, 0x6f, 0x99, 0x4c, 0x9d, 0x99, +0xc6, 0x11, 0xf5, 0x03, 0xa6, 0x83, 0x43, 0xa9, +0x50, 0xe2, 0xf5, 0x7f, 0x78, 0x83, 0xa9, 0xd3, +0xd3, 0x1b, 0xd3, 0x7c, 0x90, 0x66, 0x21, 0xe4, +0x0a, 0x32, 0x99, 0xcc, 0x50, 0x26, 0x93, 0xe9, +0x5e, 0x5c, 0x5c, 0x9c, 0xa5, 0x1a, 0x00, 0x49, +0x79, 0x7d, 0x10, 0xcc, 0xcb, 0x05, 0x35, 0x9f, +0x00, 0xd2, 0xd1, 0x68, 0x74, 0xcb, 0xc1, 0x47, +0x0f, 0x7e, 0x55, 0x2a, 0x52, 0x31, 0xde, 0xf7, +0x82, 0x97, 0x2b, 0xdc, 0x86, 0x1c, 0xee, 0x08, +0xa3, 0x46, 0x54, 0x44, 0x08, 0x84, 0x22, 0x98, +0x9d, 0x9a, 0xa5, 0x58, 0x58, 0x69, 0xd8, 0x5e, +0xa8, 0x82, 0xb9, 0x8b, 0xf3, 0x4c, 0x9e, 0x99, +0x5a, 0xf7, 0xb9, 0x6d, 0xb3, 0xeb, 0xa2, 0x74, +0x4b, 0x94, 0x84, 0x14, 0xae, 0xeb, 0xde, 0x9c, +0x9e, 0x9e, 0xfe, 0x84, 0xd5, 0x7c, 0x81, 0x41, +0x20, 0x8f, 0xe8, 0xbb, 0x40, 0x6d, 0xae, 0x4f, +0x05, 0xb4, 0xed, 0xdb, 0xb7, 0x0f, 0x29, 0xaa, +0x12, 0x72, 0xf2, 0x0e, 0xb6, 0x6e, 0x37, 0xd7, +0x90, 0x0a, 0x96, 0x6d, 0xa2, 0x58, 0x12, 0x69, +0x4a, 0x96, 0x16, 0x73, 0x0d, 0xb5, 0x0f, 0xa0, +0x1b, 0x3a, 0x93, 0xef, 0x4f, 0x6d, 0x9e, 0xe6, +0x03, 0x64, 0x2f, 0x38, 0xa8, 0x59, 0x85, 0x9e, +0x9e, 0x9e, 0x6d, 0x78, 0xf1, 0xcc, 0xcf, 0x48, +0x57, 0xa5, 0xe4, 0xeb, 0x8d, 0x02, 0x15, 0x37, +0x48, 0xa7, 0xd3, 0xdd, 0x52, 0x4a, 0x6c, 0xdd, +0xc1, 0x69, 0x32, 0xeb, 0x13, 0x42, 0x60, 0xb9, +0x26, 0x86, 0x2d, 0x11, 0xb6, 0x40, 0x5f, 0x2a, +0x61, 0xb9, 0xe6, 0xa6, 0xf8, 0xf4, 0xed, 0x90, +0xa3, 0x4b, 0xa4, 0x94, 0xc4, 0x62, 0xb1, 0x14, +0x0d, 0x84, 0x07, 0x44, 0xbd, 0x51, 0xa0, 0x92, +0xf4, 0xec, 0xe8, 0xe8, 0xc8, 0x08, 0x21, 0x70, +0x4a, 0x0e, 0x76, 0x93, 0xe8, 0x0f, 0x60, 0x58, +0x3a, 0xc2, 0x12, 0x08, 0x4b, 0x50, 0xcc, 0x15, +0x5b, 0xba, 0xa7, 0x55, 0x2a, 0x4f, 0x5c, 0x5a, +0x6e, 0x6f, 0xe9, 0x02, 0x21, 0x04, 0xd1, 0x68, +0x34, 0x49, 0x60, 0x45, 0x48, 0xf5, 0x7e, 0x04, +0x41, 0x17, 0xf0, 0xaf, 0x7e, 0x23, 0x25, 0x91, +0x48, 0xa4, 0xa4, 0x94, 0x38, 0x86, 0xb7, 0xf0, +0x68, 0x46, 0x86, 0x65, 0x22, 0x2c, 0xe9, 0x01, +0xb0, 0x52, 0x6c, 0xe9, 0x9e, 0x56, 0x49, 0x2a, +0xd2, 0x9b, 0x35, 0xb6, 0x08, 0x82, 0xa5, 0xdb, +0x48, 0x29, 0x7d, 0x00, 0xaa, 0x86, 0xbf, 0x60, +0x3b, 0x95, 0x6a, 0xe1, 0xab, 0x38, 0x91, 0x48, +0xa4, 0x84, 0x10, 0x98, 0x25, 0xab, 0x25, 0x6d, +0xda, 0xae, 0x0d, 0x16, 0x08, 0x0b, 0x2c, 0xd7, +0xc2, 0x6d, 0x32, 0x6a, 0xb4, 0x43, 0x4a, 0x48, +0x01, 0xc0, 0xd2, 0xad, 0x96, 0xda, 0x3b, 0xba, +0x83, 0x10, 0x82, 0x48, 0x24, 0x12, 0xa7, 0x5a, +0xf3, 0x55, 0xb4, 0xee, 0xc6, 0x88, 0x10, 0x02, +0x29, 0x3d, 0x5f, 0x12, 0xb2, 0xb5, 0x48, 0x65, +0xdb, 0x36, 0x96, 0xe5, 0x05, 0xcc, 0xc6, 0xa5, +0x01, 0xed, 0x93, 0xaa, 0xa9, 0xde, 0xe4, 0xc9, +0xf6, 0xd7, 0x0c, 0xeb, 0x93, 0x90, 0x5e, 0xdf, +0x9b, 0x59, 0x8c, 0xca, 0x3a, 0xdb, 0xd2, 0xc5, +0x62, 0x71, 0x49, 0x08, 0x41, 0x28, 0xae, 0x22, +0x95, 0xd6, 0xa3, 0x99, 0x6d, 0xd9, 0x6d, 0xb5, +0x6f, 0x85, 0xb4, 0xa8, 0xe6, 0x75, 0xd2, 0x75, +0x31, 0x4a, 0x46, 0xd3, 0xf6, 0x6a, 0x4c, 0x41, +0x08, 0x81, 0xae, 0xeb, 0x05, 0x6a, 0xf6, 0x10, +0xab, 0xda, 0x95, 0xaf, 0x41, 0x10, 0xfc, 0xc6, +0x76, 0x05, 0x80, 0x68, 0x08, 0x45, 0x2a, 0xad, +0xf7, 0xd6, 0xa1, 0xbd, 0xf6, 0x4d, 0x48, 0x08, +0x41, 0x22, 0x19, 0xc7, 0xd4, 0x2d, 0x70, 0xc0, +0xb5, 0xdc, 0xa6, 0x56, 0x10, 0x8a, 0x69, 0x3e, +0x00, 0x39, 0x02, 0xe3, 0x3e, 0x35, 0x20, 0x04, +0x5d, 0xc0, 0xff, 0xb3, 0xb2, 0x4b, 0x9b, 0xcf, +0xe7, 0x6f, 0x4a, 0x29, 0x09, 0xc5, 0xdb, 0x04, +0x60, 0x93, 0x29, 0x9a, 0x88, 0x12, 0x89, 0x46, +0x10, 0x18, 0xb8, 0xb6, 0x8b, 0x6d, 0xd8, 0x58, +0xe6, 0xfa, 0xb1, 0x40, 0x8b, 0x85, 0x90, 0x52, +0x62, 0x18, 0x46, 0x8e, 0xea, 0x4d, 0xd4, 0x2a, +0x20, 0x6a, 0x63, 0x40, 0xd5, 0x2e, 0xed, 0xe2, +0xe2, 0xe2, 0x0d, 0x21, 0x04, 0x6a, 0x4c, 0x45, +0x51, 0x7e, 0x77, 0x00, 0xa4, 0xbb, 0x53, 0x68, +0x61, 0x0d, 0xd7, 0x76, 0x71, 0x6d, 0x07, 0x63, +0x45, 0xc7, 0x75, 0xd6, 0xef, 0x4f, 0x28, 0x1e, +0x42, 0x08, 0x41, 0xb1, 0x58, 0x5c, 0x62, 0x35, +0x23, 0x54, 0x9b, 0x10, 0x71, 0x83, 0x2e, 0xe0, +0xb3, 0xbf, 0x47, 0x6f, 0x4c, 0x4e, 0x4e, 0x5e, +0x72, 0x5d, 0xd7, 0xd4, 0x92, 0xa1, 0x90, 0x1a, +0x53, 0x71, 0x4a, 0x9b, 0x37, 0xac, 0x01, 0x24, +0x52, 0x71, 0x06, 0x7e, 0x6f, 0x80, 0x4f, 0xde, +0x3d, 0xd7, 0xb0, 0x8d, 0x10, 0x82, 0x74, 0x4f, +0x1a, 0xdb, 0xb2, 0xb1, 0x2d, 0x07, 0xcb, 0xb4, +0x71, 0x1d, 0x90, 0x72, 0xfd, 0x18, 0x13, 0xe9, +0x0d, 0x23, 0xa5, 0x64, 0x7e, 0x7e, 0xfe, 0x22, +0x6b, 0xb7, 0xd3, 0xeb, 0x5a, 0x40, 0xd0, 0xfc, +0x4d, 0xc0, 0x58, 0x5e, 0x5e, 0xce, 0xcd, 0xcf, +0xcf, 0x5f, 0xe8, 0xef, 0xef, 0x1f, 0x89, 0xf5, +0x47, 0x59, 0xb9, 0xd4, 0x7a, 0x9e, 0xae, 0x19, +0xc5, 0x93, 0x71, 0x9e, 0xfc, 0xe6, 0x1f, 0x71, +0xfe, 0xf4, 0xf9, 0x75, 0xad, 0xab, 0x6f, 0x38, +0x4b, 0x34, 0x1e, 0x45, 0x5f, 0xd1, 0x71, 0x2c, +0x87, 0xc2, 0xad, 0x42, 0x53, 0xe1, 0x85, 0x2a, +0x88, 0x74, 0x87, 0x71, 0x71, 0x9d, 0xb7, 0xdf, +0x7e, 0x7b, 0x1c, 0x2f, 0x37, 0x18, 0xcc, 0x0b, +0xae, 0xa6, 0xc4, 0x5c, 0xd7, 0xf5, 0xcb, 0x4c, +0x7c, 0x00, 0xfc, 0x22, 0x85, 0x12, 0xb0, 0x32, +0x35, 0x35, 0xf5, 0xfe, 0xc0, 0xc0, 0xc0, 0x48, +0xb4, 0x2f, 0x82, 0x71, 0xc5, 0xdc, 0x98, 0xd4, +0x65, 0x8a, 0x25, 0x63, 0x7c, 0xf1, 0xdb, 0x4f, +0x93, 0xec, 0xec, 0x60, 0xfa, 0x83, 0x8b, 0x0d, +0xe3, 0x4b, 0xba, 0x37, 0xcd, 0xe0, 0xce, 0x41, +0x8c, 0x15, 0x03, 0xdb, 0x72, 0xb0, 0x55, 0x1b, +0xa3, 0x68, 0x34, 0x8d, 0x47, 0xe1, 0xac, 0x86, +0x54, 0x24, 0x0b, 0x0b, 0x0b, 0x97, 0x17, 0x16, +0x16, 0x16, 0x58, 0x0b, 0x40, 0x05, 0x84, 0x46, +0x16, 0x60, 0x94, 0x6f, 0x2a, 0xbe, 0xf3, 0xce, +0x3b, 0xef, 0x1e, 0x38, 0x70, 0xe0, 0x4b, 0xe1, +0x6e, 0x4d, 0xaa, 0x9a, 0x82, 0x6b, 0x6d, 0x6c, +0x72, 0x13, 0x4d, 0x44, 0xf9, 0xca, 0x77, 0xbe, +0x4c, 0x26, 0x9b, 0xc1, 0x34, 0x2d, 0x54, 0x55, +0x41, 0xa9, 0xd1, 0xa8, 0x94, 0x92, 0xe1, 0x7b, +0x87, 0xe9, 0xdb, 0x9e, 0xc5, 0x28, 0x19, 0x38, +0x96, 0x4d, 0xc8, 0x54, 0x98, 0x9f, 0xcf, 0x21, +0x5c, 0xd6, 0xb4, 0x5f, 0xf3, 0x8e, 0xbe, 0x30, +0x42, 0x08, 0xa6, 0xa7, 0xa7, 0xdf, 0xc7, 0xcb, +0x07, 0x36, 0xb6, 0x80, 0x1a, 0x00, 0xfc, 0x18, +0x60, 0xe2, 0xa5, 0x8f, 0x8a, 0x73, 0x73, 0x73, +0x73, 0x37, 0x6f, 0xde, 0x9c, 0xee, 0xe9, 0xe9, +0xb9, 0x23, 0x3e, 0x1c, 0x63, 0x65, 0xea, 0xf6, +0xdd, 0x20, 0x12, 0x8f, 0xf0, 0xd5, 0xef, 0x7e, +0x85, 0xec, 0xb6, 0x5e, 0x2c, 0xd3, 0x06, 0x21, +0x50, 0x43, 0x2a, 0xd1, 0x78, 0x94, 0x48, 0x22, +0x42, 0xac, 0x23, 0x4a, 0x76, 0x38, 0x4b, 0xcf, +0x60, 0x0f, 0x8e, 0xe3, 0xa0, 0x17, 0x75, 0x6c, +0xcb, 0x41, 0x55, 0x6d, 0x16, 0x97, 0x6e, 0xb1, +0x92, 0x5f, 0x69, 0x1a, 0x8c, 0x65, 0x54, 0x12, +0xee, 0x0b, 0x83, 0xc0, 0x3d, 0x75, 0xea, 0xd4, +0xdb, 0x78, 0x49, 0xd1, 0x35, 0xcb, 0x60, 0xca, +0x7b, 0x85, 0xf5, 0x46, 0x01, 0x1f, 0x80, 0x12, +0xde, 0x1a, 0x3a, 0x7f, 0xf2, 0xe4, 0xc9, 0x7f, +0x7f, 0xea, 0xa9, 0xa7, 0xbe, 0x19, 0xbd, 0x23, +0x82, 0x71, 0xcd, 0xc2, 0x35, 0xda, 0xb7, 0x02, +0x2d, 0xaa, 0xf1, 0xd5, 0xef, 0xfe, 0x31, 0x83, +0x23, 0x5b, 0xc1, 0x05, 0x21, 0x4c, 0x5c, 0xc7, +0x65, 0xdf, 0xa1, 0x7d, 0xec, 0x79, 0x74, 0x0f, +0x46, 0xc9, 0x40, 0x2f, 0xea, 0xe8, 0x2b, 0x06, +0x46, 0x51, 0x47, 0x5f, 0xd1, 0x51, 0x14, 0x15, +0x45, 0xb1, 0x59, 0x9a, 0xcf, 0x31, 0x77, 0x71, +0x1e, 0xd9, 0xc2, 0x50, 0x1c, 0xdf, 0x19, 0x45, +0x2a, 0x92, 0xe9, 0xe9, 0xe9, 0x33, 0x53, 0x53, +0x53, 0x17, 0xa9, 0xce, 0x03, 0xac, 0xb1, 0x00, +0x09, 0x95, 0xbd, 0xf3, 0xe0, 0x3c, 0xc0, 0xa2, +0x6c, 0x01, 0x40, 0xee, 0xad, 0xb7, 0xde, 0x1a, +0x9f, 0x9b, 0x9b, 0x3b, 0xaf, 0x68, 0x0a, 0xf1, +0x3b, 0xa3, 0x28, 0x8a, 0xd2, 0x36, 0x3f, 0xfd, +0xad, 0xa7, 0xd8, 0xba, 0x73, 0x80, 0x90, 0x16, +0x42, 0x0d, 0x87, 0x50, 0x35, 0x15, 0x45, 0x55, +0x3c, 0x17, 0x50, 0x15, 0xa4, 0x22, 0xcb, 0x6d, +0x25, 0x52, 0xf5, 0xee, 0x11, 0x42, 0x70, 0xe9, +0xec, 0x65, 0xae, 0x4e, 0x5c, 0x43, 0x4a, 0xd9, +0xf4, 0x1d, 0x5a, 0x46, 0x23, 0xb2, 0x25, 0x0c, +0x60, 0x1f, 0x3b, 0x76, 0xec, 0x15, 0xbc, 0x0d, +0xd2, 0xe5, 0xb2, 0x32, 0x83, 0x25, 0x34, 0x54, +0x01, 0x10, 0xa0, 0x20, 0x00, 0x46, 0x19, 0xb9, +0x65, 0xe0, 0xd6, 0xd8, 0xd8, 0xd8, 0xcf, 0x01, +0x37, 0x32, 0x18, 0x26, 0x94, 0xf0, 0x26, 0x46, +0xed, 0xf0, 0xe9, 0x5f, 0x9d, 0xc1, 0x36, 0xbd, +0x05, 0x95, 0x14, 0xa2, 0xbc, 0xce, 0x10, 0x08, +0x29, 0x91, 0x72, 0x75, 0xcd, 0x21, 0xa5, 0x64, +0xf9, 0xe6, 0x32, 0xe7, 0xc7, 0x2f, 0x30, 0x7e, +0xec, 0x14, 0x8b, 0x33, 0x8b, 0x2d, 0xbf, 0x23, +0xb6, 0x33, 0x82, 0x10, 0x82, 0x89, 0x89, 0x89, +0xdf, 0x4c, 0x4e, 0x4e, 0x4e, 0x52, 0xbd, 0x4d, +0x5e, 0xb5, 0x31, 0xb2, 0x66, 0x67, 0x28, 0x30, +0x1a, 0x04, 0x03, 0x61, 0x05, 0x80, 0xf7, 0xde, +0x7b, 0xef, 0x83, 0x83, 0x07, 0x0f, 0x9e, 0x19, +0x1e, 0x1e, 0xbe, 0x2f, 0xb1, 0x27, 0x4a, 0xf1, +0xd4, 0x0a, 0x6e, 0x1b, 0xcb, 0xfd, 0xcb, 0x1f, +0x5e, 0xe2, 0xb5, 0xbf, 0x3b, 0xca, 0x93, 0xdf, +0xfa, 0x02, 0x4a, 0x48, 0xc1, 0x71, 0x1c, 0x5c, +0xd7, 0x65, 0xe1, 0xf2, 0x3c, 0x17, 0x4e, 0x4d, +0x92, 0xbf, 0x99, 0xa7, 0x70, 0xab, 0xc0, 0xf2, +0xcd, 0x02, 0x85, 0xa5, 0x42, 0xe5, 0x3e, 0xa5, +0xc5, 0x35, 0x85, 0xb6, 0x2d, 0x84, 0xd6, 0x15, +0xc2, 0x30, 0x8c, 0xd2, 0x2b, 0xaf, 0xbc, 0xf2, +0x0a, 0xf5, 0x8b, 0x25, 0xd6, 0xac, 0x07, 0xea, +0x3d, 0xbd, 0xd6, 0x0d, 0x0a, 0x78, 0x48, 0xde, +0x3c, 0x72, 0xe4, 0xc8, 0x8f, 0x0a, 0x85, 0xc2, +0x0d, 0x25, 0xa9, 0x10, 0xbd, 0x2b, 0x8a, 0x94, +0x4a, 0x5b, 0x3c, 0x75, 0xe6, 0x22, 0x47, 0xff, +0xfe, 0x98, 0x37, 0xac, 0x19, 0x5e, 0x8e, 0x71, +0xe6, 0xe3, 0xab, 0xfc, 0xf7, 0x1b, 0x1f, 0x32, +0x7d, 0xe6, 0x12, 0xf3, 0x17, 0x6f, 0xb0, 0x92, +0x2f, 0xb5, 0xfd, 0x5c, 0xad, 0x47, 0x23, 0xb2, +0x23, 0x0c, 0xe0, 0x8e, 0x8d, 0x8d, 0xbd, 0x38, +0x37, 0x37, 0x77, 0x09, 0xb8, 0x55, 0x06, 0x60, +0x85, 0x06, 0xda, 0x6f, 0x06, 0x40, 0xd0, 0x0a, +0xf2, 0xc0, 0xe2, 0xc2, 0xc2, 0xc2, 0xe5, 0x17, +0x5f, 0x7c, 0xf1, 0x07, 0xb6, 0x6d, 0xeb, 0x5a, +0x5f, 0x88, 0xc8, 0xf6, 0x70, 0xdb, 0xae, 0x30, +0x75, 0x7a, 0x9a, 0x5f, 0xfd, 0xe3, 0xeb, 0x98, +0xba, 0x89, 0x6d, 0x3a, 0x80, 0x68, 0xfb, 0x19, +0x41, 0x0e, 0x25, 0x54, 0xa2, 0xf7, 0x84, 0x91, +0x8a, 0x64, 0x7c, 0x7c, 0xfc, 0x3f, 0xc6, 0xc6, +0xc6, 0x4e, 0xb0, 0x4e, 0x95, 0x48, 0xad, 0xb0, +0x55, 0x00, 0x04, 0x90, 0x09, 0x4e, 0x89, 0xfd, +0xd1, 0x60, 0x09, 0xb8, 0x71, 0xf6, 0xec, 0xd9, +0x0f, 0x7f, 0xf9, 0xcb, 0x5f, 0xfe, 0x08, 0x70, +0xc3, 0x3b, 0x42, 0x84, 0xb7, 0x69, 0x6d, 0x07, +0xc4, 0xe9, 0xd3, 0xd3, 0x9c, 0x78, 0xf1, 0x2d, +0x2c, 0xc3, 0x02, 0x97, 0xdb, 0x0a, 0xaa, 0x8a, +0xa2, 0x10, 0x4a, 0xa9, 0x44, 0xf7, 0x86, 0x91, +0x21, 0x2f, 0xea, 0xff, 0xf8, 0xc7, 0x3f, 0xfe, +0x19, 0x5e, 0x99, 0x8c, 0x6f, 0xfe, 0xeb, 0x6a, +0x1f, 0xea, 0x24, 0x44, 0x6a, 0x62, 0x81, 0xbf, +0x8d, 0xb4, 0xc2, 0x6a, 0xb6, 0x58, 0x39, 0x7e, +0xfc, 0xf8, 0x89, 0x9e, 0x9e, 0x9e, 0xee, 0x03, +0x07, 0x0e, 0x1c, 0xd6, 0xee, 0x54, 0x85, 0xd2, +0x21, 0xb1, 0x26, 0xec, 0x9a, 0xf8, 0xba, 0x3e, +0x4d, 0x9f, 0x9e, 0x46, 0x20, 0x88, 0xa5, 0x63, +0x4d, 0x27, 0x36, 0xf5, 0x48, 0x76, 0x4b, 0xd4, +0x5d, 0x12, 0xa1, 0x08, 0xe6, 0xe6, 0xe6, 0xa6, +0xbe, 0xff, 0xfd, 0xef, 0xbf, 0xc0, 0xda, 0xf2, +0x98, 0x60, 0xa1, 0x54, 0xdd, 0x12, 0x99, 0x0d, +0x15, 0x49, 0x3d, 0xf1, 0xc4, 0x13, 0x8f, 0x1d, +0x3a, 0x74, 0xe8, 0x6b, 0xa1, 0x50, 0x48, 0x73, +0xf3, 0x2e, 0xd6, 0x59, 0x1b, 0xb7, 0x79, 0xae, +0xa2, 0x8a, 0xc2, 0xb1, 0x30, 0x7a, 0xb1, 0xf5, +0x6d, 0x70, 0x00, 0x65, 0x9b, 0x44, 0x19, 0xf2, +0x40, 0x9b, 0x98, 0x98, 0x18, 0xff, 0xde, 0xf7, +0xbe, 0xf7, 0x43, 0x5d, 0xd7, 0x37, 0xaf, 0x48, +0x0a, 0x5a, 0x2f, 0x93, 0xdb, 0xbb, 0x77, 0xef, +0x9e, 0x67, 0x9f, 0x7d, 0xf6, 0xf9, 0x78, 0x3c, +0x9e, 0xc6, 0x06, 0xe7, 0x8a, 0x8b, 0x33, 0xe3, +0xb6, 0x65, 0x0d, 0xad, 0x92, 0xc8, 0x08, 0xe4, +0xb0, 0x40, 0xc4, 0xc1, 0x75, 0x5d, 0xe7, 0xd7, +0xbf, 0xfe, 0xf5, 0xd1, 0x23, 0x47, 0x8e, 0x6c, +0x7e, 0x99, 0x5c, 0xe5, 0xcf, 0x16, 0x0b, 0x25, +0xfb, 0xfa, 0xfa, 0xb6, 0x3d, 0xf7, 0xdc, 0x73, +0x7f, 0xba, 0x75, 0xeb, 0xd6, 0x11, 0x00, 0x0c, +0x70, 0x2e, 0xb9, 0x38, 0xb3, 0xd4, 0x09, 0x3b, +0xb7, 0x21, 0x78, 0x02, 0x4f, 0xf0, 0xb4, 0xf7, +0xbd, 0x58, 0x2c, 0x2e, 0xbd, 0xf6, 0xda, 0x6b, +0xff, 0x72, 0xfc, 0xf8, 0xf1, 0xff, 0xc4, 0x2b, +0x92, 0xbc, 0x81, 0x17, 0xf5, 0xeb, 0xd5, 0x02, +0xdc, 0x5e, 0xa1, 0x64, 0xa5, 0x41, 0xe3, 0x52, +0xd9, 0x18, 0xde, 0xfe, 0x7b, 0xa5, 0x54, 0xf6, +0xe0, 0xc1, 0x83, 0xfb, 0x0e, 0x1d, 0x3a, 0x74, +0xb8, 0xab, 0xab, 0x6b, 0x00, 0x00, 0x13, 0xdc, +0x9b, 0x5e, 0xf7, 0xdc, 0x25, 0xda, 0x03, 0x23, +0x06, 0xa2, 0xd3, 0x63, 0x12, 0xde, 0x4f, 0x86, +0x61, 0x94, 0xc6, 0xc7, 0xc7, 0x5f, 0x7f, 0xf9, +0xe5, 0x97, 0x8f, 0x15, 0x8b, 0x45, 0xbf, 0x54, +0xf6, 0x16, 0xd5, 0x33, 0xbe, 0xcd, 0x2b, 0x95, +0x6d, 0x00, 0x42, 0xa3, 0x62, 0xe9, 0x14, 0x9e, +0x6b, 0x64, 0x9e, 0x79, 0xe6, 0x99, 0x47, 0x1e, +0x79, 0xe4, 0x91, 0x27, 0x92, 0xc9, 0x64, 0xa5, +0x58, 0x1a, 0xbb, 0xdc, 0x55, 0x1d, 0x5c, 0x43, +0xac, 0x9e, 0x08, 0x70, 0xa8, 0x9c, 0x22, 0x10, +0x61, 0xd7, 0xfb, 0x9c, 0xc4, 0x83, 0xb8, 0x4c, +0x96, 0x65, 0x19, 0x67, 0xcf, 0x9e, 0xfd, 0xcd, +0x4b, 0x2f, 0xbd, 0xf4, 0x6f, 0x73, 0x73, 0x73, +0xd7, 0xca, 0x4f, 0x5a, 0x2a, 0x73, 0x50, 0xeb, +0x9b, 0x5f, 0x2c, 0xbd, 0x0e, 0x08, 0xc1, 0x03, +0x12, 0xfe, 0x19, 0x81, 0x44, 0xb9, 0xfb, 0x49, +0xa0, 0xe3, 0x81, 0x07, 0x1e, 0xd8, 0xb5, 0x7f, +0xff, 0xfe, 0x7d, 0x77, 0xdc, 0x71, 0xc7, 0xdd, +0x99, 0x4c, 0xa6, 0xad, 0x72, 0x79, 0x5d, 0xd7, +0x8b, 0x17, 0x2f, 0x5e, 0xfc, 0xe4, 0x83, 0x0f, +0x3e, 0x38, 0xfd, 0xe6, 0x9b, 0x6f, 0x9e, 0x5e, +0x5e, 0x5e, 0xf6, 0x83, 0x9b, 0xaf, 0xed, 0xdf, +0x5e, 0xb9, 0x7c, 0xa5, 0xf1, 0xfa, 0x07, 0x26, +0x7c, 0x8b, 0xa8, 0x7b, 0x60, 0x62, 0x64, 0x64, +0x64, 0x60, 0xef, 0xde, 0xbd, 0x23, 0xc9, 0x64, +0x32, 0xd3, 0xd1, 0xd1, 0x91, 0x8a, 0xc5, 0x62, +0xc9, 0x78, 0x3c, 0xde, 0xa1, 0xaa, 0xaa, 0x5a, +0x2c, 0x16, 0x97, 0x97, 0x97, 0x97, 0x73, 0x85, +0x42, 0x21, 0x97, 0xcf, 0xe7, 0x17, 0xaf, 0x5c, +0xb9, 0x32, 0x73, 0xe2, 0xc4, 0x89, 0x8f, 0x4c, +0xd3, 0x5c, 0xef, 0xc0, 0x44, 0x50, 0xf0, 0xaa, +0x93, 0x23, 0xad, 0x0a, 0xdf, 0x36, 0x00, 0x01, +0x10, 0xe0, 0xf6, 0x8f, 0xcc, 0x04, 0x37, 0x2a, +0xfd, 0x09, 0x80, 0x3f, 0xf1, 0xaa, 0xa4, 0xe3, +0x58, 0x3d, 0x2e, 0x53, 0xcb, 0x0d, 0x8f, 0xcc, +0xb0, 0x4e, 0xb4, 0x6f, 0x28, 0xcf, 0xef, 0xe8, +0xd0, 0x54, 0xf0, 0xe4, 0x18, 0x54, 0x4f, 0xbf, +0x7d, 0x10, 0x7e, 0x2b, 0x87, 0xa6, 0x36, 0x74, +0x70, 0x72, 0x03, 0xc7, 0xe6, 0x6a, 0xf7, 0xea, +0x6a, 0xf7, 0x24, 0x7c, 0x6e, 0x7a, 0x6c, 0x8e, +0x0d, 0x08, 0x0f, 0x1b, 0x04, 0x00, 0xaa, 0x40, +0x80, 0x6a, 0x8b, 0x08, 0xee, 0x34, 0xb7, 0x72, +0x70, 0xb2, 0x36, 0x29, 0xb3, 0xee, 0xc1, 0x49, +0x36, 0x28, 0x78, 0xa5, 0xc3, 0xff, 0xdf, 0x8f, +0xce, 0x6e, 0x1a, 0x00, 0x55, 0x0f, 0xdd, 0xc4, +0xc3, 0xd3, 0x81, 0xab, 0xf7, 0xe5, 0x7f, 0xeb, +0xe1, 0xe9, 0xff, 0xab, 0xf4, 0x3f, 0x43, 0x65, +0x12, 0xca, 0x16, 0x39, 0x6b, 0x07, 0x00, 0x00, +0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, +0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity1.png b/source/bitmaps/misc/activity1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3ee9efff526188833339d4229dff93ecce6c89 GIT binary patch literal 4354 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 literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/activity10.cpp b/source/bitmaps/misc/activity10.cpp new file mode 100644 index 0000000..482280c --- /dev/null +++ b/source/bitmaps/misc/activity10.cpp @@ -0,0 +1,534 @@ +#include + +#ifndef MISC_ACTIVITY10_CPP +#define MISC_ACTIVITY10_CPP + +static unsigned char misc_activity10_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x0f, 0xe1, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xd9, +0x6f, 0x5c, 0x47, 0x76, 0xc6, 0x7f, 0x55, 0x77, +0xe9, 0x95, 0x4d, 0x36, 0x77, 0x8a, 0x22, 0xb5, +0x39, 0x12, 0x65, 0x2d, 0x94, 0x62, 0x49, 0xde, +0x6d, 0x19, 0x32, 0xc6, 0x8a, 0x06, 0x89, 0x3d, +0x46, 0x80, 0x00, 0x03, 0xdb, 0x03, 0x24, 0x86, +0x27, 0x79, 0xc9, 0x53, 0xfe, 0x8b, 0xc0, 0x4f, +0x03, 0xc7, 0x19, 0x60, 0x80, 0x04, 0x89, 0x1c, +0xf9, 0x25, 0x88, 0x62, 0x5b, 0x70, 0x62, 0xca, +0x23, 0x41, 0xb1, 0x23, 0x8d, 0x64, 0x6a, 0x99, +0x38, 0xf2, 0x42, 0x49, 0xd4, 0x46, 0x2d, 0x2d, +0x8a, 0x3b, 0xbb, 0xfb, 0xee, 0x79, 0xb8, 0x7d, +0x9b, 0xb7, 0x9b, 0xbd, 0x51, 0x24, 0xc7, 0x09, +0x72, 0x80, 0x83, 0xcb, 0x6e, 0xde, 0x7b, 0xbb, +0xce, 0x57, 0x5f, 0x9d, 0xaa, 0x3a, 0xe7, 0x94, +0xf0, 0x3c, 0x8f, 0xd5, 0x14, 0x21, 0x84, 0xa8, +0xf6, 0xaf, 0x0a, 0xdf, 0x2d, 0x6a, 0x8c, 0xb7, +0xca, 0x0d, 0x54, 0x57, 0xe3, 0xa5, 0x65, 0x46, +0x8b, 0x2a, 0xd7, 0x6a, 0xe2, 0x85, 0xaf, 0xe5, +0xf8, 0xad, 0x34, 0x20, 0x62, 0xa5, 0xde, 0x57, +0xc1, 0x68, 0x51, 0xf6, 0xb7, 0xac, 0xf0, 0x5d, +0x58, 0xc2, 0x86, 0xd7, 0x52, 0xff, 0xa6, 0x15, +0x6a, 0xf8, 0xb2, 0x19, 0x50, 0xc5, 0x70, 0x19, +0xba, 0x56, 0x52, 0x41, 0x29, 0x08, 0x81, 0x31, +0x6e, 0xe1, 0x6f, 0xb7, 0x8a, 0x16, 0x81, 0x08, +0x7e, 0x76, 0xb9, 0x40, 0x2c, 0x0b, 0x80, 0x90, +0xf1, 0xe5, 0x46, 0x2b, 0x21, 0x55, 0x0b, 0xaa, +0x94, 0x69, 0x39, 0x0b, 0xc2, 0x86, 0xda, 0x80, +0x53, 0xe1, 0xea, 0x50, 0x06, 0xc6, 0x72, 0x81, +0x78, 0xa4, 0x21, 0x50, 0x66, 0x78, 0xb9, 0xd1, +0x2a, 0xa0, 0x85, 0x54, 0x2f, 0x68, 0xf0, 0x39, +0x00, 0x24, 0xcc, 0x84, 0xa0, 0xd7, 0x03, 0x63, +0xad, 0x82, 0x9a, 0x65, 0xd7, 0x40, 0x2b, 0x81, +0xf1, 0x48, 0x20, 0x2c, 0x99, 0x01, 0x21, 0xe3, +0x03, 0x03, 0xc2, 0xbd, 0xac, 0x03, 0x91, 0x82, +0x46, 0x0b, 0x1a, 0x0b, 0x7d, 0x0e, 0xc0, 0x08, +0x18, 0x11, 0x00, 0x10, 0xee, 0xf9, 0xc0, 0x60, +0xa3, 0xa0, 0x79, 0x20, 0x57, 0xb8, 0xe6, 0x0b, +0xdf, 0x05, 0x80, 0x04, 0xcc, 0x70, 0x29, 0xb0, +0x61, 0xa9, 0x20, 0x2c, 0x09, 0x80, 0x82, 0xf1, +0x81, 0x06, 0x3d, 0x1e, 0xf4, 0x72, 0x60, 0x70, +0x1c, 0x48, 0x84, 0x34, 0x0e, 0xc4, 0x3b, 0x3b, +0x3b, 0x7b, 0x7b, 0x7b, 0x7b, 0x07, 0xa2, 0xd1, +0x68, 0x6b, 0x34, 0x1a, 0x6d, 0xd1, 0x75, 0x3d, +0xa5, 0xeb, 0x7a, 0x4a, 0x4a, 0xa9, 0x99, 0xa6, +0x39, 0x6b, 0x9a, 0xe6, 0x8c, 0x61, 0x18, 0x53, +0x86, 0x61, 0x4c, 0x4e, 0x4d, 0x4d, 0xdd, 0xbe, +0x7a, 0xf5, 0xea, 0x37, 0xae, 0xeb, 0xce, 0x03, +0x59, 0x60, 0x3e, 0xa4, 0xd9, 0x10, 0x20, 0x46, +0x39, 0x10, 0x4b, 0x1d, 0x12, 0x0d, 0x0f, 0x81, +0x90, 0xf1, 0x01, 0xdd, 0x83, 0x1e, 0x0f, 0x7a, +0x39, 0x01, 0x34, 0x15, 0x34, 0x05, 0x34, 0xf5, +0xf7, 0xf7, 0x6f, 0xe9, 0xeb, 0xeb, 0xdb, 0xd3, +0xde, 0xde, 0xbe, 0x2d, 0x1e, 0x8f, 0x77, 0x35, +0xf4, 0x43, 0x05, 0xb1, 0x6d, 0x3b, 0x3b, 0x39, +0x39, 0xf9, 0xdd, 0xbd, 0x7b, 0xf7, 0x2e, 0x8c, +0x8c, 0x8c, 0x5c, 0x34, 0x0c, 0xe3, 0x21, 0x30, +0x03, 0xcc, 0x16, 0x74, 0x8e, 0x05, 0x30, 0x02, +0x46, 0x84, 0x87, 0x45, 0x43, 0x20, 0x34, 0x04, +0x40, 0x05, 0xe3, 0x35, 0x7c, 0x5a, 0xc7, 0x80, +0x64, 0xc1, 0xe8, 0x16, 0xa0, 0x19, 0x68, 0xdd, +0xb5, 0x6b, 0xd7, 0x0b, 0x9b, 0x36, 0x6d, 0x3a, +0x18, 0x8d, 0x46, 0xdb, 0x82, 0x77, 0x28, 0x96, +0x4a, 0x3a, 0xd3, 0x4a, 0x74, 0x2e, 0x86, 0x9e, +0xd7, 0xd1, 0x0c, 0x1d, 0x3d, 0x1f, 0x41, 0x3a, +0x12, 0x2b, 0x6a, 0x62, 0x46, 0x4c, 0xcc, 0xa8, +0x81, 0x19, 0x33, 0x98, 0xea, 0x9c, 0x24, 0x9f, +0xc8, 0x15, 0x7f, 0xdf, 0x75, 0x5d, 0xeb, 0xee, +0xdd, 0xbb, 0x67, 0x86, 0x87, 0x87, 0x3f, 0x9e, +0x9d, 0x9d, 0xbd, 0x03, 0x4c, 0x02, 0xd3, 0x21, +0x40, 0xb2, 0x2c, 0x0c, 0x0d, 0x7b, 0x29, 0x20, +0xd4, 0x05, 0xa0, 0xcc, 0xf8, 0xc0, 0xc1, 0x45, +0x59, 0xe8, 0xf1, 0x66, 0xa0, 0x15, 0x68, 0x1d, +0x18, 0x18, 0x78, 0x6a, 0xeb, 0xd6, 0xad, 0x7f, +0x94, 0x48, 0x24, 0x7a, 0x00, 0xb4, 0xbc, 0x4e, +0xfa, 0x5e, 0x2b, 0xe9, 0x3b, 0xed, 0xa4, 0xc6, +0x9b, 0x11, 0x6e, 0xbd, 0x35, 0xd0, 0x82, 0xe4, +0x9a, 0xb2, 0x4c, 0xae, 0x79, 0xc8, 0x64, 0xcf, +0x43, 0xe6, 0x5b, 0xe6, 0x00, 0x70, 0x1c, 0xc7, +0xb8, 0x75, 0xeb, 0xd6, 0x89, 0x73, 0xe7, 0xce, +0x1d, 0x33, 0x0c, 0xe3, 0x3e, 0x30, 0x51, 0x00, +0x63, 0x06, 0x7f, 0x78, 0xe4, 0x0a, 0x40, 0x34, +0x0c, 0x42, 0x4d, 0x00, 0xaa, 0x18, 0x1f, 0xd0, +0xbd, 0x19, 0x48, 0x03, 0xed, 0xcd, 0xcd, 0xcd, +0xeb, 0x5f, 0x7c, 0xf1, 0xc5, 0xb7, 0x5b, 0x5a, +0x5a, 0x36, 0xfb, 0x86, 0x6b, 0xf4, 0x7c, 0xb3, +0x96, 0xb6, 0x9b, 0x1d, 0x08, 0xaf, 0x71, 0xa3, +0xab, 0x49, 0xb6, 0x79, 0x9e, 0xb1, 0xed, 0x37, +0x99, 0xed, 0x98, 0x01, 0xc0, 0xb2, 0xac, 0xd9, +0x4b, 0x97, 0x2e, 0x1d, 0xbe, 0x7c, 0xf9, 0xf2, +0x69, 0x60, 0x1c, 0x78, 0x88, 0xcf, 0x88, 0x30, +0x1b, 0x1a, 0x02, 0xa1, 0x2a, 0x00, 0x15, 0x68, +0xaf, 0xb3, 0x40, 0xf9, 0x16, 0xa0, 0x0d, 0xe8, +0xe8, 0xef, 0xef, 0x1f, 0x7c, 0xfa, 0xe9, 0xa7, +0xdf, 0x89, 0x46, 0xa3, 0x2d, 0xd2, 0x96, 0x74, +0x8c, 0xf4, 0xd0, 0x71, 0xa5, 0x0b, 0xe9, 0xc8, +0x65, 0x1b, 0x5e, 0x2e, 0xb3, 0x5d, 0xd3, 0xdc, +0xdd, 0x76, 0x9b, 0x7c, 0x2a, 0x07, 0xe0, 0x7e, +0xff, 0xfd, 0xf7, 0xc7, 0x4e, 0x9f, 0x3e, 0x7d, +0x14, 0xc8, 0xe0, 0x03, 0x31, 0xc9, 0x62, 0x10, +0x1c, 0x7c, 0xfb, 0x1b, 0x07, 0xa0, 0x6c, 0xaa, +0xab, 0x64, 0x7c, 0x07, 0xd0, 0x39, 0x38, 0x38, +0x78, 0x60, 0x70, 0x70, 0xf0, 0xa7, 0x8a, 0xa2, +0xe8, 0xb1, 0xc9, 0x38, 0x7d, 0xbf, 0x59, 0x8f, +0x9a, 0xd7, 0x56, 0xce, 0xe2, 0x8a, 0x2d, 0x86, +0x07, 0x03, 0xf7, 0x78, 0xb0, 0xe5, 0x3e, 0x00, +0xf7, 0xef, 0xdf, 0x1f, 0x1e, 0x1a, 0x1a, 0xfa, +0x95, 0x65, 0x59, 0x77, 0x80, 0x07, 0xf8, 0xc3, +0x62, 0x86, 0xc5, 0x4c, 0xa8, 0x08, 0x42, 0x2d, +0x00, 0x82, 0xa9, 0x2e, 0xa0, 0x7d, 0x92, 0x02, +0xe5, 0x81, 0xee, 0x67, 0x9f, 0x7d, 0xf6, 0xf5, +0xcd, 0x9b, 0x37, 0xbf, 0x26, 0x84, 0x10, 0xa9, +0x5b, 0x2d, 0x74, 0x5d, 0x58, 0xb3, 0xa4, 0x31, +0xbe, 0x5c, 0x99, 0x5d, 0x33, 0xc3, 0xbd, 0x27, +0xc6, 0xf0, 0x14, 0x97, 0x99, 0x99, 0x99, 0xd1, +0x8f, 0x3f, 0xfe, 0xf8, 0xaf, 0x0d, 0xc3, 0xb8, +0x8d, 0xcf, 0x86, 0x30, 0x08, 0x45, 0xc7, 0xd8, +0x10, 0x00, 0x65, 0xd4, 0x0f, 0xbc, 0x7d, 0xb8, +0xe7, 0xbb, 0x77, 0xec, 0xd8, 0xf1, 0xd2, 0x93, +0x4f, 0x3e, 0xf9, 0x36, 0x20, 0xda, 0xbe, 0xee, +0xa0, 0xf9, 0x4a, 0xeb, 0xaa, 0x19, 0x5a, 0x4b, +0xcc, 0x66, 0x83, 0x7b, 0x4f, 0xdd, 0xc6, 0x8e, +0xd9, 0x64, 0x32, 0x99, 0x4b, 0x1f, 0x7d, 0xf4, +0xd1, 0x2f, 0x80, 0x3b, 0x2c, 0x80, 0x30, 0x8b, +0xef, 0x18, 0x8b, 0x53, 0x64, 0x39, 0x08, 0x25, +0x03, 0xb5, 0x6c, 0x89, 0x1b, 0xcc, 0xf5, 0x81, +0xc7, 0x6f, 0x06, 0xda, 0xfa, 0xfa, 0xfa, 0xb6, +0xed, 0xdd, 0xbb, 0xf7, 0x2d, 0x21, 0x84, 0x48, +0x7f, 0xdb, 0x46, 0xf2, 0x6a, 0x33, 0x8e, 0x70, +0x7e, 0x10, 0x55, 0x66, 0x54, 0x3a, 0x4f, 0xaf, +0x41, 0x3a, 0x0a, 0x5d, 0x5d, 0x5d, 0x83, 0xfb, +0xf7, 0xef, 0xff, 0x63, 0xfc, 0x4e, 0x4a, 0xe3, +0xcf, 0x50, 0x31, 0xfc, 0xe1, 0x5b, 0x5c, 0x75, +0x96, 0xc7, 0x27, 0x2a, 0xad, 0x04, 0x2b, 0x39, +0xbe, 0x26, 0x20, 0x9d, 0x4a, 0xa5, 0xfa, 0x5e, +0x7a, 0xe9, 0xa5, 0x3f, 0xd7, 0x34, 0x2d, 0x12, +0x1b, 0x8b, 0x93, 0x1c, 0x69, 0xc6, 0x95, 0xee, +0xd2, 0xbb, 0x6e, 0x05, 0x45, 0x99, 0x57, 0x69, +0x3b, 0xdf, 0xc9, 0xc4, 0x93, 0x19, 0x36, 0x6f, +0xde, 0xfc, 0xca, 0xf4, 0xf4, 0xf4, 0xd8, 0x85, +0x0b, 0x17, 0x3e, 0xa3, 0xf2, 0x4a, 0xb1, 0x64, +0x4b, 0x0d, 0xb5, 0x01, 0x50, 0xf1, 0xe9, 0x9f, +0xc0, 0x5f, 0xd9, 0xb5, 0x1e, 0x38, 0x70, 0xe0, +0xad, 0x78, 0x3c, 0xde, 0xa6, 0x4e, 0x6b, 0x34, +0x5d, 0x4c, 0xe3, 0x48, 0x67, 0xf5, 0x2c, 0x5b, +0x82, 0x68, 0x19, 0x9d, 0xa6, 0x6f, 0x9b, 0x99, +0x7b, 0x7c, 0x46, 0xec, 0x79, 0x62, 0xcf, 0x1b, +0xd7, 0xae, 0x5d, 0xfb, 0x76, 0x7a, 0x7a, 0x3a, +0x4b, 0xe9, 0xde, 0x21, 0x70, 0x86, 0x22, 0xbc, +0x67, 0x28, 0x02, 0x50, 0x6f, 0xda, 0xdb, 0xb4, +0x69, 0xd3, 0xf6, 0xae, 0xae, 0xae, 0x41, 0xe1, +0x09, 0x9a, 0xbe, 0x6a, 0xc1, 0x73, 0x5d, 0xca, +0xa7, 0xf8, 0x3d, 0x6f, 0x3c, 0xc1, 0xd6, 0x57, +0xb6, 0xa0, 0xea, 0x2a, 0x8a, 0xae, 0xa0, 0xe8, +0x0a, 0x52, 0x91, 0x08, 0x21, 0x70, 0x2c, 0x07, +0x3b, 0x6f, 0xf3, 0xeb, 0x77, 0x4f, 0x32, 0x7a, +0xfa, 0xfa, 0x8a, 0x83, 0x10, 0xbd, 0x12, 0xc7, +0xec, 0x32, 0xb0, 0xda, 0xcd, 0xc8, 0x73, 0xcf, +0x3d, 0xf7, 0xda, 0xb1, 0x63, 0xc7, 0x7e, 0xc9, +0xc2, 0xde, 0x21, 0x60, 0xc2, 0x22, 0x16, 0x94, +0x33, 0x20, 0xdc, 0xfb, 0x25, 0x00, 0xec, 0xdd, +0xbb, 0xf7, 0x27, 0x8a, 0xa2, 0x08, 0xfd, 0x5a, +0x14, 0x72, 0x02, 0xa7, 0x02, 0xf5, 0xcf, 0x1e, +0xf9, 0x8a, 0x58, 0x5b, 0x8c, 0x1d, 0x3f, 0xde, +0x86, 0x1e, 0xd7, 0xd0, 0xe2, 0x3a, 0x7a, 0x4c, +0x43, 0x8d, 0xa8, 0xb8, 0x8e, 0x8b, 0x95, 0xb7, +0x89, 0xa4, 0x23, 0x15, 0x9f, 0x5d, 0x09, 0x89, +0x7e, 0x93, 0xc0, 0x79, 0xd1, 0xa6, 0xbf, 0xbf, +0xff, 0xa9, 0x35, 0x6b, 0xd6, 0x0c, 0xdd, 0xb9, +0x73, 0x67, 0x86, 0x85, 0x3d, 0x43, 0x78, 0x4a, +0x2c, 0xb2, 0x40, 0x02, 0xe5, 0xbb, 0xbc, 0x30, +0xfd, 0xe3, 0x40, 0x6a, 0xe7, 0xce, 0x9d, 0x4f, +0xb4, 0xb7, 0xb7, 0x3f, 0x26, 0x6d, 0x89, 0xf6, +0x7d, 0x04, 0x57, 0x38, 0x15, 0xd5, 0xc1, 0xe6, +0xc4, 0xdf, 0x9c, 0xe4, 0xbf, 0x3f, 0xbb, 0x8c, +0xeb, 0x7a, 0x78, 0xae, 0x87, 0xe7, 0x79, 0x20, +0x40, 0xaa, 0x12, 0xa9, 0x08, 0x50, 0xa9, 0xfa, +0xfc, 0x72, 0x55, 0x4c, 0x0b, 0xb4, 0x31, 0x1d, +0x45, 0x51, 0x94, 0x67, 0x9e, 0x79, 0xe6, 0x35, +0xfc, 0xa1, 0x9b, 0x28, 0x74, 0xa4, 0x86, 0xcf, +0xec, 0x12, 0xc7, 0x5f, 0xce, 0x80, 0xf0, 0x66, +0xa7, 0xb8, 0xde, 0x1f, 0x1c, 0x1c, 0xfc, 0x03, +0x29, 0x25, 0xca, 0x55, 0x1d, 0xd7, 0xf6, 0x40, +0xd6, 0xde, 0x3f, 0x7c, 0xf6, 0x8b, 0xcf, 0xe9, +0xd9, 0xde, 0x43, 0xf7, 0xe6, 0x2e, 0x84, 0x04, +0xcf, 0xf5, 0x10, 0x52, 0xe0, 0xd8, 0x0e, 0x9e, +0xc2, 0xaa, 0x31, 0x00, 0x40, 0xf9, 0x36, 0x82, +0xdb, 0xeb, 0xd0, 0xd3, 0xd3, 0x33, 0xd8, 0xdb, +0xdb, 0xbb, 0x7e, 0x6c, 0x6c, 0x2c, 0xd8, 0x38, +0xe9, 0x2c, 0xb0, 0x20, 0x08, 0xc2, 0x94, 0x00, +0x10, 0x5e, 0xfc, 0x04, 0x81, 0x8d, 0x78, 0x3a, +0x9d, 0xee, 0x6a, 0x6d, 0x6d, 0x5d, 0x8f, 0x0b, +0xe2, 0x86, 0xc4, 0x15, 0xf5, 0x1d, 0xdf, 0x8e, +0x57, 0xb6, 0x93, 0xea, 0x6a, 0xc2, 0x32, 0x4c, +0x3c, 0xcf, 0xc5, 0xb6, 0x1c, 0x84, 0x14, 0x3e, +0x23, 0x84, 0xdb, 0xd0, 0x3b, 0x14, 0x55, 0x41, +0x48, 0x81, 0xeb, 0xb8, 0x0b, 0x4c, 0x6a, 0x44, +0xf2, 0x20, 0x33, 0x0a, 0xde, 0x1a, 0x57, 0x6c, +0xdd, 0xba, 0x75, 0xdf, 0xd8, 0xd8, 0xd8, 0xf7, +0x94, 0x4e, 0x87, 0xc5, 0x48, 0x94, 0x10, 0x62, +0x11, 0x00, 0xe5, 0x0c, 0x88, 0xef, 0xdc, 0xb9, +0x73, 0x8f, 0x94, 0x52, 0x78, 0xe3, 0x02, 0xc7, +0x71, 0xca, 0x08, 0xb4, 0x58, 0xba, 0x7f, 0xaf, +0x9b, 0x7d, 0x7f, 0xb2, 0x07, 0x23, 0x67, 0xe0, +0xba, 0x2e, 0xb6, 0xed, 0x14, 0x8d, 0xc1, 0xf3, +0x70, 0x85, 0xdb, 0xd0, 0xec, 0xe1, 0xb8, 0x0e, +0x91, 0x58, 0x04, 0x4d, 0x55, 0x71, 0x6c, 0x17, +0xd7, 0x71, 0x71, 0x2c, 0x07, 0xd7, 0xa9, 0xcf, +0x1e, 0x71, 0x5f, 0x20, 0xd7, 0x4a, 0xfa, 0xfa, +0xfa, 0x76, 0xb0, 0x30, 0x04, 0x82, 0x48, 0x54, +0x38, 0x3a, 0x8d, 0x5a, 0x65, 0xfc, 0x07, 0x00, +0xc4, 0xfa, 0xfa, 0xfa, 0x76, 0x08, 0x21, 0x70, +0xef, 0x79, 0xb8, 0xa2, 0x76, 0x2f, 0xc4, 0x9a, +0xa2, 0x3c, 0xff, 0xb3, 0x67, 0xb1, 0x4d, 0x1b, +0x04, 0xb8, 0x8e, 0xcb, 0x6f, 0xfe, 0xf1, 0x2c, +0xe9, 0xde, 0x34, 0x3b, 0x0e, 0x6c, 0x03, 0xc0, +0xf5, 0x1c, 0x5c, 0xd1, 0xd8, 0x10, 0xc8, 0xe7, +0xf2, 0x24, 0xdb, 0x92, 0xe8, 0x51, 0xc5, 0x07, +0xc0, 0x51, 0x30, 0xb3, 0xa6, 0xff, 0xfe, 0x5a, +0x72, 0x1f, 0x34, 0x4f, 0x90, 0x4e, 0xa7, 0xfb, +0xd3, 0xe9, 0x74, 0xfb, 0xe4, 0xe4, 0xe4, 0xfd, +0x32, 0x00, 0x24, 0x85, 0xfd, 0x41, 0x2d, 0x06, +0xe8, 0xb1, 0x58, 0x2c, 0xd5, 0xd9, 0xd1, 0xb9, +0x49, 0x4a, 0x89, 0x91, 0xb1, 0xf0, 0xea, 0x8c, +0xfd, 0x8d, 0x4f, 0x6f, 0x44, 0xa8, 0x82, 0x7c, +0xce, 0x40, 0x75, 0x1c, 0xae, 0x5f, 0xfa, 0x8e, +0x33, 0x1f, 0x9f, 0x45, 0x08, 0x81, 0x65, 0x59, +0x3c, 0xfe, 0xc2, 0x56, 0x6c, 0xcf, 0x59, 0xd2, +0xfa, 0x61, 0x7e, 0x7e, 0x9e, 0xd6, 0x35, 0x69, +0x1c, 0xc7, 0x45, 0xda, 0x0e, 0x22, 0x22, 0x30, +0x1f, 0x9a, 0x78, 0x6e, 0x8d, 0xb6, 0xb8, 0xa0, +0x4e, 0xa8, 0x28, 0x9d, 0x52, 0xec, 0xda, 0xb5, +0xeb, 0xf7, 0x4f, 0x9c, 0x38, 0x71, 0x85, 0x6a, +0x0c, 0x08, 0x19, 0x1f, 0xf6, 0x01, 0x2a, 0xa0, +0x6f, 0xd8, 0xb0, 0xa1, 0x5f, 0x51, 0x15, 0xcd, +0x9d, 0x75, 0x71, 0x0c, 0xa7, 0x66, 0x4e, 0x47, +0xd5, 0x14, 0xd6, 0x3e, 0xde, 0x8b, 0x91, 0x33, +0x70, 0x1c, 0x87, 0xe9, 0xf1, 0x69, 0x4e, 0x1c, +0x3e, 0x59, 0xec, 0xed, 0xa1, 0xbf, 0xfb, 0x1c, +0xd3, 0x34, 0x71, 0xdc, 0xc6, 0x19, 0x00, 0x60, +0x98, 0x06, 0x96, 0x6d, 0x11, 0x4d, 0x46, 0x71, +0x1c, 0x05, 0xc5, 0x72, 0x30, 0x0c, 0x9d, 0xdc, +0x6c, 0xae, 0xe6, 0x73, 0xce, 0xb8, 0x8b, 0xda, +0xa5, 0xd0, 0xd1, 0xd1, 0xb1, 0x0e, 0xdf, 0x9f, +0x05, 0x11, 0xe9, 0x92, 0x90, 0x7c, 0xa5, 0x59, +0xa0, 0x38, 0x0c, 0x5a, 0x5a, 0x5a, 0xda, 0xa5, +0x94, 0x38, 0x86, 0x8b, 0x5b, 0xa7, 0xd7, 0x7a, +0x06, 0x7a, 0x71, 0x71, 0xc9, 0xe7, 0xf3, 0x68, +0xae, 0xca, 0xc5, 0x13, 0x17, 0x31, 0x1d, 0xb3, +0xc4, 0x67, 0x9c, 0x38, 0x72, 0x92, 0xe6, 0xce, +0xe6, 0xba, 0xef, 0x2a, 0x97, 0xa9, 0x89, 0x29, +0xfa, 0xba, 0xfb, 0x50, 0x6c, 0x07, 0xc7, 0x16, +0x24, 0x44, 0x9c, 0xf9, 0xf9, 0xb9, 0x9a, 0xcf, +0xb8, 0x86, 0x44, 0x4a, 0x49, 0x3c, 0x1e, 0x6f, +0xae, 0x66, 0x3c, 0x20, 0x2a, 0xcd, 0x02, 0xc5, +0xa0, 0x67, 0x53, 0x53, 0x53, 0x5a, 0x08, 0x81, +0x9b, 0x77, 0x71, 0xea, 0x78, 0xee, 0x58, 0x6b, +0x9c, 0x7c, 0x2e, 0x8f, 0xea, 0xa8, 0x64, 0xe7, +0x1c, 0x46, 0x2e, 0x5d, 0xa9, 0xd8, 0xd3, 0x0f, +0x33, 0x0f, 0xeb, 0x67, 0x07, 0xcb, 0x24, 0x67, +0xe4, 0xc8, 0xce, 0xcf, 0xd3, 0xd4, 0xda, 0x84, +0xb4, 0x25, 0x42, 0x97, 0x88, 0xbb, 0x02, 0xdb, +0xaa, 0xee, 0x0b, 0x6c, 0x43, 0x20, 0x84, 0x20, +0x16, 0x8b, 0xa5, 0x58, 0x30, 0xbe, 0x3c, 0x33, +0x55, 0x32, 0x04, 0x82, 0x6b, 0x70, 0x93, 0x92, +0x4c, 0x26, 0x9b, 0xa5, 0x94, 0xb8, 0xa6, 0x5b, +0x77, 0xd3, 0xa3, 0xe8, 0x92, 0x5c, 0x2e, 0x87, +0xe6, 0xa8, 0x4c, 0x3d, 0x98, 0xc6, 0xf6, 0xec, +0xba, 0x33, 0xc6, 0x52, 0x64, 0x7a, 0x7a, 0x86, +0xf6, 0x75, 0xed, 0xd8, 0x96, 0x8d, 0xb4, 0x6c, +0xd4, 0xb8, 0x8a, 0x39, 0x6b, 0x56, 0xbd, 0xdf, +0x36, 0x1c, 0xa4, 0x94, 0x01, 0x00, 0x25, 0xd3, +0x5f, 0xf8, 0x3e, 0x95, 0x52, 0xe3, 0x4b, 0x34, +0x99, 0x4c, 0x36, 0x0b, 0x21, 0xb0, 0xf2, 0x76, +0x5d, 0x06, 0x78, 0xd2, 0x23, 0x9f, 0xcf, 0x63, +0x3b, 0x0a, 0x93, 0xe3, 0x93, 0x75, 0xef, 0x5f, +0xaa, 0xe4, 0xf2, 0x39, 0xd4, 0x98, 0x8a, 0xd0, +0x04, 0xd2, 0x92, 0x68, 0x49, 0x0d, 0x67, 0xae, +0xfa, 0x6f, 0xb8, 0x86, 0x8b, 0x10, 0x82, 0x68, +0x34, 0x9a, 0xa0, 0xb4, 0xe7, 0x4b, 0xa4, 0x66, +0x62, 0x44, 0x08, 0x81, 0x94, 0xfe, 0x58, 0x12, +0xb2, 0x36, 0x6f, 0xf3, 0x39, 0x03, 0xa9, 0x48, +0x1c, 0x5b, 0xc5, 0xc3, 0xab, 0x7b, 0xff, 0x52, +0x45, 0x08, 0x41, 0x2c, 0x19, 0xc3, 0xb6, 0x6c, +0x6c, 0xcb, 0x46, 0xd5, 0xd5, 0x9a, 0xbf, 0x21, +0xa4, 0xdf, 0xf6, 0x7a, 0x0b, 0x28, 0x95, 0x1a, +0x69, 0xe9, 0x6c, 0x36, 0x3b, 0x2d, 0x84, 0x40, +0x4b, 0xa8, 0x48, 0xa5, 0x36, 0x9f, 0xb3, 0xb3, +0x59, 0x54, 0x5d, 0xc5, 0x71, 0x5d, 0xb4, 0x88, +0x56, 0xf7, 0xfe, 0xa5, 0x4a, 0xaa, 0x2d, 0x45, +0x34, 0x11, 0xc5, 0xb1, 0x6c, 0x2c, 0xd3, 0x07, +0xa1, 0xd6, 0x6f, 0xa8, 0x71, 0x05, 0x21, 0x04, +0x86, 0x61, 0xcc, 0x53, 0x96, 0x43, 0x2c, 0xb9, +0xaf, 0x70, 0x0d, 0x83, 0x10, 0xdc, 0xec, 0x14, +0x01, 0x88, 0x69, 0x28, 0x52, 0xa9, 0xd9, 0x40, +0x63, 0x3e, 0x8f, 0x15, 0x8f, 0xe1, 0xaa, 0x2e, +0xaa, 0xaa, 0x12, 0x4f, 0xc6, 0x31, 0xb2, 0xc6, +0xd2, 0x2d, 0xad, 0x22, 0x3d, 0xeb, 0xba, 0x89, +0x25, 0x62, 0xd8, 0xa6, 0x8d, 0xaa, 0x5a, 0x58, +0x79, 0xab, 0x66, 0x9b, 0xb4, 0xb8, 0x1e, 0x00, +0x30, 0x43, 0x28, 0x7f, 0x48, 0x8d, 0x80, 0x48, +0xf0, 0xcf, 0x62, 0x96, 0x76, 0x76, 0x76, 0x76, +0x42, 0x4a, 0x89, 0x96, 0xa8, 0x0f, 0x40, 0x6e, +0x26, 0x47, 0xa2, 0x29, 0x81, 0xab, 0xaa, 0xb8, +0xaa, 0x42, 0x7b, 0x77, 0x1b, 0xf7, 0xae, 0xdf, +0x5f, 0xba, 0xa1, 0x1b, 0x7a, 0xb8, 0x3b, 0x7a, +0xb7, 0xd4, 0x98, 0x88, 0xc6, 0xd6, 0x7d, 0x03, +0x48, 0x29, 0xb1, 0x35, 0x9b, 0xa9, 0xf9, 0x3c, +0x76, 0xde, 0xae, 0xd9, 0x26, 0x3d, 0xae, 0x21, +0xa5, 0xc4, 0x34, 0xcd, 0x19, 0x4a, 0x93, 0xa8, +0x25, 0x40, 0x94, 0xfb, 0x80, 0x92, 0x2c, 0xed, +0xe4, 0xe4, 0xe4, 0x43, 0x21, 0x04, 0x6a, 0x5c, +0x45, 0x51, 0x6a, 0x03, 0x60, 0x9b, 0x0e, 0x66, +0xd6, 0x44, 0x8b, 0x78, 0xb8, 0x8e, 0x4b, 0x24, +0x1a, 0x21, 0x96, 0x88, 0x61, 0xe6, 0xab, 0x7b, +0xea, 0x4a, 0x72, 0xe8, 0x4f, 0x0f, 0xf2, 0xf9, +0x91, 0x13, 0xdc, 0xfa, 0xee, 0x56, 0xf1, 0xbb, +0x5d, 0x2f, 0x0c, 0x92, 0x6a, 0x4d, 0x61, 0x9b, +0x36, 0x96, 0x69, 0x71, 0x7b, 0x64, 0xac, 0x6e, +0x7b, 0xb4, 0x84, 0x86, 0x10, 0x82, 0x6c, 0x36, +0x3b, 0xcd, 0x42, 0x44, 0xa8, 0x3c, 0x20, 0xe2, +0x05, 0x83, 0x28, 0x3c, 0xf6, 0x83, 0x1c, 0xbd, +0x79, 0xed, 0xda, 0xb5, 0x9b, 0x9e, 0xe7, 0x59, +0x7a, 0x4a, 0x43, 0x8d, 0xab, 0x45, 0x87, 0x58, +0x4d, 0xb3, 0xb3, 0x39, 0xcc, 0xbc, 0x4f, 0x4f, +0x33, 0x6f, 0x91, 0x6c, 0x49, 0xd6, 0x7d, 0xa6, +0x5c, 0x63, 0xc9, 0x18, 0xaf, 0xfe, 0xc5, 0x1f, +0xb2, 0x61, 0xdb, 0x7a, 0xa4, 0x94, 0x6c, 0xdc, +0xbe, 0x81, 0x3d, 0x3f, 0x7a, 0x82, 0x48, 0x2c, +0x42, 0x24, 0x16, 0x41, 0x08, 0xc9, 0xd8, 0x95, +0x3b, 0x75, 0xdf, 0x13, 0xed, 0x8c, 0x20, 0xa5, +0xe4, 0xc1, 0x83, 0x07, 0x37, 0x58, 0x9c, 0x4e, +0xaf, 0xc8, 0x80, 0x30, 0xfd, 0x2d, 0xc0, 0x9c, +0x9b, 0x9b, 0x9b, 0x79, 0xf0, 0xe0, 0xc1, 0xd5, +0x9e, 0x9e, 0x9e, 0x81, 0x78, 0x4f, 0x8c, 0xdc, +0xcd, 0x7c, 0x4d, 0xd4, 0x1d, 0xcb, 0xc1, 0x32, +0x2c, 0x5c, 0xc7, 0x45, 0x2a, 0x12, 0x45, 0x91, +0x4b, 0x66, 0x81, 0x1e, 0xd5, 0x89, 0x26, 0xa2, +0xbc, 0xfe, 0x97, 0x3f, 0xe1, 0xd4, 0x3f, 0xff, +0x07, 0x4f, 0xfd, 0xf8, 0x49, 0x84, 0x14, 0xd8, +0xa6, 0x8d, 0xa2, 0x28, 0x0c, 0x0f, 0x9d, 0x07, +0x97, 0x9a, 0x0c, 0x10, 0xaa, 0x20, 0xda, 0x1e, +0xc1, 0xc3, 0x73, 0xcf, 0x9e, 0x3d, 0x3b, 0x8c, +0x1f, 0x1b, 0x0c, 0xc7, 0x05, 0x17, 0x42, 0x62, +0x9e, 0xe7, 0x05, 0x65, 0x26, 0x01, 0x00, 0x41, +0x91, 0x42, 0x1e, 0xc8, 0x8d, 0x8e, 0x8e, 0xfe, +0xb6, 0xb7, 0xb7, 0x77, 0x20, 0xd6, 0x1d, 0xc5, +0xbc, 0x6d, 0xd5, 0x35, 0xc0, 0xce, 0xdb, 0x78, +0x9a, 0x87, 0xa2, 0x48, 0x5c, 0x29, 0xd1, 0x23, +0x3a, 0xb8, 0xe0, 0xd8, 0x8d, 0xad, 0x0b, 0xf4, +0x88, 0x5e, 0xec, 0xed, 0x57, 0x7e, 0xf6, 0x23, +0x1c, 0xdb, 0xc1, 0xb6, 0x6c, 0x14, 0x29, 0xb9, +0x72, 0xe1, 0x2a, 0x57, 0xce, 0x5f, 0xad, 0xeb, +0x8f, 0x22, 0x5d, 0x3a, 0x52, 0x91, 0x8c, 0x8f, +0x8f, 0xdf, 0x1a, 0x1f, 0x1f, 0x1f, 0xaf, 0x00, +0x40, 0x11, 0x84, 0xf0, 0x3c, 0x12, 0x66, 0x80, +0x59, 0x78, 0x28, 0x7b, 0xee, 0xdc, 0xb9, 0xaf, +0x00, 0x37, 0xd2, 0xae, 0xa3, 0xea, 0x0a, 0x8a, +0x94, 0x75, 0x15, 0xc7, 0xc3, 0x31, 0x1d, 0x1c, +0xc3, 0xc6, 0xce, 0x5b, 0x28, 0x52, 0xa2, 0x2a, +0x8d, 0x3d, 0xab, 0xea, 0x2a, 0x91, 0x58, 0x84, +0x68, 0xdc, 0xd7, 0x48, 0x4c, 0x27, 0x12, 0xd5, +0x99, 0xca, 0x4c, 0x71, 0xe6, 0x5f, 0xcf, 0x34, +0xf4, 0x8e, 0x58, 0x77, 0x04, 0x21, 0x04, 0xd7, +0xaf, 0x5f, 0xff, 0x2d, 0x7e, 0x3c, 0xb0, 0x3a, +0x03, 0xca, 0x00, 0x08, 0x7c, 0x80, 0x85, 0x1f, +0x3e, 0xca, 0x66, 0x32, 0x99, 0xcc, 0xc4, 0xc4, +0xc4, 0xf5, 0x8e, 0x8e, 0x8e, 0x8d, 0x89, 0xf5, +0x71, 0x72, 0xa3, 0xb5, 0x87, 0x41, 0x45, 0xf1, +0x40, 0xca, 0xc6, 0xd6, 0x05, 0xaa, 0xaa, 0x10, +0x89, 0xeb, 0x08, 0xfc, 0x00, 0x8c, 0x3f, 0xd7, +0x0b, 0x2e, 0x7f, 0xf9, 0x0d, 0x78, 0xb5, 0xa9, +0x0f, 0x20, 0x63, 0x92, 0x48, 0x77, 0x04, 0x04, +0xde, 0xf9, 0xf3, 0xe7, 0xcf, 0xe2, 0x07, 0x45, +0x83, 0x22, 0x8a, 0x92, 0xe9, 0xb0, 0x18, 0x14, +0x0d, 0x49, 0xd8, 0x07, 0xe4, 0xf1, 0xc3, 0xca, +0xb3, 0xa7, 0x4f, 0x9f, 0xfe, 0x37, 0x21, 0x04, +0xb1, 0x8d, 0x51, 0x94, 0xa8, 0x8a, 0x94, 0xca, +0xaa, 0x29, 0x42, 0xa0, 0xa8, 0x0a, 0x7a, 0x5c, +0x47, 0x8b, 0x68, 0xa8, 0x9a, 0x8a, 0xaa, 0x29, +0x1c, 0x78, 0xeb, 0x00, 0xfd, 0x5b, 0xd7, 0xd5, +0x7d, 0x3e, 0xb1, 0x39, 0x8e, 0x54, 0x24, 0x37, +0x6f, 0xde, 0xbc, 0x34, 0x3a, 0x3a, 0x7a, 0x83, +0x85, 0xba, 0x81, 0x8a, 0x0c, 0x90, 0x50, 0xcc, +0x9d, 0x87, 0xd7, 0x01, 0x36, 0x05, 0x06, 0x00, +0x33, 0x5f, 0x7c, 0xf1, 0xc5, 0x70, 0x26, 0x93, +0xb9, 0xa2, 0xe8, 0x0a, 0x89, 0xc7, 0x62, 0x28, +0x8a, 0xb2, 0x6a, 0xea, 0x3a, 0x0b, 0xe1, 0xaf, +0x60, 0x15, 0x2b, 0x84, 0x40, 0x8f, 0x68, 0x1c, +0xfa, 0xf9, 0x41, 0xfa, 0xb6, 0xac, 0xad, 0xfa, +0xac, 0x9e, 0xd6, 0x89, 0xae, 0x89, 0x00, 0x38, +0x9f, 0x7e, 0xfa, 0xe9, 0x51, 0xfc, 0x04, 0xe9, +0x5c, 0xa1, 0x33, 0xc3, 0x25, 0x34, 0x0b, 0x8c, +0x2b, 0x63, 0x40, 0x18, 0x00, 0xb3, 0x80, 0xdc, +0x1c, 0x30, 0x35, 0x34, 0x34, 0xf4, 0x2f, 0x6f, +0xbe, 0xf9, 0xe6, 0x5f, 0x45, 0xfb, 0x22, 0xc2, +0x1e, 0x73, 0x71, 0xb3, 0xab, 0x13, 0xd9, 0xbd, +0xf1, 0x5f, 0x37, 0x98, 0xb8, 0x33, 0x11, 0x8a, +0x23, 0xfa, 0xa1, 0x35, 0xc7, 0x76, 0x70, 0x6c, +0x87, 0xdd, 0x2f, 0xef, 0x66, 0x7e, 0x2a, 0xcb, +0xdc, 0xc4, 0xe2, 0x78, 0x40, 0x7c, 0x73, 0x14, +0x21, 0x04, 0x23, 0x23, 0x23, 0x67, 0xae, 0x5d, +0xbb, 0x76, 0x8d, 0xd2, 0x34, 0x79, 0x49, 0x62, +0x64, 0x51, 0x66, 0x28, 0x34, 0x1b, 0x84, 0x1d, +0x61, 0x11, 0x80, 0x8b, 0x17, 0x2f, 0x7e, 0xbd, +0x7f, 0xff, 0xfe, 0x4b, 0xeb, 0xd7, 0xaf, 0xdf, +0x95, 0xdc, 0x19, 0x23, 0x7b, 0x3e, 0x87, 0xb7, +0x0a, 0x99, 0xb1, 0xcf, 0xff, 0xfe, 0xd7, 0x0d, +0xdd, 0xa7, 0x94, 0xed, 0x03, 0xf4, 0x75, 0x1a, +0x7a, 0x9b, 0x86, 0x69, 0x9a, 0xf9, 0xa3, 0x47, +0x8f, 0x1e, 0xa5, 0x72, 0xb1, 0xc4, 0xa2, 0xfd, +0x40, 0x25, 0xcf, 0x54, 0x3e, 0x0c, 0xe6, 0xf1, +0x91, 0x9c, 0x38, 0x7c, 0xf8, 0xf0, 0x3f, 0xcc, +0xcf, 0xcf, 0x3f, 0x54, 0x52, 0x0a, 0xb1, 0xc7, +0x63, 0xab, 0xea, 0x0b, 0x96, 0xa2, 0x7a, 0x87, +0x4e, 0x74, 0x53, 0x04, 0xc0, 0x1b, 0x1a, 0x1a, +0xfa, 0x20, 0x93, 0xc9, 0xdc, 0x04, 0xa6, 0x58, +0x9c, 0x1e, 0x2f, 0xe9, 0xfd, 0x7a, 0x00, 0x84, +0x59, 0x30, 0x0b, 0x4c, 0x8e, 0x8f, 0x8f, 0xdf, +0xfa, 0xe0, 0x83, 0x0f, 0xfe, 0xd6, 0x71, 0x1c, +0x43, 0xef, 0xd6, 0x88, 0x6e, 0x88, 0xa0, 0x48, +0xe5, 0x07, 0x55, 0x2d, 0xa9, 0x12, 0xdb, 0x1e, +0x41, 0x2a, 0x92, 0xe1, 0xe1, 0xe1, 0x7f, 0x1f, +0x1a, 0x1a, 0x3a, 0x45, 0x8d, 0x2a, 0x91, 0x72, +0x63, 0x1f, 0xa9, 0x40, 0xe2, 0xe5, 0x97, 0x5f, +0x7e, 0xe9, 0xd5, 0x57, 0x5f, 0x7d, 0x5b, 0x08, +0x21, 0xac, 0xab, 0x0e, 0xf6, 0xed, 0x1f, 0x26, +0x4b, 0x2c, 0x93, 0x02, 0x7d, 0xbb, 0x8a, 0x88, +0x08, 0x46, 0x47, 0x47, 0x2f, 0xbd, 0xfb, 0xee, +0xbb, 0x4b, 0x2e, 0x90, 0x58, 0x14, 0x10, 0x29, +0xf3, 0x05, 0x41, 0x1a, 0x29, 0xc7, 0x42, 0xb4, +0x58, 0x39, 0x7e, 0xfc, 0xf8, 0xa9, 0x8e, 0x8e, +0x8e, 0xf6, 0xe7, 0x9e, 0x7b, 0xee, 0x35, 0xfd, +0x31, 0x55, 0x28, 0x4d, 0x12, 0x7b, 0xc4, 0x29, +0xf3, 0xaf, 0xab, 0x2b, 0xb2, 0x5d, 0xa2, 0x6e, +0x91, 0x08, 0x45, 0x90, 0xc9, 0x64, 0x46, 0xdf, +0x7f, 0xff, 0xfd, 0x5f, 0xb2, 0xb8, 0x3c, 0x26, +0x5c, 0x28, 0xd5, 0x58, 0x89, 0x0c, 0x34, 0x5e, +0x24, 0x75, 0xe8, 0xd0, 0xa1, 0x03, 0x07, 0x0f, +0x1e, 0xfc, 0xa9, 0xa6, 0x69, 0xba, 0x37, 0xeb, +0x61, 0x5f, 0x76, 0xf0, 0x96, 0xb6, 0xf9, 0x7b, +0x24, 0x51, 0xd6, 0x49, 0x94, 0x7e, 0x7f, 0xf4, +0x8e, 0x8c, 0x8c, 0x0c, 0xbf, 0xf7, 0xde, 0x7b, +0xbf, 0x32, 0x0c, 0x63, 0xe5, 0x8a, 0xa4, 0xa0, +0xf1, 0x32, 0xb9, 0xdd, 0xbb, 0x77, 0xef, 0x7c, +0xe3, 0x8d, 0x37, 0x7e, 0x9e, 0x48, 0x24, 0x5a, +0x70, 0xc0, 0xbd, 0xed, 0xe1, 0x8e, 0x79, 0xab, +0xc2, 0x06, 0x91, 0x16, 0xc8, 0xf5, 0x02, 0x91, +0x00, 0xcf, 0xf3, 0xdc, 0x2f, 0xbf, 0xfc, 0xf2, +0xd8, 0xe1, 0xc3, 0x87, 0x57, 0xbe, 0x4c, 0xae, +0xf8, 0xcf, 0x06, 0x0b, 0x25, 0xbb, 0xbb, 0xbb, +0xd7, 0xbd, 0xf3, 0xce, 0x3b, 0x7f, 0xb6, 0x76, +0xed, 0xda, 0x01, 0x00, 0x4c, 0x70, 0x6f, 0x7a, +0xb8, 0xf7, 0xa9, 0xe0, 0x76, 0x1e, 0xc1, 0xf0, +0x24, 0xbe, 0xe1, 0x2d, 0xfe, 0xe7, 0x6c, 0x36, +0x3b, 0xfd, 0xc9, 0x27, 0x9f, 0xfc, 0xd3, 0xf1, +0xe3, 0xc7, 0xff, 0x13, 0xbf, 0x48, 0xf2, 0x21, +0xbe, 0xd7, 0xaf, 0x54, 0x0b, 0xf0, 0x68, 0x85, +0x92, 0xc5, 0x1b, 0xaa, 0x97, 0xca, 0xc6, 0xf1, +0xf3, 0xef, 0xc5, 0x52, 0xd9, 0xfd, 0xfb, 0xf7, +0xef, 0x39, 0x78, 0xf0, 0xe0, 0x6b, 0x6d, 0x6d, +0x6d, 0xbd, 0x00, 0x58, 0xe0, 0x4d, 0xf8, 0xcd, +0xf3, 0xa6, 0x59, 0x1a, 0x18, 0x71, 0x10, 0xad, +0xbe, 0x92, 0xf4, 0xbf, 0x32, 0x4d, 0x33, 0x3f, +0x3c, 0x3c, 0xfc, 0xf9, 0x87, 0x1f, 0x7e, 0xf8, +0x69, 0x36, 0x9b, 0x0d, 0x4a, 0x65, 0xa7, 0x28, +0x5d, 0xf1, 0xad, 0x5c, 0xa9, 0x6c, 0x15, 0x10, +0xaa, 0x15, 0x4b, 0x37, 0xe3, 0x0f, 0x8d, 0xf4, +0xeb, 0xaf, 0xbf, 0xfe, 0xfc, 0xf3, 0xcf, 0x3f, +0x7f, 0x28, 0x95, 0x4a, 0x15, 0x8b, 0xa5, 0x71, +0x0a, 0x4d, 0x35, 0xc0, 0x33, 0xc5, 0xc2, 0x89, +0x00, 0x97, 0xe2, 0x29, 0x02, 0x11, 0xf1, 0xfc, +0xbf, 0x53, 0xf8, 0x10, 0x17, 0xc4, 0xb6, 0x6d, +0xf3, 0xf2, 0xe5, 0xcb, 0x67, 0x8e, 0x1c, 0x39, +0xf2, 0x51, 0x26, 0x93, 0xb9, 0x5b, 0x78, 0xd3, +0x74, 0x41, 0xc3, 0xbd, 0xbe, 0xf2, 0xc5, 0xd2, +0x35, 0x40, 0x08, 0x1f, 0x90, 0x08, 0xce, 0x08, +0x24, 0x0b, 0xcd, 0x4f, 0x01, 0x4d, 0xfb, 0xf6, +0xed, 0xdb, 0xb2, 0x77, 0xef, 0xde, 0x3d, 0x1b, +0x37, 0x6e, 0xdc, 0x96, 0x4e, 0xa7, 0x97, 0x54, +0x2e, 0x6f, 0x18, 0x46, 0xf6, 0xc6, 0x8d, 0x1b, +0xdf, 0x7d, 0xfd, 0xf5, 0xd7, 0x17, 0x4e, 0x9e, +0x3c, 0x79, 0x61, 0x6e, 0x6e, 0x2e, 0x70, 0x6e, +0x41, 0x6f, 0xff, 0xee, 0xca, 0xe5, 0x8b, 0x37, +0xd7, 0x3e, 0x30, 0x11, 0x30, 0xa2, 0xe2, 0x81, +0x89, 0x81, 0x81, 0x81, 0xde, 0xdd, 0xbb, 0x77, +0x0f, 0xa4, 0x52, 0xa9, 0x74, 0x53, 0x53, 0x53, +0x73, 0x3c, 0x1e, 0x4f, 0x25, 0x12, 0x89, 0x26, +0x55, 0x55, 0xd5, 0x6c, 0x36, 0x3b, 0x37, 0x37, +0x37, 0x37, 0x33, 0x3f, 0x3f, 0x3f, 0x33, 0x3b, +0x3b, 0x3b, 0x79, 0xfb, 0xf6, 0xed, 0xb1, 0x53, +0xa7, 0x4e, 0x7d, 0x63, 0x59, 0x56, 0xad, 0x03, +0x13, 0x61, 0xc3, 0x4b, 0x4e, 0x8e, 0x34, 0x6a, +0xfc, 0x92, 0x01, 0x08, 0x81, 0x00, 0x8f, 0x7e, +0x64, 0x26, 0x9c, 0xa8, 0x0c, 0xc7, 0x24, 0x83, +0x73, 0x40, 0xe1, 0x23, 0x33, 0xf9, 0x0a, 0x5a, +0xf5, 0xc8, 0x0c, 0x35, 0xbc, 0x7d, 0x55, 0x7b, +0x7e, 0xa0, 0x43, 0x53, 0xe1, 0x93, 0x63, 0x50, +0xba, 0xfc, 0x0e, 0x40, 0xf8, 0x9d, 0x1c, 0x9a, +0x5a, 0xd6, 0xc1, 0xc9, 0x65, 0x1c, 0x9b, 0x2b, +0xcf, 0xd5, 0x95, 0xe7, 0x24, 0x02, 0xad, 0x7b, +0x6c, 0x8e, 0x65, 0x18, 0x0f, 0xcb, 0x04, 0x00, +0x4a, 0x40, 0x80, 0x52, 0x46, 0x84, 0x33, 0xcd, +0x8d, 0x1c, 0x9c, 0x2c, 0x0f, 0xca, 0xd4, 0x3c, +0x38, 0xc9, 0x32, 0x0d, 0x2f, 0x36, 0xf8, 0xff, +0xfb, 0xd1, 0xd9, 0x15, 0x03, 0xa0, 0xe4, 0xa5, +0x2b, 0x78, 0x78, 0x3a, 0x74, 0xf5, 0x3f, 0xfc, +0x6f, 0x3d, 0x3c, 0xfd, 0x7f, 0x55, 0xfe, 0x07, +0xcd, 0x43, 0x6c, 0x08, 0xe0, 0x1a, 0x5c, 0x9d, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity10.png b/source/bitmaps/misc/activity10.png new file mode 100644 index 0000000000000000000000000000000000000000..879f7de30e832bfc1a65e21243713aff372aeb46 GIT binary patch literal 4196 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 + +#ifndef MISC_ACTIVITY11_CPP +#define MISC_ACTIVITY11_CPP + +static unsigned char misc_activity11_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x31, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xd9, +0x73, 0x5c, 0x55, 0x7e, 0xc7, 0x3f, 0xe7, 0xdc, +0xa5, 0x6f, 0x2f, 0xea, 0x56, 0x6b, 0x5f, 0x2c, +0xd9, 0xb2, 0x3d, 0xc6, 0x0b, 0xb6, 0x20, 0x60, +0xc0, 0x60, 0x83, 0x1d, 0x98, 0x8a, 0xc3, 0x43, +0x00, 0x17, 0xf3, 0xc0, 0x14, 0x95, 0x97, 0x10, +0x32, 0x55, 0xc9, 0x0b, 0x95, 0xbc, 0x65, 0xfe, +0x83, 0x29, 0x9e, 0x52, 0x14, 0x35, 0x95, 0x49, +0x5e, 0x20, 0x81, 0x9a, 0xa9, 0x62, 0x08, 0xe0, +0x62, 0x0a, 0x3b, 0x19, 0x42, 0x00, 0x63, 0x1b, +0x63, 0x9b, 0xf1, 0x18, 0x8c, 0x6c, 0xcb, 0xd6, +0xe2, 0x45, 0x92, 0x2d, 0x6b, 0x6b, 0xf5, 0xdd, +0xf3, 0x70, 0xfb, 0xb6, 0x6e, 0xb7, 0x7a, 0x13, +0x92, 0x27, 0x49, 0xe5, 0xa7, 0xfa, 0xd5, 0x55, +0xdf, 0xbe, 0xf7, 0xf4, 0xf9, 0x7d, 0x7f, 0xcb, +0x39, 0xe7, 0x77, 0x7e, 0x47, 0xf8, 0xbe, 0xcf, +0xdd, 0x24, 0x21, 0x84, 0xa8, 0xf6, 0x55, 0x85, +0x7b, 0xcb, 0x3a, 0xe3, 0xdf, 0xe5, 0x0e, 0xaa, +0x77, 0xa3, 0xd1, 0x32, 0xa1, 0x45, 0x95, 0x6b, +0x35, 0xf2, 0xa3, 0xd7, 0x72, 0xfc, 0xd6, 0x1a, +0x10, 0xb1, 0x56, 0xed, 0x55, 0x10, 0x5a, 0x94, +0xfd, 0x2f, 0x2b, 0xdc, 0x8b, 0x52, 0x54, 0xf0, +0x5a, 0x1c, 0x3c, 0xb4, 0x46, 0x1d, 0x5f, 0xb5, +0x05, 0x54, 0x11, 0x5c, 0x46, 0xae, 0x95, 0x58, +0x50, 0x0a, 0x42, 0x28, 0x8c, 0x57, 0xf8, 0xdf, +0xab, 0xc2, 0x45, 0x20, 0xc2, 0x9f, 0x5d, 0x2d, +0x10, 0xab, 0x02, 0x20, 0x22, 0x7c, 0xb9, 0xd0, +0x4a, 0x84, 0xd5, 0x02, 0x2b, 0x65, 0x5c, 0x6e, +0x05, 0x51, 0x41, 0x1d, 0xc0, 0xad, 0x70, 0x75, +0x29, 0x03, 0x63, 0xb5, 0x40, 0x7c, 0x2f, 0x17, +0x28, 0x13, 0xbc, 0x5c, 0x68, 0x15, 0xd0, 0x22, +0xac, 0x17, 0x38, 0xfc, 0x1c, 0x02, 0x12, 0xb5, +0x84, 0x50, 0xeb, 0xa1, 0xb0, 0x76, 0x81, 0xad, +0xb2, 0x6b, 0xc8, 0x95, 0xc0, 0xf8, 0x5e, 0x20, +0xac, 0xd8, 0x02, 0x22, 0xc2, 0x87, 0x02, 0x44, +0xb5, 0xac, 0x03, 0xb1, 0x02, 0x1b, 0x05, 0x8e, +0x47, 0x3e, 0x87, 0x60, 0x84, 0x16, 0x11, 0x02, +0x10, 0xd5, 0x7c, 0x28, 0xb0, 0x59, 0xe0, 0x3c, +0xb0, 0x58, 0xb8, 0xe6, 0x0b, 0xf7, 0x42, 0x40, +0x42, 0xcb, 0xf0, 0x28, 0x58, 0xc3, 0x4a, 0x41, +0x58, 0x11, 0x00, 0x05, 0xe1, 0x43, 0x0e, 0x35, +0x1e, 0x6a, 0x39, 0x14, 0x38, 0x01, 0x24, 0x23, +0x9c, 0x00, 0x12, 0x1d, 0x1d, 0x1d, 0xbd, 0xbd, +0xbd, 0xbd, 0x5b, 0x0d, 0xc3, 0x68, 0x31, 0x0c, +0xa3, 0x59, 0xd7, 0xf5, 0xb4, 0xae, 0xeb, 0x69, +0x29, 0xa5, 0x66, 0x59, 0xd6, 0x9c, 0x65, 0x59, +0xb3, 0xa6, 0x69, 0xde, 0x31, 0x4d, 0x73, 0xfa, +0xce, 0x9d, 0x3b, 0x63, 0x97, 0x2e, 0x5d, 0xfa, +0xc6, 0xf3, 0xbc, 0x05, 0x20, 0x07, 0x2c, 0x44, +0x38, 0x17, 0x01, 0xc4, 0x2c, 0x07, 0x62, 0xa5, +0x2e, 0xd1, 0xb0, 0x0b, 0x44, 0x84, 0x0f, 0xcd, +0x3d, 0xd4, 0x78, 0xa8, 0xe5, 0x24, 0xd0, 0x54, +0xe0, 0x34, 0xd0, 0xd4, 0xdf, 0xdf, 0x7f, 0x4f, +0x5f, 0x5f, 0xdf, 0x83, 0x6d, 0x6d, 0x6d, 0x3b, +0x12, 0x89, 0x44, 0x67, 0x43, 0x3f, 0x54, 0x20, +0xc7, 0x71, 0x72, 0xd3, 0xd3, 0xd3, 0x17, 0x6e, +0xdc, 0xb8, 0x71, 0x7a, 0x68, 0x68, 0xe8, 0x8c, +0x69, 0x9a, 0xb7, 0x80, 0x59, 0x60, 0xae, 0xc0, +0xf3, 0x2c, 0x81, 0x11, 0x5a, 0x44, 0xd4, 0x2d, +0x1a, 0x02, 0xa1, 0x21, 0x00, 0x2a, 0x08, 0xaf, +0x11, 0x98, 0x75, 0x1c, 0x48, 0x15, 0x84, 0x6e, +0x06, 0x32, 0x40, 0xcb, 0x7d, 0xf7, 0xdd, 0xf7, +0xf8, 0xa6, 0x4d, 0x9b, 0x0e, 0x1a, 0x86, 0xd1, +0x1a, 0xb6, 0xa1, 0xd8, 0x2a, 0xd9, 0x89, 0x16, +0x8c, 0xf9, 0x38, 0x7a, 0x5e, 0x47, 0x33, 0x75, +0xf4, 0x7c, 0x0c, 0xe9, 0x4a, 0x6c, 0xc3, 0xc2, +0x8a, 0x59, 0x58, 0x86, 0x89, 0x15, 0x37, 0xb9, +0xd3, 0x31, 0x4d, 0x3e, 0xb9, 0x58, 0xfc, 0x7d, +0xcf, 0xf3, 0xec, 0xeb, 0xd7, 0xaf, 0x7f, 0x71, +0xea, 0xd4, 0xa9, 0xf7, 0xe7, 0xe6, 0xe6, 0xae, +0x01, 0xd3, 0xc0, 0x4c, 0x04, 0x90, 0x1c, 0x4b, +0xae, 0xe1, 0xac, 0x04, 0x84, 0xba, 0x00, 0x94, +0x09, 0x1f, 0x06, 0x38, 0x83, 0x25, 0x8d, 0x67, +0x80, 0x16, 0xa0, 0x65, 0xeb, 0xd6, 0xad, 0x8f, +0x6c, 0xdb, 0xb6, 0xed, 0xcf, 0x92, 0xc9, 0x64, +0x37, 0x80, 0x96, 0xd7, 0xc9, 0xde, 0x68, 0x21, +0x7b, 0xad, 0x8d, 0xf4, 0x54, 0x06, 0xe1, 0xd5, +0x9b, 0x03, 0x2d, 0xd1, 0x62, 0x53, 0x8e, 0xe9, +0x9e, 0x5b, 0x4c, 0x77, 0xdf, 0x62, 0xa1, 0x79, +0x1e, 0x00, 0xd7, 0x75, 0xcd, 0xd1, 0xd1, 0xd1, +0xdf, 0x9e, 0x3c, 0x79, 0xf2, 0xb0, 0x69, 0x9a, +0x37, 0x81, 0xdb, 0x05, 0x30, 0x66, 0x09, 0xdc, +0x63, 0xb1, 0x00, 0x44, 0xc3, 0x20, 0xd4, 0x04, +0xa0, 0x8a, 0xf0, 0xa1, 0xb9, 0x67, 0x80, 0x2c, +0xd0, 0x96, 0xc9, 0x64, 0x36, 0x3c, 0xf1, 0xc4, +0x13, 0x2f, 0x35, 0x37, 0x37, 0x6f, 0x09, 0x04, +0xd7, 0xe8, 0xfe, 0x66, 0x1d, 0xad, 0x23, 0xed, +0x08, 0xbf, 0x71, 0xa1, 0xab, 0x51, 0x2e, 0xb3, +0xc0, 0xf8, 0xbd, 0x23, 0xcc, 0xb5, 0xcf, 0x02, +0x60, 0xdb, 0xf6, 0xdc, 0xd9, 0xb3, 0x67, 0xdf, +0x3c, 0x7f, 0xfe, 0xfc, 0x31, 0x60, 0x0a, 0xb8, +0x45, 0x60, 0x11, 0x51, 0x6b, 0x68, 0x08, 0x84, +0xaa, 0x00, 0x54, 0x30, 0x7b, 0x9d, 0x25, 0x93, +0x6f, 0x06, 0x5a, 0x81, 0xf6, 0xfe, 0xfe, 0xfe, +0xc1, 0x3d, 0x7b, 0xf6, 0xbc, 0x6c, 0x18, 0x46, +0xb3, 0x74, 0x24, 0xed, 0x43, 0xdd, 0xb4, 0x5f, +0xec, 0x44, 0xba, 0x72, 0xd5, 0x82, 0x97, 0xd3, +0x5c, 0xe7, 0x0c, 0xd7, 0x77, 0x8c, 0x91, 0x4f, +0x2f, 0x02, 0x78, 0xdf, 0x7d, 0xf7, 0xdd, 0xe1, +0x63, 0xc7, 0x8e, 0xbd, 0x0b, 0x4c, 0x10, 0x00, +0x31, 0xcd, 0x72, 0x10, 0x5c, 0x02, 0xf9, 0x1b, +0x07, 0xa0, 0x6c, 0xa8, 0xab, 0x24, 0x7c, 0x3b, +0xd0, 0x31, 0x38, 0x38, 0xf8, 0xe4, 0xe0, 0xe0, +0xe0, 0x8f, 0x15, 0x45, 0xd1, 0xe3, 0xd3, 0x09, +0xfa, 0x8e, 0x6f, 0x40, 0xcd, 0x6b, 0x6b, 0x27, +0x71, 0xc5, 0x1e, 0xc3, 0xe4, 0xd6, 0x1b, 0x4c, +0xde, 0x73, 0x13, 0x80, 0x9b, 0x37, 0x6f, 0x9e, +0x3a, 0x72, 0xe4, 0xc8, 0x2f, 0x6c, 0xdb, 0xbe, +0x06, 0x4c, 0x12, 0xb8, 0xc5, 0x2c, 0xcb, 0x2d, +0xa1, 0x22, 0x08, 0xb5, 0x00, 0x08, 0x87, 0xba, +0xd0, 0xec, 0x53, 0x14, 0x4c, 0x1e, 0xe8, 0x7a, +0xec, 0xb1, 0xc7, 0x0e, 0x6d, 0xd9, 0xb2, 0xe5, +0x59, 0x21, 0x84, 0x48, 0x8f, 0x36, 0xd3, 0x79, +0xba, 0x67, 0x45, 0x3e, 0xbe, 0x5a, 0x9a, 0xeb, +0x99, 0xe5, 0xc6, 0x03, 0xe3, 0xf8, 0x8a, 0xc7, +0xec, 0xec, 0xec, 0xf0, 0xfb, 0xef, 0xbf, 0xff, +0x33, 0xd3, 0x34, 0xc7, 0x08, 0xac, 0x21, 0x0a, +0x42, 0x31, 0x30, 0x36, 0x04, 0x40, 0x99, 0xe9, +0x87, 0xd1, 0x3e, 0xaa, 0xf9, 0xae, 0x9d, 0x3b, +0x77, 0x1e, 0x78, 0xf8, 0xe1, 0x87, 0x5f, 0x02, +0x44, 0xeb, 0xb9, 0x76, 0x32, 0x17, 0x5b, 0xee, +0x9a, 0xa0, 0xb5, 0xc8, 0xca, 0x98, 0xdc, 0x78, +0x64, 0x0c, 0x27, 0xee, 0x30, 0x31, 0x31, 0x71, +0xf6, 0xbd, 0xf7, 0xde, 0xfb, 0x07, 0xe0, 0x1a, +0x4b, 0x20, 0xcc, 0x11, 0x04, 0xc6, 0xe2, 0x10, +0x59, 0x0e, 0x42, 0x89, 0xa3, 0x96, 0x4d, 0x71, +0xc3, 0xb1, 0x3e, 0x8c, 0xf8, 0x19, 0xa0, 0xb5, +0xaf, 0xaf, 0x6f, 0xc7, 0xee, 0xdd, 0xbb, 0xff, +0x5c, 0x08, 0x21, 0xb2, 0xdf, 0xb6, 0x92, 0xba, +0x94, 0xc1, 0x15, 0xee, 0x32, 0x96, 0x09, 0xc9, +0x9e, 0xbf, 0x7d, 0x98, 0x7b, 0x9e, 0xdb, 0x42, +0xd3, 0xfa, 0x54, 0xc5, 0x67, 0x56, 0xcb, 0xca, +0xac, 0x4a, 0xc7, 0xb1, 0x1e, 0xa4, 0xab, 0xd0, +0xd9, 0xd9, 0x39, 0xb8, 0x7f, 0xff, 0xfe, 0xe7, +0x09, 0x94, 0x94, 0x25, 0x18, 0xa1, 0xe2, 0x04, +0xee, 0x5b, 0x9c, 0x75, 0x96, 0xe7, 0x27, 0x2a, +0xcd, 0x04, 0x2b, 0x05, 0xbe, 0x26, 0x20, 0x9b, +0x4e, 0xa7, 0xfb, 0x0e, 0x1c, 0x38, 0xf0, 0x13, +0x4d, 0xd3, 0x62, 0xf1, 0xf1, 0x04, 0xa9, 0xa1, +0x0c, 0x9e, 0xf4, 0x2a, 0x6a, 0xc7, 0x34, 0x4d, +0xa6, 0x2e, 0x4d, 0xf1, 0xe8, 0x5f, 0x3f, 0x82, +0x16, 0xd7, 0x58, 0xbc, 0xb3, 0xc8, 0xe8, 0xc9, +0x71, 0xae, 0x7e, 0x3e, 0xc2, 0xc8, 0x89, 0x51, +0xac, 0x79, 0xab, 0x8e, 0x7e, 0x1b, 0x23, 0x65, +0x41, 0xa5, 0xf5, 0xab, 0x0e, 0x6e, 0x3f, 0x3c, +0xc1, 0x96, 0x2d, 0x5b, 0xfe, 0x64, 0x66, 0x66, +0x66, 0xfc, 0xf4, 0xe9, 0xd3, 0x1f, 0x51, 0x79, +0xa6, 0x58, 0xb2, 0xa4, 0x86, 0x32, 0x17, 0x28, +0xa0, 0x13, 0x0e, 0x79, 0xa1, 0xe9, 0xb7, 0x00, +0x1d, 0xc0, 0xba, 0xe7, 0x9e, 0x7b, 0xee, 0x95, +0xce, 0xce, 0xce, 0xfb, 0xd4, 0x19, 0x8d, 0xec, +0x7f, 0xb5, 0x23, 0xdc, 0xda, 0x3e, 0x2f, 0x55, +0xc9, 0x8f, 0x5e, 0x3f, 0x44, 0xc7, 0x3d, 0xed, +0x68, 0x09, 0x0d, 0xcd, 0x50, 0x91, 0xaa, 0xc4, +0x31, 0x5d, 0x46, 0xbf, 0x1c, 0xe3, 0xeb, 0x77, +0x7e, 0xc7, 0xf9, 0xc3, 0xdf, 0xae, 0x09, 0x10, +0xb9, 0x1f, 0xcc, 0x31, 0xbf, 0x7d, 0x16, 0xd7, +0x71, 0xcd, 0x5f, 0xfe, 0xea, 0x97, 0x3f, 0x9d, +0x99, 0x99, 0xf9, 0x16, 0xb8, 0x41, 0x30, 0x3a, +0xcc, 0xb2, 0xe4, 0x0a, 0x25, 0x01, 0xb1, 0xe8, +0x02, 0xf5, 0x86, 0xbd, 0x4d, 0x9b, 0x36, 0xdd, +0xdb, 0xd9, 0xd9, 0x39, 0x28, 0x7c, 0x41, 0xd3, +0x97, 0xcd, 0xf8, 0x9e, 0x87, 0x27, 0xdc, 0x9a, +0xec, 0xb8, 0x36, 0x9f, 0xfe, 0xfc, 0x33, 0x10, +0x20, 0x44, 0x00, 0x88, 0x16, 0xd7, 0x88, 0x35, +0xc5, 0x58, 0xff, 0x70, 0x1f, 0xad, 0x9b, 0x5b, +0xea, 0xb6, 0xd1, 0x28, 0x1b, 0x17, 0x13, 0xe8, +0xb7, 0x62, 0xa8, 0x9a, 0x1a, 0xdb, 0xbb, 0x77, +0xef, 0xb3, 0x2c, 0xb9, 0x41, 0xa2, 0xa0, 0xcc, +0xe8, 0x0a, 0x74, 0x49, 0x49, 0x65, 0x40, 0x46, +0x2d, 0xa0, 0x04, 0x80, 0xdd, 0xbb, 0x77, 0x3f, +0xa7, 0x28, 0x8a, 0x30, 0x46, 0x12, 0xb0, 0x28, +0x70, 0xa5, 0xd7, 0x18, 0xe3, 0x61, 0x2d, 0x5a, +0x78, 0xae, 0x87, 0xeb, 0x78, 0x78, 0x4e, 0xb0, +0x7a, 0x15, 0x52, 0x70, 0xf5, 0xf4, 0x48, 0xe3, +0xed, 0x34, 0xc0, 0xc6, 0x37, 0x49, 0xa4, 0x94, +0xf4, 0xf7, 0xf7, 0x3f, 0xd2, 0xd3, 0xd3, 0xb3, +0x91, 0x60, 0x4d, 0x92, 0x2c, 0x00, 0xa0, 0x51, +0x21, 0x16, 0xc8, 0x32, 0xed, 0x97, 0xbb, 0x40, +0x02, 0x48, 0xef, 0xda, 0xb5, 0xeb, 0x81, 0xb6, +0xb6, 0xb6, 0xcd, 0xd2, 0x91, 0x68, 0xdf, 0xc5, +0x1a, 0xd2, 0x08, 0xaa, 0xcf, 0x03, 0x2f, 0xdc, +0xc7, 0xc1, 0x9f, 0xfe, 0x10, 0x04, 0xd8, 0xa6, +0x83, 0x93, 0xb7, 0x31, 0x73, 0x16, 0xf6, 0xa2, +0x8d, 0x9d, 0xb7, 0xb9, 0x7a, 0x66, 0x64, 0xcd, +0x2c, 0xc0, 0x13, 0x2e, 0x62, 0x46, 0xa0, 0x8d, +0xeb, 0x28, 0x8a, 0xa2, 0x3c, 0xfa, 0xe8, 0xa3, +0xcf, 0x46, 0x00, 0x88, 0x47, 0x00, 0x28, 0x51, +0x7a, 0x79, 0x10, 0x8c, 0x2e, 0x76, 0x8a, 0xf3, +0xfd, 0xc1, 0xc1, 0xc1, 0x3f, 0x95, 0x52, 0xa2, +0x5c, 0xd2, 0xf1, 0x1c, 0x1f, 0x64, 0xed, 0xf5, +0x83, 0xd1, 0x64, 0xf0, 0xc4, 0x5f, 0xee, 0xa5, +0x7b, 0x5b, 0x37, 0x8e, 0xed, 0x22, 0x4d, 0x1b, +0x04, 0xf8, 0xf8, 0xa8, 0xae, 0x87, 0x90, 0x82, +0xf1, 0x73, 0xe3, 0x2c, 0xe6, 0xf3, 0xcb, 0x6d, +0x70, 0x95, 0xa4, 0x7c, 0x1b, 0xc3, 0xeb, 0x75, +0xe9, 0xee, 0xee, 0x1e, 0xec, 0xed, 0xed, 0xdd, +0x30, 0x3e, 0x3e, 0x1e, 0x2e, 0x9c, 0x74, 0x96, +0x26, 0x46, 0x61, 0x12, 0xa6, 0x04, 0x80, 0xe8, +0xe4, 0x27, 0x4c, 0x6c, 0x24, 0xb2, 0xd9, 0x6c, +0x67, 0x4b, 0x4b, 0xcb, 0x06, 0x3c, 0x10, 0x57, +0x65, 0xa0, 0xdd, 0x1a, 0x24, 0x15, 0xc9, 0x43, +0x2f, 0x3c, 0x40, 0xa6, 0x27, 0x8d, 0x6d, 0xd9, +0x08, 0x05, 0xc0, 0xe7, 0xbb, 0xcf, 0x86, 0x58, +0xff, 0x47, 0xfd, 0x34, 0xb5, 0xa6, 0x10, 0x52, +0x72, 0xf1, 0xf8, 0xe5, 0xba, 0x6d, 0x7d, 0x2f, +0xca, 0x83, 0x9c, 0x50, 0xf0, 0x7b, 0x3c, 0xb1, +0x6d, 0xdb, 0xb6, 0x87, 0xc6, 0xc7, 0xc7, 0xbf, +0xa3, 0x74, 0x38, 0x2c, 0x66, 0xa2, 0x84, 0x10, +0xcb, 0x00, 0x28, 0xb7, 0x80, 0xc4, 0xae, 0x5d, +0xbb, 0x1e, 0x94, 0x52, 0x0a, 0x7f, 0x4a, 0xe0, +0xba, 0x6e, 0x5d, 0x8d, 0xed, 0xf8, 0xe1, 0x36, +0x52, 0x1d, 0x29, 0x2c, 0xcb, 0xc6, 0x97, 0x60, +0x5b, 0x16, 0xc7, 0x7f, 0x75, 0x92, 0x8b, 0xc7, +0x2f, 0xb1, 0xe3, 0xc9, 0xed, 0x3c, 0xf5, 0x93, +0x3f, 0x46, 0x4a, 0xc9, 0xe5, 0xd3, 0x97, 0x71, +0xe5, 0x5d, 0x00, 0x00, 0x10, 0x37, 0x05, 0x72, +0x9d, 0xa4, 0xaf, 0xaf, 0x6f, 0x27, 0x4b, 0x2e, +0x10, 0x66, 0xa2, 0x4a, 0x02, 0xa1, 0x5a, 0xc5, +0xff, 0x43, 0x00, 0xe2, 0x7d, 0x7d, 0x7d, 0x3b, +0x85, 0x10, 0x78, 0x37, 0x7c, 0x3c, 0x51, 0xdb, +0xf4, 0x3b, 0x06, 0xda, 0xe9, 0xd8, 0xdc, 0x81, +0x6d, 0xd9, 0xa0, 0x80, 0x6d, 0xda, 0xfc, 0xc7, +0x3f, 0x7d, 0xcc, 0x9d, 0x1b, 0x77, 0x40, 0xc0, +0xb9, 0x8f, 0x7f, 0xcf, 0xf6, 0x03, 0xdb, 0x68, +0xe9, 0xcd, 0x32, 0x76, 0x61, 0x1c, 0x4f, 0x54, +0x9e, 0x43, 0x44, 0x49, 0x51, 0x15, 0x7c, 0xdf, +0xc7, 0x73, 0xeb, 0x3f, 0x5b, 0xa4, 0x9b, 0xa0, +0xf9, 0x82, 0x6c, 0x36, 0xdb, 0x9f, 0xcd, 0x66, +0xdb, 0xa6, 0xa7, 0xa7, 0x6f, 0x96, 0x01, 0x20, +0x29, 0x0c, 0x87, 0xd1, 0xbc, 0x5c, 0x54, 0xf3, +0x29, 0xa0, 0x39, 0x1e, 0x8f, 0xf7, 0xec, 0x7f, +0x62, 0xff, 0x0b, 0x52, 0x91, 0x8a, 0xf5, 0xb5, +0x8b, 0xe7, 0x7a, 0xf8, 0xc2, 0xaf, 0xca, 0x9b, +0x76, 0x0f, 0xa0, 0xa7, 0x74, 0x10, 0xe0, 0x79, +0x1e, 0xc7, 0xde, 0x39, 0xce, 0xe4, 0xd8, 0x64, +0xf1, 0x7b, 0x0f, 0x8f, 0x5b, 0xd7, 0x6e, 0x93, +0x68, 0x4e, 0x70, 0xfe, 0xf3, 0x6f, 0x6a, 0xb6, +0x55, 0x7c, 0x47, 0x78, 0x41, 0x9b, 0x2a, 0x78, +0x85, 0xbf, 0xba, 0xef, 0xf9, 0x3e, 0x4a, 0x9b, +0x44, 0x49, 0x49, 0xe1, 0xfb, 0xfe, 0xed, 0x2b, +0x57, 0xae, 0x5c, 0x60, 0x29, 0x5f, 0x60, 0x11, +0xc9, 0x23, 0x86, 0x2e, 0x50, 0x9e, 0xeb, 0x53, +0x01, 0x7d, 0x60, 0x60, 0xa0, 0x5f, 0x51, 0x15, +0xcd, 0x9b, 0xf3, 0x70, 0x4d, 0xb7, 0xe6, 0x9e, +0x4e, 0x3c, 0x1d, 0x27, 0xd6, 0x14, 0xc3, 0x32, +0x2d, 0x7c, 0x7c, 0x46, 0x2f, 0x8c, 0x71, 0x7d, +0xf8, 0xfa, 0xb2, 0x77, 0xc6, 0x86, 0xc6, 0x30, +0xdf, 0xc9, 0x37, 0xa4, 0x7d, 0x00, 0x7c, 0xf0, +0x84, 0x87, 0x9a, 0x50, 0x11, 0x9a, 0xc0, 0x36, +0x6d, 0x1c, 0xcb, 0xa9, 0xfb, 0x9a, 0x3b, 0xe5, +0xa1, 0x76, 0x2a, 0xb4, 0xb7, 0xb7, 0xaf, 0x67, +0x69, 0x18, 0x2c, 0x4f, 0xc6, 0x56, 0x1c, 0x05, +0x8a, 0x6e, 0xd0, 0xdc, 0xdc, 0xdc, 0x26, 0xa5, +0xc4, 0x35, 0x3d, 0xbc, 0x3a, 0xfe, 0x9a, 0x6a, +0x4f, 0x62, 0x5a, 0x26, 0x9e, 0x08, 0xb4, 0x74, +0xf1, 0xec, 0xc5, 0xaa, 0xef, 0xdc, 0x1c, 0xbb, +0xb9, 0xa2, 0xe8, 0x6f, 0x5a, 0x79, 0x9a, 0xb3, +0x19, 0x1c, 0x0b, 0x50, 0x7d, 0x3c, 0xe9, 0xd6, +0x05, 0xc1, 0x33, 0x25, 0x52, 0x4a, 0x12, 0x89, +0x44, 0x86, 0x2a, 0xc2, 0x03, 0xa2, 0xd2, 0x28, +0x50, 0x4c, 0x7a, 0x36, 0x35, 0x35, 0x65, 0x85, +0x10, 0x78, 0x79, 0x0f, 0xb7, 0x5e, 0xc4, 0x56, +0x7c, 0xf2, 0xa6, 0x89, 0x87, 0xc7, 0xe2, 0xe2, +0x22, 0xb3, 0x33, 0xb3, 0xf5, 0x77, 0x01, 0x1b, +0x24, 0xd7, 0x71, 0x91, 0x31, 0x05, 0x55, 0x05, +0x5f, 0xf1, 0xf1, 0x14, 0x0d, 0x73, 0xda, 0xac, +0xf9, 0x8e, 0x63, 0x0a, 0x84, 0x10, 0xc4, 0xe3, +0xf1, 0x34, 0x4b, 0xc2, 0x97, 0xef, 0x4c, 0x11, +0x75, 0x81, 0xf0, 0x1a, 0x3e, 0xa4, 0xa4, 0x52, +0xa9, 0x8c, 0x94, 0x12, 0xcf, 0xf2, 0xaa, 0x2e, +0x7a, 0x42, 0xf2, 0x55, 0x30, 0xcd, 0x3c, 0x1e, +0x2e, 0x66, 0xce, 0xac, 0xfb, 0xfc, 0x4a, 0xc9, +0xc5, 0x45, 0x4f, 0x6a, 0xc5, 0x10, 0xed, 0xcf, +0xf9, 0xf8, 0x5e, 0xf5, 0xa0, 0xec, 0x98, 0x2e, +0x52, 0xca, 0x10, 0x80, 0x92, 0xe1, 0x2f, 0xfa, +0x9c, 0x4a, 0xa9, 0xf0, 0x25, 0x9c, 0x4a, 0xa5, +0x32, 0x42, 0x08, 0xec, 0xbc, 0x53, 0xd7, 0x02, +0x2c, 0xdb, 0x62, 0x31, 0x9f, 0xc7, 0xf1, 0x5d, +0x6c, 0xdb, 0xaa, 0x6f, 0x31, 0x2b, 0x24, 0xd3, +0x36, 0x49, 0xb4, 0x24, 0xf0, 0x95, 0xc0, 0x0a, +0xd0, 0xc0, 0xb5, 0xaa, 0xff, 0x86, 0x67, 0x7a, +0x08, 0x21, 0x30, 0x0c, 0x23, 0x49, 0xa9, 0xe6, +0x4b, 0xa8, 0xe6, 0xc6, 0x88, 0x10, 0x02, 0x29, +0x03, 0x5f, 0x12, 0xb2, 0xb6, 0x3d, 0x9b, 0x79, +0x13, 0xcd, 0xd0, 0xf0, 0x7d, 0x1f, 0x55, 0x53, +0x90, 0x8a, 0x64, 0x2d, 0x77, 0xb2, 0x2d, 0xd3, +0x22, 0x96, 0xd0, 0x91, 0x8a, 0x44, 0x2a, 0x02, +0x4d, 0x57, 0x71, 0x9d, 0xea, 0x00, 0x08, 0x19, +0xf4, 0xbd, 0x5e, 0x1f, 0x54, 0x6a, 0x6c, 0x4b, +0xe7, 0x72, 0xb9, 0x19, 0x21, 0x04, 0x5a, 0x52, +0x45, 0x2a, 0xb5, 0xa3, 0x96, 0x63, 0x3b, 0x38, +0x96, 0x4d, 0xb0, 0xc4, 0xf0, 0x31, 0x92, 0x06, +0xe6, 0x62, 0x6d, 0x3f, 0x5d, 0x09, 0xe9, 0x86, +0x46, 0x3c, 0x19, 0x47, 0x51, 0x2c, 0xa4, 0x22, +0x11, 0x8a, 0xac, 0xd9, 0x27, 0x35, 0xa1, 0x20, +0x84, 0xc0, 0x34, 0xcd, 0x05, 0xca, 0xf6, 0x10, +0x4b, 0x9e, 0x2b, 0x5c, 0xa3, 0x20, 0x84, 0x0f, +0xbb, 0x45, 0x00, 0xe2, 0x1a, 0x8a, 0x54, 0x6a, +0x76, 0xd0, 0xb5, 0x5d, 0x1c, 0xb3, 0x30, 0xcd, +0xf6, 0xc0, 0x30, 0x62, 0x85, 0xcf, 0x6b, 0x43, +0xa9, 0x74, 0x0a, 0x23, 0x6e, 0x20, 0xa5, 0x44, +0x51, 0x14, 0x70, 0xa9, 0xd9, 0x27, 0x2d, 0xa1, +0x87, 0x00, 0xcc, 0x12, 0x19, 0xf7, 0x29, 0x03, +0x21, 0xea, 0x02, 0xe1, 0x97, 0xc5, 0x5d, 0xda, +0xb9, 0xb9, 0xb9, 0xdb, 0x52, 0x4a, 0xb4, 0x64, +0x7d, 0x00, 0x70, 0x83, 0xc0, 0x23, 0x10, 0x08, +0x0f, 0x34, 0xad, 0x81, 0x77, 0x56, 0x40, 0x3d, +0x03, 0x3d, 0x18, 0xf1, 0x18, 0x52, 0x4a, 0xf0, +0xc0, 0x77, 0xfd, 0x9a, 0xed, 0xeb, 0x09, 0x0d, +0x29, 0x25, 0x96, 0x65, 0xcd, 0x52, 0xba, 0x89, +0x5a, 0x02, 0x44, 0x79, 0x0c, 0x28, 0xd9, 0xa5, +0x9d, 0x9e, 0x9e, 0xbe, 0x25, 0x84, 0x40, 0x4d, +0xa8, 0x01, 0xea, 0x75, 0xc8, 0xb1, 0x9d, 0xa0, +0xa4, 0xc5, 0x17, 0x28, 0xaa, 0x82, 0xa6, 0x69, +0x78, 0x5e, 0x63, 0xa3, 0x81, 0x1e, 0xd7, 0x69, +0x6e, 0xcb, 0x30, 0x31, 0x3a, 0xb9, 0xec, 0xbb, +0x4c, 0x5b, 0x86, 0xae, 0xf5, 0x9d, 0x58, 0xa6, +0x8d, 0x90, 0x92, 0x5b, 0xd7, 0x6e, 0xd5, 0xed, +0x8f, 0x96, 0xd4, 0x10, 0x42, 0x90, 0xcb, 0xe5, +0x66, 0x58, 0xca, 0x0c, 0x97, 0xa7, 0xc5, 0xfc, +0xd0, 0x89, 0xa2, 0xbe, 0x1f, 0xee, 0xd1, 0x5b, +0x97, 0x2f, 0x5f, 0x1e, 0xf1, 0x7d, 0xdf, 0xd6, +0xd3, 0x1a, 0x6a, 0x42, 0x2d, 0x06, 0xc4, 0x6a, +0x2c, 0x10, 0x38, 0x96, 0x53, 0x9c, 0xad, 0xe9, +0x86, 0x5e, 0xf7, 0x9d, 0x90, 0xd7, 0x6d, 0x5e, +0xc7, 0xbe, 0x43, 0xfb, 0x50, 0x14, 0xa5, 0xe4, +0x7e, 0x2c, 0x1e, 0xe3, 0xa1, 0x83, 0xbb, 0xd1, +0x0d, 0x9d, 0x98, 0xa1, 0x13, 0x33, 0x62, 0xdc, +0xba, 0x76, 0xbb, 0x6e, 0x7b, 0x46, 0x47, 0x60, +0x2d, 0x93, 0x93, 0x93, 0x57, 0x59, 0xbe, 0x9d, +0x5e, 0x04, 0x21, 0x1a, 0x45, 0xa2, 0xe6, 0x6f, +0x03, 0xd6, 0xfc, 0xfc, 0xfc, 0xec, 0xe4, 0xe4, +0xe4, 0x25, 0x21, 0x04, 0x89, 0xee, 0x38, 0x8a, +0xa2, 0x34, 0xc4, 0xf8, 0x14, 0x67, 0x6a, 0xaa, +0xaa, 0x36, 0xf4, 0xce, 0xc0, 0x8e, 0xf5, 0xf4, +0x6d, 0x59, 0xc7, 0x8e, 0x3d, 0xdb, 0x8b, 0xf7, +0xf4, 0x98, 0xce, 0xfe, 0xe7, 0x1f, 0xa7, 0xb5, +0xbb, 0x85, 0x58, 0x3c, 0x86, 0x6e, 0xc4, 0x58, +0x98, 0x59, 0x20, 0x3f, 0x9f, 0xaf, 0xd9, 0x96, +0x1a, 0x53, 0x31, 0xda, 0x62, 0x00, 0xde, 0x89, +0x13, 0x27, 0x4e, 0x11, 0x24, 0x48, 0xa3, 0x1b, +0xa7, 0xc5, 0x38, 0xa0, 0xfa, 0xbe, 0x1f, 0x96, +0x99, 0x84, 0x00, 0x84, 0x45, 0x0a, 0x79, 0x60, +0x71, 0x78, 0x78, 0xf8, 0xeb, 0xde, 0xde, 0xde, +0xad, 0xf1, 0x2e, 0x03, 0x6b, 0xcc, 0xae, 0x69, +0x76, 0xcb, 0xc8, 0x05, 0x29, 0x64, 0x43, 0x33, +0xc2, 0x81, 0x9d, 0x03, 0xc4, 0xe2, 0x31, 0xf6, +0x1d, 0xda, 0xcb, 0x95, 0xdf, 0x5d, 0x21, 0xd5, +0x9c, 0xe2, 0xf1, 0x1f, 0xed, 0x23, 0xd5, 0x9c, +0xc2, 0xca, 0x5b, 0x08, 0x04, 0xf9, 0x05, 0x93, +0x0b, 0xc7, 0x2f, 0xd4, 0x8d, 0x2d, 0xb1, 0xce, +0x60, 0xb8, 0x9c, 0x9a, 0x9a, 0x1a, 0x9d, 0x9a, +0x9a, 0x9a, 0xaa, 0x00, 0x40, 0x11, 0x84, 0xf2, +0x20, 0x18, 0x5a, 0x80, 0x55, 0x78, 0x29, 0x77, +0xf2, 0xe4, 0xc9, 0x2f, 0xf7, 0xee, 0xdd, 0xfb, +0x7c, 0xac, 0x4d, 0x97, 0xaa, 0xae, 0xe0, 0x3b, +0x6b, 0x5f, 0xb6, 0x97, 0x68, 0x4a, 0xd0, 0xbb, +0xa9, 0x07, 0x1f, 0xd0, 0x62, 0x2a, 0xcf, 0xfe, +0xcd, 0x33, 0xb4, 0xf6, 0xb4, 0xe0, 0x79, 0x3e, +0x76, 0x3e, 0x48, 0x9f, 0x7b, 0x8e, 0xcb, 0x99, +0xa3, 0x67, 0x70, 0x4c, 0x07, 0x45, 0xd6, 0x1e, +0x92, 0xe3, 0x5d, 0x31, 0x84, 0x10, 0x5c, 0xb9, +0x72, 0xe5, 0x6b, 0x82, 0xdd, 0xa1, 0xea, 0x16, +0x10, 0x79, 0x2f, 0x1a, 0x03, 0x6c, 0x82, 0xf4, +0x51, 0x6e, 0x62, 0x62, 0x62, 0xe2, 0xf6, 0xed, +0xdb, 0x57, 0xda, 0xdb, 0xdb, 0x37, 0x26, 0x37, +0x24, 0x58, 0x1c, 0xce, 0xaf, 0x99, 0xe0, 0x21, +0x0d, 0xec, 0x1a, 0x40, 0x8f, 0xeb, 0x00, 0xb8, +0x8e, 0xc7, 0xc0, 0xce, 0x0d, 0xd8, 0x56, 0x90, +0x37, 0xc4, 0xf7, 0xc9, 0x2f, 0xe4, 0x39, 0x71, +0xf8, 0x24, 0x73, 0xb7, 0xe6, 0xea, 0x06, 0x3f, +0x19, 0x97, 0xc4, 0xba, 0x62, 0x20, 0xf0, 0xbf, +0xfa, 0xea, 0xab, 0x13, 0x04, 0x85, 0x14, 0xcb, +0x96, 0xc1, 0x14, 0x52, 0xe3, 0xe5, 0x50, 0x46, +0x63, 0x40, 0x9e, 0x60, 0x0d, 0x3d, 0x77, 0xec, +0xd8, 0xb1, 0xdf, 0x08, 0x21, 0x88, 0x6f, 0x34, +0x50, 0x0c, 0x15, 0x29, 0x95, 0x35, 0xe5, 0x81, +0x9d, 0x03, 0x41, 0x90, 0x8b, 0xc7, 0xd0, 0xe3, +0x3a, 0x5a, 0x4c, 0x43, 0xd3, 0x35, 0x54, 0x5d, +0x65, 0x72, 0x64, 0x8a, 0x0f, 0xff, 0xf1, 0x23, +0x26, 0xae, 0x4e, 0x35, 0xd4, 0x56, 0x72, 0x4b, +0x02, 0xa9, 0x48, 0x46, 0x46, 0x46, 0xce, 0x0e, +0x0f, 0x0f, 0x5f, 0xa5, 0x34, 0x0f, 0x50, 0xd9, +0x02, 0xaa, 0xc4, 0x01, 0x93, 0xc0, 0x7c, 0x66, +0x3f, 0xfd, 0xf4, 0xd3, 0x53, 0x7b, 0xf6, 0xec, +0xb9, 0xd8, 0xd5, 0xd5, 0xb5, 0x39, 0xb9, 0x39, +0xce, 0xe2, 0x85, 0xb5, 0x9b, 0xe1, 0x01, 0x0c, +0xec, 0xdc, 0x80, 0xaa, 0xa9, 0x28, 0x9a, 0x82, +0xb4, 0x9c, 0x20, 0x07, 0xe0, 0xf9, 0x5c, 0xfc, +0xec, 0x1b, 0x7e, 0xfb, 0x2f, 0xff, 0x19, 0x24, +0x38, 0x1a, 0x18, 0x86, 0x95, 0xb4, 0x82, 0xd1, +0x13, 0xc3, 0xf3, 0x3c, 0xf7, 0xc3, 0x0f, 0x3f, +0x7c, 0x97, 0x60, 0x43, 0x64, 0x9e, 0x40, 0x99, +0xd1, 0x12, 0x9a, 0x22, 0x95, 0x5b, 0x40, 0x14, +0x00, 0x8b, 0x00, 0xb9, 0x79, 0xe0, 0xce, 0x91, +0x23, 0x47, 0x7e, 0x0d, 0xf8, 0x46, 0x5f, 0x0c, +0x2d, 0x15, 0x4c, 0x72, 0xd6, 0x82, 0x33, 0xad, +0x19, 0x9a, 0x3b, 0x33, 0xc5, 0x95, 0x5d, 0x30, +0x8c, 0x09, 0xa4, 0x14, 0x74, 0x6f, 0xea, 0x0e, +0x22, 0x7b, 0x83, 0x6d, 0x25, 0xb6, 0x18, 0x08, +0x21, 0x18, 0x1a, 0x1a, 0xfa, 0xe2, 0xf2, 0xe5, +0xcb, 0x97, 0x29, 0xdd, 0x26, 0x0f, 0x01, 0x28, +0x9a, 0x7f, 0x09, 0x00, 0x85, 0x1b, 0xe5, 0x81, +0xb0, 0x08, 0xc0, 0x99, 0x33, 0x67, 0xce, 0x8d, +0x8e, 0x8e, 0x9e, 0x95, 0x8a, 0x24, 0xb5, 0x2b, +0x8e, 0xaa, 0x4b, 0x14, 0x65, 0xf5, 0x8c, 0xef, +0xf3, 0xc5, 0xaf, 0x8f, 0x33, 0xf6, 0xed, 0x18, +0x66, 0xce, 0xc4, 0xb1, 0x9d, 0xe2, 0x02, 0x26, +0xdb, 0xd5, 0xcc, 0xbd, 0xfb, 0xb6, 0x37, 0xd4, +0x4e, 0x7c, 0x63, 0x0c, 0xbd, 0x55, 0xc3, 0x71, +0x9c, 0xfc, 0xbb, 0xef, 0xbe, 0xfb, 0x2e, 0x95, +0x8b, 0x25, 0x96, 0xad, 0x07, 0x2a, 0xed, 0x0d, +0x96, 0xd7, 0x05, 0xa4, 0x09, 0xaa, 0x41, 0xba, +0xda, 0xda, 0xda, 0x7e, 0xf0, 0xca, 0x2b, 0xaf, +0xfc, 0x7d, 0x2a, 0x95, 0x6a, 0x75, 0x26, 0x5c, +0xf2, 0xbf, 0x5f, 0x9b, 0x0d, 0xce, 0x90, 0x8c, +0x94, 0x41, 0xdf, 0xf6, 0x75, 0xf4, 0x6f, 0xeb, +0xa3, 0x67, 0x4b, 0x0f, 0xba, 0xa1, 0xb1, 0x30, +0xb3, 0xc0, 0x3b, 0x3f, 0xfb, 0x37, 0xac, 0xc5, +0xea, 0xbf, 0xa5, 0xb6, 0x2a, 0x18, 0x3b, 0x75, +0x7c, 0x7c, 0xff, 0xf0, 0xe1, 0xc3, 0xff, 0x7c, +0xe4, 0xc8, 0x91, 0x8f, 0x08, 0xb6, 0xc9, 0x27, +0x81, 0x3b, 0x2c, 0x81, 0xb0, 0x6c, 0x8b, 0xbc, +0x12, 0x00, 0x50, 0xba, 0x3d, 0x16, 0x6e, 0x8d, +0xb7, 0x01, 0xdd, 0xdb, 0xb7, 0x6f, 0xbf, 0xef, +0xa5, 0x97, 0x5e, 0xfa, 0x3b, 0x4d, 0xd3, 0x62, +0xd6, 0x65, 0x07, 0xfb, 0xea, 0xda, 0x2d, 0x78, +0xca, 0x29, 0xdb, 0x9d, 0xa5, 0x7b, 0x53, 0x27, +0x73, 0xb7, 0xe7, 0x19, 0x3d, 0x3f, 0x56, 0xf1, +0x19, 0x99, 0x10, 0x18, 0x0f, 0xe8, 0x08, 0x55, +0x70, 0xe2, 0xc4, 0x89, 0xdf, 0xbc, 0xf1, 0xc6, +0x1b, 0x6f, 0xb1, 0x54, 0x23, 0x10, 0x5a, 0x41, +0xe8, 0x02, 0xcb, 0x2a, 0x45, 0xbe, 0x57, 0x81, +0xc4, 0x53, 0x4f, 0x3d, 0x75, 0xe0, 0x99, 0x67, +0x9e, 0x79, 0x49, 0x08, 0x21, 0xec, 0x4b, 0x2e, +0xce, 0xd8, 0xdd, 0xc9, 0xef, 0xd7, 0x23, 0x99, +0x12, 0xe8, 0xf7, 0xaa, 0x88, 0x98, 0x60, 0x78, +0x78, 0xf8, 0xec, 0xab, 0xaf, 0xbe, 0xba, 0xe2, +0x02, 0x89, 0x65, 0x09, 0x91, 0xc8, 0x88, 0x10, +0x06, 0x43, 0x51, 0x68, 0x24, 0xcc, 0x16, 0x2b, +0x47, 0x8f, 0x1e, 0xfd, 0xa4, 0xbd, 0xbd, 0xbd, +0x6d, 0xef, 0xde, 0xbd, 0xcf, 0xea, 0x9b, 0x55, +0xa1, 0x34, 0x49, 0x9c, 0x21, 0xb7, 0x2c, 0xbe, +0xde, 0x5d, 0x92, 0x6d, 0x12, 0xf5, 0x1e, 0x89, +0x50, 0x04, 0x13, 0x13, 0x13, 0xc3, 0xaf, 0xbf, +0xfe, 0xfa, 0xcf, 0x59, 0x5e, 0x1e, 0x13, 0x2d, +0x94, 0x6a, 0xac, 0x44, 0x06, 0x1a, 0x2f, 0x92, +0x7a, 0xfa, 0xe9, 0xa7, 0x9f, 0x3c, 0x78, 0xf0, +0xe0, 0x8f, 0x35, 0x4d, 0xd3, 0xfd, 0x39, 0x1f, +0xe7, 0xbc, 0x8b, 0xbf, 0xb6, 0x61, 0xa1, 0x22, +0x29, 0xeb, 0x25, 0x4a, 0x7f, 0x10, 0xbf, 0x87, +0x86, 0x86, 0x4e, 0xbd, 0xf6, 0xda, 0x6b, 0xbf, +0x30, 0x4d, 0x73, 0xed, 0x8a, 0xa4, 0xa0, 0xf1, +0x32, 0xb9, 0xfb, 0xef, 0xbf, 0x7f, 0xd7, 0x8b, +0x2f, 0xbe, 0xf8, 0x57, 0xc9, 0x64, 0xb2, 0x19, +0x17, 0xbc, 0x31, 0x1f, 0x6f, 0xdc, 0xbf, 0x2b, +0xd6, 0x20, 0xb2, 0x02, 0xb9, 0x41, 0x20, 0x92, +0xe0, 0xfb, 0xbe, 0xf7, 0xd9, 0x67, 0x9f, 0x1d, +0x7e, 0xf3, 0xcd, 0x37, 0xd7, 0xbe, 0x4c, 0xae, +0xf8, 0x65, 0x83, 0x85, 0x92, 0x5d, 0x5d, 0x5d, +0xeb, 0x5f, 0x7e, 0xf9, 0xe5, 0xbf, 0x58, 0xb7, +0x6e, 0xdd, 0x56, 0x00, 0x2c, 0xf0, 0x46, 0x7c, +0xbc, 0x9b, 0x54, 0x48, 0x42, 0x7d, 0x0f, 0xc1, +0x53, 0x04, 0x82, 0x37, 0x07, 0x9f, 0x73, 0xb9, +0xdc, 0xcc, 0x07, 0x1f, 0x7c, 0xf0, 0xaf, 0x47, +0x8f, 0x1e, 0xfd, 0x9c, 0xa0, 0x48, 0xf2, 0x16, +0x41, 0xb4, 0x0f, 0xeb, 0x87, 0x57, 0x5f, 0x28, +0x59, 0x7c, 0xa0, 0x7a, 0xa9, 0x6c, 0x82, 0x60, +0x88, 0x2c, 0x96, 0xca, 0xee, 0xdf, 0xbf, 0xff, +0xc1, 0x83, 0x07, 0x0f, 0x3e, 0xdb, 0xda, 0xda, +0xda, 0x0b, 0x80, 0x0d, 0xfe, 0xed, 0xa0, 0x7b, +0xfe, 0x0c, 0x2b, 0x03, 0x23, 0x01, 0xa2, 0x25, +0x60, 0x52, 0xc1, 0x2d, 0xcb, 0xb2, 0xf2, 0xa7, +0x4e, 0x9d, 0xfa, 0xf7, 0xb7, 0xdf, 0x7e, 0xfb, +0xc3, 0x5c, 0x2e, 0x17, 0x96, 0xca, 0xde, 0xa1, +0x74, 0xc6, 0xb7, 0x76, 0xa5, 0xb2, 0x55, 0x40, +0xa8, 0x56, 0x2c, 0x9d, 0x21, 0x70, 0x8d, 0xec, +0xa1, 0x43, 0x87, 0xf6, 0xed, 0xdb, 0xb7, 0xef, +0xe9, 0x74, 0x3a, 0x5d, 0x2c, 0x96, 0xc6, 0x2d, +0x74, 0xd5, 0x04, 0xdf, 0x12, 0x4b, 0x27, 0x02, +0x3c, 0x8a, 0xa7, 0x08, 0x44, 0xcc, 0x0f, 0xfe, +0x4f, 0x13, 0x40, 0x5c, 0x20, 0xc7, 0x71, 0xac, +0xf3, 0xe7, 0xcf, 0x7f, 0xf1, 0xd6, 0x5b, 0x6f, +0xbd, 0x37, 0x31, 0x31, 0x71, 0xbd, 0xd0, 0xd2, +0x4c, 0x81, 0xa3, 0x5a, 0x5f, 0xfb, 0x62, 0xe9, +0x1a, 0x20, 0x44, 0x0f, 0x48, 0x84, 0x67, 0x04, +0x52, 0x85, 0xee, 0xa7, 0x81, 0xa6, 0x87, 0x1e, +0x7a, 0xe8, 0x9e, 0xdd, 0xbb, 0x77, 0x3f, 0xb8, +0x71, 0xe3, 0xc6, 0x1d, 0xd9, 0x6c, 0x76, 0x45, +0xe5, 0xf2, 0xa6, 0x69, 0xe6, 0xae, 0x5e, 0xbd, +0x7a, 0xe1, 0xdc, 0xb9, 0x73, 0xa7, 0x3f, 0xfe, +0xf8, 0xe3, 0xd3, 0xf3, 0xf3, 0xf3, 0x61, 0x70, +0x0b, 0xb5, 0xfd, 0x87, 0x2b, 0x97, 0x2f, 0x3e, +0x5c, 0xfb, 0xc0, 0x44, 0x68, 0x11, 0x15, 0x0f, +0x4c, 0x6c, 0xdd, 0xba, 0xb5, 0xf7, 0xfe, 0xfb, +0xef, 0xdf, 0x9a, 0x4e, 0xa7, 0xb3, 0x4d, 0x4d, +0x4d, 0x99, 0x44, 0x22, 0x91, 0x4e, 0x26, 0x93, +0x4d, 0xaa, 0xaa, 0xaa, 0xb9, 0x5c, 0x6e, 0x7e, +0x7e, 0x7e, 0x7e, 0x76, 0x61, 0x61, 0x61, 0x76, +0x6e, 0x6e, 0x6e, 0x7a, 0x6c, 0x6c, 0x6c, 0xfc, +0x93, 0x4f, 0x3e, 0xf9, 0xc6, 0xb6, 0xed, 0x5a, +0x07, 0x26, 0xa2, 0x82, 0x97, 0x9c, 0x1c, 0x69, +0x54, 0xf8, 0x15, 0x03, 0x10, 0x01, 0x01, 0xbe, +0xff, 0x91, 0x99, 0xe8, 0x46, 0x65, 0x34, 0x27, +0x19, 0x9e, 0x03, 0x8a, 0x1e, 0x99, 0xc9, 0x57, +0xe0, 0xaa, 0x47, 0x66, 0xa8, 0x11, 0xed, 0xab, +0xca, 0xf3, 0x3f, 0x74, 0x68, 0x2a, 0x7a, 0x72, +0x0c, 0x4a, 0x17, 0x61, 0x21, 0x08, 0x7f, 0x90, +0x43, 0x53, 0xab, 0x3a, 0x38, 0xb9, 0x8a, 0x63, +0x73, 0xe5, 0x7b, 0x75, 0xe5, 0x2b, 0xd1, 0x90, +0xeb, 0x1e, 0x9b, 0x63, 0x15, 0xc2, 0xc3, 0x2a, +0x01, 0x80, 0x12, 0x10, 0xa0, 0xd4, 0x22, 0xa2, +0x3b, 0xcd, 0x8d, 0x1c, 0x9c, 0x8c, 0x72, 0xdd, +0x83, 0x93, 0xac, 0x52, 0xf0, 0x62, 0x87, 0xff, +0xbf, 0x1f, 0x9d, 0x5d, 0x33, 0x00, 0x4a, 0x1a, +0x5d, 0xc3, 0xc3, 0xd3, 0x91, 0x6b, 0xf0, 0xe1, +0x7f, 0xeb, 0xe1, 0xe9, 0xff, 0xab, 0xf4, 0xdf, +0x70, 0x73, 0xd1, 0x2e, 0xae, 0x9d, 0x79, 0xe3, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity11.png b/source/bitmaps/misc/activity11.png new file mode 100644 index 0000000000000000000000000000000000000000..3d69b641c70b9955879d9f7dd1a1c8a33deaf62e GIT binary patch literal 4276 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 WbI~rYoq6K`0000 + +#ifndef MISC_ACTIVITY12_CPP +#define MISC_ACTIVITY12_CPP + +static unsigned char misc_activity12_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x46, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0x59, +0x70, 0x5c, 0x65, 0x76, 0xc7, 0x7f, 0xdf, 0x77, +0x97, 0xde, 0xa4, 0x96, 0x5a, 0xd6, 0x2e, 0x4b, +0x5e, 0x64, 0x64, 0x39, 0x60, 0xcb, 0x06, 0xdb, +0x83, 0xd9, 0x6c, 0xca, 0x50, 0x18, 0x86, 0x0c, +0x1e, 0xd7, 0x24, 0x29, 0x28, 0xe0, 0x21, 0xa1, +0x20, 0x2f, 0x79, 0xcb, 0x73, 0x5e, 0x53, 0x15, +0x8a, 0xca, 0xc3, 0x0c, 0x95, 0x3c, 0x4c, 0xe6, +0x61, 0xca, 0x04, 0x92, 0xaa, 0xa9, 0x71, 0x05, +0x18, 0x98, 0x88, 0x19, 0x13, 0x06, 0x62, 0x82, +0x11, 0xd8, 0x1e, 0x63, 0x63, 0xcb, 0xab, 0x64, +0xc9, 0x56, 0x4b, 0xb2, 0x6c, 0x2d, 0xad, 0xbe, +0x7b, 0x1e, 0x6e, 0xdf, 0xd6, 0xed, 0x56, 0xab, +0xbb, 0xb5, 0x30, 0x49, 0x2a, 0xa7, 0xea, 0xd4, +0x55, 0x77, 0xdf, 0xfb, 0xe9, 0x9e, 0xff, 0xf9, +0x9f, 0xf3, 0x6d, 0xe7, 0x13, 0x9e, 0xe7, 0xf1, +0x5d, 0x8a, 0x10, 0x42, 0x2c, 0xf5, 0x53, 0x89, +0xef, 0x16, 0xbd, 0x8c, 0xf7, 0x1d, 0xbf, 0xa0, +0xfa, 0x5d, 0x34, 0x5a, 0x64, 0xb4, 0x58, 0xe2, +0xba, 0x94, 0x78, 0xe1, 0x6b, 0x31, 0x7e, 0x6b, +0x0d, 0x88, 0x58, 0xab, 0xf6, 0x4a, 0x18, 0x2d, +0x8a, 0xfe, 0x96, 0x25, 0xbe, 0x0b, 0x4b, 0xd8, +0xf0, 0x72, 0xea, 0xdf, 0xb4, 0x46, 0x2f, 0xbe, +0x6a, 0x06, 0x2c, 0x61, 0xb8, 0x0c, 0x5d, 0x4b, +0xa9, 0xa0, 0x10, 0x84, 0xc0, 0x18, 0x37, 0xf7, +0xb7, 0xbb, 0x84, 0xe6, 0x81, 0x08, 0xfe, 0xed, +0x6a, 0x81, 0x58, 0x15, 0x00, 0x21, 0xe3, 0x8b, +0x8d, 0x56, 0x42, 0xaa, 0xe6, 0x54, 0x29, 0xd2, +0x62, 0x16, 0x84, 0x0d, 0xb5, 0x01, 0xa7, 0xc4, +0xd5, 0xa1, 0x08, 0x8c, 0xd5, 0x02, 0xb1, 0xa2, +0x10, 0x28, 0x32, 0xbc, 0xd8, 0x68, 0x15, 0xd0, +0x42, 0xaa, 0xe7, 0x34, 0xf8, 0x1c, 0x00, 0x12, +0x66, 0x42, 0xe0, 0xf5, 0xc0, 0x58, 0x2b, 0xa7, +0x66, 0xd1, 0x35, 0xd0, 0x52, 0x60, 0xac, 0x08, +0x84, 0x65, 0x33, 0x20, 0x64, 0x7c, 0x60, 0x40, +0xd8, 0xcb, 0x3a, 0x10, 0xc9, 0x69, 0x34, 0xa7, +0xb1, 0xd0, 0xe7, 0x00, 0x8c, 0x80, 0x11, 0x01, +0x00, 0x61, 0xcf, 0x07, 0x06, 0x1b, 0x39, 0xcd, +0x02, 0xf3, 0xb9, 0x6b, 0x36, 0xf7, 0x5d, 0x00, +0x48, 0xc0, 0x0c, 0x97, 0x1c, 0x1b, 0x96, 0x0b, +0xc2, 0xb2, 0x00, 0xc8, 0x19, 0x1f, 0x68, 0xe0, +0xf1, 0xc0, 0xcb, 0x81, 0xc1, 0x71, 0x20, 0x11, +0xd2, 0x38, 0x10, 0x6f, 0x6e, 0x6e, 0xee, 0xe8, +0xe8, 0xe8, 0xe8, 0x8d, 0x46, 0xa3, 0x0d, 0xd1, +0x68, 0xb4, 0x5e, 0xd7, 0xf5, 0xa4, 0xae, 0xeb, +0x49, 0x29, 0xa5, 0x66, 0x9a, 0xe6, 0x8c, 0x69, +0x9a, 0xd3, 0x86, 0x61, 0xdc, 0x31, 0x0c, 0x63, +0xea, 0xce, 0x9d, 0x3b, 0x37, 0x2e, 0x5f, 0xbe, +0x7c, 0xde, 0x75, 0xdd, 0x39, 0x20, 0x03, 0xcc, +0x85, 0x34, 0x13, 0x02, 0xc4, 0x28, 0x06, 0x62, +0xb9, 0x21, 0x51, 0x75, 0x08, 0x84, 0x8c, 0x0f, +0xe8, 0x1e, 0x78, 0x3c, 0xf0, 0x72, 0x02, 0xa8, +0xcd, 0x69, 0x12, 0xa8, 0xed, 0xea, 0xea, 0xda, +0xda, 0xd9, 0xd9, 0xb9, 0xbb, 0xb1, 0xb1, 0xf1, +0xde, 0x78, 0x3c, 0xde, 0x52, 0xd5, 0x3f, 0xca, +0x89, 0x6d, 0xdb, 0x99, 0xa9, 0xa9, 0xa9, 0x0b, +0xb7, 0x6e, 0xdd, 0xfa, 0x7a, 0x70, 0x70, 0xf0, +0x94, 0x61, 0x18, 0x93, 0xc0, 0x34, 0x30, 0x93, +0xd3, 0x59, 0x16, 0xc0, 0x08, 0x18, 0x11, 0x0e, +0x8b, 0xaa, 0x40, 0xa8, 0x0a, 0x80, 0x12, 0xc6, +0x6b, 0xf8, 0xb4, 0x8e, 0x01, 0x35, 0x39, 0xa3, +0xeb, 0x81, 0x3a, 0xa0, 0x61, 0xe7, 0xce, 0x9d, +0x8f, 0x75, 0x77, 0x77, 0x1f, 0x8a, 0x46, 0xa3, +0xeb, 0x82, 0x36, 0x14, 0x4b, 0x25, 0x95, 0x6e, +0x20, 0x3a, 0x1b, 0x43, 0xcf, 0xea, 0x68, 0x86, +0x8e, 0x9e, 0x8d, 0x20, 0x1d, 0x89, 0x15, 0x35, +0x31, 0x23, 0x26, 0x66, 0xd4, 0xc0, 0x8c, 0x19, +0xdc, 0x69, 0x9e, 0x22, 0x9b, 0x98, 0xcf, 0xff, +0x7f, 0xd7, 0x75, 0xad, 0x9b, 0x37, 0x6f, 0x7e, +0x3e, 0x30, 0x30, 0xf0, 0xee, 0xcc, 0xcc, 0xcc, +0x28, 0x30, 0x05, 0xdc, 0x0d, 0x01, 0x92, 0x61, +0x21, 0x34, 0xec, 0xe5, 0x80, 0x50, 0x11, 0x80, +0x22, 0xe3, 0x83, 0x04, 0x17, 0x65, 0xc1, 0xe3, +0x75, 0x40, 0x03, 0xd0, 0xd0, 0xdb, 0xdb, 0xfb, +0xe0, 0xb6, 0x6d, 0xdb, 0x7e, 0x90, 0x48, 0x24, +0xda, 0x00, 0xb4, 0xac, 0x4e, 0xea, 0x56, 0x03, +0xa9, 0xd1, 0x46, 0x92, 0x13, 0x75, 0x08, 0xb7, +0xd2, 0x18, 0x68, 0x41, 0xe6, 0x6b, 0x33, 0x4c, +0xb5, 0x4f, 0x32, 0xd5, 0x36, 0xc9, 0x5c, 0xfd, +0x2c, 0x00, 0x8e, 0xe3, 0x18, 0xc3, 0xc3, 0xc3, +0xc7, 0x4f, 0x9e, 0x3c, 0xf9, 0xbe, 0x61, 0x18, +0x63, 0xc0, 0xed, 0x1c, 0x18, 0xd3, 0xf8, 0xe1, +0x31, 0x9f, 0x03, 0xa2, 0x6a, 0x10, 0xca, 0x02, +0xb0, 0x84, 0xf1, 0x01, 0xdd, 0xeb, 0x80, 0x14, +0xd0, 0x58, 0x57, 0x57, 0xb7, 0x71, 0xff, 0xfe, +0xfd, 0xaf, 0xd4, 0xd7, 0xd7, 0xf7, 0xf8, 0x86, +0x6b, 0xb4, 0x9d, 0x5f, 0xcf, 0xba, 0xa1, 0x26, +0x84, 0x57, 0xbd, 0xd1, 0x4b, 0x49, 0xa6, 0x6e, +0x8e, 0x91, 0xfb, 0x86, 0x98, 0x69, 0x9a, 0x06, +0xc0, 0xb2, 0xac, 0x99, 0xd3, 0xa7, 0x4f, 0x1f, +0x3d, 0x77, 0xee, 0xdc, 0x09, 0x60, 0x02, 0x98, +0xc4, 0x67, 0x44, 0x98, 0x0d, 0x55, 0x81, 0xb0, +0x24, 0x00, 0x25, 0x68, 0xaf, 0xb3, 0x40, 0xf9, +0x7a, 0x60, 0x1d, 0xd0, 0xd4, 0xd5, 0xd5, 0xd5, +0xb7, 0x6f, 0xdf, 0xbe, 0x57, 0xa3, 0xd1, 0x68, +0xbd, 0xb4, 0x25, 0x4d, 0x83, 0x6d, 0x34, 0x5d, +0x6a, 0x41, 0x3a, 0x72, 0xd5, 0x86, 0x17, 0xcb, +0x4c, 0xcb, 0x5d, 0x6e, 0xde, 0x7b, 0x83, 0x6c, +0x72, 0x1e, 0xc0, 0xbd, 0x78, 0xf1, 0xe2, 0xfb, +0x27, 0x4e, 0x9c, 0x38, 0x06, 0xa4, 0xf1, 0x81, +0x98, 0x62, 0x31, 0x08, 0x0e, 0xbe, 0xfd, 0xd5, +0x03, 0x50, 0xd4, 0xd5, 0x95, 0x32, 0xbe, 0x09, +0x68, 0xee, 0xeb, 0xeb, 0x3b, 0xd8, 0xd7, 0xd7, +0xf7, 0x82, 0xa2, 0x28, 0x7a, 0x6c, 0x2a, 0x4e, +0xe7, 0x7f, 0x6d, 0x44, 0xcd, 0x6a, 0x6b, 0x67, +0x71, 0xc9, 0x37, 0x86, 0xf1, 0xde, 0x5b, 0x8c, +0x6f, 0x1d, 0x03, 0x60, 0x6c, 0x6c, 0x6c, 0xa0, +0xbf, 0xbf, 0xff, 0xa7, 0x96, 0x65, 0x8d, 0x02, +0xe3, 0xf8, 0x61, 0x31, 0xcd, 0x62, 0x26, 0x94, +0x04, 0xa1, 0x1c, 0x00, 0x41, 0x57, 0x17, 0xd0, +0xbe, 0x86, 0x1c, 0xe5, 0x81, 0xd6, 0x87, 0x1f, +0x7e, 0xf8, 0x48, 0x4f, 0x4f, 0xcf, 0x61, 0x21, +0x84, 0x48, 0x0e, 0xd7, 0xd3, 0xf2, 0x75, 0x7b, +0xc5, 0x18, 0xef, 0x7e, 0x72, 0x13, 0xa3, 0x03, +0x37, 0x99, 0xbf, 0x9d, 0x5d, 0xa1, 0xf5, 0x0b, +0x32, 0xd3, 0x3e, 0xcd, 0xad, 0x07, 0x46, 0xf0, +0x14, 0x97, 0xe9, 0xe9, 0xe9, 0xab, 0xef, 0xbe, +0xfb, 0xee, 0xeb, 0x86, 0x61, 0xdc, 0xc0, 0x67, +0x43, 0x18, 0x84, 0x7c, 0x62, 0x2c, 0x05, 0xc0, +0x22, 0x9e, 0x96, 0x88, 0xfb, 0xc0, 0xfb, 0xb5, +0xf8, 0x00, 0x34, 0x6d, 0xdf, 0xbe, 0xfd, 0xb1, +0x6d, 0xdb, 0xb6, 0x1d, 0x56, 0x14, 0x45, 0x34, +0x9d, 0x6b, 0xa1, 0xf9, 0xeb, 0x36, 0x3c, 0x3c, +0x5c, 0xe9, 0x96, 0xd5, 0x48, 0x43, 0x84, 0xe7, +0x7e, 0xf6, 0x2c, 0xf7, 0xbe, 0xb0, 0x0d, 0x74, +0x2a, 0xde, 0x5f, 0x4e, 0x13, 0xb7, 0x6a, 0xe8, +0xfc, 0x74, 0x23, 0xba, 0xa1, 0x53, 0x5f, 0x5f, +0xbf, 0xe9, 0xa9, 0xa7, 0x9e, 0x7a, 0x0d, 0x68, +0xc6, 0x4f, 0xc8, 0x49, 0xfc, 0xf1, 0x47, 0x84, +0x85, 0x41, 0x97, 0x2c, 0x35, 0x35, 0x2f, 0x00, +0xa0, 0x68, 0x88, 0x1b, 0xf4, 0xf5, 0x41, 0xc6, +0xaf, 0x03, 0xd6, 0x75, 0x76, 0x76, 0xde, 0xbb, +0x67, 0xcf, 0x9e, 0x97, 0x85, 0x10, 0x22, 0xf5, +0xed, 0x3a, 0x6a, 0x2e, 0xd7, 0xe1, 0x08, 0xa7, +0x2a, 0x1d, 0x39, 0x33, 0x4a, 0xa4, 0x2e, 0xc2, +0x83, 0x7f, 0xb5, 0x97, 0x3f, 0x79, 0xe7, 0x08, +0x1d, 0x0f, 0xb5, 0x57, 0xfd, 0x6c, 0x29, 0x55, +0xa6, 0x55, 0x9a, 0x4f, 0xb4, 0x23, 0x1d, 0x85, +0x96, 0x96, 0x96, 0xbe, 0x03, 0x07, 0x0e, 0xfc, +0x08, 0x3f, 0x3c, 0x53, 0x39, 0x87, 0xc5, 0x72, +0x0e, 0xcc, 0x8f, 0x3a, 0x8b, 0x41, 0x28, 0x95, +0xa9, 0x4a, 0x25, 0xbe, 0x5a, 0x20, 0x95, 0x4c, +0x26, 0x3b, 0x1f, 0x7f, 0xfc, 0xf1, 0xbf, 0xd4, +0x34, 0x2d, 0x92, 0xb8, 0x59, 0x43, 0xcd, 0x60, +0xdd, 0xb2, 0xbc, 0x36, 0x7e, 0x65, 0x02, 0x2b, +0x6b, 0xa1, 0xe8, 0x92, 0xa6, 0xad, 0x8d, 0xfc, +0xe8, 0x67, 0x87, 0xf9, 0xe3, 0x1f, 0x3f, 0x4d, +0xcd, 0xfa, 0x9a, 0x15, 0x33, 0x41, 0x99, 0x53, +0x59, 0xf7, 0x55, 0x33, 0x52, 0x48, 0x7a, 0x7a, +0x7a, 0x9e, 0xda, 0xb5, 0x6b, 0xd7, 0x63, 0x4b, +0xb0, 0x20, 0x3c, 0x1d, 0xaf, 0x0a, 0x00, 0x35, +0xf7, 0x70, 0x22, 0xd7, 0x58, 0xc3, 0xc1, 0x83, +0x07, 0x5f, 0x8e, 0xc7, 0xe3, 0xeb, 0xb4, 0x69, +0x9d, 0xda, 0x53, 0x29, 0x1c, 0xe9, 0x2c, 0x4b, +0x6d, 0x6c, 0xc6, 0x2e, 0xa4, 0x41, 0x0a, 0xa4, +0x26, 0x51, 0xa3, 0x2a, 0xdb, 0x9e, 0xed, 0xe5, +0xcf, 0xdf, 0x7f, 0x89, 0xbd, 0xaf, 0x3d, 0x80, +0x88, 0xb2, 0xec, 0x36, 0x1d, 0xe9, 0xa0, 0xa5, +0x75, 0x6a, 0xbf, 0xad, 0x43, 0x4a, 0x29, 0x76, +0x3f, 0xb0, 0xfb, 0xc5, 0xba, 0xba, 0xba, 0x2e, +0xfc, 0x64, 0x5d, 0x9b, 0x63, 0xb0, 0xb6, 0x14, +0x0b, 0xf2, 0x00, 0x54, 0xea, 0xf6, 0xba, 0xbb, +0xbb, 0xef, 0x6b, 0x69, 0x69, 0xe9, 0x13, 0x9e, +0xa0, 0xf6, 0xcb, 0x7a, 0x3c, 0xd7, 0xc5, 0x15, +0x4e, 0x55, 0xaa, 0x25, 0x55, 0x7a, 0xbf, 0xdf, +0xc3, 0x91, 0x9f, 0x3c, 0xc7, 0xfa, 0xdd, 0x1d, +0x90, 0xcb, 0x45, 0x42, 0x91, 0xa8, 0x11, 0x15, +0x3d, 0xa1, 0xb3, 0xfd, 0x87, 0xf7, 0xf9, 0x5e, +0xad, 0xb2, 0xcd, 0x62, 0x8d, 0x5e, 0x8a, 0xa3, +0x4f, 0x46, 0x50, 0x35, 0x35, 0xf2, 0xc8, 0x23, +0x8f, 0x1c, 0x0e, 0x85, 0x41, 0x59, 0x16, 0x14, +0x4f, 0x86, 0x4a, 0x25, 0xbf, 0x1a, 0xa0, 0x7e, +0xcf, 0x9e, 0x3d, 0x3f, 0x54, 0x14, 0x45, 0xe8, +0x57, 0xa2, 0x30, 0x2f, 0x70, 0xa4, 0x5b, 0x82, +0x3c, 0x85, 0xa2, 0x68, 0x0a, 0x3b, 0x9e, 0xdb, +0xce, 0x3d, 0x8f, 0x75, 0x13, 0x4b, 0x46, 0xd1, +0x6b, 0x22, 0xb8, 0xb6, 0x8b, 0xe3, 0xb8, 0x38, +0xb6, 0x83, 0x63, 0xda, 0x78, 0x8e, 0xc4, 0x73, +0x3d, 0xfe, 0xe3, 0x1f, 0x7e, 0x87, 0x61, 0x99, +0xa5, 0x39, 0x59, 0xa5, 0x44, 0xcf, 0x27, 0x70, +0xf6, 0xdb, 0x74, 0x75, 0x75, 0x3d, 0xd8, 0xde, +0xde, 0xde, 0x3f, 0x3a, 0x3a, 0x3a, 0xcd, 0xc2, +0x9c, 0x21, 0xdc, 0x25, 0x8a, 0x60, 0xe6, 0x28, +0x81, 0xe2, 0x59, 0x5e, 0x98, 0xfe, 0x71, 0x20, +0xb9, 0x63, 0xc7, 0x8e, 0x07, 0x1a, 0x1b, 0x1b, +0xb7, 0x48, 0x5b, 0xa2, 0x5d, 0x8c, 0x54, 0xe5, +0x91, 0x78, 0x53, 0x8c, 0x7d, 0xaf, 0x7c, 0x8f, +0xae, 0x07, 0x3a, 0xf0, 0xf0, 0xb0, 0x6d, 0x07, +0xc7, 0xb2, 0xb1, 0x2d, 0x1b, 0xdb, 0xb4, 0xb1, +0xb2, 0x16, 0x66, 0xc6, 0xc4, 0x9c, 0x37, 0x19, +0x3e, 0x75, 0x83, 0xdf, 0x7f, 0x78, 0x76, 0xc5, +0xde, 0x0f, 0x54, 0xdc, 0x15, 0x68, 0x23, 0x3a, +0x8a, 0xa2, 0x28, 0x0f, 0x3d, 0xf4, 0xd0, 0x61, +0xfc, 0xd0, 0x4d, 0xe4, 0x1c, 0x19, 0x84, 0x41, +0x01, 0xc4, 0xc5, 0x0c, 0x08, 0x4f, 0x76, 0xf2, +0xe3, 0xfd, 0xbe, 0xbe, 0xbe, 0xa7, 0xa5, 0x94, +0x28, 0x97, 0x75, 0x5c, 0xdb, 0x03, 0x59, 0x7e, +0xfe, 0x50, 0xdf, 0x5e, 0xcf, 0xce, 0x1f, 0xec, +0x20, 0x9a, 0x8c, 0x60, 0xdb, 0x0e, 0xd2, 0xb6, +0x91, 0x96, 0xc4, 0x9c, 0x34, 0xb9, 0xde, 0x3f, +0x44, 0xaa, 0xa3, 0x9e, 0x9e, 0xc7, 0xee, 0xc1, +0x75, 0x5d, 0xa4, 0x22, 0xf9, 0xf0, 0xef, 0xfb, +0xb1, 0x85, 0x53, 0x79, 0xb9, 0xb4, 0x0a, 0x51, +0xbe, 0x8d, 0xe0, 0x76, 0x38, 0xb4, 0xb5, 0xb5, +0xf5, 0x75, 0x74, 0x74, 0x6c, 0x1c, 0x19, 0x19, +0x09, 0x26, 0x4e, 0x3a, 0x0b, 0x2c, 0x08, 0x16, +0x61, 0x0a, 0x00, 0x08, 0x0f, 0x7e, 0x82, 0x85, +0x8d, 0x78, 0x2a, 0x95, 0x6a, 0x69, 0x68, 0x68, +0xd8, 0x88, 0x0b, 0xe2, 0xba, 0xc4, 0x15, 0x4e, +0xd9, 0x17, 0x88, 0xc4, 0x75, 0xb6, 0x3c, 0xb2, +0x09, 0xd7, 0x75, 0xb0, 0xad, 0x9c, 0xe1, 0x53, +0x26, 0x67, 0xdf, 0xf9, 0x86, 0xa1, 0xd3, 0xc3, +0xb8, 0x8e, 0xcb, 0xe6, 0xbd, 0x9b, 0xd8, 0xb4, +0x77, 0x03, 0xae, 0xe3, 0x72, 0xf9, 0xf3, 0xcb, +0x5c, 0x3f, 0x73, 0x7d, 0x4d, 0x8c, 0x07, 0x20, +0x0b, 0x32, 0xad, 0xe0, 0xb5, 0xbb, 0x62, 0xdb, +0xb6, 0x6d, 0x7b, 0x47, 0x46, 0x46, 0x2e, 0x52, +0xd8, 0x1d, 0xe6, 0x57, 0xa2, 0x84, 0x10, 0x8b, +0x00, 0x28, 0x66, 0x40, 0x7c, 0xc7, 0x8e, 0x1d, +0xbb, 0xa5, 0x94, 0xc2, 0x9b, 0x10, 0x38, 0x8e, +0x53, 0x36, 0x46, 0x85, 0x10, 0x74, 0xee, 0xee, +0xc4, 0x95, 0x1e, 0x96, 0x6d, 0x21, 0x2c, 0xc1, +0xf8, 0x85, 0x71, 0xce, 0xfc, 0xfa, 0x2c, 0x46, +0xc6, 0xf0, 0x6f, 0x92, 0x30, 0x74, 0x7e, 0x98, +0x6c, 0xc6, 0x40, 0x48, 0x93, 0xdf, 0xfc, 0xd3, +0x71, 0x1c, 0x59, 0x1e, 0xd4, 0xe5, 0x8a, 0x18, +0x13, 0xc8, 0xf5, 0x92, 0xce, 0xce, 0xce, 0xed, +0x2c, 0x84, 0x40, 0xb0, 0x12, 0x55, 0x90, 0x08, +0xd5, 0x25, 0xe2, 0x3f, 0x00, 0x20, 0xd6, 0xd9, +0xd9, 0xb9, 0x5d, 0x08, 0x81, 0x7b, 0xcb, 0xc3, +0x15, 0xe5, 0xa9, 0x5f, 0xdb, 0x58, 0x8b, 0x16, +0xd7, 0xb0, 0x2d, 0x0b, 0x69, 0x09, 0x66, 0x46, +0x66, 0xf9, 0xfa, 0x57, 0xa7, 0x70, 0x1d, 0xb7, +0xc0, 0xc3, 0xf3, 0x99, 0x79, 0x46, 0x2f, 0xde, +0xe4, 0xe6, 0xc5, 0x5b, 0x4c, 0xa5, 0xef, 0xac, +0x9d, 0xf7, 0x03, 0x19, 0x03, 0xcd, 0x13, 0xa4, +0x52, 0xa9, 0xae, 0x54, 0x2a, 0xd5, 0x38, 0x35, +0x35, 0x35, 0x46, 0x21, 0x00, 0x92, 0xdc, 0xfc, +0xa0, 0x1c, 0x03, 0xf4, 0x58, 0x2c, 0x96, 0x6c, +0x6e, 0x6a, 0xee, 0x96, 0x52, 0x62, 0xa4, 0x2d, +0xbc, 0x0a, 0xb1, 0x1f, 0x6f, 0x8c, 0x63, 0x5a, +0x26, 0xc2, 0x06, 0x37, 0xeb, 0x72, 0xea, 0xb7, +0x67, 0xb0, 0x3c, 0xab, 0x24, 0x6b, 0xbe, 0xfd, +0xfc, 0x02, 0x17, 0x4e, 0x5c, 0x5c, 0x73, 0xef, +0x03, 0xe0, 0x82, 0x7a, 0x5b, 0x45, 0x69, 0x96, +0x62, 0xe7, 0xce, 0x9d, 0xf7, 0x1f, 0x3f, 0x7e, +0xfc, 0x12, 0x4b, 0x31, 0x20, 0x77, 0x2d, 0x5e, +0xeb, 0x53, 0x01, 0x7d, 0xd3, 0xa6, 0x4d, 0x5d, +0x8a, 0xaa, 0x68, 0xee, 0x8c, 0x8b, 0x63, 0x94, +0x4f, 0x52, 0x52, 0x91, 0x68, 0x71, 0xd5, 0x07, +0xc0, 0x84, 0xc9, 0x9b, 0xb7, 0xc9, 0x66, 0xb3, +0x4b, 0x3e, 0x73, 0xe6, 0xe3, 0xdf, 0xe3, 0x79, +0x5e, 0x55, 0xde, 0x17, 0x52, 0x80, 0x07, 0xcb, +0x59, 0xef, 0x74, 0x26, 0x5c, 0xd4, 0x16, 0x85, +0xa6, 0xa6, 0xa6, 0x0d, 0xf8, 0xf9, 0x2c, 0x58, +0x91, 0x2e, 0x58, 0x92, 0x2f, 0xd5, 0x0b, 0xe4, +0xc3, 0xa0, 0xbe, 0xbe, 0xbe, 0x51, 0x4a, 0x89, +0x63, 0xb8, 0xb8, 0x15, 0x3c, 0xa5, 0x45, 0x15, +0x0c, 0xcb, 0x00, 0xd5, 0x03, 0x13, 0xd2, 0xa3, +0xe9, 0x8a, 0xcf, 0x54, 0x4b, 0x7d, 0x21, 0x04, +0x7a, 0x4c, 0xc3, 0x34, 0x2c, 0x3c, 0xb7, 0x3a, +0x10, 0x5c, 0x43, 0x22, 0xa5, 0x24, 0x1e, 0x8f, +0xd7, 0xb1, 0x84, 0xf1, 0x80, 0x28, 0xd5, 0x0b, +0xe4, 0x17, 0x3d, 0x6b, 0x6b, 0x6b, 0x53, 0x42, +0x08, 0xdc, 0xac, 0x8b, 0x53, 0x21, 0xfb, 0x7b, +0xaa, 0xe7, 0x03, 0xa0, 0x78, 0x78, 0x0a, 0x18, +0x66, 0xb6, 0xe2, 0x33, 0xcb, 0x11, 0x5d, 0xd7, +0x51, 0xa4, 0x82, 0x65, 0x58, 0x7e, 0x4e, 0xa9, +0x20, 0xb6, 0x21, 0x10, 0x42, 0x10, 0x8b, 0xc5, +0x92, 0x84, 0x66, 0x84, 0x14, 0xee, 0x47, 0x14, +0x84, 0x40, 0x70, 0x0d, 0x6e, 0x52, 0x6a, 0x6a, +0x6a, 0xea, 0xa4, 0x94, 0xb8, 0xa6, 0x3f, 0xf1, +0x28, 0x27, 0x8e, 0x70, 0x31, 0x2d, 0x03, 0x14, +0xf0, 0x14, 0xb0, 0x1c, 0xab, 0xe2, 0x33, 0xcb, +0x12, 0x15, 0x54, 0x4d, 0xc5, 0x95, 0x2e, 0x4e, +0xd6, 0xa9, 0xc8, 0x04, 0xdb, 0x70, 0x90, 0x52, +0x06, 0x00, 0x14, 0x74, 0x7f, 0x45, 0xcd, 0x2e, +0xda, 0xb0, 0xcc, 0x6b, 0x4d, 0x4d, 0x4d, 0x9d, +0x10, 0x02, 0x2b, 0x6b, 0x57, 0xf4, 0xa6, 0xe9, +0x98, 0x64, 0x0d, 0x05, 0x57, 0xf8, 0x60, 0x59, +0x5e, 0xe5, 0x67, 0x96, 0x25, 0x9a, 0x3f, 0xb4, +0x56, 0x84, 0x82, 0x82, 0x82, 0x31, 0x6f, 0x94, +0xbd, 0xdd, 0x35, 0x5c, 0x84, 0x10, 0x44, 0xa3, +0xd1, 0x04, 0x85, 0x9e, 0x2f, 0x90, 0xb2, 0x1b, +0x23, 0x42, 0x08, 0xa4, 0xf4, 0x63, 0x49, 0xc8, +0xf2, 0x01, 0xeb, 0x3a, 0x2e, 0x96, 0x65, 0x23, +0x15, 0x89, 0x50, 0x24, 0x9e, 0xe7, 0x55, 0x7c, +0x66, 0x39, 0xa2, 0x47, 0x75, 0x54, 0x5d, 0xcd, +0xbb, 0xc7, 0x32, 0xad, 0xb2, 0x49, 0x51, 0x48, +0xff, 0xdd, 0x2b, 0x25, 0x4e, 0x95, 0x32, 0xdb, +0xd2, 0x99, 0x4c, 0xe6, 0xae, 0x10, 0x02, 0x2d, +0xa1, 0x22, 0x95, 0xca, 0xb3, 0x14, 0xc7, 0x76, +0xb0, 0x2c, 0x1b, 0xa1, 0x48, 0xa4, 0x2a, 0xfd, +0xe5, 0xc8, 0x35, 0x92, 0x48, 0x4c, 0x47, 0x8b, +0x68, 0x48, 0x29, 0x10, 0x02, 0xe6, 0x67, 0xe7, +0xcb, 0x1a, 0xa7, 0xc6, 0x15, 0x84, 0x10, 0x18, +0x86, 0x31, 0x47, 0xd1, 0x1e, 0x62, 0xc1, 0x7d, +0xb9, 0x6b, 0x18, 0x84, 0xe0, 0x66, 0x27, 0x0f, +0x40, 0x4c, 0x43, 0x91, 0x4a, 0xc5, 0x97, 0xf4, +0x1c, 0x0f, 0xd7, 0x72, 0x71, 0xa4, 0x83, 0xae, +0xe9, 0xfe, 0x18, 0x60, 0x8d, 0x24, 0x1a, 0x8b, +0xa2, 0xea, 0x2a, 0x02, 0x81, 0xeb, 0x78, 0x48, +0x21, 0xcb, 0xf6, 0x22, 0x5a, 0x5c, 0x0f, 0x00, +0x98, 0x26, 0xb4, 0x7f, 0x48, 0x11, 0x08, 0xe1, +0x10, 0x08, 0x7e, 0xcc, 0xef, 0xd2, 0xce, 0xcc, +0xcc, 0xdc, 0x96, 0x52, 0xa2, 0x25, 0xaa, 0x03, +0x00, 0x16, 0x40, 0x90, 0x52, 0x56, 0xfd, 0x4c, +0x35, 0x92, 0xa8, 0x4d, 0x20, 0x84, 0x40, 0x20, +0xb1, 0xe6, 0xad, 0x8a, 0x6d, 0xeb, 0x71, 0x0d, +0x29, 0x25, 0xa6, 0x69, 0x4e, 0x53, 0xb8, 0x89, +0x5a, 0x00, 0x44, 0x71, 0x0e, 0x28, 0xd8, 0xa5, +0x9d, 0x9a, 0x9a, 0x9a, 0x14, 0x42, 0xa0, 0xc6, +0x55, 0x14, 0xa5, 0x7a, 0x63, 0x3c, 0xd7, 0xf3, +0x01, 0xa8, 0xf2, 0x19, 0x45, 0x55, 0x70, 0xec, +0xa5, 0xe3, 0xa5, 0xa6, 0x3e, 0x41, 0x6d, 0x43, +0x12, 0x33, 0x97, 0xf8, 0x66, 0x3c, 0x2a, 0xb6, +0xad, 0x25, 0x34, 0x84, 0x10, 0x64, 0x32, 0x99, +0xbb, 0x2c, 0xac, 0x0c, 0x3b, 0x14, 0xb2, 0xc0, +0x0b, 0x87, 0x40, 0xa0, 0xc1, 0x1e, 0xbd, 0x79, +0xe5, 0xca, 0x95, 0x21, 0xcf, 0xf3, 0x2c, 0x3d, +0xa9, 0x69, 0x6a, 0x5c, 0xc5, 0xcd, 0x2e, 0xaf, +0x5b, 0x93, 0xb2, 0xba, 0xd5, 0x8d, 0x7d, 0xcf, +0x3e, 0xc8, 0x97, 0xff, 0x3e, 0x80, 0x99, 0x35, +0x4b, 0xfe, 0xde, 0xd5, 0xbb, 0x01, 0x3d, 0xa2, +0x81, 0xe7, 0xe1, 0x79, 0x1e, 0xf3, 0x33, 0xf3, +0x15, 0xdb, 0x8e, 0x36, 0x47, 0x90, 0x52, 0x32, +0x3e, 0x3e, 0x7e, 0x9d, 0xc5, 0xdb, 0xe9, 0x25, +0x19, 0x10, 0xa6, 0xbf, 0x05, 0x98, 0xb3, 0xb3, +0xb3, 0xd3, 0xe3, 0xe3, 0xe3, 0x97, 0xdb, 0xda, +0xda, 0x7a, 0xe3, 0x6d, 0x31, 0xe6, 0x87, 0x56, +0xbf, 0x9e, 0x5f, 0x2c, 0x0d, 0xad, 0x0d, 0xf4, +0xed, 0xdf, 0xc1, 0xd8, 0xb5, 0x34, 0xd7, 0xbe, +0xb9, 0xb6, 0xe8, 0xf7, 0xae, 0xde, 0x4e, 0xda, +0x36, 0xb6, 0x60, 0x64, 0x4d, 0x70, 0x61, 0xee, +0x4e, 0x06, 0xd7, 0x76, 0xcb, 0x32, 0x40, 0xa8, +0x82, 0x68, 0x63, 0x04, 0x0f, 0xcf, 0xfd, 0xe2, +0x8b, 0x2f, 0x06, 0xf0, 0xb7, 0xd2, 0xc3, 0x1b, +0xa7, 0xf9, 0x3c, 0xa0, 0x7a, 0x9e, 0x17, 0x94, +0x99, 0x04, 0x00, 0x04, 0x45, 0x0a, 0x59, 0x60, +0xfe, 0xea, 0xd5, 0xab, 0x67, 0x3a, 0x3a, 0x3a, +0x7a, 0x63, 0xad, 0x51, 0xcc, 0x1b, 0x6b, 0x97, +0xd4, 0x02, 0x39, 0xf0, 0xa7, 0x8f, 0x11, 0x8d, +0x47, 0xd9, 0x78, 0xef, 0x06, 0x86, 0xcf, 0x0f, +0x2f, 0x18, 0x21, 0x05, 0x5b, 0x76, 0x76, 0xb3, +0x69, 0xfb, 0x46, 0xcc, 0xac, 0x85, 0xe7, 0x82, +0x67, 0x7b, 0x4c, 0x8e, 0x4c, 0x56, 0x8c, 0xff, +0x48, 0x8b, 0x8e, 0x54, 0x24, 0x13, 0x13, 0x13, +0xc3, 0x13, 0x13, 0x13, 0x13, 0x2c, 0x06, 0x20, +0x0f, 0x42, 0x98, 0x47, 0x61, 0x06, 0x98, 0xb9, +0x87, 0x32, 0x27, 0x4f, 0x9e, 0xfc, 0x12, 0x70, +0x23, 0x8d, 0x3a, 0xaa, 0xae, 0xa0, 0x48, 0xb9, +0x66, 0xda, 0xdd, 0xb7, 0x99, 0x9e, 0xfb, 0xef, +0x21, 0x12, 0xd3, 0xd9, 0xbc, 0x7d, 0x13, 0x8a, +0x94, 0xa8, 0x8a, 0x42, 0xc7, 0x96, 0x76, 0x9e, +0x7c, 0xf1, 0x20, 0xdb, 0x1f, 0xbd, 0x0f, 0x3d, +0xa2, 0xa1, 0x47, 0x34, 0x34, 0x5d, 0xe5, 0xd6, +0x95, 0x9b, 0x18, 0xb3, 0xd9, 0x8a, 0xed, 0xc6, +0x5a, 0x23, 0x08, 0x21, 0xb8, 0x76, 0xed, 0xda, +0x19, 0xfc, 0xf5, 0xc0, 0xa5, 0x19, 0x50, 0x04, +0x40, 0x90, 0x03, 0x2c, 0xfc, 0xe5, 0xa3, 0x4c, +0x3a, 0x9d, 0x4e, 0xdf, 0xbe, 0x7d, 0xfb, 0x5a, +0x53, 0x53, 0xd3, 0xe6, 0xc4, 0xc6, 0x38, 0xf3, +0x57, 0xd7, 0x26, 0x0c, 0xa4, 0x94, 0x3c, 0xf9, +0xf2, 0x13, 0xe8, 0x31, 0x1d, 0xc7, 0x76, 0x68, +0x5a, 0xdf, 0xc8, 0x81, 0x3f, 0xdb, 0x4f, 0x47, +0x4f, 0x07, 0x9a, 0xae, 0x62, 0x66, 0x2d, 0x8c, +0x79, 0x03, 0xd7, 0x71, 0x71, 0x1d, 0x8f, 0xd1, +0xc1, 0x51, 0xc6, 0x87, 0x26, 0x2a, 0x26, 0x3f, +0x19, 0x93, 0x44, 0x5a, 0x23, 0x20, 0xf0, 0xbe, +0xfa, 0xea, 0xab, 0x2f, 0xf0, 0x17, 0x45, 0x83, +0x22, 0x8a, 0x82, 0xee, 0x30, 0xbf, 0x28, 0x1a, +0x92, 0x70, 0x0e, 0xc8, 0xe2, 0xef, 0xb9, 0xcf, +0x9c, 0x38, 0x71, 0xe2, 0x43, 0x21, 0x04, 0xb1, +0xcd, 0x51, 0x94, 0xa8, 0x8a, 0x94, 0xca, 0xaa, +0x75, 0xd7, 0xc1, 0x9d, 0xb4, 0x77, 0xb7, 0xa1, +0x47, 0x75, 0xf4, 0xa8, 0x3f, 0xc8, 0xd9, 0x79, +0x70, 0x27, 0x75, 0x4d, 0x75, 0xa8, 0xba, 0x86, +0xaa, 0xa9, 0xa8, 0xba, 0x06, 0x08, 0xbe, 0xfd, +0xfc, 0x02, 0x97, 0xbe, 0xba, 0x52, 0x55, 0xbb, +0x89, 0x9e, 0x38, 0x52, 0x91, 0x0c, 0x0d, 0x0d, +0x9d, 0xbe, 0x7a, 0xf5, 0xea, 0x75, 0x16, 0xea, +0x06, 0x96, 0x66, 0xc0, 0x12, 0x79, 0xc0, 0xc0, +0xa7, 0xcf, 0xf4, 0xa7, 0x9f, 0x7e, 0x3a, 0xb0, +0x6f, 0xdf, 0xbe, 0x4b, 0xad, 0xad, 0xad, 0x5b, +0x12, 0x5b, 0x62, 0xcc, 0x5f, 0x28, 0x3f, 0x0e, +0xaf, 0x24, 0x7a, 0x4c, 0x67, 0xff, 0xf3, 0xfb, +0x51, 0x23, 0x7e, 0x57, 0x65, 0x9b, 0xfe, 0x34, +0xd7, 0x75, 0x5c, 0x1c, 0x5b, 0x41, 0x51, 0x15, +0xa4, 0x22, 0x49, 0x5f, 0x4b, 0x73, 0xe6, 0xf8, +0x19, 0xe6, 0xee, 0x66, 0xaa, 0xea, 0x52, 0x95, +0xa4, 0x42, 0xb4, 0x3d, 0x82, 0xeb, 0xba, 0xce, +0x07, 0x1f, 0x7c, 0x70, 0x0c, 0x7f, 0x83, 0x74, +0x36, 0xe7, 0xcc, 0x70, 0x09, 0x4d, 0x5e, 0x8a, +0xc7, 0x01, 0x61, 0x00, 0x4c, 0x7c, 0xe4, 0x66, +0x81, 0x3b, 0xfd, 0xfd, 0xfd, 0xbf, 0x7c, 0xe9, +0xa5, 0x97, 0xfe, 0x3a, 0xda, 0x19, 0x11, 0xf6, +0x88, 0x8b, 0x9b, 0x59, 0xf9, 0x4c, 0xef, 0x7b, +0xdf, 0xdf, 0x43, 0xbc, 0x36, 0x86, 0x94, 0x02, +0x55, 0x57, 0xf1, 0x1c, 0x37, 0x67, 0xb4, 0xc2, +0xdc, 0xd4, 0x1c, 0xe7, 0x3e, 0x3b, 0xcf, 0xe0, +0x97, 0x97, 0xc8, 0xce, 0xfa, 0xe1, 0x56, 0xed, +0x80, 0x2a, 0xde, 0x13, 0x45, 0x08, 0xc1, 0xe0, +0xe0, 0xe0, 0xe7, 0x57, 0xae, 0x5c, 0xb9, 0x42, +0xe1, 0x36, 0x79, 0x00, 0x40, 0x9e, 0xfe, 0x10, +0x4a, 0x82, 0xb9, 0x2f, 0x8a, 0x13, 0x61, 0x1e, +0x80, 0x53, 0xa7, 0x4e, 0x9d, 0x1d, 0x1e, 0x1e, +0x3e, 0x2d, 0x15, 0x49, 0xcd, 0x8e, 0x18, 0xaa, +0x2e, 0x51, 0x94, 0x95, 0xe9, 0xf9, 0xcf, 0xbe, +0xe5, 0xd2, 0xc0, 0x65, 0x1c, 0xcb, 0xc1, 0x32, +0x16, 0x26, 0x35, 0x42, 0xc0, 0x6f, 0x7f, 0x7e, +0x9c, 0x73, 0xbf, 0x3b, 0x87, 0x35, 0x6f, 0x2e, +0xab, 0xcd, 0xd8, 0xe6, 0x08, 0xfa, 0x3a, 0x0d, +0xdb, 0xb6, 0xb3, 0xc7, 0x8e, 0x1d, 0x3b, 0x46, +0xe9, 0x62, 0x89, 0x45, 0xf3, 0x81, 0x52, 0xa3, +0x89, 0xe2, 0x30, 0x98, 0xcb, 0x21, 0x79, 0xfb, +0xe8, 0xd1, 0xa3, 0x3f, 0x9f, 0x9b, 0x9b, 0x9b, +0x54, 0x92, 0x0a, 0xb1, 0x3f, 0x8a, 0xad, 0x38, +0xfe, 0x67, 0x6f, 0xcf, 0xf1, 0xfe, 0x4f, 0x3e, +0xe0, 0x17, 0x7f, 0xf7, 0x4b, 0xd2, 0xd7, 0xc6, +0xb1, 0x2d, 0x1b, 0xd7, 0x71, 0xf1, 0x3c, 0x58, +0xbf, 0x75, 0xfd, 0xb2, 0xdb, 0xd3, 0x9b, 0x74, +0xa2, 0xdd, 0x11, 0x00, 0xaf, 0xbf, 0xbf, 0xff, +0xad, 0x74, 0x3a, 0x3d, 0x04, 0xdc, 0xc9, 0x01, +0x30, 0xbf, 0x94, 0xf7, 0x2b, 0x01, 0x10, 0x66, +0xc1, 0x0c, 0x30, 0x35, 0x31, 0x31, 0x31, 0xfc, +0xd6, 0x5b, 0x6f, 0xfd, 0xa3, 0xe3, 0x38, 0x86, +0xde, 0xaa, 0x11, 0xdd, 0x14, 0x41, 0x91, 0xca, +0x8a, 0xf5, 0xc6, 0x37, 0x23, 0xbc, 0xfd, 0x37, +0xff, 0xc2, 0x67, 0xff, 0x7a, 0x82, 0xec, 0x9c, +0x81, 0xe7, 0xb8, 0xb4, 0xdf, 0xd3, 0xbe, 0xac, +0x36, 0xb4, 0x1a, 0x95, 0xd8, 0x7d, 0x11, 0xa4, +0x22, 0x19, 0x18, 0x18, 0xf8, 0x75, 0x7f, 0x7f, +0xff, 0x27, 0x94, 0xa9, 0x12, 0x29, 0x36, 0x76, +0x51, 0x85, 0x48, 0xd1, 0x26, 0x69, 0x50, 0x0e, +0x17, 0x2e, 0x8d, 0x69, 0x7d, 0xe2, 0x89, 0x27, +0x1e, 0x7f, 0xee, 0xb9, 0xe7, 0x5e, 0x11, 0x42, +0x08, 0xeb, 0xb2, 0x83, 0x7d, 0x63, 0xf5, 0xf3, +0xde, 0x78, 0x32, 0xc6, 0xfd, 0x4f, 0xef, 0xa2, +0xed, 0x9e, 0x56, 0x7e, 0xf1, 0xb7, 0xc7, 0xaa, +0x5a, 0xf6, 0x92, 0x35, 0x02, 0xfd, 0x3e, 0x15, +0x11, 0x11, 0x5c, 0xbd, 0x7a, 0xf5, 0xf4, 0x1b, +0x6f, 0xbc, 0xf1, 0x63, 0x60, 0x94, 0x85, 0x2a, +0x91, 0x62, 0x06, 0x2c, 0xaa, 0x12, 0x59, 0x71, +0x89, 0xcc, 0xf3, 0xcf, 0x3f, 0x7f, 0x24, 0xb7, +0x0b, 0x2b, 0x9c, 0x31, 0x17, 0x7b, 0xd0, 0x29, +0xca, 0xaf, 0x2b, 0x93, 0xc6, 0xae, 0x46, 0x32, +0x77, 0x32, 0x64, 0xa6, 0x33, 0x65, 0xef, 0x93, +0x8d, 0x12, 0x75, 0xab, 0x44, 0x28, 0x82, 0x74, +0x3a, 0x7d, 0xf5, 0xf5, 0xd7, 0x5f, 0x7f, 0x3d, +0x93, 0xc9, 0x2c, 0xbb, 0x44, 0x66, 0x55, 0x45, +0x52, 0xcf, 0x3c, 0xf3, 0xcc, 0xc1, 0x43, 0x87, +0x0e, 0xbd, 0xa0, 0x69, 0x9a, 0xee, 0xcd, 0x78, +0xd8, 0xe7, 0x1c, 0xbc, 0xd2, 0xf3, 0x99, 0x35, +0x15, 0x65, 0x83, 0x44, 0xe9, 0xf2, 0xa3, 0x77, +0x70, 0x70, 0x70, 0xe0, 0xcd, 0x37, 0xdf, 0xfc, +0xa9, 0x61, 0x18, 0x6b, 0x57, 0x24, 0x05, 0xd5, +0x97, 0xc9, 0xed, 0xda, 0xb5, 0x6b, 0xc7, 0x8b, +0x2f, 0xbe, 0xf8, 0x5a, 0x22, 0x91, 0xa8, 0xc7, +0x01, 0xf7, 0x86, 0x87, 0x3b, 0xe2, 0xad, 0x09, +0x1b, 0x16, 0xbd, 0x53, 0x4a, 0x20, 0x37, 0x0a, +0x44, 0x02, 0x3c, 0xcf, 0x73, 0x3f, 0xfb, 0xec, +0xb3, 0xf7, 0x8f, 0x1e, 0x3d, 0xba, 0xf6, 0x65, +0x72, 0xf9, 0x1f, 0xab, 0x2c, 0x94, 0x6c, 0x6d, +0x6d, 0xdd, 0xf0, 0xea, 0xab, 0xaf, 0xfe, 0xc5, +0xfa, 0xf5, 0xeb, 0x7b, 0x01, 0x30, 0xc1, 0x1d, +0xf2, 0x70, 0xc7, 0x28, 0x91, 0x76, 0x56, 0x60, +0x78, 0x0d, 0xbe, 0xe1, 0xf5, 0xfe, 0xe7, 0x4c, +0x26, 0x73, 0xf7, 0xbd, 0xf7, 0xde, 0xfb, 0xe7, +0x8f, 0x3e, 0xfa, 0xe8, 0x3f, 0xf1, 0x8b, 0x24, +0x27, 0xf1, 0xb3, 0x7e, 0xa9, 0x5a, 0x80, 0x95, +0x15, 0x4a, 0xe6, 0x6f, 0x58, 0xba, 0x54, 0x36, +0x8e, 0xbf, 0xff, 0x9e, 0x2f, 0x95, 0x3d, 0x70, +0xe0, 0xc0, 0xee, 0x43, 0x87, 0x0e, 0x1d, 0x5e, +0xb7, 0x6e, 0x5d, 0x07, 0x00, 0x16, 0x78, 0xb7, +0xfd, 0xd7, 0xf3, 0xee, 0xb2, 0x3c, 0x30, 0xe2, +0x20, 0x1a, 0x7c, 0xa5, 0xc6, 0xff, 0xca, 0x34, +0xcd, 0xec, 0xc0, 0xc0, 0xc0, 0x6f, 0xde, 0x79, +0xe7, 0x9d, 0x0f, 0x32, 0x99, 0x4c, 0x50, 0x2a, +0x7b, 0x87, 0xc2, 0x11, 0xdf, 0xda, 0x95, 0xca, +0x2e, 0x01, 0xc2, 0x52, 0xc5, 0xd2, 0x75, 0xf8, +0xa1, 0x91, 0x3a, 0x72, 0xe4, 0xc8, 0xa3, 0x8f, +0x3e, 0xfa, 0xe8, 0x33, 0xc9, 0x64, 0x32, 0x5f, +0x2c, 0x8d, 0x93, 0x7b, 0x55, 0x03, 0x3c, 0x53, +0x2c, 0x9c, 0x08, 0x70, 0xc9, 0x9f, 0x22, 0x10, +0x11, 0xcf, 0xff, 0x3b, 0x89, 0x0f, 0x71, 0x4e, +0x6c, 0xdb, 0x36, 0xcf, 0x9d, 0x3b, 0xf7, 0xf9, +0xdb, 0x6f, 0xbf, 0xfd, 0x6f, 0xe9, 0x74, 0xfa, +0x66, 0xae, 0xa5, 0xbb, 0x39, 0x0d, 0x7b, 0x7d, +0xed, 0x8b, 0xa5, 0xcb, 0x80, 0x10, 0x3e, 0x20, +0x11, 0x9c, 0x11, 0xa8, 0xc9, 0xbd, 0x7e, 0x12, +0xa8, 0xdd, 0xbb, 0x77, 0xef, 0xd6, 0x3d, 0x7b, +0xf6, 0xec, 0xde, 0xbc, 0x79, 0xf3, 0xbd, 0xa9, +0x54, 0x6a, 0x59, 0xe5, 0xf2, 0x86, 0x61, 0x64, +0xae, 0x5f, 0xbf, 0x7e, 0xe1, 0xec, 0xd9, 0xb3, +0x5f, 0x7f, 0xfc, 0xf1, 0xc7, 0x5f, 0xcf, 0xce, +0xce, 0x06, 0xc9, 0x2d, 0xf0, 0xf6, 0x1f, 0xae, +0x5c, 0x3e, 0x7f, 0x73, 0xf9, 0x03, 0x13, 0x01, +0x23, 0x4a, 0x1e, 0x98, 0xe8, 0xed, 0xed, 0xed, +0xd8, 0xb5, 0x6b, 0x57, 0x6f, 0x32, 0x99, 0x4c, +0xd5, 0xd6, 0xd6, 0xd6, 0xc5, 0xe3, 0xf1, 0x64, +0x22, 0x91, 0xa8, 0x55, 0x55, 0x55, 0xcd, 0x64, +0x32, 0xb3, 0xb3, 0xb3, 0xb3, 0xd3, 0x73, 0x73, +0x73, 0xd3, 0x33, 0x33, 0x33, 0x53, 0x37, 0x6e, +0xdc, 0x18, 0xf9, 0xe4, 0x93, 0x4f, 0xce, 0x5b, +0x96, 0x55, 0xee, 0xc0, 0x44, 0xd8, 0xf0, 0x82, +0x93, 0x23, 0xd5, 0x1a, 0xbf, 0x6c, 0x00, 0x42, +0x20, 0xc0, 0xca, 0x8f, 0xcc, 0x84, 0x37, 0x2a, +0x83, 0x91, 0x68, 0xb0, 0x0e, 0x91, 0x5f, 0x8e, +0x63, 0xe1, 0xb8, 0x4c, 0xb1, 0x2e, 0x79, 0x64, +0x86, 0x32, 0xd9, 0x7e, 0x49, 0x7b, 0xfe, 0x87, +0x0e, 0x4d, 0x85, 0x4f, 0x8e, 0x41, 0xe1, 0xf0, +0x3b, 0x00, 0xe1, 0x0f, 0x72, 0x68, 0x6a, 0x55, +0x07, 0x27, 0x57, 0x71, 0x6c, 0xae, 0x78, 0xaf, +0xae, 0x78, 0x26, 0x1a, 0x68, 0xc5, 0x63, 0x73, +0xac, 0xc2, 0x78, 0x58, 0x25, 0x00, 0x50, 0x00, +0x02, 0x14, 0x32, 0x22, 0xbc, 0xd3, 0x5c, 0xcd, +0xc1, 0xc9, 0xb0, 0x56, 0x3c, 0x38, 0xc9, 0x2a, +0x0d, 0xcf, 0xbf, 0xf0, 0xff, 0xf7, 0xa3, 0xb3, +0x6b, 0x06, 0x40, 0x41, 0xa3, 0x6b, 0x78, 0x78, +0x3a, 0x74, 0xf5, 0x3f, 0xfc, 0x6f, 0x3d, 0x3c, +0xfd, 0x7f, 0x55, 0xfe, 0x1b, 0x7d, 0x60, 0xf2, +0xed, 0x55, 0x31, 0x37, 0xb6, 0x00, 0x00, 0x00, +0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, +0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity12.png b/source/bitmaps/misc/activity12.png new file mode 100644 index 0000000000000000000000000000000000000000..18b60374f3783ec4368d2d69efd41e120c934563 GIT binary patch literal 4297 zcmV;)5H|0LP)TxE90f8TeP-lUdV)-Fq4WMnyD%Ldzn*=)*C z7={cU*CZ(@;31(PFL}#zUQ-o{%EJtmJWS?c$^??Csc{7un1~q@24aE{*dAkJ%d2F` zR!g#MEv>$L9&X>(?N+P1wJ=F4r|Q&Ici;Qzp8xru^KIu7p6BshiV#99^;3!O7QKx3 z9lxOZT{K!`v{>T0lz8E5F@9?eh*+!kN*FDQ{+1=a3rpDWa_Zl-MlZf<1}tH?3|&j9 zpb&(>7&rH~yM*R}2>$JAfmjs)A>)gURzj-gR4LM87K9D80jI>(p$LrC0xs^>KL8~_q#Lg4klSSzPy(KXOgV5|s)WiudTd|*J>%Q_IrX*8#?(B}Y*fDr)z zVb2E!8#&Da^SNs__gw%;zzmlh8gvH-{#A86q5z{`QbaUc=WI1q1cZtm#l=;)0` zqYcq$v|iWsq^|2pDWztb=8S2Y(}rQ(F$`ns&Ye3qE?>TU-gVtMAOp;WG!p{ECgw9s+1a_fv9a;qcs$-x)j!IKZQGftsi_OMZr%EN zaB%RHVHlIZG%%CXSr)(u7!eMOsz9g;fD*=Q__U4zH94c}fjXdJ=gysvb$53kibkXB zf;JROC6#US%_Jo{bFE(X`UjRn9u)z*LAI%H*bDEFfj1$ z%*@OvFa_KV0g_=MH0Q)1( z(MFOJbqKf87-&J}Ycou>Pcqdu$z1&`0FL7r!^6YJPo6yazF`<+!0j9u)A->rp97+5 z5Xu6ugz*90>wpx{SXWoKasU4PuhiGq_xOfuw4Gnix}he7SH00oNv3X&k^6?2X_^MW zvaFfYr%xX}ckbK?U;>!LXGE9{Re`W103~Rzvq1TJU>(rZ)z#IvZ{NOGqtR%+v?Wc0 zZ8TkKK{|5Ph8N3B%Uy2XdxLCp9>BeL@#6a@PMkOfr1626VlfB~zWvn$P}J3xGQJ6D z?(6G2*w@$hf}$vTY${IYe{Dp~YHMe4$v1}a-dl`s9Rpx&Y;2&vzyGI}WsL&k_+c^4 zVkVRXp&S4~R~OK}h8*RA)`uT{_()Gr&tV~iNDkN2@^yQ~81H^^6Qct+nZKP~q4f(g z(>~3u2S)G|m+9&0tM9)1?(2qO+`wl;7=(OcECs+Ko|cIF!27lM05omizWuRn+qNB6 z6h$6X<8YoldJSmC zPsmC9@kfM(L6$GW|+EXbU=`2fa zY{o96K?vg|e;>7b=`YQL>RN-1_fu=~Zjy1Fj>WL=wM zu(lKn@&Huo_PV>f?`vsk=@Xuy_RD%a*Tof1RjMUbdcWVpk)J%r`rRFn%SA$ws1X%C zp|kym_xWC}vdvL04{^K8hhhdqeIa#Gd&nIy9 z+jMnxJ=osf-ak4zI?ckIA>1X3VCE=+;#ppp{&66=W5R-{l31wr=^rAmvvm*16h9lP~Tq9&L8X`nv7uE4$`)fmc*Pi zx!ylSs-vEs$L_&(U8ExU@bCMvg;ROCv1Fqw8`SZ(MKXZLej0YeKGOggXyJFk6ZF@&XMlMp=9p+b}gb<4WC}u!>$BrGl zrIf;(5IBxgHb#XIbnfoNl^&LDAuPf8g>laO`YcAq@NbeZbbgp@#z07u-~7{Y99bUJ z<%$>+$n}!W&d%*Dgg~$oRgehPCE`B-AlBL0xm^f>d&|QW<*8rWSc?|duq_K|31&uS z`TAFb6!}FPWMlasv=EYk~rSGhr_X8ON%@d?jsjgHi)i^aZHAW!-lHB~D90T-N zES79;YVMX&Vx%p+3b7w=jAL3R!Ui|%a_YBduso|IYrg&b0vAqPTyyUO;DUNvMQN5| z=gyt?A3uKl5=${4cP(D)QvrR`rcGUns%Y+vi(`~eQc{sd z-{W~+Ro)j;fCtN2?{p?y)E0%Nrlt+}`7BtGE?AN;)eGdqpuWDoQA&wpxVRNOr9~AC z%K+5_6VjvUiqBL_eIW#TOv5xRJhwU!TtgzIBp#2~v4rt}DAfz(7d>lhYg0l9+^maJ zA^Ur(=L4X4cnTP1w&F9(5nb0&q=IEweom<%wjmHg5R1ik?ne}aKyVFiQfg{y z>ZFvora$p0CysD2Edvzr6tEnt;xo$<6;w^dl`c-!smKJ|aF9|402Fk8Ma?eSu*_>s zO--E;0xN4*^rq>UWDNyZ_+VLH9nm@Ewgo1*CF>jQ;-8Ec<5JaQV1cjb2kg^*i zLI|YvV@b&J0qZ(0mSrOqiBKe-=T&@WIig2(R9(%x$1<(5Nl{4u-76(dl``AXnM~%c z5CScsB9+Rs6vuY3EE}Onq$>U8$TgBkOh=1oNGT8k=4a>28mGn;gb)~pF-OrJV!?g6 zYZ!#!W+x9oOhb`M#h3IP57%;Wq=T;M{up45BpQpN>M8<(>v%{Z%l0B#Tn_-4CbWM@ z5eVTB2!71(($37x+?Gv0V!C8lXkQ@Dv* z07P*PDA=W)nwpvvLZHS~6s3A&JlFF9sPY*_RdDR3gJSw)WB{YN( zWHOn%EUXMW6tchzhd`jg9=&%`UH7ld`(ijeXBP$d~^eZ`fIyyRfW35rl8*7);0y*%fj}eVW*?8{; zhR+W#7$F5)c6PIA`$o*Hh3A52drXc@R*e5hi;h$z6B84|6B82?ECwJCLYPNk2AH{r zGAB=-{1R{@jXJ8Xph&r9+TFLAp8M}164TkdeG`h5sER_zmUfZ>pC7e#|2ih}MizbG1#a1O}g@43&MIC0`bAq26_QIx2Pl*+1g*TJ2%cekNO zb@Zq|$k};tCv{DAsJe!#si?XJ2)_ON0++tJQdPT&o;XsG3=IvPzIyfQbr$LdmS(^b zdBDJ@&-ACCembyk-@Z$&t*u)UTVl*#C_fIbBzjC||MUA%BYsz9oBlM{bzB@Qa@YLbN@C>$=VdAAE2Oe}i;3=ge>kOn~ibOz(T&-$T4MhLi$TSMeM-XSBlH)EwtNJI~;km&nfg;a2T{ zD&7-C2*Kds;OAGaT)9HwHhBO*p8gO@g1Ik>6JZ{JQ>RXy9UdM&Efq=4ju@&gQIwVG z`Om)P(!gaL%fT`hCN)C9Z-0KAbH6)>HE%Af&DiD$`Z^8UwzJ2M9Xm$pVu?lbfl{N1 z;xL%YA$j}g(W5_~o12?dk_xduimf>QXK&B({!c#O7k~Fl($~hZEgRQy@jO_+b^Ws2 z)0=dn-4OtKJzeG#N085kJ&b$@^VCzPoYDK>Udg-FpR zX;2OqE{$n@;)y37f9|>GUJ*hF>#~D=WA*dicrwQQPw%4bo>qSGx5uhl_L4OM{XP{D z5nR1`_4FHWyzygTl!YphVg@X#5?OJH%=6DbeW>rN}&ph+Y!9#}*y`X8D?#+1E=N!D!^O-dj zWrIZN@}qZfaB$$wH{blJVHj&yBn8!%$?e*;YsZT(zW7=qk*LQ3_lAc%;;jiA7QItS zAU6s`0zA)iKl|*n_m3Vuy7pyq`5&t+lx%Hn-SFzGul~jQ_3L{9Fu@)2aK|W-c2;0` z4Zh*^{^v|4bN9XX-uvf|KKkfC@rxuU@w0xZT7Z=mO6G4^x>PofzyF>ul|69a!0tnb z4jo>%Ze0fe7I?S)*YobOJTT%Q8hoY3|H?GY?7+alZ{B(5oewgZOi(I&hr$ux+Lg*K z0m4$n(slTukvekZ$fJ)w`sg#sWHMhYjgxy-13XhKoCt8qpCS+u&;L7#4{=Ux+cwXg zJNNn9Z@>L->2&&LuBE#<4SRj1qe5I!IgoDrzWy?zp?-Me@1);)Xn?B2Y2^S!B5 zYFXv-hGAr`U%!6g?AfzlfBf;sU(e3Y2FWe(_8+cXK7Vuh0}}xwN*b(_GEL$*@*DILRsv&%f~h_oK6G r20%fhYj}7%boD>{Z#_Kye^ve)ePHtKRWUcV00000NkvXXu0mjf98^9I literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/activity2.cpp b/source/bitmaps/misc/activity2.cpp new file mode 100644 index 0000000..a5abf10 --- /dev/null +++ b/source/bitmaps/misc/activity2.cpp @@ -0,0 +1,543 @@ +#include + +#ifndef MISC_ACTIVITY2_CPP +#define MISC_ACTIVITY2_CPP + +static unsigned char misc_activity2_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x26, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xfb, +0x6f, 0x5c, 0xc7, 0x75, 0xc7, 0x3f, 0x33, 0x73, +0xef, 0xdd, 0xf7, 0x92, 0xcb, 0xa7, 0x48, 0x8a, +0xd4, 0xcb, 0x91, 0x29, 0x3b, 0x12, 0xa5, 0x5a, +0x74, 0x12, 0x5b, 0xb6, 0xe5, 0x1a, 0xa8, 0x65, +0xa3, 0x48, 0x5c, 0x23, 0x69, 0xd0, 0xc0, 0xc8, +0x2f, 0x4d, 0x9d, 0x22, 0x3f, 0x35, 0x3f, 0xb5, +0x7f, 0x41, 0x7f, 0xc9, 0xcf, 0x41, 0x1a, 0x20, +0x68, 0x81, 0x44, 0x4e, 0x82, 0xc0, 0x48, 0x8d, +0x3a, 0xb6, 0x53, 0xd0, 0x81, 0x1d, 0xc5, 0x89, +0x12, 0x29, 0xb4, 0x2d, 0xc7, 0xa6, 0x1d, 0xd1, +0x22, 0x65, 0x91, 0xb4, 0xc8, 0x15, 0x29, 0x8a, +0x5c, 0x72, 0xb9, 0xf7, 0xdd, 0x1f, 0xee, 0xde, +0xe5, 0xdd, 0xd5, 0x2e, 0x77, 0x29, 0xd2, 0x49, +0x8b, 0x1e, 0xe0, 0x60, 0xf6, 0x31, 0xf7, 0x71, +0xbe, 0xe7, 0x31, 0x67, 0x66, 0xce, 0x08, 0xdf, +0xf7, 0xf9, 0x24, 0x49, 0x08, 0x21, 0x1a, 0xfd, +0x55, 0xe7, 0xb7, 0xdb, 0x5e, 0xc6, 0xff, 0x84, +0x5f, 0x50, 0xfb, 0x24, 0x6e, 0x5a, 0x23, 0xb4, +0x68, 0xd0, 0x36, 0x22, 0x3f, 0xda, 0xd6, 0xe2, +0xb7, 0xdb, 0x80, 0x88, 0xdd, 0xba, 0x5f, 0x1d, +0xa1, 0x45, 0xcd, 0x67, 0x59, 0xe7, 0xb7, 0x28, +0x45, 0x05, 0xdf, 0x8a, 0x83, 0x4e, 0xbb, 0xf4, +0xe2, 0x3b, 0xb6, 0x80, 0x06, 0x82, 0xcb, 0x48, +0x5b, 0x8f, 0x05, 0xd5, 0x20, 0x84, 0xc2, 0x78, +0xe5, 0xcf, 0x5e, 0x03, 0xae, 0x00, 0x11, 0x3e, +0x76, 0xa7, 0x40, 0xec, 0x08, 0x80, 0x88, 0xf0, +0xb5, 0x42, 0xab, 0x08, 0x6b, 0x65, 0x56, 0x35, +0x5c, 0x6b, 0x05, 0x51, 0x41, 0x1d, 0xc0, 0xad, +0xd3, 0xba, 0xd4, 0x80, 0xb1, 0x53, 0x20, 0xee, +0xc8, 0x05, 0x6a, 0x04, 0xaf, 0x15, 0x5a, 0x03, +0xf4, 0x08, 0x1b, 0x65, 0x0e, 0xbf, 0x87, 0x80, +0x44, 0x2d, 0x21, 0xd4, 0x7a, 0x28, 0xac, 0x5d, +0x66, 0xab, 0xa6, 0x0d, 0xb9, 0x1e, 0x18, 0x77, +0x04, 0xc2, 0xb6, 0x2d, 0x20, 0x22, 0x7c, 0x28, +0x40, 0x54, 0xcb, 0x06, 0x10, 0x2b, 0x73, 0xbc, +0xcc, 0x89, 0xc8, 0xf7, 0x10, 0x8c, 0xd0, 0x22, +0x42, 0x00, 0xa2, 0x9a, 0x0f, 0x05, 0x36, 0xcb, +0x5c, 0x02, 0x36, 0xca, 0x6d, 0xa9, 0xfc, 0x5b, +0x08, 0x48, 0x68, 0x19, 0x1e, 0x65, 0x6b, 0xd8, +0x2e, 0x08, 0xdb, 0x02, 0xa0, 0x2c, 0x7c, 0xc8, +0xa1, 0xc6, 0x43, 0x2d, 0x87, 0x02, 0x27, 0x81, +0x54, 0x84, 0x93, 0x40, 0xb2, 0xa7, 0xa7, 0x67, +0x60, 0x60, 0x60, 0x60, 0x38, 0x1e, 0x8f, 0x77, +0xc4, 0xe3, 0xf1, 0x76, 0xc3, 0x30, 0xb2, 0x86, +0x61, 0x64, 0xa5, 0x94, 0xba, 0x65, 0x59, 0x05, +0xcb, 0xb2, 0x56, 0x4d, 0xd3, 0xbc, 0x65, 0x9a, +0xe6, 0xf2, 0xad, 0x5b, 0xb7, 0x66, 0xaf, 0x5c, +0xb9, 0xf2, 0xbe, 0xe7, 0x79, 0xeb, 0x40, 0x11, +0x58, 0x8f, 0x70, 0x31, 0x02, 0x88, 0x59, 0x0b, +0xc4, 0x76, 0x5d, 0xa2, 0x65, 0x17, 0x88, 0x08, +0x1f, 0x9a, 0x7b, 0xa8, 0xf1, 0x50, 0xcb, 0x29, +0x20, 0x53, 0xe6, 0x2c, 0x90, 0x19, 0x1a, 0x1a, +0xba, 0x7b, 0x70, 0x70, 0xf0, 0x64, 0x57, 0x57, +0xd7, 0xbd, 0xc9, 0x64, 0xb2, 0xb7, 0xa5, 0x07, +0x95, 0xc9, 0x71, 0x9c, 0xe2, 0xf2, 0xf2, 0xf2, +0x1f, 0xe7, 0xe7, 0xe7, 0xdf, 0x9a, 0x9c, 0x9c, +0x7c, 0xdb, 0x34, 0xcd, 0x25, 0x60, 0x15, 0x28, +0x94, 0x79, 0x8d, 0x4d, 0x30, 0x42, 0x8b, 0x88, +0xba, 0x45, 0x4b, 0x20, 0xb4, 0x04, 0x40, 0x1d, +0xe1, 0x75, 0x02, 0xb3, 0x4e, 0x00, 0xe9, 0xb2, +0xd0, 0xed, 0x40, 0x1b, 0xd0, 0x71, 0xfc, 0xf8, +0xf1, 0x87, 0x0f, 0x1d, 0x3a, 0x74, 0x26, 0x1e, +0x8f, 0x77, 0x86, 0xf7, 0x50, 0xb6, 0x46, 0x2e, +0xdf, 0x41, 0x7c, 0x2d, 0x81, 0x51, 0x32, 0xd0, +0x4d, 0x03, 0xa3, 0x14, 0x43, 0xba, 0x12, 0x3b, +0x6e, 0x61, 0xc5, 0x2c, 0xac, 0xb8, 0x89, 0x95, +0x30, 0xb9, 0xd5, 0xb3, 0x4c, 0x29, 0xb5, 0x51, +0x79, 0xbe, 0xe7, 0x79, 0xf6, 0xf5, 0xeb, 0xd7, +0x7f, 0x3b, 0x3e, 0x3e, 0xfe, 0x62, 0xa1, 0x50, +0xf8, 0x18, 0x58, 0x06, 0x56, 0x22, 0x80, 0x14, +0xd9, 0x74, 0x0d, 0x67, 0x3b, 0x20, 0x34, 0x05, +0xa0, 0x46, 0xf8, 0x30, 0xc0, 0xc5, 0xd9, 0xd4, +0x78, 0x1b, 0xd0, 0x01, 0x74, 0x0c, 0x0f, 0x0f, +0x7f, 0xf6, 0xc8, 0x91, 0x23, 0x9f, 0x4f, 0xa5, +0x52, 0x7d, 0x00, 0x7a, 0xc9, 0x20, 0x37, 0xdf, +0x41, 0xee, 0xe3, 0x2e, 0xb2, 0x8b, 0x6d, 0x08, +0xaf, 0x59, 0x0e, 0xb4, 0x49, 0x1b, 0x99, 0x22, +0xcb, 0xfd, 0x4b, 0x2c, 0xf7, 0x2d, 0xb1, 0xde, +0xbe, 0x06, 0x80, 0xeb, 0xba, 0xe6, 0xcc, 0xcc, +0xcc, 0x6b, 0x17, 0x2f, 0x5e, 0x7c, 0xc9, 0x34, +0xcd, 0x05, 0xe0, 0x66, 0x19, 0x8c, 0x55, 0x02, +0xf7, 0xd8, 0x28, 0x03, 0xd1, 0x32, 0x08, 0x5b, +0x02, 0xd0, 0x40, 0xf8, 0xd0, 0xdc, 0xdb, 0x80, +0x1c, 0xd0, 0xd5, 0xd6, 0xd6, 0xb6, 0xff, 0x91, +0x47, 0x1e, 0xf9, 0x5a, 0x7b, 0x7b, 0xfb, 0xe1, +0x40, 0x70, 0x9d, 0xbe, 0xf7, 0xf7, 0xd2, 0x79, +0xad, 0x1b, 0xe1, 0xb7, 0x2e, 0x74, 0x23, 0x2a, +0xb6, 0xad, 0x33, 0xf7, 0xe9, 0x6b, 0x14, 0xba, +0x57, 0x01, 0xb0, 0x6d, 0xbb, 0x70, 0xe9, 0xd2, +0xa5, 0xb3, 0x13, 0x13, 0x13, 0xe7, 0x81, 0x45, +0x60, 0x89, 0xc0, 0x22, 0xa2, 0xd6, 0xd0, 0x12, +0x08, 0x0d, 0x01, 0xa8, 0x63, 0xf6, 0x06, 0x9b, +0x26, 0xdf, 0x0e, 0x74, 0x02, 0xdd, 0x43, 0x43, +0x43, 0x23, 0x9f, 0xfb, 0xdc, 0xe7, 0x9e, 0x8d, +0xc7, 0xe3, 0xed, 0xd2, 0x91, 0x74, 0x4f, 0xf6, +0xd1, 0xfd, 0x61, 0x2f, 0xd2, 0x95, 0x3b, 0x16, +0xbc, 0x96, 0x0a, 0xbd, 0x2b, 0x5c, 0xbf, 0x77, +0x96, 0x52, 0x76, 0x03, 0xc0, 0xbb, 0x7c, 0xf9, +0xf2, 0x4b, 0xe7, 0xcf, 0x9f, 0x7f, 0x01, 0xc8, +0x13, 0x00, 0xb1, 0xcc, 0xed, 0x20, 0xb8, 0x04, +0xf2, 0xb7, 0x0e, 0x40, 0xcd, 0x50, 0x57, 0x4f, +0xf8, 0x6e, 0xa0, 0x67, 0x64, 0x64, 0xe4, 0xb1, +0x91, 0x91, 0x91, 0xaf, 0x28, 0xa5, 0x8c, 0xc4, +0x72, 0x92, 0xc1, 0xdf, 0xed, 0x47, 0x2b, 0xe9, +0xbb, 0x27, 0x71, 0xdd, 0x37, 0x86, 0x1b, 0xc3, +0xf3, 0xdc, 0xb8, 0x7b, 0x01, 0x80, 0x85, 0x85, +0x85, 0xf1, 0xb1, 0xb1, 0xb1, 0xef, 0xd9, 0xb6, +0xfd, 0x31, 0x70, 0x83, 0xc0, 0x2d, 0x56, 0xb9, +0xdd, 0x12, 0xea, 0x82, 0xb0, 0x15, 0x00, 0xe1, +0x50, 0x17, 0x9a, 0x7d, 0x9a, 0xb2, 0xc9, 0x03, +0x7b, 0x1e, 0x7c, 0xf0, 0xc1, 0xa7, 0x0f, 0x1f, +0x3e, 0xfc, 0x94, 0x10, 0x42, 0x64, 0x67, 0xda, +0xe9, 0x7d, 0xab, 0x7f, 0x5b, 0x3e, 0xde, 0x88, +0x06, 0x1f, 0xdc, 0xcb, 0xc2, 0xa5, 0x3c, 0xd6, +0x9a, 0xb5, 0x65, 0xbf, 0x42, 0xff, 0x2a, 0xf3, +0xf7, 0xcd, 0xe1, 0x2b, 0x8f, 0xd5, 0xd5, 0xd5, +0xe9, 0x17, 0x5f, 0x7c, 0xf1, 0x5b, 0xa6, 0x69, +0xce, 0x12, 0x58, 0x43, 0x14, 0x84, 0x4a, 0x60, +0xac, 0x07, 0xc0, 0x6d, 0x76, 0x5a, 0xc7, 0xef, +0x43, 0xed, 0x67, 0x08, 0x00, 0xe8, 0x3e, 0x7a, +0xf4, 0xe8, 0xc3, 0x47, 0x8e, 0x1c, 0x79, 0x4a, +0x29, 0x25, 0xba, 0x27, 0x7a, 0xe9, 0x79, 0xab, +0x0f, 0x1f, 0x1f, 0x4f, 0x7a, 0x3b, 0xe6, 0xfd, +0x8f, 0x0e, 0x71, 0xf4, 0x99, 0x7b, 0x9a, 0xf6, +0x4b, 0xcd, 0xa7, 0x19, 0x7c, 0x63, 0x3f, 0x86, +0x69, 0xd0, 0xde, 0xde, 0x7e, 0xe0, 0xf1, 0xc7, +0x1f, 0xff, 0x3a, 0xd0, 0x43, 0x10, 0x90, 0xb3, +0x04, 0xf9, 0x47, 0x8c, 0xcd, 0xa4, 0x4b, 0xd6, +0x9b, 0x9a, 0x57, 0x01, 0x50, 0x93, 0xe2, 0x86, +0x63, 0x7d, 0x18, 0xf1, 0xdb, 0x80, 0xce, 0xc1, +0xc1, 0xc1, 0x7b, 0x47, 0x47, 0x47, 0xbf, 0x2a, +0x84, 0x10, 0xb9, 0x0f, 0x3a, 0x49, 0x5f, 0x69, +0xc3, 0x15, 0xee, 0xae, 0xb0, 0xa7, 0x3c, 0xfa, +0x47, 0xfb, 0xb9, 0xf7, 0x4b, 0xf7, 0x90, 0x1e, +0x4c, 0x35, 0xed, 0xaf, 0x56, 0x35, 0x7a, 0xce, +0xf7, 0x23, 0x5d, 0x45, 0x6f, 0x6f, 0xef, 0xc8, +0xe9, 0xd3, 0xa7, 0xbf, 0x48, 0xe0, 0x9e, 0xb9, +0xb2, 0xc2, 0x12, 0x65, 0x05, 0x56, 0xb2, 0xce, +0x5a, 0x10, 0xea, 0x45, 0xaa, 0x7a, 0x81, 0x2f, +0x03, 0xe4, 0xb2, 0xd9, 0xec, 0xe0, 0xa3, 0x8f, +0x3e, 0xfa, 0x8f, 0xba, 0xae, 0xc7, 0x52, 0xd7, +0xd3, 0xa4, 0x27, 0xdb, 0x76, 0x45, 0xeb, 0x21, +0x77, 0x0e, 0x77, 0x90, 0xec, 0x4a, 0x60, 0x64, +0x0c, 0x1e, 0xf8, 0xa7, 0xcf, 0xb6, 0x74, 0x8d, +0x5a, 0xd7, 0xe8, 0x7c, 0xb3, 0x07, 0x29, 0x24, +0x87, 0x0f, 0x1f, 0x7e, 0xfc, 0xc4, 0x89, 0x13, +0x0f, 0x37, 0xb0, 0x82, 0xe8, 0x74, 0xbc, 0x42, +0xf5, 0x52, 0xe1, 0xa8, 0xf9, 0xc7, 0xca, 0xda, +0xcf, 0x02, 0x1d, 0x8f, 0x3d, 0xf6, 0xd8, 0x57, +0x93, 0xc9, 0x64, 0xa7, 0xb6, 0xa2, 0x93, 0x79, +0x3b, 0x87, 0x2b, 0xdd, 0x3a, 0x97, 0xd7, 0x27, +0xa9, 0x04, 0x1d, 0xfb, 0x3b, 0xe8, 0x3c, 0xd8, +0x41, 0xaa, 0x2b, 0x45, 0xba, 0x27, 0x4d, 0xaa, +0x2b, 0x85, 0xbd, 0x61, 0x53, 0xba, 0xb5, 0xc1, +0xfa, 0x52, 0x91, 0xce, 0x43, 0x9d, 0x68, 0x71, +0x85, 0x32, 0x34, 0x3e, 0xf5, 0x57, 0x77, 0xd1, +0xff, 0x7c, 0x1f, 0x33, 0xbf, 0x9f, 0x6d, 0x7a, +0x6f, 0x3d, 0x6f, 0x90, 0xf9, 0xa0, 0x8d, 0xb5, +0x7b, 0x56, 0xc5, 0xc9, 0xfb, 0x4e, 0x3e, 0x33, +0x35, 0x35, 0xf5, 0xc1, 0xca, 0xca, 0x4a, 0x91, +0xea, 0xb9, 0x43, 0x18, 0x0c, 0x45, 0x74, 0xce, +0x50, 0x01, 0xa0, 0xd9, 0xb0, 0x77, 0xe8, 0xd0, +0xa1, 0x4f, 0xf7, 0xf6, 0xf6, 0x8e, 0x08, 0x5f, +0x90, 0xf9, 0x7d, 0x3b, 0xbe, 0xe7, 0xd1, 0xca, +0x10, 0x2f, 0x95, 0xa0, 0xfb, 0x53, 0xdd, 0xf4, +0x0e, 0xf7, 0x90, 0xec, 0x48, 0x12, 0x4b, 0xc7, +0xca, 0x6c, 0x60, 0xa4, 0x62, 0xb4, 0x0d, 0x64, +0x88, 0xa5, 0x63, 0x18, 0x69, 0x03, 0x23, 0x69, +0xa0, 0x74, 0x85, 0x1e, 0xd7, 0x90, 0x9a, 0xe4, +0xb1, 0x7f, 0x39, 0xcd, 0x7f, 0x7c, 0xf9, 0xfb, +0xf8, 0x5e, 0xf3, 0x6c, 0x35, 0xfe, 0x61, 0x12, +0xab, 0xd7, 0xc4, 0xee, 0xb2, 0x62, 0xa7, 0x4e, +0x9d, 0x7a, 0xea, 0xa5, 0x97, 0x5e, 0xfa, 0x2e, +0x9b, 0x73, 0x87, 0x70, 0xce, 0xe0, 0x52, 0xb3, +0xb0, 0x52, 0xeb, 0x02, 0xf5, 0x82, 0x5f, 0x1a, +0x68, 0x1f, 0x1d, 0x1d, 0xfd, 0x1b, 0xa5, 0x94, +0x88, 0x5f, 0x4b, 0xc2, 0x86, 0xc0, 0x95, 0x5e, +0x53, 0x16, 0x09, 0x49, 0xdf, 0x7d, 0xfd, 0x74, +0xdc, 0xd5, 0x81, 0x88, 0x29, 0x3c, 0xe1, 0xe3, +0x0b, 0x1f, 0xaf, 0xcc, 0x48, 0x1f, 0x5f, 0x12, +0x00, 0x29, 0x02, 0xb0, 0x84, 0x26, 0x51, 0x86, +0x42, 0x4f, 0xe8, 0xf4, 0x1d, 0xdd, 0xc3, 0x3d, +0x9f, 0xbf, 0xa7, 0xa5, 0x67, 0xb9, 0xd2, 0x23, +0xfe, 0x7e, 0x0a, 0x29, 0x25, 0x43, 0x43, 0x43, +0x9f, 0xed, 0xef, 0xef, 0x3f, 0x48, 0x60, 0xb9, +0x29, 0x02, 0x4b, 0xd6, 0xa9, 0x13, 0x0b, 0x64, +0x8d, 0xf6, 0x6b, 0xcd, 0x3f, 0x09, 0x64, 0x8f, +0x1d, 0x3b, 0x76, 0x5f, 0x57, 0x57, 0xd7, 0x5d, +0xd2, 0x91, 0xe8, 0x97, 0x63, 0x78, 0xc2, 0x6d, +0xca, 0x2a, 0x29, 0xe9, 0x39, 0xd2, 0x85, 0x9e, +0xd4, 0xf0, 0x84, 0x87, 0x5f, 0x66, 0xc7, 0x75, +0x58, 0xba, 0xb6, 0xc4, 0xc7, 0x13, 0x1f, 0x33, +0x75, 0x61, 0x9a, 0xf9, 0x3f, 0xce, 0xb3, 0xb1, +0x1a, 0xe4, 0xfd, 0x7e, 0x64, 0x4d, 0x34, 0x8c, +0x55, 0x0f, 0x7f, 0xe3, 0x41, 0x54, 0x52, 0xb6, +0xf4, 0x4c, 0xb1, 0x22, 0xd0, 0xe7, 0x0c, 0x94, +0x52, 0xea, 0x81, 0x07, 0x1e, 0x78, 0x2a, 0x02, +0x40, 0x22, 0x02, 0x40, 0x95, 0xd2, 0x6b, 0x63, +0x40, 0x74, 0xb2, 0x53, 0xc9, 0xf7, 0x47, 0x46, +0x46, 0x9e, 0x90, 0x52, 0xa2, 0xae, 0x18, 0x78, +0x4e, 0xa0, 0xb9, 0xad, 0x48, 0x2a, 0x49, 0xa6, +0x3f, 0x83, 0xaf, 0x08, 0x82, 0x15, 0x1e, 0xa6, +0x69, 0x72, 0xed, 0xdd, 0x19, 0x16, 0xa7, 0x97, +0x70, 0x2c, 0xe7, 0xb6, 0x6b, 0x1e, 0xf9, 0x87, +0x53, 0x8c, 0xfe, 0xed, 0x49, 0x3c, 0xd7, 0xc5, +0xb1, 0x1c, 0x7c, 0xdf, 0xc7, 0xb5, 0x5d, 0x66, +0xde, 0x99, 0x45, 0x26, 0x24, 0xae, 0xe9, 0x6d, +0xf9, 0xcc, 0x90, 0xd4, 0x07, 0x31, 0xbc, 0x01, +0x97, 0xbe, 0xbe, 0xbe, 0x91, 0x81, 0x81, 0x81, +0xfd, 0x73, 0x73, 0x73, 0xe1, 0xc4, 0xc9, 0x60, +0x33, 0x31, 0x0a, 0x17, 0x61, 0xaa, 0x00, 0x88, +0x26, 0x3f, 0xe1, 0xc2, 0x46, 0x32, 0x97, 0xcb, +0xf5, 0x76, 0x74, 0x74, 0xec, 0xc7, 0x03, 0xf1, +0x51, 0xa0, 0x89, 0x66, 0x94, 0xcc, 0x25, 0x40, +0xf3, 0xf1, 0x70, 0x71, 0x7d, 0x97, 0xc2, 0xcd, +0x02, 0x33, 0x7f, 0x98, 0xc5, 0x2e, 0xd9, 0x9b, +0x4f, 0xaa, 0xa1, 0xde, 0xe1, 0x5e, 0x5c, 0x27, +0x10, 0x5e, 0x48, 0x41, 0x7e, 0xea, 0x06, 0x2f, +0x7f, 0xeb, 0xe7, 0x4c, 0x5d, 0x98, 0x6e, 0x78, +0x4d, 0x5d, 0x2a, 0x81, 0xcc, 0x2b, 0xfc, 0x7e, +0x4f, 0x1c, 0x39, 0x72, 0xe4, 0xfe, 0xb9, 0xb9, +0xb9, 0xcb, 0x54, 0x0f, 0x87, 0x95, 0x95, 0x28, +0x21, 0xc4, 0x6d, 0x00, 0xd4, 0x5a, 0x40, 0xf2, +0xd8, 0xb1, 0x63, 0x27, 0xa5, 0x94, 0xc2, 0x5f, +0x14, 0xb8, 0xae, 0x5b, 0x7f, 0xe0, 0x8c, 0x90, +0xd2, 0x15, 0x18, 0x3e, 0x0e, 0x0e, 0x0a, 0x0d, +0x2c, 0x93, 0x6b, 0x97, 0x66, 0x70, 0x9d, 0xc6, +0xd7, 0x26, 0xb2, 0x09, 0xda, 0x07, 0xda, 0x70, +0x2c, 0x1b, 0xdb, 0xb4, 0x39, 0xff, 0x93, 0xdf, +0x71, 0xe1, 0xf9, 0x8b, 0x78, 0xae, 0xd7, 0xf4, +0x79, 0xf5, 0x48, 0x2c, 0x08, 0xe4, 0x5e, 0xc9, +0xe0, 0xe0, 0xe0, 0x51, 0x36, 0x5d, 0x20, 0x5c, +0x89, 0xaa, 0x1a, 0x0e, 0xb5, 0x06, 0xfe, 0x1f, +0x02, 0x90, 0x18, 0x1c, 0x1c, 0x3c, 0x2a, 0x84, +0xc0, 0x9b, 0x2f, 0x07, 0xae, 0x26, 0xa4, 0xe9, +0x1a, 0xae, 0xef, 0xe2, 0xfa, 0x1e, 0x9e, 0xef, +0x32, 0x3f, 0xbd, 0x88, 0xed, 0xda, 0x5b, 0x6a, +0x70, 0xcf, 0x70, 0x2f, 0x8e, 0xed, 0x70, 0xf9, +0xfc, 0x24, 0x6f, 0xfc, 0xf0, 0x37, 0xac, 0x2f, +0xaf, 0x97, 0x25, 0xd9, 0xbe, 0xf0, 0x00, 0x2c, +0x80, 0xee, 0x0b, 0x72, 0xb9, 0xdc, 0x50, 0x2e, +0x97, 0xeb, 0x5a, 0x5e, 0x5e, 0x5e, 0xa0, 0x1a, +0x00, 0x49, 0x79, 0x7e, 0xb0, 0x95, 0x05, 0x18, +0x89, 0x44, 0x22, 0xdb, 0xd3, 0xdd, 0x73, 0x48, +0x4a, 0x89, 0x99, 0xb7, 0xf1, 0x9b, 0xf8, 0x3e, +0x80, 0x83, 0x83, 0xed, 0x2b, 0x94, 0x6f, 0x53, +0x58, 0xb5, 0x58, 0x5d, 0x59, 0x6d, 0xaa, 0x45, +0x3d, 0xa5, 0xf3, 0xfc, 0xbf, 0xfe, 0x94, 0xf9, +0x2b, 0xc1, 0x04, 0xe7, 0x4e, 0xb4, 0x5e, 0x45, +0x1e, 0x68, 0x37, 0x35, 0x54, 0x8f, 0x14, 0xc7, +0x8f, 0x1f, 0xff, 0x8b, 0xd7, 0x5e, 0x7b, 0xed, +0x43, 0x1a, 0x59, 0x40, 0xb9, 0xad, 0x5d, 0xeb, +0xd3, 0x00, 0xe3, 0xc0, 0x81, 0x03, 0x43, 0x4a, +0x53, 0xba, 0x57, 0xf0, 0x70, 0x4d, 0xb7, 0x25, +0x8d, 0x38, 0x9e, 0x83, 0xe6, 0x29, 0x6c, 0x57, +0xb1, 0x92, 0x5f, 0xc1, 0x13, 0xcd, 0x83, 0xd7, +0x1f, 0x7e, 0xf5, 0xee, 0xe6, 0x5b, 0xec, 0x12, +0xb9, 0x8b, 0x1e, 0x5a, 0xaf, 0xa2, 0xbb, 0xbb, +0x7b, 0x1f, 0x9b, 0xc3, 0x60, 0xed, 0x62, 0x6c, +0xdd, 0x51, 0xa0, 0xe2, 0x06, 0xed, 0xed, 0xed, +0x5d, 0x52, 0x06, 0x11, 0xd8, 0x6b, 0x31, 0xeb, +0xf3, 0xf1, 0xb0, 0x7d, 0x89, 0x5b, 0x74, 0x70, +0x7c, 0x7b, 0xe7, 0xda, 0xbc, 0x43, 0xf2, 0x4c, +0x89, 0x94, 0x92, 0x64, 0x32, 0xd9, 0x46, 0x03, +0xe1, 0x01, 0x51, 0x6f, 0x14, 0xa8, 0x2c, 0x7a, +0x66, 0x32, 0x99, 0x9c, 0x10, 0x02, 0xaf, 0xe4, +0xe1, 0xb6, 0x10, 0xfd, 0x01, 0xf0, 0x41, 0x79, +0x0a, 0xd7, 0x71, 0x5b, 0xbf, 0xe6, 0x13, 0x20, +0xc7, 0x14, 0x08, 0x21, 0x48, 0x24, 0x12, 0x59, +0x22, 0x33, 0x42, 0xaa, 0xf7, 0x23, 0xaa, 0x5c, +0x20, 0x6c, 0xc3, 0x4e, 0x2a, 0x9d, 0x4e, 0xb7, +0x49, 0x29, 0xf1, 0xac, 0x60, 0xe2, 0xd1, 0x2a, +0x59, 0xae, 0xd5, 0xd2, 0x88, 0xf1, 0x49, 0x92, +0x63, 0xba, 0x48, 0x29, 0x43, 0x00, 0xaa, 0x86, +0xbf, 0x68, 0x3f, 0x8d, 0x6a, 0xe1, 0xab, 0x38, +0x9d, 0x4e, 0xb7, 0x09, 0x21, 0xb0, 0x4b, 0xce, +0xb6, 0xb4, 0xe9, 0x79, 0x1e, 0x7e, 0x0b, 0x23, +0xc6, 0x27, 0x49, 0x9e, 0xe9, 0x21, 0x84, 0x20, +0x1e, 0x8f, 0xa7, 0xa8, 0xd6, 0x7c, 0x15, 0x6d, +0xb9, 0x31, 0x22, 0x84, 0x40, 0xca, 0xc0, 0x97, +0x84, 0xdc, 0x5e, 0x84, 0x6a, 0x5c, 0x16, 0x70, +0x67, 0x54, 0x9e, 0xc1, 0xb5, 0xde, 0x5f, 0x06, +0xef, 0xde, 0xec, 0x1a, 0x8d, 0x2d, 0xb6, 0xa5, +0x8b, 0xc5, 0xe2, 0x8a, 0x10, 0x02, 0x3d, 0xa5, +0x21, 0xd5, 0x9f, 0xd1, 0x9e, 0x29, 0xe7, 0x17, +0x8e, 0xdb, 0x32, 0x08, 0x5a, 0x52, 0x21, 0x84, +0xc0, 0x34, 0xcd, 0x75, 0x6a, 0xf6, 0x10, 0xab, +0xfa, 0x95, 0xdb, 0x28, 0x08, 0x61, 0x67, 0xb7, +0x02, 0x40, 0x42, 0x47, 0x49, 0xb5, 0x63, 0x21, +0x76, 0x42, 0xf1, 0x78, 0x0c, 0xcb, 0xb4, 0x83, +0x8c, 0xb2, 0x05, 0xd2, 0x93, 0x46, 0x08, 0xc0, +0x2a, 0x91, 0xfd, 0x43, 0x6a, 0x40, 0x88, 0xba, +0x40, 0xf8, 0x67, 0x65, 0x97, 0xb6, 0x50, 0x28, +0xdc, 0x94, 0x52, 0xa2, 0xa7, 0xfe, 0xbc, 0x00, +0x68, 0xba, 0x46, 0x2c, 0x1e, 0xc3, 0x0f, 0xc5, +0x68, 0x81, 0x8c, 0xa4, 0x8e, 0x94, 0x12, 0xcb, +0xb2, 0x56, 0xa9, 0xde, 0x44, 0xad, 0x02, 0xa2, +0x36, 0x06, 0x54, 0xed, 0xd2, 0x2e, 0x2f, 0x2f, +0x2f, 0x09, 0x21, 0xd0, 0x92, 0x1a, 0x4a, 0xed, +0x3e, 0x00, 0xad, 0xfa, 0x75, 0xb6, 0x23, 0x83, +0xef, 0x83, 0x6e, 0x78, 0xc1, 0xfc, 0xa0, 0x05, +0xd2, 0x53, 0x3a, 0x42, 0x08, 0x8a, 0xc5, 0xe2, +0x0a, 0x9b, 0x2b, 0x42, 0xb5, 0x0b, 0x22, 0x7e, +0xd4, 0x05, 0x42, 0x0e, 0xf7, 0xe8, 0xad, 0xa9, +0xa9, 0xa9, 0x6b, 0xbe, 0xef, 0xdb, 0x46, 0x56, +0xd7, 0xb5, 0xa4, 0x86, 0x57, 0x6a, 0x7d, 0x28, +0xdc, 0x52, 0xa0, 0xce, 0x2c, 0x9f, 0x79, 0x62, +0x94, 0x5f, 0x3e, 0xff, 0x2b, 0xac, 0xd2, 0xd6, +0xcb, 0xdf, 0x89, 0x74, 0x82, 0x64, 0x26, 0x85, +0x59, 0x2c, 0xe1, 0xea, 0x0a, 0xc7, 0x56, 0xad, +0xad, 0x10, 0xf5, 0xc4, 0x90, 0x52, 0x72, 0xe3, +0xc6, 0x8d, 0x8f, 0xb8, 0x7d, 0x3b, 0xbd, 0xae, +0x05, 0x44, 0xcd, 0xdf, 0x06, 0xac, 0xb5, 0xb5, +0xb5, 0xd5, 0x1b, 0x37, 0x6e, 0x5c, 0xe9, 0xeb, +0xeb, 0x1b, 0x4e, 0xf6, 0x25, 0xd8, 0xb8, 0x56, +0xba, 0x03, 0x71, 0x37, 0x49, 0xd3, 0x35, 0x46, +0xcf, 0x9c, 0x64, 0xe4, 0x91, 0x63, 0xcc, 0x4f, +0xcf, 0xe3, 0xda, 0xee, 0x96, 0x96, 0x25, 0xa5, +0xa4, 0x67, 0x6f, 0x37, 0x8e, 0xe3, 0xe2, 0xea, +0x7a, 0xb9, 0xbf, 0xd3, 0x74, 0x88, 0x15, 0x9a, +0x20, 0xde, 0x15, 0xc3, 0xc7, 0xf7, 0x2e, 0x5c, +0xb8, 0x30, 0x4e, 0xb0, 0x36, 0x18, 0x5d, 0x17, +0xac, 0xdc, 0x40, 0xf3, 0x7d, 0x3f, 0x2c, 0x33, +0x09, 0x01, 0x08, 0x8b, 0x14, 0x4a, 0xc0, 0xc6, +0xf4, 0xf4, 0xf4, 0x3b, 0x03, 0x03, 0x03, 0xc3, +0x89, 0x3d, 0x71, 0xac, 0x59, 0xfb, 0x8e, 0x85, +0xbf, 0x7b, 0xf4, 0x30, 0x7f, 0xf9, 0x77, 0xa7, +0x49, 0x64, 0x93, 0xd8, 0x25, 0x9b, 0xf9, 0xe9, +0x85, 0xa6, 0x71, 0xa5, 0x77, 0x5f, 0x0f, 0xf1, +0x44, 0x9c, 0x52, 0xb1, 0x84, 0xab, 0x14, 0xb6, +0x50, 0x48, 0x64, 0xd3, 0x04, 0x2b, 0xd6, 0x6b, +0x20, 0x95, 0x64, 0x71, 0x71, 0x71, 0x66, 0x71, +0x71, 0x71, 0xb1, 0x0e, 0x00, 0x15, 0x10, 0x1a, +0x59, 0x80, 0x55, 0xbe, 0xa8, 0x78, 0xf1, 0xe2, +0xc5, 0xdf, 0x9f, 0x3a, 0x75, 0xea, 0x8b, 0xb1, +0x2e, 0x43, 0x6a, 0x86, 0xc2, 0x77, 0xb6, 0x97, +0xe0, 0x74, 0xf4, 0x75, 0xf0, 0xc4, 0xd7, 0xce, +0x70, 0xe0, 0xd8, 0x01, 0x5c, 0xc7, 0xc1, 0x2e, +0xd9, 0x78, 0xae, 0xc7, 0xf5, 0x0f, 0xaf, 0xa3, +0x64, 0x7d, 0x49, 0x84, 0x10, 0xf4, 0x1d, 0xea, +0x23, 0xdb, 0x99, 0xa1, 0x54, 0x34, 0x51, 0x4a, +0xa1, 0x94, 0xc2, 0xb5, 0x9c, 0x86, 0xd7, 0x44, +0x29, 0xb1, 0x27, 0x86, 0x10, 0x82, 0xab, 0x57, +0xaf, 0xbe, 0x43, 0xb0, 0x28, 0xda, 0xd8, 0x02, +0x6a, 0x00, 0x08, 0x63, 0x80, 0x4d, 0xb0, 0x7c, +0x54, 0xcc, 0xe7, 0xf3, 0xf9, 0x9b, 0x37, 0x6f, +0x5e, 0xed, 0xee, 0xee, 0x3e, 0x98, 0xda, 0x9f, +0x64, 0x63, 0xba, 0x75, 0x37, 0xf8, 0xcc, 0x5f, +0xdf, 0xcf, 0xa3, 0x5f, 0x39, 0x4d, 0x2c, 0x19, +0x03, 0xc0, 0x36, 0xc1, 0x73, 0x3d, 0xa4, 0x25, +0xb0, 0x4d, 0x1b, 0x4d, 0xd3, 0xaa, 0x82, 0xa0, +0xd2, 0x14, 0x9d, 0x03, 0x9d, 0x74, 0xed, 0xed, +0x42, 0x37, 0x34, 0xcc, 0xa2, 0x89, 0xa6, 0x14, +0x8e, 0x52, 0x94, 0xd6, 0x4a, 0xc1, 0x3c, 0xa3, +0x49, 0x30, 0x96, 0x09, 0x49, 0x6c, 0x4f, 0x0c, +0x04, 0xfe, 0x9b, 0x6f, 0xbe, 0x79, 0x81, 0xa0, +0x90, 0x22, 0x2c, 0xa2, 0xa8, 0x1a, 0x0e, 0x7d, +0xdf, 0xf7, 0xeb, 0x8d, 0x02, 0x21, 0x00, 0x25, +0x82, 0x65, 0xe5, 0xc2, 0xf9, 0xf3, 0xe7, 0x7f, +0xfe, 0x85, 0x2f, 0x7c, 0xe1, 0x1b, 0x89, 0x83, +0x71, 0xac, 0xeb, 0x0e, 0xbe, 0xd5, 0x9a, 0x15, +0xd8, 0xa6, 0x83, 0x66, 0x68, 0x68, 0xba, 0x06, +0x02, 0x3c, 0xc7, 0x43, 0x4a, 0x89, 0xd2, 0x34, +0xbe, 0xfc, 0xcf, 0x5f, 0xa2, 0x58, 0xd8, 0x60, +0x71, 0x76, 0x11, 0x73, 0xc3, 0x02, 0xdf, 0x07, +0x21, 0x70, 0x4c, 0x9b, 0x52, 0xd1, 0xc4, 0xdc, +0x30, 0x91, 0x52, 0x21, 0x95, 0xa2, 0xb8, 0xb2, +0x81, 0x5d, 0x72, 0x90, 0x2d, 0x0c, 0xc5, 0xa9, +0xc3, 0x09, 0xa4, 0x92, 0x5c, 0xbd, 0x7a, 0xf5, +0xd2, 0xf4, 0xf4, 0xf4, 0x47, 0x6c, 0xd6, 0x0d, +0xd4, 0xb5, 0x00, 0x09, 0x95, 0xbd, 0xf3, 0x68, +0x1e, 0xe0, 0x50, 0xb6, 0x00, 0x60, 0xf5, 0x8d, +0x37, 0xde, 0x18, 0xcf, 0xe7, 0xf3, 0x1f, 0x2a, +0x43, 0x91, 0xba, 0x2b, 0x51, 0x31, 0xc9, 0x66, +0xfc, 0xde, 0xb9, 0xf7, 0x58, 0x9c, 0x5d, 0xc2, +0xf7, 0x7d, 0x7c, 0x9f, 0x72, 0x26, 0x2e, 0xca, +0x8d, 0x40, 0xd3, 0x35, 0x72, 0x7b, 0x72, 0x74, +0xf4, 0xe6, 0x48, 0x66, 0x53, 0x68, 0x9a, 0x42, +0x48, 0x89, 0x52, 0x41, 0xfa, 0x8d, 0x0f, 0x4b, +0xb3, 0x4b, 0x14, 0x57, 0x8a, 0x2d, 0x3d, 0xcf, +0xc8, 0x19, 0xc4, 0xfb, 0x63, 0x00, 0xee, 0x2b, +0xaf, 0xbc, 0xf2, 0x02, 0xc1, 0x06, 0xe9, 0x5a, +0x59, 0x99, 0xd1, 0x12, 0x1a, 0xaa, 0x00, 0x88, +0x50, 0x14, 0x00, 0xab, 0x8c, 0xdc, 0x1a, 0x70, +0x6b, 0x6c, 0x6c, 0xec, 0x3f, 0x01, 0x3f, 0x3e, +0x18, 0x43, 0x4f, 0x07, 0x89, 0x51, 0x33, 0x16, +0x48, 0x5e, 0x7f, 0xee, 0x1c, 0x8e, 0xe5, 0xe0, +0x94, 0xb3, 0x38, 0xdf, 0xf3, 0xf0, 0x3d, 0x3f, +0x32, 0x03, 0x0b, 0x3e, 0x49, 0x21, 0x10, 0x42, +0x22, 0x10, 0xf8, 0x2e, 0xac, 0x2c, 0xac, 0x32, +0xfb, 0xfe, 0x1c, 0xa5, 0x82, 0xd9, 0xd2, 0xb3, +0x94, 0x54, 0x24, 0x0f, 0xc7, 0x11, 0x42, 0x30, +0x39, 0x39, 0xf9, 0xdb, 0xa9, 0xa9, 0xa9, 0x29, +0xaa, 0xb7, 0xc9, 0xab, 0x36, 0x46, 0x6e, 0xdb, +0x19, 0x8a, 0x8c, 0x06, 0xd1, 0x40, 0x58, 0x01, +0xe0, 0xed, 0xb7, 0xdf, 0x7e, 0xf7, 0xf4, 0xe9, +0xd3, 0x97, 0xf6, 0xef, 0xdf, 0x7f, 0x3c, 0x7d, +0x2c, 0x41, 0xf1, 0xcd, 0x8d, 0x20, 0x33, 0x6b, +0x42, 0x33, 0xef, 0x5d, 0xe3, 0xc3, 0xf1, 0x2b, +0xec, 0x3b, 0xba, 0x0f, 0xcf, 0x71, 0x59, 0xbf, +0xb5, 0xce, 0xd8, 0xbf, 0xff, 0x82, 0x4c, 0x67, +0x9a, 0x54, 0x5b, 0x8a, 0x44, 0x36, 0x81, 0xe7, +0x78, 0xac, 0xdd, 0x5a, 0xa3, 0x78, 0xab, 0x48, +0x61, 0x79, 0x8d, 0xa5, 0xd9, 0xa5, 0x4a, 0xca, +0xab, 0x5a, 0x9c, 0x83, 0x18, 0xfb, 0x74, 0x8c, +0x4e, 0x1d, 0xcb, 0xb2, 0x4a, 0x2f, 0xbc, 0xf0, +0xc2, 0x0b, 0xd4, 0x2f, 0x96, 0xb8, 0x6d, 0x3e, +0x50, 0x6f, 0x36, 0x58, 0xeb, 0x06, 0xeb, 0x04, +0x48, 0xde, 0x3c, 0x7b, 0xf6, 0xec, 0xf7, 0xbf, +0xf9, 0xcd, 0x6f, 0x0e, 0xa6, 0xb3, 0xe9, 0xce, +0xc4, 0x3d, 0x09, 0x4a, 0xef, 0x6d, 0x9d, 0xc4, +0x84, 0xf4, 0xc6, 0x4f, 0x7e, 0x43, 0xdf, 0x5d, +0x7d, 0xe0, 0xfb, 0xcc, 0xbc, 0x3f, 0xc7, 0xfc, +0x95, 0x85, 0xcd, 0xf5, 0xbf, 0x06, 0xd4, 0x8a, +0xbf, 0x57, 0x84, 0xe8, 0x54, 0xc4, 0x0f, 0x19, +0xf8, 0xf8, 0xfe, 0xd8, 0xd8, 0xd8, 0x73, 0xf9, +0x7c, 0xfe, 0x1a, 0x70, 0x8b, 0x00, 0x80, 0x0d, +0x1a, 0x68, 0x1f, 0xea, 0x8f, 0xa8, 0xb5, 0xc3, +0xe1, 0x46, 0xf9, 0x46, 0xcb, 0x8b, 0x8b, 0x8b, +0x33, 0xcf, 0x3d, 0xf7, 0xdc, 0xbf, 0xb9, 0xae, +0x6b, 0x1a, 0x7b, 0x74, 0xe2, 0x07, 0x62, 0x2d, +0x99, 0xe6, 0xea, 0xc2, 0x2a, 0x13, 0xe7, 0x26, +0x70, 0x2c, 0x87, 0x8f, 0x2f, 0x5f, 0x6f, 0xd9, +0xa4, 0x5b, 0x61, 0x3d, 0xad, 0x91, 0xf8, 0x74, +0x0c, 0xa9, 0x24, 0xe3, 0xe3, 0xe3, 0xff, 0x3d, +0x36, 0x36, 0x76, 0x8e, 0x2d, 0xaa, 0x44, 0x6e, +0x03, 0xba, 0x4a, 0xf2, 0x4d, 0x64, 0xa2, 0x29, +0x71, 0x38, 0x1a, 0xac, 0x00, 0x4b, 0x13, 0x13, +0x13, 0xef, 0xbd, 0xfc, 0xf2, 0xcb, 0xdf, 0x07, +0xfc, 0xd8, 0x21, 0x9d, 0xd8, 0x3e, 0xa3, 0xa5, +0x00, 0x75, 0x69, 0xec, 0x0f, 0x6c, 0x14, 0x4a, +0xe4, 0xa7, 0xf2, 0x2d, 0x07, 0xd1, 0x66, 0xac, +0xb7, 0x69, 0x24, 0x4e, 0xc4, 0x90, 0x7a, 0x10, +0xf5, 0x7f, 0xf0, 0x83, 0x1f, 0x3c, 0x4f, 0x50, +0x26, 0x13, 0x9a, 0xff, 0x96, 0xda, 0x87, 0x3a, +0x2e, 0x50, 0x13, 0x0b, 0xc2, 0x6d, 0xa4, 0x0d, +0x36, 0x57, 0x8b, 0xd5, 0xab, 0xaf, 0xbe, 0x7a, +0xae, 0xbb, 0xbb, 0xbb, 0xeb, 0xd4, 0xa9, 0x53, +0x4f, 0x19, 0x77, 0x69, 0x42, 0x65, 0x24, 0xce, +0xa4, 0xbb, 0xe5, 0x4c, 0xcd, 0xd9, 0xb0, 0xb9, +0xf0, 0xd3, 0x0b, 0x98, 0x85, 0x52, 0x4b, 0xc9, +0x4c, 0x33, 0x92, 0x5d, 0x12, 0xed, 0x6e, 0x89, +0x50, 0x82, 0x7c, 0x3e, 0x3f, 0xfd, 0x9d, 0xef, +0x7c, 0xe7, 0xbb, 0xdc, 0x5e, 0x1e, 0x13, 0x2d, +0x94, 0xaa, 0x5b, 0x22, 0xb3, 0xa3, 0x22, 0xa9, +0x27, 0x9f, 0x7c, 0xf2, 0xb1, 0x33, 0x67, 0xce, +0x7c, 0x45, 0xd7, 0x75, 0xc3, 0x2f, 0xf8, 0x38, +0x13, 0x2e, 0x7e, 0x6b, 0x61, 0x61, 0x47, 0xa4, +0xf6, 0x49, 0xd4, 0x50, 0x00, 0xe2, 0xe4, 0xe4, +0xe4, 0xf8, 0xb7, 0xbf, 0xfd, 0xed, 0xef, 0x99, +0xa6, 0xb9, 0x7b, 0x45, 0x52, 0xd0, 0x7a, 0x99, +0xdc, 0x89, 0x13, 0x27, 0x8e, 0x3d, 0xf3, 0xcc, +0x33, 0x5f, 0x4f, 0xa5, 0x52, 0xed, 0xb8, 0xe0, +0xcd, 0xfa, 0x78, 0x73, 0x7e, 0xcb, 0xf3, 0xf6, +0xed, 0x90, 0xc8, 0x09, 0xe4, 0x7e, 0x81, 0x48, +0x81, 0xef, 0xfb, 0xde, 0xaf, 0x7f, 0xfd, 0xeb, +0x97, 0xce, 0x9e, 0x3d, 0xbb, 0xfb, 0x65, 0x72, +0x95, 0x3f, 0x5b, 0x2c, 0x94, 0xdc, 0xb3, 0x67, +0xcf, 0xbe, 0x67, 0x9f, 0x7d, 0xf6, 0xef, 0xf7, +0xee, 0xdd, 0x3b, 0x0c, 0x80, 0x05, 0xde, 0x35, +0x1f, 0x6f, 0x81, 0x3a, 0x61, 0xe7, 0x0e, 0x04, +0x4f, 0x13, 0x08, 0xde, 0x1e, 0x7c, 0x2f, 0x16, +0x8b, 0x2b, 0x3f, 0xfb, 0xd9, 0xcf, 0x7e, 0xf8, +0xea, 0xab, 0xaf, 0xfe, 0x86, 0xa0, 0x48, 0x72, +0x89, 0x20, 0xea, 0x87, 0xf5, 0xc3, 0x3b, 0x2f, +0x94, 0xac, 0x74, 0x68, 0x5c, 0x2a, 0x9b, 0x24, +0xd8, 0x7f, 0xaf, 0x94, 0xca, 0x9e, 0x3e, 0x7d, +0xfa, 0xe4, 0x99, 0x33, 0x67, 0x9e, 0xea, 0xec, +0xec, 0x1c, 0x00, 0xc0, 0x06, 0xff, 0x66, 0xf0, +0x7a, 0xfe, 0x0a, 0xdb, 0x03, 0x23, 0x09, 0xa2, +0x23, 0x60, 0xd2, 0xc1, 0x4f, 0x96, 0x65, 0x95, +0xc6, 0xc7, 0xc7, 0x7f, 0xf1, 0xe3, 0x1f, 0xff, +0xf8, 0x95, 0x62, 0xb1, 0x18, 0x96, 0xca, 0xde, +0xa2, 0x3a, 0xe3, 0xdb, 0xbd, 0x52, 0xd9, 0x06, +0x20, 0x34, 0x2a, 0x96, 0x6e, 0x23, 0x70, 0x8d, +0xdc, 0xd3, 0x4f, 0x3f, 0xfd, 0xd0, 0x43, 0x0f, +0x3d, 0xf4, 0x64, 0x36, 0x9b, 0xad, 0x14, 0x4b, +0xe3, 0x96, 0x5f, 0xd5, 0x04, 0xdf, 0x12, 0x9b, +0x27, 0x02, 0x3c, 0x2a, 0xa7, 0x08, 0x44, 0xcc, +0x0f, 0x3e, 0x67, 0x09, 0x20, 0x2e, 0x93, 0xe3, +0x38, 0xd6, 0xc4, 0xc4, 0xc4, 0x6f, 0x7f, 0xf4, +0xa3, 0x1f, 0xfd, 0x57, 0x3e, 0x9f, 0xbf, 0x5e, +0xbe, 0xd3, 0x4a, 0x99, 0xa3, 0x5a, 0xdf, 0xfd, +0x62, 0xe9, 0x2d, 0x40, 0x88, 0x1e, 0x90, 0x08, +0xcf, 0x08, 0xa4, 0xcb, 0xaf, 0x9f, 0x05, 0x32, +0xf7, 0xdf, 0x7f, 0xff, 0xdd, 0xa3, 0xa3, 0xa3, +0x27, 0x0f, 0x1e, 0x3c, 0x78, 0x6f, 0x2e, 0x97, +0xdb, 0x56, 0xb9, 0xbc, 0x69, 0x9a, 0xc5, 0x8f, +0x3e, 0xfa, 0xe8, 0x8f, 0xef, 0xbe, 0xfb, 0xee, +0x5b, 0xaf, 0xbf, 0xfe, 0xfa, 0x5b, 0x6b, 0x6b, +0x6b, 0x61, 0x70, 0x0b, 0xb5, 0xfd, 0xa7, 0x2b, +0x97, 0xaf, 0x74, 0xde, 0xfa, 0xc0, 0x44, 0x68, +0x11, 0x75, 0x0f, 0x4c, 0x0c, 0x0f, 0x0f, 0x0f, +0x9c, 0x38, 0x71, 0x62, 0x38, 0x9b, 0xcd, 0xe6, +0x32, 0x99, 0x4c, 0x5b, 0x32, 0x99, 0xcc, 0xa6, +0x52, 0xa9, 0x8c, 0xa6, 0x69, 0x5a, 0xb1, 0x58, +0x5c, 0x5b, 0x5b, 0x5b, 0x5b, 0x5d, 0x5f, 0x5f, +0x5f, 0x2d, 0x14, 0x0a, 0xcb, 0xb3, 0xb3, 0xb3, +0x73, 0xe7, 0xce, 0x9d, 0x7b, 0xdf, 0xb6, 0xed, +0xad, 0x0e, 0x4c, 0x44, 0x05, 0xaf, 0x3a, 0x39, +0xd2, 0xaa, 0xf0, 0xdb, 0x06, 0x20, 0x02, 0x02, +0xdc, 0xf9, 0x91, 0x99, 0xe8, 0x46, 0x65, 0x98, +0x10, 0x84, 0x89, 0x57, 0x65, 0x39, 0x8e, 0xcd, +0xe3, 0x32, 0xb5, 0xdc, 0xf0, 0xc8, 0x0c, 0x5b, +0x44, 0xfb, 0x86, 0xf2, 0xfc, 0x99, 0x0e, 0x4d, +0x45, 0x4f, 0x8e, 0x41, 0x75, 0xfa, 0x1d, 0x82, +0xf0, 0x27, 0x39, 0x34, 0xb5, 0xa3, 0x83, 0x93, +0x3b, 0x38, 0x36, 0x57, 0xbb, 0x57, 0x57, 0xbb, +0x27, 0x11, 0x72, 0xd3, 0x63, 0x73, 0xec, 0x40, +0x78, 0xd8, 0x21, 0x00, 0x50, 0x05, 0x02, 0x54, +0x5b, 0x44, 0x74, 0xa7, 0xb9, 0x95, 0x83, 0x93, +0xb5, 0x8b, 0x32, 0x5b, 0x1e, 0x9c, 0x64, 0x87, +0x82, 0x57, 0x5e, 0xf8, 0xff, 0xfb, 0xd1, 0xd9, +0x5d, 0x03, 0xa0, 0xea, 0xa6, 0xbb, 0x78, 0x78, +0x3a, 0xd2, 0x06, 0x5f, 0xfe, 0xb7, 0x1e, 0x9e, +0xfe, 0xbf, 0x4a, 0xff, 0x03, 0x3b, 0x14, 0xaf, +0x44, 0x79, 0x6c, 0x56, 0x23, 0x00, 0x00, 0x00, +0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, +0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity2.png b/source/bitmaps/misc/activity2.png new file mode 100644 index 0000000000000000000000000000000000000000..bd83e8a9694e992c365df35a33c5c6f509b34064 GIT binary patch literal 4265 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 LNkvXXu0mjfqe@5* literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/activity3.cpp b/source/bitmaps/misc/activity3.cpp new file mode 100644 index 0000000..d2eec90 --- /dev/null +++ b/source/bitmaps/misc/activity3.cpp @@ -0,0 +1,541 @@ +#include + +#ifndef MISC_ACTIVITY3_CPP +#define MISC_ACTIVITY3_CPP + +static unsigned char misc_activity3_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x14, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xdf, +0x73, 0x1c, 0x55, 0x76, 0xc7, 0x3f, 0xf7, 0xf6, +0x8f, 0xf9, 0x3d, 0xd2, 0xe8, 0xb7, 0x2c, 0x8f, +0x24, 0x6c, 0xd6, 0xc8, 0x80, 0x2d, 0x7b, 0x6d, +0x63, 0x7e, 0x18, 0x30, 0x81, 0xaa, 0xf5, 0xf2, +0x10, 0x13, 0xb2, 0x4f, 0x5b, 0xd4, 0x3e, 0xec, +0x12, 0x92, 0xec, 0x1b, 0xff, 0x45, 0x2a, 0x29, +0x9e, 0x52, 0x14, 0xd9, 0xaa, 0xcd, 0x4b, 0x62, +0x02, 0x0f, 0xa9, 0x5a, 0x17, 0xe0, 0x22, 0x89, +0xbc, 0x0b, 0xc5, 0x42, 0x0c, 0x18, 0x19, 0x4c, +0x8c, 0x7f, 0xc9, 0xd6, 0x0f, 0x4b, 0xb2, 0x2d, +0x69, 0xf4, 0xc3, 0x33, 0xd2, 0xcc, 0x74, 0xcf, +0x74, 0x77, 0x1e, 0x7a, 0x7a, 0xd4, 0x33, 0x9a, +0x91, 0x46, 0xb6, 0x0c, 0xd9, 0xca, 0x51, 0x9d, +0x6a, 0xcd, 0x4c, 0xcf, 0xf4, 0x3d, 0xdf, 0xfb, +0xbd, 0xe7, 0xdc, 0x7b, 0xee, 0xb9, 0xc2, 0x71, +0x1c, 0xee, 0xa7, 0x08, 0x21, 0x44, 0xbd, 0x8f, +0x6a, 0xbc, 0xb7, 0xa6, 0x31, 0xce, 0x7d, 0x6e, +0xa0, 0x7a, 0x3f, 0x7e, 0xb4, 0xca, 0x68, 0x51, +0xe7, 0x5a, 0x4f, 0x1c, 0xff, 0xb5, 0x1a, 0xbf, +0xad, 0x06, 0x44, 0x6c, 0xd5, 0xef, 0xd5, 0x30, +0x5a, 0x54, 0xfd, 0x2f, 0x6b, 0xbc, 0xe7, 0x17, +0xbf, 0xe1, 0xeb, 0xa9, 0x7b, 0xd3, 0x16, 0x35, +0xfc, 0x9e, 0x19, 0x50, 0xc7, 0x70, 0xe9, 0xbb, +0xd6, 0x52, 0x41, 0x25, 0x08, 0x9e, 0x31, 0x76, +0xe9, 0x7f, 0xbb, 0x8e, 0x96, 0x81, 0xf0, 0x1e, +0x7b, 0xaf, 0x40, 0xdc, 0x13, 0x00, 0x3e, 0xe3, +0xab, 0x8d, 0x56, 0x7c, 0xaa, 0x96, 0x54, 0xa9, +0xd2, 0x6a, 0x16, 0xf8, 0x0d, 0x2d, 0x02, 0x56, +0x8d, 0xab, 0x45, 0x15, 0x18, 0xf7, 0x0a, 0xc4, +0x5d, 0x0d, 0x81, 0x2a, 0xc3, 0xab, 0x8d, 0x56, +0x01, 0xcd, 0xa7, 0x7a, 0x49, 0xbd, 0xd7, 0x1e, +0x20, 0x7e, 0x26, 0x78, 0xbd, 0xee, 0x19, 0x5b, +0x28, 0xa9, 0x59, 0x75, 0xf5, 0xb4, 0x16, 0x18, +0x77, 0x05, 0xc2, 0xa6, 0x19, 0xe0, 0x33, 0xde, +0x33, 0xc0, 0xdf, 0xcb, 0x3a, 0x10, 0x28, 0x69, +0xb0, 0xa4, 0x21, 0xdf, 0x6b, 0x0f, 0x0c, 0x8f, +0x11, 0x1e, 0x00, 0xfe, 0x9e, 0xf7, 0x0c, 0x36, +0x4a, 0x9a, 0x07, 0x72, 0xa5, 0x6b, 0xbe, 0xf4, +0x9e, 0x07, 0x88, 0xc7, 0x0c, 0x9b, 0x12, 0x1b, +0x36, 0x0b, 0xc2, 0xa6, 0x00, 0x28, 0x19, 0xef, +0xa9, 0xd7, 0xe3, 0x5e, 0x2f, 0x7b, 0x06, 0x87, +0x81, 0x88, 0x4f, 0xc3, 0x40, 0xb8, 0xa3, 0xa3, +0xa3, 0xa7, 0xa7, 0xa7, 0x67, 0x20, 0x18, 0x0c, +0xb6, 0x04, 0x83, 0xc1, 0x66, 0x5d, 0xd7, 0xe3, +0xba, 0xae, 0xc7, 0xa5, 0x94, 0x9a, 0x69, 0x9a, +0x19, 0xd3, 0x34, 0xd3, 0x86, 0x61, 0x2c, 0x19, +0x86, 0xb1, 0xb8, 0xb4, 0xb4, 0x34, 0x75, 0xfd, +0xfa, 0xf5, 0x4b, 0xb6, 0x6d, 0xaf, 0x00, 0x59, +0x60, 0xc5, 0xa7, 0x59, 0x1f, 0x20, 0x46, 0x35, +0x10, 0x9b, 0x1d, 0x12, 0x0d, 0x0f, 0x01, 0x9f, +0xf1, 0x1e, 0xdd, 0xbd, 0x1e, 0xf7, 0x7a, 0x39, +0x02, 0xc4, 0x4a, 0x1a, 0x07, 0x62, 0xbd, 0xbd, +0xbd, 0x0f, 0x25, 0x93, 0xc9, 0x83, 0x6d, 0x6d, +0x6d, 0x8f, 0x84, 0xc3, 0xe1, 0xce, 0x86, 0x1e, +0x54, 0x92, 0x62, 0xb1, 0x98, 0x5d, 0x5c, 0x5c, +0xbc, 0x72, 0xfb, 0xf6, 0xed, 0xaf, 0x47, 0x46, +0x46, 0xbe, 0x31, 0x0c, 0x63, 0x1e, 0x48, 0x03, +0x99, 0x92, 0x2e, 0xb3, 0x0a, 0x86, 0xc7, 0x08, +0xff, 0xb0, 0x68, 0x08, 0x84, 0x86, 0x00, 0xa8, +0x61, 0xbc, 0x86, 0x4b, 0xeb, 0x10, 0x10, 0x2d, +0x19, 0xdd, 0x0c, 0x34, 0x01, 0x2d, 0xfb, 0xf6, +0xed, 0x7b, 0x66, 0xe7, 0xce, 0x9d, 0xc7, 0x82, +0xc1, 0x60, 0xab, 0xf7, 0x1b, 0x4a, 0x41, 0x25, +0x31, 0xdb, 0x42, 0x70, 0x39, 0x84, 0x9e, 0xd7, +0xd1, 0x0c, 0x1d, 0x3d, 0x1f, 0x40, 0x5a, 0x92, +0x42, 0xd0, 0xc4, 0x0c, 0x98, 0x98, 0x41, 0x03, +0x33, 0x64, 0xb0, 0xd4, 0xb1, 0x48, 0x3e, 0x92, +0x2b, 0x3f, 0xdf, 0xb6, 0xed, 0xc2, 0xad, 0x5b, +0xb7, 0x3e, 0x1f, 0x1e, 0x1e, 0x7e, 0x3f, 0x93, +0xc9, 0xdc, 0x04, 0x16, 0x81, 0x3b, 0x3e, 0x40, +0xb2, 0xac, 0x0e, 0x8d, 0xe2, 0x66, 0x40, 0xd8, +0x10, 0x80, 0x2a, 0xe3, 0x3d, 0x07, 0x17, 0x64, +0xb5, 0xc7, 0x9b, 0x80, 0x16, 0xa0, 0x65, 0x60, +0x60, 0xe0, 0xf1, 0xdd, 0xbb, 0x77, 0xff, 0x79, +0x24, 0x12, 0xe9, 0x06, 0xd0, 0xf2, 0x3a, 0x89, +0xdb, 0x2d, 0x24, 0x6e, 0xb6, 0x11, 0x4f, 0x35, +0x21, 0xec, 0x8d, 0xe6, 0x40, 0xab, 0x92, 0x8b, +0x65, 0x59, 0xdc, 0x36, 0xcf, 0x62, 0xf7, 0x3c, +0x2b, 0xcd, 0xcb, 0x00, 0x58, 0x96, 0x65, 0x4c, +0x4e, 0x4e, 0x7e, 0x74, 0xf6, 0xec, 0xd9, 0x53, +0x86, 0x61, 0xcc, 0x00, 0x0b, 0x25, 0x30, 0xd2, +0xb8, 0xc3, 0x23, 0x57, 0x02, 0xa2, 0x61, 0x10, +0xd6, 0x05, 0xa0, 0x8e, 0xf1, 0x1e, 0xdd, 0x9b, +0x80, 0x04, 0xd0, 0xd6, 0xd4, 0xd4, 0xd4, 0xff, +0xec, 0xb3, 0xcf, 0xbe, 0xda, 0xdc, 0xdc, 0xbc, +0xcb, 0x35, 0x5c, 0xa3, 0xfb, 0xd2, 0x76, 0x5a, +0x6f, 0xb4, 0x23, 0x9c, 0xc6, 0x8d, 0xae, 0x27, +0xd9, 0xa6, 0x15, 0xa6, 0x1f, 0xbd, 0x41, 0xa6, +0x3d, 0x0d, 0x40, 0xa1, 0x50, 0xc8, 0x9c, 0x3f, +0x7f, 0xfe, 0xc4, 0xc5, 0x8b, 0x17, 0xcf, 0x00, +0x29, 0x60, 0x1e, 0x97, 0x11, 0x7e, 0x36, 0x34, +0x04, 0x42, 0x5d, 0x00, 0x6a, 0xd0, 0x5e, 0x67, +0x95, 0xf2, 0xcd, 0x40, 0x2b, 0xd0, 0xde, 0xdb, +0xdb, 0x3b, 0xf8, 0xc4, 0x13, 0x4f, 0xbc, 0x16, +0x0c, 0x06, 0x9b, 0x65, 0x51, 0xd2, 0x3e, 0xd2, +0x4d, 0xfb, 0xb5, 0x4e, 0xa4, 0x25, 0xef, 0xd9, +0xf0, 0x6a, 0xc9, 0x74, 0xde, 0xe1, 0xd6, 0x23, +0x53, 0xe4, 0xe3, 0x39, 0x00, 0xfb, 0xea, 0xd5, +0xab, 0xa7, 0xce, 0x9c, 0x39, 0x73, 0x12, 0x98, +0xc5, 0x05, 0x62, 0x91, 0xb5, 0x20, 0x58, 0xb8, +0xf6, 0x37, 0x0e, 0x40, 0x55, 0xa8, 0xab, 0x65, +0x7c, 0x3b, 0xd0, 0x31, 0x38, 0x38, 0xf8, 0xfc, +0xe0, 0xe0, 0xe0, 0xcf, 0x15, 0x45, 0xd1, 0x43, +0x8b, 0x61, 0x92, 0x5f, 0xf4, 0xa3, 0xe6, 0xb5, +0xad, 0xb3, 0xb8, 0x66, 0x8b, 0x61, 0x6e, 0xe0, +0x36, 0x73, 0x0f, 0xcd, 0x00, 0x30, 0x33, 0x33, +0x33, 0x3c, 0x34, 0x34, 0xf4, 0xdb, 0x42, 0xa1, +0x70, 0x13, 0x98, 0xc3, 0x1d, 0x16, 0x69, 0xd6, +0x32, 0xa1, 0x26, 0x08, 0xeb, 0x01, 0xe0, 0x85, +0x3a, 0x8f, 0xf6, 0x51, 0x4a, 0x94, 0x07, 0xba, +0x9e, 0x7a, 0xea, 0xa9, 0x97, 0x77, 0xed, 0xda, +0xf5, 0x92, 0x10, 0x42, 0xc4, 0x27, 0x9b, 0xe9, +0xfc, 0x7a, 0xdb, 0xa6, 0xc6, 0xf8, 0xbd, 0x4a, +0x66, 0x5b, 0x9a, 0xdb, 0x07, 0xa6, 0x71, 0x14, +0x9b, 0x74, 0x3a, 0x3d, 0xf6, 0xfe, 0xfb, 0xef, +0xff, 0x83, 0x61, 0x18, 0x53, 0xb8, 0x6c, 0xf0, +0x83, 0x50, 0x76, 0x8c, 0x0d, 0x01, 0x50, 0x45, +0x7d, 0xcf, 0xdb, 0xfb, 0x7b, 0xbe, 0x6b, 0xcf, +0x9e, 0x3d, 0xcf, 0x1d, 0x3e, 0x7c, 0xf8, 0x55, +0x40, 0xb4, 0x5e, 0x68, 0xa7, 0xe9, 0x5a, 0xcb, +0x7d, 0x33, 0x14, 0x40, 0x28, 0x02, 0xc7, 0x5a, +0xdb, 0x51, 0x66, 0x93, 0xc1, 0xed, 0xc7, 0xa7, +0x28, 0x86, 0x8a, 0xcc, 0xce, 0xce, 0x9e, 0x7f, +0xef, 0xbd, 0xf7, 0xfe, 0x11, 0xb8, 0xc9, 0x2a, +0x08, 0x19, 0x5c, 0xc7, 0x58, 0x0e, 0x91, 0xd5, +0x20, 0x54, 0x0c, 0xd4, 0xaa, 0x29, 0xae, 0x17, +0xeb, 0x3d, 0x8f, 0xdf, 0x04, 0xb4, 0x26, 0x93, +0xc9, 0x47, 0x0e, 0x1d, 0x3a, 0xf4, 0x0b, 0x21, +0x84, 0x48, 0x5c, 0x6e, 0x25, 0x7a, 0xbd, 0x09, +0x4b, 0x58, 0xf7, 0x4d, 0x9b, 0x76, 0xc6, 0xe9, +0xff, 0xb3, 0xbe, 0x9a, 0x9f, 0x29, 0x69, 0x95, +0x8e, 0x33, 0xdb, 0x90, 0x96, 0x42, 0x67, 0x67, +0xe7, 0xe0, 0xd1, 0xa3, 0x47, 0x7f, 0x86, 0xdb, +0x49, 0x09, 0xdc, 0x08, 0x15, 0xc2, 0x1d, 0xbe, +0xe5, 0x59, 0x67, 0x75, 0x7e, 0xa2, 0x96, 0xa7, +0xaa, 0xe5, 0xf8, 0x62, 0x40, 0x22, 0x1e, 0x8f, +0x27, 0x9f, 0x7b, 0xee, 0xb9, 0xbf, 0xd1, 0x34, +0x2d, 0x10, 0xb9, 0x15, 0x25, 0x3a, 0xd2, 0x84, +0x2d, 0xed, 0xbb, 0x52, 0x02, 0x10, 0x6c, 0x0b, +0xa0, 0xc6, 0xd4, 0x75, 0xef, 0x3b, 0xfc, 0xb7, +0x87, 0xe8, 0x39, 0xd4, 0x5d, 0xf7, 0x73, 0x65, +0x45, 0xa5, 0xf5, 0x5c, 0x07, 0x52, 0x48, 0x76, +0xed, 0xda, 0xf5, 0x93, 0xfd, 0xfb, 0xf7, 0x3f, +0x83, 0x1b, 0x96, 0xe3, 0xb8, 0xb3, 0xd0, 0x00, +0x95, 0x6b, 0x8f, 0x0a, 0xa9, 0x35, 0x15, 0xf6, +0x87, 0xbd, 0x40, 0xa9, 0xf7, 0xe3, 0x40, 0xcb, +0xf3, 0xcf, 0x3f, 0xff, 0x8b, 0x70, 0x38, 0xdc, +0xaa, 0xde, 0xd1, 0x88, 0x7d, 0x93, 0xc0, 0x92, +0x56, 0x8d, 0xaf, 0xd7, 0x16, 0x21, 0x20, 0xdc, +0x12, 0xa6, 0xa5, 0xbf, 0x85, 0x58, 0x77, 0x8c, +0x70, 0x22, 0x44, 0x20, 0xaa, 0xa3, 0x87, 0x75, +0xa4, 0x2a, 0x31, 0x96, 0x4d, 0x16, 0xc6, 0x17, +0x18, 0xfd, 0xe3, 0x38, 0xf9, 0x74, 0x1e, 0x80, +0x9d, 0xcf, 0xec, 0x60, 0xdb, 0x81, 0x6e, 0x8c, +0xb4, 0x81, 0xad, 0x58, 0xd4, 0x8b, 0xd8, 0xda, +0xac, 0x4e, 0xec, 0x72, 0x13, 0xcb, 0x0f, 0xa7, +0xc5, 0xc1, 0x03, 0x07, 0x5f, 0x19, 0x1d, 0x1d, +0xbd, 0x7c, 0xe7, 0xce, 0x9d, 0x2c, 0x95, 0x6b, +0x07, 0xcf, 0x19, 0x0a, 0xff, 0x9a, 0xa1, 0x0c, +0xc0, 0x46, 0x61, 0x6f, 0xe7, 0xce, 0x9d, 0x8f, +0x76, 0x76, 0x76, 0x0e, 0x0a, 0x47, 0x10, 0xfb, +0xaa, 0x19, 0xc7, 0xb6, 0x69, 0x34, 0xc4, 0x07, +0x63, 0x01, 0x12, 0x7d, 0x09, 0xc2, 0x2d, 0x61, +0x02, 0xd1, 0x00, 0x6a, 0x48, 0x41, 0xa8, 0x20, +0x54, 0x81, 0xd0, 0x04, 0x5a, 0x44, 0x23, 0xda, +0x15, 0xa5, 0x7b, 0xb0, 0x8b, 0xbd, 0x3f, 0xdb, +0xc3, 0xe4, 0x57, 0x93, 0x5c, 0x39, 0x7d, 0x95, +0xa7, 0x7e, 0xfd, 0x38, 0x5a, 0x58, 0x43, 0x8f, +0xe8, 0x24, 0x76, 0x34, 0x93, 0x1a, 0x9d, 0xaf, +0xff, 0x8c, 0x6b, 0x61, 0xcc, 0x4e, 0x83, 0x42, +0x9b, 0x19, 0x38, 0x72, 0xe4, 0xc8, 0x4b, 0xa7, +0x4e, 0x9d, 0xfa, 0x0d, 0xab, 0x6b, 0x07, 0x6f, +0xcd, 0x60, 0x51, 0x95, 0x58, 0xa9, 0x66, 0x80, +0xbf, 0xf7, 0x2b, 0x00, 0x38, 0x74, 0xe8, 0xd0, +0x5f, 0x28, 0x8a, 0x22, 0xf4, 0xd1, 0x20, 0xe4, +0x04, 0x96, 0xb4, 0x37, 0x34, 0x5c, 0x08, 0x41, +0xb8, 0x25, 0x4c, 0xac, 0x3d, 0x8a, 0x12, 0x51, +0x57, 0xd7, 0x8c, 0x9a, 0x70, 0xb5, 0x04, 0x80, +0xd0, 0x04, 0x42, 0x15, 0x48, 0x4d, 0xa2, 0x85, +0x35, 0x76, 0xff, 0x74, 0x80, 0xbd, 0x7f, 0xb9, +0x07, 0x3d, 0xa4, 0xa1, 0xe8, 0x2a, 0x42, 0xc0, +0xf6, 0xc3, 0x49, 0x66, 0xc6, 0xe7, 0xd6, 0x07, +0xfa, 0x52, 0x04, 0xeb, 0xd9, 0x22, 0xbd, 0xbd, +0xbd, 0x8f, 0x6f, 0xdb, 0xb6, 0x6d, 0xe8, 0xe6, +0xcd, 0x9b, 0x69, 0x56, 0xd7, 0x0c, 0xfe, 0x90, +0x58, 0x66, 0x81, 0x04, 0xaa, 0x57, 0x79, 0x7e, +0xfa, 0x87, 0x81, 0xf8, 0xde, 0xbd, 0x7b, 0x0f, +0xb4, 0xb5, 0xb5, 0x3d, 0x28, 0x8b, 0x12, 0xed, +0x6a, 0x00, 0x5b, 0x58, 0x1b, 0xaa, 0x23, 0x6d, +0x02, 0xcd, 0x1a, 0x5a, 0x54, 0xc5, 0x51, 0x6c, +0x90, 0x0e, 0x8e, 0xe2, 0x60, 0x3b, 0x16, 0xf3, +0x93, 0x29, 0x26, 0xce, 0x4d, 0x70, 0xe9, 0x0f, +0x97, 0xb8, 0xfc, 0xf1, 0x15, 0xa6, 0xfe, 0x67, +0x9a, 0x5c, 0x3a, 0x87, 0x50, 0x40, 0x96, 0x80, +0x50, 0x34, 0x05, 0x35, 0xa0, 0xa2, 0x85, 0x34, +0xb4, 0x90, 0x46, 0xff, 0xe3, 0xbd, 0x1b, 0x3e, +0x53, 0xdc, 0x11, 0x68, 0xd3, 0x3a, 0x8a, 0xa2, +0x28, 0x4f, 0x3e, 0xf9, 0xe4, 0x4b, 0xb8, 0x43, +0x37, 0x52, 0xea, 0x48, 0x0d, 0x97, 0xd9, 0x15, +0x7e, 0xaf, 0x9a, 0x01, 0xfe, 0xc5, 0x4e, 0x79, +0xbe, 0x3f, 0x38, 0x38, 0xf8, 0x53, 0x29, 0x25, +0xca, 0x75, 0x1d, 0xbb, 0xe8, 0x80, 0xdc, 0x78, +0x01, 0xa5, 0xea, 0x2a, 0xe8, 0x02, 0x47, 0x75, +0x70, 0x14, 0xb0, 0xa5, 0xc3, 0xc2, 0xad, 0x45, +0x52, 0x63, 0xf3, 0x14, 0xcd, 0x62, 0xe5, 0xcd, +0x5f, 0x5c, 0x47, 0x48, 0x41, 0xff, 0x81, 0x3e, +0x0e, 0xbc, 0xbc, 0x9f, 0xe4, 0xe0, 0x76, 0xa4, +0x2a, 0x5d, 0x46, 0x04, 0x55, 0x84, 0x10, 0x3c, +0x70, 0xb8, 0x1f, 0x47, 0x03, 0xdb, 0x5a, 0x9f, +0x79, 0xca, 0xe5, 0x00, 0x76, 0x8f, 0x45, 0x77, +0x77, 0xf7, 0x60, 0x4f, 0x4f, 0x4f, 0xff, 0xf4, +0xf4, 0xb4, 0xb7, 0x70, 0xd2, 0x7d, 0x2c, 0xf0, +0x92, 0x30, 0x15, 0x68, 0xf8, 0x27, 0x3f, 0x5e, +0x62, 0x23, 0x9c, 0x48, 0x24, 0x3a, 0x5b, 0x5a, +0x5a, 0xfa, 0x85, 0x23, 0x10, 0x13, 0xb2, 0xa1, +0xde, 0xb7, 0x85, 0x05, 0x6a, 0xc9, 0x53, 0x0b, +0x1b, 0x47, 0xda, 0xa4, 0xa6, 0x52, 0xdc, 0xbc, +0x7a, 0x13, 0xb3, 0x60, 0xd4, 0xbc, 0xdf, 0x72, +0x8a, 0x5c, 0xff, 0xea, 0x3a, 0x9f, 0xfe, 0xeb, +0x67, 0x20, 0x40, 0x48, 0x10, 0x52, 0x94, 0xb3, +0xc2, 0x81, 0xa8, 0x4e, 0xfb, 0xae, 0xb6, 0x8d, +0x99, 0x97, 0xb7, 0x91, 0xb3, 0x0a, 0x52, 0x4a, +0xb1, 0x7b, 0xf7, 0xee, 0xc7, 0x7c, 0x0c, 0xf0, +0xc2, 0x61, 0x39, 0x13, 0x25, 0x84, 0x10, 0x6a, +0x15, 0x00, 0xd5, 0x0c, 0x08, 0xef, 0xdd, 0xbb, +0xf7, 0xa0, 0x94, 0x52, 0x38, 0x29, 0x81, 0x65, +0x59, 0xb5, 0x03, 0x67, 0x0d, 0xb1, 0x14, 0x05, +0x5b, 0xba, 0xf1, 0x3a, 0x75, 0x33, 0xc5, 0xca, +0x52, 0x76, 0xc3, 0xef, 0x0a, 0x21, 0x38, 0xf2, +0xcb, 0xa7, 0x70, 0x1c, 0x07, 0xdb, 0x71, 0xb0, +0x8a, 0x36, 0x05, 0xa3, 0x80, 0xe3, 0x40, 0xd1, +0xb4, 0xd8, 0xf6, 0x68, 0x17, 0x53, 0x57, 0xa7, +0x36, 0x7c, 0xb6, 0x98, 0x11, 0xc8, 0xed, 0x92, +0x64, 0x32, 0xb9, 0xa7, 0x0a, 0x80, 0x35, 0xe1, +0x50, 0xad, 0x33, 0xfe, 0x3d, 0x00, 0x42, 0xc9, +0x64, 0x72, 0x8f, 0x10, 0x02, 0xfb, 0xb6, 0x83, +0x2d, 0x1a, 0xcf, 0x36, 0xd9, 0xb8, 0xbd, 0xbf, +0x34, 0xb7, 0x84, 0x99, 0x33, 0x37, 0xde, 0x0d, +0x00, 0x76, 0x3f, 0x3d, 0x40, 0x6b, 0x6f, 0x0b, +0xb6, 0x6d, 0x63, 0x15, 0x2c, 0x0c, 0x3b, 0xcf, +0xb5, 0x2f, 0xa6, 0x18, 0xf9, 0xe2, 0x1a, 0x57, +0xcf, 0x5c, 0x63, 0x6e, 0x7c, 0xae, 0xa1, 0xdf, +0x61, 0x06, 0x34, 0x47, 0x90, 0x48, 0x24, 0x7a, +0x13, 0x89, 0x44, 0xdb, 0xe2, 0xe2, 0xe2, 0x4c, +0x15, 0x00, 0x92, 0xd2, 0xfa, 0x60, 0x3d, 0x06, +0xe8, 0xa1, 0x50, 0x28, 0xde, 0xd1, 0xde, 0xb1, +0x53, 0x4a, 0x89, 0x31, 0x5b, 0xc0, 0x69, 0x60, +0xec, 0x7b, 0x62, 0x49, 0x8b, 0x5c, 0x3e, 0x47, +0xde, 0x30, 0x1a, 0x62, 0x8d, 0x1e, 0xd2, 0x39, +0x70, 0x7c, 0x3f, 0xa9, 0xa9, 0x14, 0xd3, 0x57, +0x6e, 0x32, 0xf1, 0xed, 0x0d, 0x6e, 0x5c, 0x98, +0xa4, 0x60, 0x14, 0x56, 0x6f, 0x6a, 0x74, 0x81, +0x69, 0x83, 0xba, 0xa0, 0xa2, 0x74, 0x48, 0xb1, +0x6f, 0xdf, 0xbe, 0x1f, 0x7f, 0xf4, 0xd1, 0x47, +0xd7, 0xa8, 0xc7, 0x80, 0xd2, 0xb5, 0x3a, 0xd7, +0xa7, 0x02, 0xfa, 0x03, 0x0f, 0x3c, 0xd0, 0xab, +0xa8, 0x8a, 0x66, 0x67, 0x6c, 0x2c, 0xc3, 0x6a, +0x0c, 0xfd, 0x92, 0x58, 0x58, 0x18, 0xb9, 0x22, +0x4e, 0x83, 0xac, 0x51, 0x82, 0x0a, 0xff, 0xfe, +0xf7, 0xbf, 0x23, 0x33, 0x9f, 0xa9, 0xfc, 0xe0, +0x2e, 0xd7, 0x57, 0x56, 0xca, 0x46, 0xed, 0x54, +0x68, 0x6f, 0x6f, 0xef, 0xc3, 0xf5, 0x67, 0x5e, +0x46, 0xba, 0x22, 0x25, 0x5f, 0x2b, 0x0a, 0x94, +0x87, 0x41, 0x73, 0x73, 0x73, 0x9b, 0x94, 0x12, +0xcb, 0xb0, 0xb1, 0x37, 0x31, 0xeb, 0x03, 0x30, +0x8b, 0xb6, 0x6b, 0x7c, 0x83, 0x06, 0x64, 0xd2, +0xe9, 0xd5, 0x16, 0x6c, 0x81, 0xd8, 0x86, 0x44, +0x4a, 0x49, 0x38, 0x1c, 0x6e, 0xa2, 0x8e, 0xf1, +0xc0, 0x1a, 0x27, 0x58, 0x91, 0xf4, 0x8c, 0xc5, +0x62, 0x09, 0x21, 0x04, 0x76, 0xde, 0xc6, 0x12, +0x9b, 0x03, 0x00, 0x87, 0xbb, 0xee, 0xbd, 0xad, +0x90, 0xa2, 0xe1, 0x46, 0x90, 0x50, 0x28, 0x14, +0x67, 0xd5, 0xf8, 0xea, 0x9d, 0xa9, 0x8a, 0x21, +0xe0, 0x5d, 0xbd, 0x9b, 0x94, 0x68, 0x34, 0xda, +0x24, 0xa5, 0xc4, 0x36, 0x4b, 0x0b, 0x98, 0x3f, +0x21, 0x29, 0x1a, 0x16, 0x52, 0x4a, 0x0f, 0x80, +0x8a, 0xf0, 0xe7, 0xbf, 0x4f, 0xa5, 0xd2, 0xf8, +0x0a, 0x8d, 0x46, 0xa3, 0x4d, 0x42, 0x08, 0x0a, +0xf9, 0xe2, 0xe6, 0x19, 0xf0, 0x03, 0x8b, 0x6d, +0xd8, 0x08, 0x21, 0x08, 0x06, 0x83, 0x11, 0x2a, +0x7b, 0xbe, 0x42, 0xd6, 0xdd, 0x18, 0x11, 0x42, +0x20, 0xa5, 0x3b, 0x96, 0x84, 0xfc, 0x01, 0xf9, +0x7c, 0x17, 0x22, 0xa4, 0xdb, 0xf6, 0x8d, 0xb2, +0xde, 0x2a, 0xeb, 0x6c, 0x4b, 0x67, 0xb3, 0xd9, +0x3b, 0x42, 0x08, 0xb4, 0x88, 0x8a, 0x54, 0xb6, +0x3e, 0xc9, 0x79, 0x3f, 0x45, 0x0d, 0x2b, 0x08, +0x21, 0x30, 0x0c, 0x63, 0x85, 0xaa, 0x3d, 0xc4, +0x8a, 0xfb, 0x4a, 0x57, 0x3f, 0x08, 0xde, 0xcd, +0x56, 0x19, 0x80, 0x90, 0x86, 0x22, 0x95, 0xef, +0xa3, 0xdd, 0x5b, 0x26, 0x5a, 0x58, 0xf7, 0x00, +0x48, 0xe3, 0xdb, 0x3f, 0xa4, 0x0a, 0x04, 0xff, +0x10, 0xf0, 0x3e, 0x2c, 0xef, 0xd2, 0x66, 0x32, +0x99, 0x05, 0x29, 0x25, 0x5a, 0xe4, 0x87, 0x07, +0x40, 0x48, 0x81, 0x63, 0x37, 0x3e, 0x11, 0xd3, +0xc3, 0x1a, 0x52, 0x4a, 0x4c, 0xd3, 0x4c, 0x53, +0xb9, 0x89, 0x5a, 0x01, 0x44, 0xb5, 0x0f, 0xa8, +0xd8, 0xa5, 0x5d, 0x5c, 0x5c, 0x9c, 0x17, 0x42, +0xa0, 0x86, 0x55, 0x14, 0x65, 0x6b, 0x00, 0x88, +0x25, 0x62, 0x34, 0x77, 0x34, 0x33, 0x79, 0x65, +0xb2, 0xe1, 0xef, 0x68, 0x01, 0x0d, 0xab, 0x60, +0x61, 0x8b, 0xc6, 0x23, 0x91, 0x16, 0xd1, 0x10, +0x42, 0x90, 0xcd, 0x66, 0xef, 0xb0, 0x9a, 0x11, +0xaa, 0x4e, 0x88, 0x38, 0xfe, 0x21, 0xe0, 0xa9, +0xb7, 0x47, 0x6f, 0x8e, 0x8e, 0x8e, 0xde, 0x70, +0x1c, 0xa7, 0xa0, 0xc7, 0x35, 0x4d, 0x0d, 0xab, +0xd8, 0xf9, 0xcd, 0x87, 0x42, 0x4d, 0xd7, 0xe8, +0x1d, 0x48, 0xd2, 0xf7, 0x70, 0x2f, 0xc9, 0x87, +0x92, 0x84, 0xe3, 0x61, 0x4e, 0xbf, 0xfd, 0x07, +0xa4, 0x6c, 0xcc, 0xa7, 0x28, 0x9a, 0x42, 0x20, +0x18, 0x20, 0x6f, 0xe7, 0x37, 0xf5, 0xdc, 0x60, +0x47, 0x00, 0x29, 0x25, 0x73, 0x73, 0x73, 0x13, +0xac, 0xdd, 0x4e, 0xaf, 0xc9, 0x00, 0x3f, 0xfd, +0x0b, 0x80, 0xb9, 0xbc, 0xbc, 0x9c, 0x9e, 0x9b, +0x9b, 0xbb, 0xde, 0xdd, 0xdd, 0x3d, 0x10, 0xee, +0x0e, 0x91, 0xbb, 0xd1, 0x58, 0x23, 0xda, 0x7a, +0xda, 0xf8, 0xd1, 0x8f, 0x1f, 0x64, 0xd7, 0x81, +0x1f, 0xd1, 0x3b, 0x90, 0xc4, 0x71, 0xa0, 0x60, +0x98, 0x18, 0x39, 0x83, 0xa9, 0xab, 0xd3, 0x8c, +0x7d, 0x3b, 0xd6, 0x10, 0xa3, 0xa4, 0x22, 0x89, +0x25, 0xa2, 0x14, 0x8c, 0x02, 0x8a, 0xa2, 0x20, +0x1a, 0x9c, 0x59, 0x09, 0x55, 0x10, 0x6c, 0x0b, +0xe0, 0xe0, 0xd8, 0x5f, 0x7e, 0xf9, 0xe5, 0x30, +0x6e, 0x6e, 0xd0, 0x9f, 0x17, 0x5c, 0x4d, 0x89, +0x39, 0x8e, 0xe3, 0x95, 0x99, 0x78, 0x00, 0x78, +0x45, 0x0a, 0x79, 0x20, 0x37, 0x36, 0x36, 0xf6, +0x6d, 0x4f, 0x4f, 0xcf, 0x40, 0xa8, 0x2b, 0x88, +0x39, 0x55, 0xa8, 0x7e, 0xd6, 0xda, 0x46, 0x4b, +0xc9, 0x5f, 0xfd, 0xdd, 0xaf, 0x88, 0x26, 0xa2, +0x28, 0x8a, 0xc4, 0xb2, 0x6c, 0x0a, 0x79, 0x13, +0xab, 0xa8, 0x20, 0xa5, 0xc2, 0xe7, 0xef, 0x7f, +0x81, 0x14, 0x72, 0xc3, 0x59, 0xa2, 0xaa, 0xab, +0x24, 0x3a, 0x13, 0x14, 0xcd, 0x22, 0x56, 0xc1, +0x46, 0x91, 0x4a, 0xc3, 0xfb, 0x8c, 0x81, 0x4e, +0x1d, 0xa9, 0x48, 0x52, 0xa9, 0xd4, 0x64, 0x2a, +0x95, 0x4a, 0xd5, 0x00, 0xa0, 0x0c, 0x82, 0x9f, +0x87, 0x7e, 0x06, 0x98, 0xa5, 0x2f, 0x65, 0xcf, +0x9e, 0x3d, 0xfb, 0x15, 0x60, 0x07, 0xda, 0x74, +0x54, 0x5d, 0x41, 0x91, 0x72, 0x5d, 0x15, 0xc0, +0xf4, 0xd5, 0x69, 0x54, 0x55, 0x41, 0x0f, 0xe9, +0x28, 0xaa, 0x82, 0x90, 0x12, 0x21, 0x04, 0x13, +0xdf, 0x4d, 0x30, 0x3b, 0x3e, 0xbb, 0xe1, 0x6f, +0x84, 0xa3, 0x21, 0x7a, 0x76, 0x74, 0xa3, 0x69, +0x2a, 0x52, 0x08, 0xf7, 0x7d, 0xb1, 0xfe, 0x77, +0xfc, 0x1a, 0xea, 0x0a, 0x20, 0x84, 0x60, 0x7c, +0x7c, 0xfc, 0x5b, 0xdc, 0x7c, 0x60, 0x5d, 0x06, +0x54, 0x03, 0xe0, 0xf9, 0x80, 0x02, 0x6e, 0xfa, +0x28, 0x3b, 0x3b, 0x3b, 0x3b, 0xbb, 0xb0, 0xb0, +0x30, 0x2e, 0x15, 0x49, 0xa4, 0x3f, 0x8c, 0xa2, +0x28, 0x1b, 0xea, 0x8d, 0x8b, 0x37, 0x80, 0x52, +0xfa, 0xca, 0x76, 0xc0, 0x71, 0xb5, 0xef, 0x91, +0x3e, 0x8e, 0xfd, 0xf2, 0x27, 0x74, 0xef, 0xe8, +0xae, 0xf9, 0x3d, 0x4d, 0xd3, 0x68, 0xdb, 0xd6, +0x46, 0xef, 0x40, 0x12, 0x55, 0xd3, 0xca, 0x93, +0x30, 0x4f, 0x1b, 0x79, 0xb6, 0x16, 0xd5, 0x08, +0xb8, 0x00, 0x38, 0xe7, 0xce, 0x9d, 0xfb, 0x12, +0x37, 0x29, 0xea, 0x15, 0x51, 0x54, 0x84, 0x43, +0xc7, 0x71, 0x9c, 0x5a, 0x51, 0xc0, 0x03, 0x20, +0x8f, 0x9b, 0x56, 0xce, 0x9c, 0x39, 0x73, 0xe6, +0x3f, 0x8e, 0x1f, 0x3f, 0xfe, 0xeb, 0xd0, 0x8e, +0x20, 0xe6, 0xad, 0x22, 0x8e, 0xb9, 0x7e, 0x38, +0x9a, 0xf8, 0x6e, 0xd2, 0xf5, 0xda, 0x96, 0x8d, +0x55, 0xb4, 0xb0, 0x8a, 0x36, 0x76, 0x09, 0x88, +0xe4, 0x40, 0x92, 0x8e, 0xbe, 0x0e, 0x16, 0x67, +0x96, 0x48, 0x4d, 0xa5, 0x58, 0xbc, 0xbd, 0x84, +0xe3, 0x38, 0x28, 0x8a, 0x24, 0x18, 0x09, 0x62, +0x15, 0x2d, 0x8c, 0x9c, 0x41, 0xd1, 0xb4, 0x11, +0xa5, 0xbf, 0xa2, 0x61, 0x21, 0x84, 0xa4, 0x6e, +0xcd, 0xa9, 0x4f, 0x22, 0xbb, 0x42, 0x48, 0x45, +0x32, 0x3e, 0x3e, 0x7e, 0x7e, 0x6c, 0x6c, 0x6c, +0x82, 0xd5, 0xba, 0x81, 0xda, 0x3e, 0x80, 0x12, +0x14, 0x35, 0xfc, 0x80, 0x81, 0x4b, 0x9f, 0xf4, +0xa7, 0x9f, 0x7e, 0x3a, 0xfc, 0xc4, 0x13, 0x4f, +0x5c, 0xeb, 0xea, 0xea, 0x7a, 0x30, 0xf2, 0x60, +0x88, 0xdc, 0x15, 0x63, 0xdd, 0x46, 0x2c, 0x4c, +0xcf, 0x93, 0x59, 0x5c, 0x26, 0x14, 0x0d, 0x62, +0x5b, 0x36, 0x45, 0xb3, 0x80, 0x6d, 0xd9, 0xd8, +0x96, 0xe3, 0xc6, 0x72, 0x07, 0xc2, 0xb1, 0x10, +0x9d, 0x7d, 0x9d, 0x24, 0x3a, 0x9a, 0x31, 0x72, +0x26, 0x66, 0xce, 0xc0, 0xc8, 0x9a, 0xd8, 0x96, +0x67, 0x38, 0xd8, 0x45, 0x9b, 0x5c, 0x26, 0x8f, +0x40, 0x34, 0xe4, 0x34, 0x95, 0xb8, 0x42, 0x70, +0x5b, 0x00, 0xdb, 0xb6, 0xad, 0x0f, 0x3f, 0xfc, +0xf0, 0x24, 0xee, 0x06, 0xe9, 0x32, 0x6e, 0x67, +0xfa, 0x4b, 0x68, 0xca, 0x52, 0x1d, 0x8b, 0xfc, +0x00, 0x98, 0x25, 0xe4, 0x96, 0x81, 0xa5, 0xa1, +0xa1, 0xa1, 0xdf, 0x01, 0x4e, 0x30, 0x19, 0x40, +0x8b, 0xba, 0x13, 0xa3, 0x7a, 0x2a, 0x85, 0xc2, +0xc4, 0x85, 0x09, 0x0a, 0x46, 0x91, 0x82, 0x51, +0xe4, 0xbf, 0xfe, 0xf9, 0xf7, 0x9c, 0x7a, 0xf3, +0x43, 0xa6, 0x2e, 0x4f, 0x61, 0xdb, 0x36, 0xb6, +0x65, 0xbb, 0x40, 0x94, 0xc0, 0x28, 0x55, 0xfc, +0x95, 0xff, 0x77, 0x2c, 0x87, 0xec, 0x52, 0x8e, +0xcc, 0xfc, 0x32, 0xc2, 0x11, 0xeb, 0x3e, 0xcb, +0xaf, 0xe1, 0x5d, 0x41, 0x84, 0x10, 0x8c, 0x8c, +0x8c, 0x7c, 0x3e, 0x3a, 0x3a, 0x3a, 0x4a, 0xe5, +0x36, 0x79, 0xc5, 0xc6, 0xc8, 0x9a, 0x9d, 0x21, +0x1f, 0x0b, 0xfc, 0x8e, 0xb0, 0x0c, 0xc0, 0x37, +0xdf, 0x7c, 0x73, 0xe1, 0xe8, 0xd1, 0xa3, 0xe7, +0xfb, 0xfb, 0xfb, 0xf7, 0x45, 0xf7, 0x86, 0xc8, +0x9e, 0xcb, 0xe1, 0xac, 0xb3, 0x40, 0x9c, 0xba, +0x34, 0x45, 0xef, 0xc3, 0xbd, 0xdc, 0xba, 0x76, +0x8b, 0xf1, 0xf3, 0x63, 0x00, 0xcc, 0x8c, 0xde, +0x26, 0xde, 0x16, 0x27, 0xb9, 0x7b, 0x3b, 0xe1, +0x78, 0x18, 0x2d, 0xe8, 0x4e, 0x56, 0x1c, 0xcb, +0xc6, 0xc8, 0x1a, 0x64, 0x97, 0x56, 0x58, 0x9a, +0x59, 0x22, 0xb3, 0xb0, 0xec, 0x0e, 0x8b, 0x06, +0xe7, 0x0a, 0x00, 0x7a, 0x9f, 0x86, 0xde, 0xaa, +0x61, 0x9a, 0x66, 0xfe, 0xe4, 0xc9, 0x93, 0x27, +0xa9, 0x5d, 0x2c, 0xb1, 0x66, 0x3d, 0x50, 0x6b, +0x35, 0x58, 0x3d, 0x0c, 0x56, 0x4a, 0x48, 0x2e, +0x9c, 0x38, 0x71, 0xe2, 0x5f, 0x5e, 0x7f, 0xfd, +0xf5, 0x64, 0x34, 0x1e, 0x6d, 0x0d, 0x3d, 0x1c, +0x22, 0xff, 0x9d, 0x59, 0xb7, 0x41, 0xb7, 0xae, +0xcd, 0x50, 0xc8, 0x17, 0xf8, 0xfc, 0xe4, 0x97, +0x48, 0xdf, 0x34, 0x7a, 0x79, 0x61, 0x85, 0x4b, +0x9f, 0x5d, 0x29, 0xbf, 0x96, 0x8a, 0xc4, 0xb6, +0xed, 0x8a, 0x66, 0x35, 0x3a, 0xde, 0xcb, 0x46, +0xb4, 0x2a, 0x04, 0x77, 0xea, 0x38, 0x38, 0xce, +0xd0, 0xd0, 0xd0, 0xdb, 0xb3, 0xb3, 0xb3, 0x37, +0x80, 0x25, 0xd6, 0x6e, 0x8f, 0x57, 0xf4, 0x3e, +0xd4, 0x4e, 0x40, 0x55, 0x87, 0xc3, 0x5c, 0xe9, +0x87, 0x16, 0x53, 0xa9, 0xd4, 0xe4, 0xdb, 0x6f, +0xbf, 0xfd, 0x4f, 0x96, 0x65, 0x19, 0x7a, 0x97, +0x46, 0xf0, 0x81, 0x40, 0x5d, 0x3a, 0x2e, 0xa7, +0x96, 0x39, 0x3f, 0xf4, 0x2d, 0xe9, 0x99, 0xf4, +0xba, 0xb4, 0x15, 0x8e, 0x40, 0x11, 0x8d, 0x51, +0xbc, 0x96, 0x6a, 0x51, 0x95, 0xd0, 0xa3, 0x01, +0xa4, 0x22, 0x19, 0x1e, 0x1e, 0xfe, 0xcf, 0xa1, +0xa1, 0xa1, 0x4f, 0x58, 0xa7, 0x4a, 0xa4, 0xda, +0xd8, 0xbb, 0x2a, 0x90, 0x78, 0xe1, 0x85, 0x17, +0x9e, 0x3b, 0x7e, 0xfc, 0xf8, 0xab, 0x42, 0x08, +0x51, 0xb8, 0x6e, 0x51, 0x9c, 0xfa, 0x61, 0x92, +0x25, 0x32, 0x2a, 0xd0, 0x1f, 0x55, 0x11, 0x01, +0xc1, 0xd8, 0xd8, 0xd8, 0xf9, 0x37, 0xde, 0x78, +0x63, 0xd3, 0x05, 0x12, 0x6b, 0x86, 0x40, 0x95, +0x2f, 0xf0, 0xb6, 0x91, 0x72, 0xac, 0x66, 0x8b, +0x95, 0xd3, 0xa7, 0x4f, 0x7f, 0xd2, 0xde, 0xde, +0xde, 0x76, 0xe4, 0xc8, 0x91, 0x97, 0xf4, 0x07, +0x55, 0xa1, 0xc4, 0x24, 0xc5, 0x11, 0xab, 0xca, +0xbf, 0xde, 0x5f, 0x91, 0x6d, 0x12, 0xf5, 0x21, +0x89, 0x50, 0x04, 0xb3, 0xb3, 0xb3, 0x63, 0x6f, +0xbd, 0xf5, 0xd6, 0x6f, 0x58, 0x5b, 0x1e, 0xe3, +0x2f, 0x94, 0x6a, 0xac, 0x44, 0x06, 0x1a, 0x2f, +0x92, 0x7a, 0xf1, 0xc5, 0x17, 0x9f, 0x3f, 0x76, +0xec, 0xd8, 0xcf, 0x35, 0x4d, 0xd3, 0x9d, 0x8c, +0x43, 0xf1, 0xa2, 0x85, 0x53, 0xdf, 0x2d, 0x6c, +0x99, 0x28, 0x7d, 0x12, 0xa5, 0xd7, 0x1d, 0xbd, +0x23, 0x23, 0x23, 0xc3, 0x6f, 0xbe, 0xf9, 0xe6, +0x6f, 0x0d, 0xc3, 0xd8, 0xba, 0x22, 0x29, 0x68, +0xbc, 0x4c, 0x6e, 0xff, 0xfe, 0xfd, 0x7b, 0x5f, +0x79, 0xe5, 0x95, 0xbf, 0x8e, 0x44, 0x22, 0xcd, +0x58, 0x60, 0x4f, 0x39, 0xd8, 0xd3, 0xce, 0x7d, +0x61, 0x83, 0x48, 0x08, 0x64, 0xbf, 0x40, 0x44, +0xc0, 0x71, 0x1c, 0xfb, 0xb3, 0xcf, 0x3e, 0x3b, +0x75, 0xe2, 0xc4, 0x89, 0xad, 0x2f, 0x93, 0x2b, +0x7f, 0xd8, 0x60, 0xa1, 0x64, 0x57, 0x57, 0x57, +0xdf, 0x6b, 0xaf, 0xbd, 0xf6, 0xab, 0xed, 0xdb, +0xb7, 0x0f, 0x00, 0x60, 0x82, 0x7d, 0xc3, 0xc1, +0x9e, 0xa1, 0x86, 0xdb, 0xb9, 0x0b, 0xc3, 0xa3, +0xb8, 0x86, 0x37, 0xbb, 0xaf, 0xb3, 0xd9, 0xec, +0x9d, 0x0f, 0x3e, 0xf8, 0xe0, 0xdf, 0x4e, 0x9f, +0x3e, 0xfd, 0xdf, 0xb8, 0x45, 0x92, 0xf3, 0xb8, +0x5e, 0xbf, 0x56, 0x2d, 0xc0, 0xdd, 0x15, 0x4a, +0x96, 0x6f, 0xa8, 0x5f, 0x2a, 0x1b, 0xc6, 0xdd, +0x7f, 0x2f, 0x97, 0xca, 0x1e, 0x3d, 0x7a, 0xf4, +0xe0, 0xb1, 0x63, 0xc7, 0x5e, 0x6a, 0x6d, 0x6d, +0xed, 0x01, 0xa0, 0x00, 0xce, 0x82, 0xdb, 0x3c, +0xe7, 0x0e, 0x9b, 0x03, 0x23, 0x0c, 0xa2, 0xc5, +0x55, 0xa2, 0xee, 0x5b, 0xa6, 0x69, 0xe6, 0x87, +0x87, 0x87, 0x7f, 0xff, 0xee, 0xbb, 0xef, 0x7e, +0x98, 0xcd, 0x66, 0xbd, 0x52, 0xd9, 0x25, 0x2a, +0x67, 0x7c, 0x5b, 0x57, 0x2a, 0x5b, 0x07, 0x84, +0x7a, 0xc5, 0xd2, 0x4d, 0xb8, 0x43, 0x23, 0xf1, +0xf2, 0xcb, 0x2f, 0x3f, 0xfd, 0xf4, 0xd3, 0x4f, +0xbf, 0x18, 0x8f, 0xc7, 0xcb, 0xc5, 0xd2, 0x58, +0xa5, 0xa6, 0x1a, 0xe0, 0x98, 0x62, 0xf5, 0x44, +0x80, 0x4d, 0xf9, 0x14, 0x81, 0x08, 0x38, 0xee, +0xff, 0x71, 0x5c, 0x88, 0x4b, 0x52, 0x2c, 0x16, +0xcd, 0x8b, 0x17, 0x2f, 0x7e, 0xfe, 0xce, 0x3b, +0xef, 0xbc, 0x37, 0x3b, 0x3b, 0x7b, 0xab, 0xf4, +0x4b, 0x77, 0x4a, 0xea, 0xef, 0xf5, 0xad, 0x2f, +0x96, 0x5e, 0x07, 0x04, 0xff, 0x01, 0x09, 0xef, +0x8c, 0x40, 0xb4, 0xd4, 0xfc, 0x38, 0x10, 0x7b, +0xec, 0xb1, 0xc7, 0x1e, 0x3a, 0x74, 0xe8, 0xd0, +0xc1, 0x1d, 0x3b, 0x76, 0x3c, 0x92, 0x48, 0x24, +0x36, 0x55, 0x2e, 0x6f, 0x18, 0x46, 0x76, 0x62, +0x62, 0xe2, 0xca, 0x85, 0x0b, 0x17, 0xbe, 0xfe, +0xf8, 0xe3, 0x8f, 0xbf, 0x5e, 0x5e, 0x5e, 0xf6, +0x9c, 0x9b, 0xd7, 0xdb, 0xdf, 0x5f, 0xb9, 0x7c, +0xf9, 0xe6, 0xf5, 0x0f, 0x4c, 0x78, 0x8c, 0xa8, +0x79, 0x60, 0x62, 0x60, 0x60, 0xa0, 0x67, 0xff, +0xfe, 0xfd, 0x03, 0xf1, 0x78, 0x3c, 0x11, 0x8b, +0xc5, 0x9a, 0xc2, 0xe1, 0x70, 0x3c, 0x12, 0x89, +0xc4, 0x54, 0x55, 0x55, 0xb3, 0xd9, 0xec, 0xf2, +0xf2, 0xf2, 0x72, 0x7a, 0x65, 0x65, 0x25, 0x9d, +0xc9, 0x64, 0x16, 0xa7, 0xa6, 0xa6, 0xa6, 0x3f, +0xf9, 0xe4, 0x93, 0x4b, 0x85, 0x42, 0x61, 0xbd, +0x03, 0x13, 0x7e, 0xc3, 0x2b, 0x4e, 0x8e, 0x34, +0x6a, 0xfc, 0xa6, 0x01, 0xf0, 0x81, 0x00, 0x77, +0x7f, 0x64, 0xc6, 0xbf, 0x51, 0xe9, 0xcd, 0x44, +0xbd, 0x3c, 0x44, 0x39, 0x1d, 0xc7, 0xea, 0x71, +0x99, 0x6a, 0xad, 0x7b, 0x64, 0x86, 0x75, 0xbc, +0x7d, 0x5d, 0x7b, 0x7e, 0xa0, 0x43, 0x53, 0xfe, +0x93, 0x63, 0x50, 0x39, 0xfd, 0xf6, 0x40, 0xf8, +0x5e, 0x0e, 0x4d, 0xdd, 0xd3, 0xc1, 0xc9, 0x7b, +0x38, 0x36, 0x57, 0xbd, 0x57, 0x57, 0xbd, 0x27, +0xe1, 0xe9, 0x86, 0xc7, 0xe6, 0xb8, 0x07, 0xe3, +0xe1, 0x1e, 0x01, 0x80, 0x0a, 0x10, 0xa0, 0x92, +0x11, 0xfe, 0x9d, 0xe6, 0x46, 0x0e, 0x4e, 0xfa, +0x75, 0xc3, 0x83, 0x93, 0xdc, 0xa3, 0xe1, 0xe5, +0x06, 0xff, 0x7f, 0x3f, 0x3a, 0xbb, 0x65, 0x00, +0x54, 0xfc, 0xe8, 0x16, 0x1e, 0x9e, 0xf6, 0x5d, +0xdd, 0x17, 0xff, 0x57, 0x0f, 0x4f, 0xff, 0xa9, +0xca, 0xff, 0x02, 0x5b, 0x77, 0x7a, 0xf1, 0x13, +0x58, 0xf2, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x49, +0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, +}; + +#endif + diff --git a/source/bitmaps/misc/activity3.png b/source/bitmaps/misc/activity3.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e18384747c2b9876ba755e0117a463ce6cd873 GIT binary patch literal 4247 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 literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/activity4.cpp b/source/bitmaps/misc/activity4.cpp new file mode 100644 index 0000000..101d580 --- /dev/null +++ b/source/bitmaps/misc/activity4.cpp @@ -0,0 +1,538 @@ +#include + +#ifndef MISC_ACTIVITY4_CPP +#define MISC_ACTIVITY4_CPP + +static unsigned char misc_activity4_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x0f, 0xff, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0x6d, +0x6c, 0x5c, 0x55, 0x7a, 0xc7, 0x7f, 0xe7, 0xdc, +0x97, 0x79, 0xf5, 0xd8, 0xe3, 0x77, 0xc7, 0xb1, +0xe3, 0x24, 0x10, 0x9c, 0x25, 0x89, 0x93, 0x25, +0x01, 0x42, 0x02, 0x24, 0x0a, 0x5d, 0x02, 0x52, +0x9b, 0x14, 0x55, 0x6a, 0x85, 0xe8, 0x7e, 0xd8, +0x52, 0x5a, 0x55, 0xaa, 0x0a, 0xaa, 0xda, 0x2f, +0xd5, 0x7e, 0xec, 0xa7, 0x82, 0xb4, 0x52, 0x45, +0xd3, 0x6a, 0x57, 0xed, 0x17, 0x28, 0x7c, 0x40, +0x5d, 0x96, 0x10, 0xd8, 0xae, 0xd3, 0x2e, 0xca, +0xc2, 0x86, 0x92, 0x35, 0xd9, 0x2c, 0x34, 0x09, +0x98, 0x38, 0xaf, 0x4e, 0xe2, 0xb1, 0x13, 0x67, +0x3c, 0xce, 0xcc, 0xdc, 0xf7, 0x7e, 0xb8, 0x73, +0x67, 0xee, 0x4c, 0xc6, 0xce, 0x4c, 0xec, 0x40, +0xab, 0x3e, 0xd2, 0xe3, 0xeb, 0x99, 0xb9, 0x73, +0xe7, 0x3c, 0xff, 0xe7, 0x7f, 0x9e, 0x73, 0xce, +0x73, 0x9e, 0x23, 0x3c, 0xcf, 0xe3, 0x6e, 0x8a, +0x10, 0x42, 0x2c, 0xf4, 0x51, 0x9d, 0xf7, 0x6e, +0x69, 0x8c, 0x77, 0x97, 0x1b, 0xa8, 0xde, 0x8d, +0x87, 0xd6, 0x18, 0x2d, 0x16, 0xb8, 0x2e, 0x24, +0x5e, 0xf8, 0x5a, 0x8b, 0xdf, 0x72, 0x03, 0x22, +0x96, 0xeb, 0x79, 0x75, 0x8c, 0x16, 0x35, 0xff, +0xcb, 0x3a, 0xef, 0x85, 0x25, 0x6c, 0xf8, 0x62, +0xea, 0xdf, 0xb4, 0x4c, 0x0d, 0x5f, 0x32, 0x03, +0x16, 0x30, 0x5c, 0x86, 0xae, 0xf5, 0x54, 0x50, +0x0d, 0x42, 0x60, 0x8c, 0x5b, 0xfa, 0xdf, 0x5d, +0x40, 0xcb, 0x40, 0x04, 0x3f, 0xbb, 0x54, 0x20, +0x96, 0x04, 0x40, 0xc8, 0xf8, 0x5a, 0xa3, 0x95, +0x90, 0xaa, 0x25, 0x55, 0x6a, 0xb4, 0x96, 0x05, +0x61, 0x43, 0x6d, 0xc0, 0xa9, 0x73, 0x75, 0xa8, +0x01, 0x63, 0xa9, 0x40, 0xdc, 0x51, 0x17, 0xa8, +0x31, 0xbc, 0xd6, 0x68, 0x15, 0xd0, 0x42, 0xaa, +0x97, 0x34, 0x78, 0x1d, 0x00, 0x12, 0x66, 0x42, +0xe0, 0xf5, 0xc0, 0x58, 0xab, 0xa4, 0x66, 0xcd, +0x35, 0xd0, 0x7a, 0x60, 0xdc, 0x11, 0x08, 0x4d, +0x33, 0x20, 0x64, 0x7c, 0x60, 0x40, 0xd8, 0xcb, +0x3a, 0x10, 0x29, 0x69, 0xb4, 0xa4, 0xb1, 0xd0, +0xeb, 0x00, 0x8c, 0x80, 0x11, 0x01, 0x00, 0x61, +0xcf, 0x07, 0x06, 0x1b, 0x25, 0x2d, 0x02, 0x85, +0xd2, 0xb5, 0x58, 0x7a, 0x2f, 0x00, 0x24, 0x60, +0x86, 0x4b, 0x89, 0x0d, 0xcd, 0x82, 0xd0, 0x14, +0x00, 0x25, 0xe3, 0x03, 0x0d, 0x3c, 0x1e, 0x78, +0x39, 0x30, 0x38, 0x0e, 0x24, 0x42, 0x1a, 0x07, +0xe2, 0xdd, 0xdd, 0xdd, 0xfd, 0xfd, 0xfd, 0xfd, +0xc3, 0xd1, 0x68, 0xb4, 0x3d, 0x1a, 0x8d, 0xb6, +0xe9, 0xba, 0x9e, 0xd2, 0x75, 0x3d, 0x25, 0xa5, +0xd4, 0x4c, 0xd3, 0xcc, 0x99, 0xa6, 0x39, 0x67, +0x18, 0xc6, 0x0d, 0xc3, 0x30, 0x66, 0x6f, 0xdc, +0xb8, 0x71, 0xe9, 0xcc, 0x99, 0x33, 0xa7, 0x5c, +0xd7, 0xbd, 0x09, 0xe4, 0x81, 0x9b, 0x21, 0xcd, +0x87, 0x00, 0x31, 0x6a, 0x81, 0x68, 0xb6, 0x4b, +0x34, 0xdc, 0x05, 0x42, 0xc6, 0x07, 0x74, 0x0f, +0x3c, 0x1e, 0x78, 0x39, 0x01, 0xb4, 0x94, 0x34, +0x05, 0xb4, 0x0c, 0x0e, 0x0e, 0xde, 0x37, 0x30, +0x30, 0xb0, 0xb5, 0xb3, 0xb3, 0xf3, 0xfe, 0x78, +0x3c, 0xde, 0xd3, 0xd0, 0x0f, 0x95, 0xc4, 0xb6, +0xed, 0xfc, 0xec, 0xec, 0xec, 0x17, 0x57, 0xaf, +0x5e, 0x3d, 0x3e, 0x3e, 0x3e, 0xfe, 0x6b, 0xc3, +0x30, 0xae, 0x01, 0x73, 0x40, 0xae, 0xa4, 0xf3, +0x54, 0xc0, 0x08, 0x18, 0x11, 0xee, 0x16, 0x0d, +0x81, 0xd0, 0x10, 0x00, 0x75, 0x8c, 0xd7, 0xf0, +0x69, 0x1d, 0x03, 0x92, 0x25, 0xa3, 0xdb, 0x80, +0x56, 0xa0, 0x7d, 0xf3, 0xe6, 0xcd, 0x8f, 0xad, +0x5d, 0xbb, 0x76, 0x6f, 0x34, 0x1a, 0xed, 0x08, +0x9e, 0xa1, 0x58, 0x2a, 0xe9, 0x4c, 0x3b, 0xd1, +0xf9, 0x18, 0x7a, 0x51, 0x47, 0x33, 0x74, 0xf4, +0x62, 0x04, 0xe9, 0x48, 0xac, 0xa8, 0x89, 0x19, +0x31, 0x31, 0xa3, 0x06, 0x66, 0xcc, 0xe0, 0x46, +0xf7, 0x2c, 0xc5, 0x44, 0xa1, 0xfc, 0xfb, 0xae, +0xeb, 0x5a, 0x57, 0xae, 0x5c, 0xf9, 0x78, 0x6c, +0x6c, 0xec, 0x60, 0x2e, 0x97, 0xbb, 0x0c, 0xcc, +0x02, 0xd9, 0x10, 0x20, 0x79, 0x2a, 0x5d, 0xc3, +0x6e, 0x06, 0x84, 0xdb, 0x02, 0x50, 0x63, 0x7c, +0x10, 0xe0, 0xa2, 0x54, 0x3c, 0xde, 0x0a, 0xb4, +0x03, 0xed, 0xc3, 0xc3, 0xc3, 0x0f, 0xaf, 0x5f, +0xbf, 0xfe, 0x77, 0x12, 0x89, 0x44, 0x1f, 0x80, +0x56, 0xd4, 0x49, 0x5f, 0x6d, 0x27, 0x7d, 0xb9, +0x93, 0xd4, 0x4c, 0x2b, 0xc2, 0xbd, 0xdd, 0x1c, +0xa8, 0x22, 0x85, 0x96, 0x3c, 0xb3, 0x2b, 0xae, +0x31, 0xdb, 0x77, 0x8d, 0x9b, 0x6d, 0xf3, 0x00, +0x38, 0x8e, 0x63, 0x5c, 0xbc, 0x78, 0xf1, 0xe7, +0xc7, 0x8e, 0x1d, 0x3b, 0x64, 0x18, 0xc6, 0x14, +0x70, 0xbd, 0x04, 0xc6, 0x1c, 0x7e, 0xf7, 0x28, +0x94, 0x80, 0x68, 0x18, 0x84, 0x45, 0x01, 0x58, +0xc0, 0xf8, 0x80, 0xee, 0xad, 0x40, 0x1a, 0xe8, +0x6c, 0x6d, 0x6d, 0x1d, 0x7a, 0xfc, 0xf1, 0xc7, +0x9f, 0x6f, 0x6b, 0x6b, 0x5b, 0xe7, 0x1b, 0xae, +0xd1, 0x77, 0x6a, 0x25, 0x1d, 0x17, 0xba, 0x10, +0x5e, 0xe3, 0x46, 0x2f, 0x24, 0xf9, 0xd6, 0x9b, +0x4c, 0x6e, 0xb8, 0x40, 0xae, 0x6b, 0x0e, 0x00, +0xcb, 0xb2, 0x72, 0x27, 0x4e, 0x9c, 0x78, 0xed, +0xe4, 0xc9, 0x93, 0x47, 0x81, 0x19, 0xe0, 0x1a, +0x3e, 0x23, 0xc2, 0x6c, 0x68, 0x08, 0x84, 0x05, +0x01, 0xa8, 0x43, 0x7b, 0x9d, 0x0a, 0xe5, 0xdb, +0x80, 0x0e, 0xa0, 0x6b, 0x70, 0x70, 0x70, 0x64, +0xfb, 0xf6, 0xed, 0x2f, 0x44, 0xa3, 0xd1, 0x36, +0x69, 0x4b, 0xba, 0xc6, 0xfb, 0xe8, 0xfa, 0xaa, +0x07, 0xe9, 0xc8, 0x25, 0x1b, 0x5e, 0x2b, 0xb9, +0x9e, 0x2c, 0x57, 0xee, 0xbf, 0x44, 0x31, 0x55, +0x00, 0x70, 0xbf, 0xfc, 0xf2, 0xcb, 0x43, 0x47, +0x8f, 0x1e, 0x7d, 0x1b, 0xc8, 0xe0, 0x03, 0x31, +0xcb, 0xad, 0x20, 0x38, 0xf8, 0xf6, 0x37, 0x0e, +0x40, 0xcd, 0x50, 0x57, 0xcf, 0xf8, 0x2e, 0xa0, +0x7b, 0x64, 0x64, 0x64, 0xcf, 0xc8, 0xc8, 0xc8, +0xb3, 0x8a, 0xa2, 0xe8, 0xb1, 0xd9, 0x38, 0x03, +0xff, 0x35, 0x84, 0x5a, 0xd4, 0x96, 0xcf, 0xe2, +0xba, 0x2d, 0x86, 0xe9, 0xe1, 0xab, 0x4c, 0xdf, +0x37, 0x05, 0xc0, 0xd4, 0xd4, 0xd4, 0xd8, 0xe8, +0xe8, 0xe8, 0x8f, 0x2c, 0xcb, 0xba, 0x0c, 0x4c, +0xe3, 0x77, 0x8b, 0x39, 0x6e, 0x65, 0x42, 0x5d, +0x10, 0x16, 0x03, 0x20, 0x18, 0xea, 0x02, 0xda, +0x27, 0x29, 0x51, 0x1e, 0xe8, 0xdd, 0xb1, 0x63, +0xc7, 0x33, 0xeb, 0xd6, 0xad, 0xdb, 0x2f, 0x84, +0x10, 0xa9, 0x8b, 0x6d, 0xf4, 0x1c, 0x5f, 0xd1, +0x54, 0x1f, 0x5f, 0xaa, 0xe4, 0x56, 0xcc, 0x71, +0xf5, 0x81, 0x49, 0x3c, 0xc5, 0x65, 0x6e, 0x6e, +0xee, 0xec, 0xc1, 0x83, 0x07, 0xff, 0xce, 0x30, +0x8c, 0x4b, 0xf8, 0x6c, 0x08, 0x83, 0x50, 0x0e, +0x8c, 0x0d, 0x01, 0x50, 0x43, 0xfd, 0x20, 0xda, +0x87, 0x3d, 0xdf, 0xbb, 0x71, 0xe3, 0xc6, 0xdd, +0x0f, 0x3d, 0xf4, 0xd0, 0xf3, 0x80, 0xe8, 0xf8, +0xbc, 0x8b, 0xd6, 0xaf, 0xda, 0xef, 0x9a, 0xa1, +0x8b, 0x89, 0xd9, 0x6a, 0x70, 0xf5, 0xe1, 0x4b, +0xd8, 0x31, 0x9b, 0x4c, 0x26, 0x73, 0xe2, 0x9d, +0x77, 0xde, 0xf9, 0x7b, 0xe0, 0x32, 0x15, 0x10, +0x72, 0xf8, 0x81, 0xb1, 0x3c, 0x44, 0xd6, 0x82, +0x50, 0xd5, 0x51, 0x6b, 0xa6, 0xb8, 0xc1, 0x58, +0x1f, 0x44, 0xfc, 0x56, 0xa0, 0x63, 0x60, 0x60, +0xe0, 0xfe, 0x6d, 0xdb, 0xb6, 0x7d, 0x57, 0x08, +0x21, 0xd2, 0xa7, 0x3b, 0x48, 0x9e, 0x69, 0xc5, +0x11, 0xce, 0x37, 0xa2, 0xca, 0x9c, 0x4a, 0xf7, +0xd1, 0x15, 0x48, 0x47, 0xa1, 0xa7, 0xa7, 0x67, +0x64, 0xd7, 0xae, 0x5d, 0xbf, 0x87, 0xef, 0xa4, +0x34, 0xfe, 0x08, 0x15, 0xc3, 0xef, 0xbe, 0xe5, +0x59, 0x67, 0x6d, 0x7e, 0xa2, 0xde, 0x4c, 0xb0, +0x5e, 0xe0, 0x6b, 0x01, 0xd2, 0xa9, 0x54, 0x6a, +0x60, 0xf7, 0xee, 0xdd, 0x7f, 0xaa, 0x69, 0x5a, +0x24, 0x36, 0x19, 0x27, 0x39, 0xde, 0x8a, 0x2b, +0xdd, 0xe6, 0x5d, 0x07, 0x08, 0x29, 0x50, 0xa3, +0x2a, 0x6a, 0x44, 0xc5, 0x36, 0x6c, 0xac, 0x82, +0x55, 0x27, 0x1d, 0x72, 0x7b, 0x51, 0x6e, 0xaa, +0x74, 0x7c, 0xda, 0xcd, 0xf5, 0x87, 0x32, 0xac, +0x5b, 0xb7, 0xee, 0xc9, 0x6c, 0x36, 0x3b, 0x79, +0xfc, 0xf8, 0xf1, 0x9f, 0x51, 0x7f, 0xa6, 0x58, +0xb5, 0xa4, 0x86, 0xc5, 0x01, 0x50, 0xf1, 0xe9, +0x9f, 0xc0, 0x9f, 0xd9, 0xb5, 0xef, 0xd9, 0xb3, +0xe7, 0xbb, 0xf1, 0x78, 0xbc, 0x43, 0xcd, 0x6a, +0xb4, 0xfc, 0x3a, 0x8d, 0x23, 0x9d, 0xa6, 0x1a, +0x2b, 0x55, 0x49, 0xac, 0x35, 0x4a, 0xa2, 0x2b, +0x41, 0x3c, 0x1d, 0x47, 0x4f, 0x68, 0xe8, 0x71, +0x1d, 0x2d, 0xa6, 0xa1, 0xc5, 0x34, 0xac, 0x82, +0xc5, 0xd5, 0x93, 0x53, 0x4c, 0x9d, 0xca, 0xe0, +0xda, 0xf5, 0x81, 0x55, 0x34, 0x05, 0xf0, 0x70, +0xac, 0xca, 0xe7, 0x5a, 0x46, 0xa7, 0xe5, 0x74, +0x2b, 0xf3, 0xdf, 0x9a, 0x13, 0x5b, 0x1f, 0xd8, +0xfa, 0xdc, 0xc4, 0xc4, 0xc4, 0xe9, 0x6c, 0x36, +0x9b, 0xa7, 0x7a, 0xed, 0x10, 0x04, 0x43, 0x11, +0x5e, 0x33, 0x94, 0xbb, 0xc0, 0xed, 0x86, 0xbd, +0xb5, 0x6b, 0xd7, 0x6e, 0xe8, 0xe9, 0xe9, 0x19, +0x11, 0x9e, 0xa0, 0xe5, 0x57, 0x6d, 0x78, 0xae, +0x8b, 0x2b, 0x9c, 0x86, 0xd4, 0x93, 0x0e, 0x7a, +0xab, 0x46, 0x4b, 0x7f, 0x82, 0x78, 0x77, 0x0c, +0x2d, 0xa9, 0x22, 0x74, 0x90, 0xba, 0x40, 0x46, +0x04, 0x32, 0x22, 0x51, 0x63, 0x0a, 0xa9, 0x95, +0x2d, 0x6c, 0xd8, 0xff, 0x2d, 0x76, 0xff, 0xd5, +0x63, 0xac, 0xd9, 0x35, 0x84, 0x27, 0xab, 0x9f, +0x23, 0x74, 0xd8, 0xfd, 0xd7, 0x8f, 0xa1, 0xc4, +0x95, 0x5b, 0x7e, 0x23, 0xfa, 0x55, 0x1c, 0xfd, +0x5a, 0x04, 0x55, 0x53, 0x23, 0x3b, 0x77, 0xee, +0xdc, 0x4f, 0xa5, 0x1b, 0xc4, 0x4b, 0x8e, 0x0c, +0xaf, 0x40, 0x2b, 0x4e, 0x59, 0xc4, 0xfb, 0x55, +0x00, 0x6c, 0xdb, 0xb6, 0xed, 0x77, 0x15, 0x45, +0x11, 0xd1, 0x0b, 0x71, 0x28, 0x08, 0x1c, 0xe9, +0x36, 0xa4, 0xae, 0xe2, 0xa1, 0xb4, 0x68, 0x28, +0x09, 0x05, 0x74, 0x01, 0x11, 0x81, 0x88, 0x48, +0x5f, 0x75, 0x5f, 0x65, 0x54, 0x22, 0x23, 0x12, +0x19, 0x51, 0x90, 0x11, 0x49, 0xbc, 0x2b, 0xce, +0x96, 0x3f, 0x18, 0x61, 0xe7, 0x9f, 0xef, 0x40, +0xc6, 0x15, 0x1c, 0xe9, 0x42, 0x44, 0xf0, 0x9d, +0xef, 0x3f, 0xc1, 0xd0, 0xf6, 0x55, 0x38, 0xa2, +0xfe, 0x6f, 0x45, 0x4f, 0x25, 0x90, 0x52, 0x32, +0x38, 0x38, 0xf8, 0xf0, 0x8a, 0x15, 0x2b, 0xd6, +0xe0, 0x33, 0x37, 0x51, 0x02, 0x40, 0xa3, 0x4e, +0x2c, 0x50, 0x6b, 0xbc, 0x5f, 0x4b, 0xff, 0x38, +0x90, 0xda, 0xb4, 0x69, 0xd3, 0x03, 0x9d, 0x9d, +0x9d, 0xf7, 0x08, 0x4b, 0xa0, 0x7d, 0x19, 0xc1, +0x15, 0x8d, 0x53, 0x5f, 0x51, 0x15, 0x50, 0x3d, +0xd0, 0x40, 0x94, 0xd4, 0xf5, 0x1c, 0xae, 0x5d, +0x98, 0xc1, 0x36, 0x1d, 0x5c, 0xc7, 0x25, 0x91, +0x8e, 0xd3, 0xda, 0x97, 0x62, 0xe0, 0xdb, 0x03, +0x28, 0x11, 0xc5, 0x57, 0x5d, 0x61, 0xf5, 0xf6, +0x21, 0xba, 0xee, 0xed, 0xe4, 0xf0, 0x0f, 0x7e, +0xce, 0xa3, 0x7f, 0xbc, 0x83, 0xd5, 0x0f, 0xae, +0xc2, 0xf3, 0x28, 0x7b, 0xbd, 0x56, 0x44, 0x56, +0xa0, 0x4d, 0xea, 0xd8, 0x2b, 0x2d, 0xe5, 0x91, +0x47, 0x1e, 0xd9, 0xff, 0xd6, 0x5b, 0x6f, 0x4d, +0xe0, 0xcf, 0x10, 0xe7, 0xa9, 0x2c, 0x9a, 0x82, +0x05, 0x13, 0x65, 0x00, 0x6a, 0x18, 0x11, 0x8c, +0xfd, 0xe5, 0xf9, 0xfe, 0xc8, 0xc8, 0xc8, 0x53, +0x52, 0x4a, 0x94, 0x33, 0x3a, 0xae, 0xed, 0x81, +0x6c, 0x3c, 0x5a, 0x49, 0x5d, 0xc1, 0x2b, 0xa5, +0x42, 0x1c, 0xe9, 0x31, 0x3b, 0x75, 0x83, 0xdc, +0xf4, 0x3c, 0xae, 0x53, 0xe9, 0xc3, 0xd7, 0xae, +0x5c, 0x87, 0x93, 0x70, 0xfa, 0x97, 0xe3, 0xac, +0xdb, 0x79, 0x2f, 0x23, 0xbf, 0xbd, 0x11, 0x25, +0xaa, 0xa2, 0x44, 0x15, 0xba, 0xee, 0xe9, 0xe2, +0x0f, 0x7f, 0xf8, 0x2c, 0x6a, 0x44, 0x45, 0x48, +0x81, 0xe7, 0x7a, 0xfe, 0x28, 0xb0, 0x40, 0xf0, +0x55, 0x4e, 0x47, 0x70, 0xfb, 0x1d, 0xfa, 0xfa, +0xfa, 0x46, 0xfa, 0xfb, 0xfb, 0x87, 0x26, 0x27, +0x27, 0x83, 0x85, 0x93, 0x4e, 0x65, 0x62, 0x14, +0x24, 0x61, 0xaa, 0x00, 0x08, 0x4f, 0x7e, 0x82, +0xc4, 0x46, 0x3c, 0x9d, 0x4e, 0xf7, 0xb4, 0xb7, +0xb7, 0x0f, 0xe1, 0x82, 0x38, 0x2f, 0x9b, 0xf2, +0xbe, 0xdf, 0x22, 0x05, 0xa1, 0x79, 0xe4, 0xe7, +0x6f, 0x52, 0xb8, 0x5c, 0xac, 0x18, 0x5e, 0x67, +0xce, 0x64, 0x14, 0x1d, 0x3e, 0x3b, 0xfc, 0x19, +0x99, 0x73, 0x53, 0x3c, 0xf5, 0x97, 0x4f, 0x12, +0x6f, 0x8b, 0xa2, 0x46, 0x15, 0xf4, 0x98, 0x86, +0xaa, 0xab, 0x08, 0x45, 0xe2, 0xda, 0x0e, 0x0e, +0xf5, 0x19, 0x00, 0x40, 0x11, 0x64, 0x46, 0xc1, +0x5b, 0xe1, 0x8a, 0xf5, 0xeb, 0xd7, 0x3f, 0x38, +0x39, 0x39, 0xf9, 0x25, 0xd5, 0xc3, 0x61, 0x39, +0x13, 0x25, 0x84, 0xa8, 0x8a, 0x01, 0xb5, 0xcb, +0xdd, 0x28, 0x10, 0xdf, 0xb4, 0x69, 0xd3, 0x56, +0x29, 0xa5, 0x10, 0xd7, 0x15, 0x1c, 0xc7, 0xc1, +0x91, 0x8d, 0xab, 0xab, 0xba, 0xb8, 0xaa, 0x47, +0x6e, 0x6e, 0x9e, 0xb9, 0x6c, 0x0e, 0xcb, 0xb3, +0x1a, 0xfa, 0xde, 0xe5, 0x89, 0x2b, 0xfc, 0xdb, +0xdf, 0xbe, 0x0d, 0x52, 0xa0, 0xe8, 0xfe, 0x50, +0xa9, 0xc7, 0x75, 0xf4, 0xb8, 0x86, 0x1a, 0x51, +0x4b, 0x0c, 0x58, 0x58, 0x99, 0x12, 0x48, 0x29, +0x19, 0x18, 0x18, 0xd8, 0x88, 0xcf, 0xe2, 0x00, +0x80, 0x5b, 0x02, 0xa1, 0xba, 0x40, 0xff, 0x0f, +0x00, 0x88, 0x0d, 0x0c, 0x0c, 0x6c, 0x14, 0x42, +0xe0, 0x5e, 0xf5, 0x70, 0x45, 0x73, 0x03, 0xb5, +0x94, 0x92, 0x62, 0xb1, 0xe4, 0xf5, 0x26, 0x66, +0xc9, 0x8a, 0xa6, 0xf0, 0xd8, 0xf7, 0x1e, 0x45, +0xd5, 0x15, 0xa4, 0x2a, 0x51, 0x34, 0xc5, 0xef, +0x02, 0x42, 0xe0, 0x98, 0x01, 0x03, 0x16, 0x99, +0x7f, 0x4c, 0x81, 0xe6, 0x09, 0xd2, 0xe9, 0xf4, +0x60, 0x3a, 0x9d, 0xee, 0x9c, 0x9d, 0x9d, 0x9d, +0xaa, 0x01, 0x40, 0x52, 0x5a, 0x1f, 0x2c, 0xc6, +0x00, 0x3d, 0x16, 0x8b, 0xa5, 0xba, 0xbb, 0xba, +0xd7, 0x4a, 0x29, 0xb1, 0x33, 0x6e, 0x53, 0xde, +0x77, 0xa4, 0x83, 0x8d, 0xdd, 0xb0, 0xd7, 0xcb, +0xde, 0xd3, 0x61, 0xef, 0x5f, 0x7c, 0x87, 0xa1, +0xcd, 0xab, 0x40, 0x0a, 0x10, 0xa5, 0x8c, 0xa9, +0xe3, 0x62, 0x5b, 0x36, 0x8e, 0xed, 0x60, 0x0b, +0x7b, 0xf1, 0xe7, 0xb8, 0x0e, 0xde, 0x75, 0x90, +0x52, 0x8a, 0xcd, 0x9b, 0x37, 0x7f, 0x1b, 0xbf, +0x3b, 0xd7, 0x67, 0x40, 0xc8, 0xf8, 0x70, 0x0c, +0x50, 0x01, 0x7d, 0xf5, 0xea, 0xd5, 0x83, 0x8a, +0xaa, 0x68, 0x6e, 0xce, 0xc5, 0x31, 0x9c, 0xa6, +0xbc, 0x58, 0x05, 0x6b, 0x83, 0xa2, 0xa8, 0x0a, +0xbf, 0xf5, 0xc2, 0x1e, 0x06, 0x37, 0x0c, 0xe0, +0xe1, 0xe1, 0x79, 0x2e, 0xae, 0xe3, 0xe2, 0xd8, +0x0e, 0x66, 0xd1, 0xc3, 0x73, 0x3d, 0x2c, 0xd3, +0xc6, 0xf1, 0x6e, 0xc3, 0x00, 0xc0, 0x99, 0x71, +0x51, 0x7b, 0x14, 0xba, 0xba, 0xba, 0x56, 0x51, +0x19, 0x06, 0x6b, 0x93, 0xb1, 0x75, 0x47, 0x81, +0x72, 0x37, 0x68, 0x6b, 0x6b, 0xeb, 0x94, 0x52, +0xe2, 0x18, 0x2e, 0x6e, 0x93, 0xb3, 0xbe, 0x3b, +0x11, 0x45, 0x93, 0x1c, 0x79, 0xeb, 0x17, 0x1c, +0x79, 0xeb, 0x17, 0xe0, 0xe1, 0x03, 0xe0, 0x7a, +0x78, 0x8e, 0x8b, 0xeb, 0x95, 0xae, 0xae, 0x87, +0x65, 0x5b, 0xb7, 0xce, 0x60, 0x6a, 0xc4, 0x35, +0x24, 0x52, 0x4a, 0xe2, 0xf1, 0x78, 0x2b, 0x0b, +0x18, 0x0f, 0x88, 0x7a, 0xa3, 0x40, 0x39, 0xe9, +0xd9, 0xd2, 0xd2, 0x92, 0x16, 0x42, 0xe0, 0x16, +0x5d, 0x9c, 0x66, 0xa3, 0xff, 0x1d, 0x88, 0x63, +0x3a, 0x14, 0xaf, 0x15, 0x6f, 0x7f, 0x63, 0x03, +0xac, 0xb2, 0x0d, 0x81, 0x10, 0x82, 0x58, 0x2c, +0x96, 0xa2, 0x62, 0x7c, 0xed, 0xce, 0x54, 0x55, +0x17, 0x08, 0xae, 0xc1, 0x4d, 0x4a, 0x32, 0x99, +0x6c, 0x95, 0x52, 0xe2, 0x9a, 0xee, 0x1d, 0x2f, +0x7a, 0xbe, 0x29, 0xb1, 0x0d, 0x07, 0x29, 0x65, +0x00, 0x40, 0xd5, 0xf0, 0x17, 0xbe, 0x4f, 0xa5, +0xda, 0xf8, 0x2a, 0x4d, 0x26, 0x93, 0xad, 0x42, +0x08, 0xac, 0xa2, 0xfd, 0xb5, 0x30, 0x60, 0x39, +0xc5, 0x35, 0x5c, 0x84, 0x10, 0x44, 0xa3, 0xd1, +0x04, 0xd5, 0x9e, 0xaf, 0x92, 0x45, 0x37, 0x46, +0x84, 0xf0, 0xc7, 0x53, 0x29, 0x25, 0x42, 0x7e, +0x7d, 0xd9, 0x9e, 0xe5, 0x10, 0x21, 0xfd, 0xb6, +0xdf, 0x2e, 0xeb, 0xad, 0xb2, 0xc8, 0xb6, 0x74, +0x3e, 0x9f, 0xcf, 0x0a, 0x21, 0xd0, 0x12, 0x2a, +0x52, 0x59, 0xfe, 0x24, 0xe7, 0xdd, 0x14, 0x35, +0xae, 0x20, 0x84, 0xc0, 0x30, 0x8c, 0x9b, 0xd4, +0xec, 0x21, 0x56, 0xdd, 0x57, 0xba, 0x86, 0x41, +0x08, 0x6e, 0x76, 0xca, 0x00, 0xc4, 0x34, 0x14, +0xa9, 0x7c, 0x1d, 0xed, 0x5e, 0x36, 0xd1, 0xe2, +0x7a, 0x00, 0xc0, 0x1c, 0xa1, 0xfd, 0x43, 0x16, +0x49, 0x88, 0x04, 0x1f, 0x96, 0x77, 0x69, 0x73, +0xb9, 0xdc, 0x75, 0x29, 0x25, 0x5a, 0xa2, 0x31, +0x00, 0x5a, 0xd2, 0x49, 0x5a, 0xd2, 0x2d, 0x48, +0x45, 0x22, 0xa4, 0x24, 0x48, 0x3e, 0x79, 0x9e, +0xff, 0xc7, 0xf3, 0x3c, 0x8a, 0x37, 0x8b, 0xcc, +0x5c, 0xbe, 0xb6, 0x0c, 0x26, 0x2e, 0x2e, 0x7a, +0x5c, 0x43, 0x4a, 0x89, 0x69, 0x9a, 0x73, 0x54, +0x6f, 0xa2, 0x56, 0x01, 0x51, 0x1b, 0x03, 0xaa, +0x76, 0x69, 0x67, 0x67, 0x67, 0xaf, 0x09, 0x21, +0x50, 0xe3, 0x2a, 0x8a, 0x72, 0x7b, 0x00, 0x76, +0xee, 0xdb, 0xc1, 0xee, 0xdf, 0xdf, 0x85, 0xa2, +0x2a, 0x78, 0x9e, 0x87, 0x65, 0x58, 0x98, 0x45, +0x13, 0x23, 0x6f, 0x60, 0x14, 0x0c, 0x6e, 0x4c, +0x67, 0xf9, 0xc9, 0x81, 0x83, 0x0d, 0x3d, 0x6b, +0xa9, 0xa2, 0x25, 0x34, 0x84, 0x10, 0xe4, 0xf3, +0xf9, 0x2c, 0x95, 0x8c, 0x50, 0x6d, 0x5a, 0xcc, +0x0b, 0x77, 0x81, 0x40, 0x83, 0x3d, 0x7a, 0x73, +0x62, 0x62, 0xe2, 0x82, 0xe7, 0x79, 0x96, 0x9e, +0xd2, 0x34, 0x35, 0xae, 0xe2, 0x16, 0x17, 0x1f, +0x0a, 0x55, 0x5d, 0x43, 0x8b, 0xf8, 0x2b, 0x37, +0xc7, 0x72, 0x70, 0x6c, 0xc7, 0x67, 0x82, 0x14, +0x14, 0xe6, 0x8b, 0xbc, 0xfb, 0xc3, 0xf7, 0xc8, +0x4e, 0x67, 0x91, 0xf2, 0xee, 0xc7, 0x93, 0x68, +0x77, 0x04, 0x29, 0x25, 0xd3, 0xd3, 0xd3, 0xe7, +0xb9, 0x75, 0x3b, 0xbd, 0x2e, 0x03, 0xc2, 0xf4, +0xb7, 0x00, 0x73, 0x7e, 0x7e, 0x7e, 0x6e, 0x7a, +0x7a, 0xfa, 0x4c, 0x5f, 0x5f, 0xdf, 0x70, 0xbc, +0x2f, 0x46, 0xe1, 0xc2, 0xe2, 0x93, 0x14, 0x55, +0x55, 0x90, 0x8a, 0x44, 0x51, 0x15, 0x1c, 0xcb, +0x29, 0xcd, 0xe6, 0x3c, 0x6e, 0xce, 0xe5, 0xf9, +0xc9, 0x3f, 0x1c, 0x24, 0x9b, 0xc9, 0x36, 0xe5, +0x7d, 0x21, 0x04, 0xaa, 0xa6, 0x60, 0x99, 0x76, +0x13, 0xa6, 0x83, 0x50, 0x05, 0xd1, 0xce, 0x08, +0x1e, 0x9e, 0xfb, 0xc9, 0x27, 0x9f, 0x8c, 0xe1, +0xe7, 0x06, 0xc3, 0x79, 0xc1, 0x72, 0x1c, 0x50, +0x3d, 0xcf, 0x0b, 0xca, 0x4c, 0x02, 0x00, 0x82, +0x22, 0x85, 0x22, 0x50, 0x38, 0x7b, 0xf6, 0xec, +0x6f, 0xfa, 0xfb, 0xfb, 0x87, 0x63, 0xbd, 0x51, +0xcc, 0x4b, 0xd6, 0xa2, 0x3f, 0x2c, 0xa5, 0xc4, +0x75, 0x5c, 0xcc, 0x82, 0x89, 0x6d, 0x39, 0x38, +0x8e, 0x8b, 0xe7, 0xb8, 0x5c, 0x3c, 0x75, 0xd1, +0x37, 0xbe, 0x89, 0x40, 0x2a, 0xa5, 0x24, 0x12, +0x8f, 0x60, 0x99, 0x16, 0x4a, 0x13, 0x09, 0x18, +0x80, 0x48, 0x8f, 0x8e, 0x54, 0x24, 0x33, 0x33, +0x33, 0x17, 0x67, 0x66, 0x66, 0x66, 0xea, 0x00, +0x50, 0x06, 0x21, 0xcc, 0xc5, 0x30, 0x03, 0xcc, +0xd2, 0x97, 0xf2, 0xc7, 0x8e, 0x1d, 0xfb, 0x15, +0xe0, 0x46, 0x3a, 0x75, 0x54, 0x5d, 0x41, 0x91, +0x72, 0x41, 0x15, 0x08, 0x2c, 0xc3, 0xc6, 0x2c, +0x5a, 0x58, 0x86, 0x89, 0x6d, 0xfa, 0xab, 0xb7, +0xb5, 0x9b, 0xd7, 0xf2, 0xd4, 0xf7, 0x9e, 0x24, +0x16, 0x8f, 0x2e, 0xfa, 0x7d, 0x45, 0x4a, 0x54, +0x45, 0x21, 0x99, 0x4a, 0xd0, 0xd6, 0x99, 0x42, +0x55, 0x14, 0x24, 0xe2, 0xb6, 0xdf, 0xa9, 0xd5, +0x58, 0x6f, 0x04, 0x21, 0x04, 0xe7, 0xce, 0x9d, +0xfb, 0x0d, 0xfe, 0xee, 0xd0, 0xc2, 0x0c, 0xa8, +0x01, 0x20, 0x88, 0x01, 0x16, 0x7e, 0xfa, 0x28, +0x9f, 0xc9, 0x64, 0x32, 0xd7, 0xaf, 0x5f, 0x3f, +0xd7, 0xd5, 0xd5, 0xb5, 0x26, 0x31, 0x14, 0xa7, +0x70, 0x76, 0xf1, 0x6e, 0x60, 0x19, 0x16, 0xe0, +0x61, 0xe4, 0x0d, 0x84, 0x10, 0xd8, 0xa6, 0x83, +0x63, 0x39, 0xf4, 0xad, 0xee, 0xe5, 0xa9, 0xe7, +0xf7, 0xf2, 0xd9, 0x91, 0xcf, 0xb9, 0x78, 0xea, +0x22, 0xae, 0x7b, 0x6b, 0x3c, 0x49, 0xb6, 0x25, +0x48, 0xb4, 0x25, 0x71, 0x1d, 0x17, 0xa3, 0xe0, +0x67, 0xaf, 0x04, 0xa2, 0xa9, 0x6e, 0x23, 0x63, +0x92, 0x48, 0x6f, 0x04, 0x04, 0xde, 0xa7, 0x9f, +0x7e, 0xfa, 0x09, 0xf5, 0xf3, 0x81, 0xfe, 0xb8, +0xe4, 0x79, 0x5e, 0xbd, 0x51, 0x20, 0x00, 0xa0, +0x88, 0xbf, 0xe7, 0x9e, 0x3b, 0x7a, 0xf4, 0xe8, +0x4f, 0xf7, 0xed, 0xdb, 0xf7, 0x67, 0xb1, 0x35, +0x51, 0xcc, 0x2b, 0x36, 0x9e, 0xb9, 0x00, 0x25, +0x3d, 0x1f, 0x80, 0xe2, 0x7c, 0x81, 0x1f, 0xff, +0xe0, 0x1d, 0xda, 0x7b, 0xd3, 0x6c, 0xdf, 0xff, +0x70, 0x69, 0x49, 0xeb, 0x12, 0x4d, 0x44, 0x19, +0xd9, 0xb5, 0x89, 0xd5, 0x1b, 0x87, 0xc8, 0x9c, +0x9f, 0x26, 0x77, 0x3d, 0x87, 0x65, 0xda, 0xa8, +0x9a, 0x82, 0x1e, 0xd5, 0xf1, 0x00, 0xb3, 0x60, +0x60, 0x58, 0x26, 0x78, 0x02, 0x3c, 0x81, 0x10, +0x95, 0xe1, 0xb4, 0x11, 0x49, 0xac, 0x8b, 0x21, +0x15, 0xc9, 0xb9, 0x73, 0xe7, 0x4e, 0x9c, 0x3d, +0x7b, 0xf6, 0x3c, 0x95, 0xba, 0x81, 0x85, 0x19, +0xb0, 0x40, 0x1c, 0x30, 0xf0, 0xe9, 0x33, 0xf7, +0xe1, 0x87, 0x1f, 0x8e, 0x6d, 0xdf, 0xbe, 0xfd, +0xab, 0xde, 0xde, 0xde, 0x7b, 0x12, 0xf7, 0xc4, +0x28, 0x7c, 0x61, 0xd4, 0xb7, 0xdf, 0x83, 0xf9, +0xeb, 0xf3, 0xbc, 0x7b, 0xe0, 0x3d, 0x66, 0xaf, +0xcc, 0xfa, 0x3a, 0x75, 0x83, 0x1d, 0xcf, 0x6c, +0x47, 0xd3, 0x35, 0x1c, 0xdb, 0x5f, 0xdf, 0xeb, +0x51, 0x9d, 0xee, 0x55, 0xdd, 0xb4, 0x75, 0xb7, +0x61, 0x16, 0x4d, 0xcc, 0x82, 0x59, 0xbe, 0xe2, +0x95, 0x26, 0xec, 0x25, 0x3e, 0x36, 0xe3, 0x7d, +0x25, 0xa5, 0x10, 0x5d, 0x11, 0xc1, 0x75, 0x5d, +0xe7, 0xfd, 0xf7, 0xdf, 0x7f, 0x1b, 0x7f, 0x83, +0x74, 0x1e, 0xdf, 0x99, 0xe1, 0x12, 0x9a, 0xb2, +0xd4, 0x8e, 0x47, 0x61, 0x00, 0xcc, 0x12, 0x72, +0xf3, 0xc0, 0x8d, 0xd1, 0xd1, 0xd1, 0x1f, 0x03, +0x5e, 0x74, 0x20, 0x82, 0x96, 0xf4, 0x27, 0x46, +0xb5, 0x5a, 0xcc, 0x15, 0x79, 0xef, 0xc0, 0x4f, +0xc9, 0x5e, 0xcd, 0x96, 0xdf, 0xcb, 0x5e, 0xcd, +0x72, 0xf8, 0x5f, 0xfe, 0x93, 0x33, 0xc7, 0x27, +0xb0, 0x0a, 0x26, 0x8e, 0xe5, 0xe2, 0xda, 0x15, +0xf5, 0x1c, 0xaf, 0x4a, 0x71, 0xc1, 0xb5, 0x3d, +0x6c, 0xc3, 0x46, 0x78, 0xa2, 0xee, 0xef, 0x2c, +0xa4, 0xf1, 0x75, 0x51, 0x84, 0x10, 0x8c, 0x8f, +0x8f, 0x7f, 0x3c, 0x31, 0x31, 0x31, 0x41, 0xf5, +0x36, 0x79, 0x00, 0x40, 0x99, 0xfe, 0x50, 0xb3, +0x3b, 0x5c, 0xca, 0x0f, 0x86, 0xf7, 0x05, 0x92, +0xf8, 0xe5, 0x2f, 0xdd, 0xc0, 0xca, 0x17, 0x5f, +0x7c, 0xf1, 0xa5, 0xa1, 0xa1, 0xa1, 0xcd, 0x6e, +0xce, 0x25, 0xff, 0x69, 0x01, 0xaf, 0x66, 0x81, +0x28, 0x15, 0x59, 0x95, 0xee, 0xae, 0x15, 0x55, +0x57, 0xe9, 0x5b, 0xdb, 0x4b, 0x6b, 0x77, 0x1b, +0x8a, 0x2a, 0x71, 0x6c, 0xb7, 0xec, 0xf9, 0xfc, +0x5c, 0x9e, 0xc2, 0x5c, 0x9e, 0x7c, 0xae, 0xe0, +0x0f, 0xa1, 0x4d, 0x8a, 0xbe, 0x4a, 0x23, 0xb2, +0x56, 0xc7, 0x34, 0xcd, 0xe2, 0xcb, 0x2f, 0xbf, +0xfc, 0xfd, 0x4c, 0x26, 0x73, 0x1a, 0xb8, 0x8a, +0x5f, 0x38, 0x31, 0x47, 0x65, 0x97, 0xb8, 0xaa, +0x56, 0xa0, 0x1e, 0x00, 0xb5, 0x75, 0x01, 0x29, +0xfc, 0x6a, 0x90, 0xde, 0xce, 0xce, 0xce, 0x7b, +0x5f, 0x7a, 0xe9, 0xa5, 0xbf, 0x49, 0x26, 0x93, +0x1d, 0x76, 0xc6, 0xa1, 0xf8, 0xdf, 0x66, 0xd3, +0x0d, 0x0d, 0x8b, 0xa2, 0x2a, 0x20, 0xb8, 0x23, +0x83, 0xc3, 0xa2, 0x76, 0x28, 0x44, 0x37, 0xea, +0x78, 0x78, 0xde, 0xa1, 0x43, 0x87, 0xfe, 0x79, +0x74, 0x74, 0xf4, 0x67, 0xf8, 0xdb, 0xe4, 0xd3, +0xc0, 0x0d, 0x2a, 0x2c, 0xb8, 0x65, 0x8b, 0xbc, +0xde, 0x94, 0xac, 0x76, 0x38, 0x2c, 0xe0, 0xef, +0xb3, 0xcf, 0xce, 0xcc, 0xcc, 0x5c, 0x7c, 0xfd, +0xf5, 0xd7, 0xff, 0xd1, 0x71, 0x1c, 0x43, 0xef, +0xd5, 0x88, 0xae, 0x8e, 0x34, 0x45, 0xd1, 0x5a, +0x0d, 0x7e, 0x65, 0x29, 0xcf, 0xd0, 0x92, 0x2a, +0xb1, 0x0d, 0x11, 0xa4, 0x22, 0x19, 0x1b, 0x1b, +0xfb, 0xf7, 0xd1, 0xd1, 0xd1, 0x23, 0x2c, 0x52, +0x25, 0x52, 0x6b, 0xec, 0x1d, 0x15, 0x48, 0x3c, +0xf1, 0xc4, 0x13, 0xbb, 0xf7, 0xed, 0xdb, 0xf7, +0xbc, 0x10, 0x42, 0x58, 0x67, 0x1c, 0xec, 0x4b, +0xdf, 0x4c, 0xb2, 0x44, 0x26, 0x05, 0xfa, 0x06, +0x15, 0x11, 0x11, 0x9c, 0x3d, 0x7b, 0xf6, 0xc4, +0x2b, 0xaf, 0xbc, 0xd2, 0x74, 0x81, 0xc4, 0x2d, +0x09, 0x91, 0xd0, 0x88, 0x10, 0x04, 0x43, 0x51, +0x7a, 0x48, 0x90, 0x2d, 0x56, 0x0e, 0x1f, 0x3e, +0x7c, 0xa4, 0xab, 0xab, 0xab, 0x73, 0xe7, 0xce, +0x9d, 0xfb, 0xf5, 0x7b, 0x54, 0xa1, 0xb4, 0x48, +0xec, 0x71, 0xa7, 0x26, 0xbe, 0xde, 0x5d, 0x91, +0x9d, 0x12, 0xf5, 0x3e, 0x89, 0x50, 0x04, 0x99, +0x4c, 0xe6, 0xec, 0x81, 0x03, 0x07, 0xfe, 0x89, +0x5b, 0xcb, 0x63, 0xc2, 0x85, 0x52, 0x8d, 0x95, +0xc8, 0x40, 0xe3, 0x45, 0x52, 0x4f, 0x3f, 0xfd, +0xf4, 0x9e, 0xbd, 0x7b, 0xf7, 0x3e, 0xab, 0x69, +0x9a, 0xee, 0xe5, 0x3c, 0xec, 0x93, 0x0e, 0xde, +0xd2, 0xc2, 0x42, 0x43, 0xa2, 0xac, 0x92, 0x28, +0x83, 0x7e, 0xef, 0x1d, 0x1f, 0x1f, 0x1f, 0x7b, +0xf5, 0xd5, 0x57, 0x7f, 0x64, 0x18, 0xc6, 0xf2, +0x15, 0x49, 0x41, 0xe3, 0x65, 0x72, 0x5b, 0xb6, +0x6c, 0xd9, 0xf4, 0xdc, 0x73, 0xcf, 0xfd, 0x49, +0x22, 0x91, 0x68, 0xc3, 0x01, 0xf7, 0x92, 0x87, +0x3b, 0xe9, 0xdd, 0x15, 0x36, 0x88, 0xb4, 0x40, +0x0e, 0x09, 0x44, 0x02, 0x3c, 0xcf, 0x73, 0x3f, +0xfa, 0xe8, 0xa3, 0x43, 0xaf, 0xbd, 0xf6, 0xda, +0xf2, 0x97, 0xc9, 0x95, 0x3f, 0x6c, 0xb0, 0x50, +0xb2, 0xb7, 0xb7, 0x77, 0xd5, 0x0b, 0x2f, 0xbc, +0xf0, 0x47, 0x2b, 0x57, 0xae, 0x1c, 0x06, 0xc0, +0x04, 0xf7, 0x82, 0x87, 0x3b, 0xc5, 0x1d, 0x95, +0xbd, 0xdc, 0xd2, 0x8e, 0x24, 0xbe, 0xe1, 0x6d, +0xfe, 0xeb, 0x7c, 0x3e, 0x9f, 0x7d, 0xf7, 0xdd, +0x77, 0xff, 0xf5, 0xf0, 0xe1, 0xc3, 0xbf, 0xc4, +0x2f, 0x92, 0xbc, 0x86, 0x1f, 0xed, 0x83, 0xfa, +0xe1, 0xa5, 0x17, 0x4a, 0x96, 0x6f, 0x58, 0xb8, +0x54, 0x36, 0x8e, 0x3f, 0x44, 0x96, 0x4b, 0x65, +0x77, 0xed, 0xda, 0xb5, 0x75, 0xef, 0xde, 0xbd, +0xfb, 0x3b, 0x3a, 0x3a, 0xfa, 0x01, 0xb0, 0xc0, +0xbb, 0xee, 0x37, 0xcf, 0xcb, 0xd2, 0x1c, 0x18, +0x71, 0x10, 0xed, 0xbe, 0x92, 0xf4, 0xdf, 0x32, +0x4d, 0xb3, 0x38, 0x36, 0x36, 0xf6, 0x1f, 0x6f, +0xbe, 0xf9, 0xe6, 0xfb, 0xf9, 0x7c, 0x3e, 0x28, +0x95, 0xbd, 0x41, 0xf5, 0x8c, 0x6f, 0xf9, 0x4a, +0x65, 0x17, 0x00, 0x61, 0xa1, 0x62, 0xe9, 0x56, +0xfc, 0xae, 0x91, 0x7e, 0xe6, 0x99, 0x67, 0x1e, +0x7d, 0xf4, 0xd1, 0x47, 0x9f, 0x4e, 0xa5, 0x52, +0xe5, 0x62, 0x69, 0x9c, 0x52, 0x53, 0x0d, 0xf0, +0x4c, 0x51, 0x39, 0x11, 0xe0, 0x52, 0x3e, 0x45, +0x20, 0x22, 0x9e, 0xff, 0x7f, 0x0a, 0x1f, 0xe2, +0x92, 0xd8, 0xb6, 0x6d, 0x9e, 0x3c, 0x79, 0xf2, +0xe3, 0x37, 0xde, 0x78, 0xe3, 0x9d, 0x4c, 0x26, +0x73, 0xa5, 0xf4, 0xa4, 0x2c, 0x95, 0xe2, 0x87, +0xbb, 0x57, 0x2c, 0xbd, 0x08, 0x08, 0xe1, 0x03, +0x12, 0xc1, 0x19, 0x81, 0x64, 0xa9, 0xf9, 0x29, +0xa0, 0xe5, 0xc1, 0x07, 0x1f, 0xbc, 0x6f, 0xdb, +0xb6, 0x6d, 0x5b, 0xd7, 0xac, 0x59, 0x73, 0x7f, +0x3a, 0x9d, 0x6e, 0xaa, 0x5c, 0xde, 0x30, 0x8c, +0xfc, 0xf9, 0xf3, 0xe7, 0xbf, 0xf8, 0xfc, 0xf3, +0xcf, 0x8f, 0x7f, 0xf0, 0xc1, 0x07, 0xc7, 0xe7, +0xe7, 0xe7, 0x83, 0xe0, 0x16, 0x78, 0xfb, 0xeb, +0x2b, 0x97, 0x2f, 0xdf, 0xbc, 0xf8, 0x81, 0x89, +0x80, 0x11, 0x75, 0x0f, 0x4c, 0x0c, 0x0f, 0x0f, +0xf7, 0x6f, 0xd9, 0xb2, 0x65, 0x38, 0x95, 0x4a, +0xa5, 0x5b, 0x5a, 0x5a, 0x5a, 0xe3, 0xf1, 0x78, +0x2a, 0x91, 0x48, 0xb4, 0xa8, 0xaa, 0xaa, 0xe6, +0xf3, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xb9, 0x9b, +0x37, 0x6f, 0xce, 0xe5, 0x72, 0xb9, 0xd9, 0x4b, +0x97, 0x2e, 0x4d, 0x1e, 0x39, 0x72, 0xe4, 0x94, +0x65, 0x59, 0x8b, 0x1d, 0x98, 0x08, 0x1b, 0x5e, +0x75, 0x72, 0xa4, 0x51, 0xe3, 0x9b, 0x06, 0x20, +0x04, 0x02, 0xdc, 0xf9, 0x91, 0x99, 0xf0, 0x46, +0x65, 0x30, 0x13, 0x0d, 0xf2, 0x10, 0xe5, 0x74, +0x1c, 0x95, 0xe3, 0x32, 0xb5, 0xba, 0xe0, 0x91, +0x19, 0x16, 0x89, 0xf6, 0x0b, 0xda, 0xf3, 0x0d, +0x1d, 0x9a, 0x0a, 0x9f, 0x1c, 0x83, 0xea, 0xe9, +0x77, 0x00, 0xc2, 0xd7, 0x72, 0x68, 0x6a, 0x49, +0x07, 0x27, 0x97, 0x70, 0x6c, 0xae, 0x76, 0xaf, +0xae, 0x76, 0x4f, 0x22, 0xd0, 0xdb, 0x1e, 0x9b, +0x63, 0x09, 0xc6, 0xc3, 0x12, 0x01, 0x80, 0x2a, +0x10, 0xa0, 0x9a, 0x11, 0xe1, 0x9d, 0xe6, 0x46, +0x0e, 0x4e, 0x86, 0xf5, 0xb6, 0x07, 0x27, 0x59, +0xa2, 0xe1, 0xe5, 0x06, 0xff, 0x7f, 0x3f, 0x3a, +0xbb, 0x6c, 0x00, 0x54, 0x3d, 0x74, 0x19, 0x0f, +0x4f, 0x87, 0xae, 0xfe, 0x8b, 0xff, 0xad, 0x87, +0xa7, 0xff, 0xaf, 0xca, 0xff, 0x00, 0x5d, 0x5f, +0xd4, 0x5d, 0x0a, 0x17, 0x7b, 0x9f, 0x00, 0x00, +0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, +0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity4.png b/source/bitmaps/misc/activity4.png new file mode 100644 index 0000000000000000000000000000000000000000..68d83bc2d6c51b86a6a9dbf3a211862b2fb74305 GIT binary patch literal 4226 zcmV-|5Pk27P)iIXJ(LINZT zT>?^@6jf@4=ziEzT2-nFs@gBre(a}$v{FUWYFF(SD11O&mJryk(=N)whLSbeEHnw2 zIIm9Pu@h%J&dl8Rezv?sI7B&CNI`4%gZ1`g8-?U5(Uorz0 zFkFVN^;A#|LST$r`rlnZ%RmG_yHp^S1VG66TBDVaswGuww3Y>7Lv6sRb9JZzW2r#g zQ5UE&yw+$H&_b%0GA@EdqtowOD#D03=|BONkB5g3uHICF27PJRW#CFgOk*LK+9+-QC^& z{r&yJ(P*?i8jZH;x}MT?Jtd{oOw-Jnra5OA#tp+TW^dfMap}yNGpAhFy$R%jn<34I z05NKTXtql<+yz3$2XqfS9(Xwcw3IXjv>|idJy9~?%*$^OkDqX{F287!JP-A=$;G$GK-U_q>?Zd;v53gUp{&y0IL?3`w z)Jb1$Cw;k-)J!YFz1TBc=6}QjvYH>7{(NEy#&S_ ze)lMpfM^(mMFCjA_<-)MKpN<5ZEYQT{PD-1Z)Z|Bf@NG2!sUzs6%_53gz2?4xnpraByV%_U$i3 zqtP~LOS;DU==!P$>BuD;UMsntELZNoL@`wWaKHTW%R@(x9(^0g-~%zstspq~_BRed z%}`g*_%5J(WMpK|$jHdEilXST**F9LHH2E!me1n4Er#jgt4!ZF1;EtQ)Y$0g=#MPR zx(rO?cZ)f0WkOvL76Tv{>H^v)DN!Ei-LYfGGwar^+b@I=sf%s&9AD8?A785ER?Knr zfk`~YWo~Zn?7@Qv|IRRsOZaREgHR5P4FOO?{UF+hJ>R==s!_2Em{F`G;#bK;$M-uZjrG8GVV_<^xJMAm{()lqAvxWQN-MEq8uV_;z5 z{%zZ~eOCw}(x*E}o@vDq&NrgUoJ#l66-Y;+r>AFR*REZ^hwr2`{s z-b}Dw;A;WWsZ?rU_wL<)s%cszHW?>5-ij;T=3NH}DNv&-YDC30Y^;J+CmnKoQEsYq zeA>1;Ner+V!W1Va&CGnBi)?S{RzYu9e*>FF5}o}lGdZFsJWE1ZVZ zlMZ^TMoWK!cy|mfsUmccxZ&cNIku(F<`X2ps7)q^{zj zv}h;^1#|%sfrv<7bzfyvA|nzRQIHWyyerO@KNw->pYK4%6&&e8MDU&OKf%!URXC#l zZ$(cfkWw-@IQa026)V=@GdEEJK%-79P;0zjOaC~K+O%oY1D&0n_Xta%eHpAZt$943$h8j^z3|Ls15=bc- z7#P@y&*A`pTLPiFK>rT_hz$%3Y!pJ^UiENAa|5-Ml47ys^(JP?il*?`_Z~&n6{IRr zG{x@%Lg1JI0~VQoOo8SJ(&_YII-TyEot>Sk0YFk(A1uZIJr;|ly1Tm9N-423Zd2ZO zq=Sv!u-D7p(_!yle21aUt3V16rHrZLVp}$j?O+Rg@#nY>-gS^tip`rhe;dC$*JnV; z_;3tR0e$uA)q{$vXl~BMF`TBnSOsf?qNobL^}-$oHw@t6;dw5uivc25XbCbw`16H)v~X>y%RB7%py;v%WhKMUxzP>lYk(>lfhR z1K@gij*IJ+uC9k=Ter?&YQ!}pQcB|Scq!px zHqqjG0Kgof{X-T>hy)*&cWHCE+;u4>TB0!kTGB~c(k)0uBBUfpK6#%1$MZajH;c?% zzP1b|E-rdpLrRHhnsZcdqE-P>8w09#X=i6=uL&Vg<0^`BdjNLs+rjSN--V(oc%Fx4 zSeQiZKO7{R$u{ME zAq1+XV3~Fkrh`xg(as1Sp8LrspN!$>2E%#5avV@S&kM>-0sw*{g(6Tmd-m*a`uqEb zW4%$#OV*-4ETzPCT+D)rZ8X6gV?1|iJFFaylem-5Gs9s3pFMmlv=T|tp@K@|ur!^SLHScZvh`m49Ko7eKx z_nssck1qOsMM_jfA(=|h)|o<86eQxd->KDDZv-I(=gyt`4gT)X!VIVZAcz4Le)=e% z$z(FuuU|jc)z!5oF%+k8cJXdt85ZDSlwTaamhsd0tCU-rD zW!k8kf*#fJ0JC6VSSEM^Jb@6E;j|G+tcxKP$+>gqPMke^_B@rkfrS~cKpZge=`;7? zhaZk@-@g5;-rnAO68FR?d|}kL--G$<^SpcDJ!Y@W`Z{%k9nWk>(={C1U*GFdo$giL zv~{;(7ER28S-#?xChR3XHsgIIr4U^a!F65d{rBI08-Igz9^aYa5}LBqjz?ht%o1|* zz>U$-(H{d|bRdG3^e0BOTFe!B@4!#VUd@)@%U;cL_+S2$Gsh>e3MP)_;@TDU9Ir}o z!L>bX!$x?b?(Zz5@pVyz5R8wHe>^cUF+ueq9}{!p_!T*?oI_XU#p08@NYj+!pDsgPL?D_m$p2A$7e6HXRp-qau zN+YsX$2862%P+tD{Y)lv8n}vII59_Mm$<4{pdJ9Vbpa{-YLMQ}&dz&Zdg-OVNhXsW zcE+Lj-)7Sd4U3{GAh;ug!=iR5L^tYqc;2ByhyHnVbo6KV+vL;04Js_SWsAJtl&p3* zEa306&(6%uTzviY*Z#4H2Xw85_tDYOBP>!S zQfurT6-Yes#1p&s?c4Xf5JFgI9PCTqOtM5K1^NaR5fPj{d-lXDue{Q9fy6Bdkzq^ql|bLY;T`}KQNp|nWsai=D}-d&NM67@cbPz0Gw=Int32mXm$ z%VWZYQjL|!K;uPHPe1+ip1phbKC5Y(?&Un}lMdd}!a_r$tdb~$e(xP0A0K=5)mMLH z7{>AyNkQXfa$B}++4S6V&;3avk!ZsK_mYP@>D?7Jh_pZs2}A-s&vQTe=%Yigz4qGj zm&uhsY_L$Wx3_oI3opFzM=MvZ90tGy_kxEz#T}Ks+|rIDzTs{D>wG?+efQmW|Ml?U z!@tBYlDvi=?SuN^r58$;Z&BA)+$3LoN<*tTt+JbCitH{N*TolGWkrSzmMmEwoH zS1i2<2;l<~!5M*Msrf0O<-rFZyl>mKZClr@S#y6noo=dJ-Y|^(`Sa($`26$FkALvN z2gm2<=Y!xDc>C)smoMME_<@Ol5p@qt3=a?YZ`rbCIF(AJTUuILn?n+6~R0^IqLneawsFcS^( z5ao0nmE$tCy5Nx+7K!!?+Vc$^nhKvBgX-yb0K(UDXlh9ZCzo(+u6D1kc26SE+a8-^ z3C6<`0e~tHpqdfko#sXkPKNci2Pavg;pGPZe?L0AYyea}bQup%hpzsM|E-6o|F6pb Y09{|yT?!X_p8x;=07*qoM6N<$f;*@nb^rhX literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/activity5.cpp b/source/bitmaps/misc/activity5.cpp new file mode 100644 index 0000000..b461036 --- /dev/null +++ b/source/bitmaps/misc/activity5.cpp @@ -0,0 +1,546 @@ +#include + +#ifndef MISC_ACTIVITY5_CPP +#define MISC_ACTIVITY5_CPP + +static unsigned char misc_activity5_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x3c, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xf9, +0x6f, 0x1c, 0xe7, 0x79, 0xc7, 0x3f, 0xef, 0x3b, +0xc7, 0xce, 0xec, 0x92, 0xbb, 0x5c, 0x1e, 0xa2, +0x28, 0x99, 0xd4, 0x41, 0x99, 0xba, 0x45, 0x29, +0x96, 0x2c, 0xc9, 0x47, 0x22, 0x55, 0x2e, 0xaa, +0xba, 0x6d, 0x64, 0x1b, 0xfe, 0xa5, 0x81, 0x11, +0xb4, 0x68, 0xea, 0x16, 0x01, 0x5a, 0x34, 0xff, +0x43, 0x7f, 0x28, 0x50, 0xf8, 0x87, 0x22, 0x30, +0xd2, 0x02, 0x01, 0x0a, 0x14, 0x72, 0xec, 0xb4, +0x28, 0x62, 0xf8, 0x80, 0x93, 0x50, 0x69, 0x5c, +0x27, 0xb6, 0x1c, 0xcb, 0xd4, 0x61, 0x39, 0xb2, +0x25, 0x4a, 0x24, 0x45, 0x89, 0xa2, 0xb8, 0xa4, +0xb4, 0x3c, 0x97, 0x3b, 0xb3, 0x73, 0xf4, 0x87, +0xd9, 0x59, 0xce, 0x2e, 0x97, 0xd4, 0xf2, 0x90, +0xd3, 0xa2, 0x0f, 0xf0, 0x60, 0xf6, 0x78, 0x67, +0xe6, 0x7d, 0xbe, 0xcf, 0xf1, 0x1e, 0xcf, 0xf3, +0x0a, 0xdf, 0xf7, 0x79, 0x98, 0x24, 0x84, 0x10, +0x8b, 0xfd, 0x55, 0xe5, 0xb7, 0x05, 0x9d, 0xf1, +0x1f, 0x72, 0x07, 0xd5, 0x87, 0xf1, 0xd0, 0x0a, +0xa1, 0xc5, 0x22, 0xd7, 0xc5, 0xc8, 0x8f, 0x5e, +0x2b, 0xf1, 0x5b, 0x6b, 0x40, 0xc4, 0x5a, 0x3d, +0xaf, 0x8a, 0xd0, 0xa2, 0xe2, 0xb3, 0xac, 0xf2, +0x5b, 0x94, 0xa2, 0x82, 0x2f, 0xc5, 0x41, 0xa3, +0x35, 0xea, 0xf8, 0xaa, 0x2d, 0x60, 0x11, 0xc1, +0x65, 0xe4, 0x5a, 0x8d, 0x05, 0xe5, 0x20, 0x84, +0xc2, 0x78, 0xc5, 0xcf, 0xde, 0x22, 0x5c, 0x02, +0x22, 0x7c, 0xed, 0x6a, 0x81, 0x58, 0x15, 0x00, +0x11, 0xe1, 0x2b, 0x85, 0x56, 0x22, 0xac, 0x16, +0x59, 0xa9, 0xe0, 0x4a, 0x2b, 0x88, 0x0a, 0xea, +0x00, 0x6e, 0x95, 0xab, 0x4b, 0x05, 0x18, 0xab, +0x05, 0x62, 0x45, 0x2e, 0x50, 0x21, 0x78, 0xa5, +0xd0, 0x2a, 0xa0, 0x45, 0x58, 0x2f, 0x72, 0xf8, +0x3d, 0x04, 0x24, 0x6a, 0x09, 0xa1, 0xd6, 0x43, +0x61, 0x0b, 0x45, 0xb6, 0x2b, 0xae, 0x21, 0x57, +0x03, 0x63, 0x45, 0x20, 0x2c, 0xdb, 0x02, 0x22, +0xc2, 0x87, 0x02, 0x44, 0xb5, 0xac, 0x03, 0xb1, +0x22, 0x1b, 0x45, 0x36, 0x23, 0xdf, 0x43, 0x30, +0x42, 0x8b, 0x08, 0x01, 0x88, 0x6a, 0x3e, 0x14, +0xd8, 0x2a, 0x72, 0x1e, 0x98, 0x2b, 0x5e, 0xf3, +0xc5, 0xdf, 0x42, 0x40, 0x42, 0xcb, 0xf0, 0x28, +0x5a, 0xc3, 0x72, 0x41, 0x58, 0x16, 0x00, 0x45, +0xe1, 0x43, 0x0e, 0x35, 0x1e, 0x6a, 0x39, 0x14, +0x38, 0x0e, 0x24, 0x22, 0x1c, 0x07, 0xe2, 0xeb, +0xd6, 0xad, 0xdb, 0xb8, 0x71, 0xe3, 0xc6, 0x1d, +0x86, 0x61, 0x34, 0x1a, 0x86, 0xd1, 0xa0, 0xeb, +0x7a, 0x52, 0xd7, 0xf5, 0xa4, 0x94, 0x52, 0xb3, +0x6d, 0x7b, 0xda, 0xb6, 0xed, 0x29, 0xcb, 0xb2, +0x26, 0x2c, 0xcb, 0xca, 0x4e, 0x4c, 0x4c, 0xdc, +0xbe, 0x71, 0xe3, 0xc6, 0x17, 0x9e, 0xe7, 0xcd, +0x02, 0x39, 0x60, 0x36, 0xc2, 0xb9, 0x08, 0x20, +0x56, 0x25, 0x10, 0xcb, 0x75, 0x89, 0x9a, 0x5d, +0x20, 0x22, 0x7c, 0x68, 0xee, 0xa1, 0xc6, 0x43, +0x2d, 0x27, 0x80, 0xfa, 0x22, 0x27, 0x81, 0xfa, +0x8e, 0x8e, 0x8e, 0xed, 0xed, 0xed, 0xed, 0x07, +0x9b, 0x9b, 0x9b, 0x77, 0xc7, 0xe3, 0xf1, 0xd6, +0x9a, 0x5e, 0x54, 0x24, 0xc7, 0x71, 0x72, 0xd9, +0x6c, 0xf6, 0xea, 0xdd, 0xbb, 0x77, 0x2f, 0xf4, +0xf5, 0xf5, 0x5d, 0xb4, 0x2c, 0xeb, 0x1e, 0x30, +0x05, 0x4c, 0x17, 0x79, 0x86, 0x79, 0x30, 0x42, +0x8b, 0x88, 0xba, 0x45, 0x4d, 0x20, 0xd4, 0x04, +0x40, 0x15, 0xe1, 0x35, 0x02, 0xb3, 0x36, 0x81, +0xba, 0xa2, 0xd0, 0x0d, 0x40, 0x0a, 0x68, 0xdc, +0xbf, 0x7f, 0xff, 0xd7, 0x3b, 0x3b, 0x3b, 0x4f, +0x1a, 0x86, 0xd1, 0x14, 0x3e, 0x43, 0x29, 0xa8, +0xa4, 0x33, 0x8d, 0x18, 0x33, 0x26, 0x7a, 0x5e, +0x47, 0xb3, 0x74, 0xf4, 0x7c, 0x0c, 0xe9, 0x4a, +0x0a, 0x86, 0x8d, 0x1d, 0xb3, 0xb1, 0x0d, 0x0b, +0xdb, 0xb4, 0x98, 0x58, 0x97, 0x25, 0x9f, 0x98, +0x2b, 0xbd, 0xdf, 0xf3, 0xbc, 0xc2, 0xc8, 0xc8, +0xc8, 0xc7, 0xbd, 0xbd, 0xbd, 0x6f, 0x4f, 0x4f, +0x4f, 0xdf, 0x01, 0xb2, 0xc0, 0x64, 0x04, 0x90, +0x1c, 0xf3, 0xae, 0xe1, 0x2c, 0x07, 0x84, 0x07, +0x02, 0x50, 0x21, 0x7c, 0x18, 0xe0, 0x0c, 0xe6, +0x35, 0x9e, 0x02, 0x1a, 0x81, 0xc6, 0x1d, 0x3b, +0x76, 0x1c, 0xd9, 0xb9, 0x73, 0xe7, 0x37, 0x13, +0x89, 0x44, 0x1b, 0x80, 0x96, 0xd7, 0x49, 0xdf, +0x6d, 0x24, 0x7d, 0xa7, 0x99, 0xe4, 0x78, 0x0a, +0xe1, 0x3d, 0x68, 0x0e, 0x34, 0x4f, 0x73, 0xf5, +0x39, 0xb2, 0x1b, 0xee, 0x91, 0x6d, 0xbb, 0xc7, +0x6c, 0xc3, 0x0c, 0x00, 0xae, 0xeb, 0x5a, 0xb7, +0x6e, 0xdd, 0xfa, 0xe5, 0xb9, 0x73, 0xe7, 0xde, +0xb5, 0x2c, 0x6b, 0x14, 0xb8, 0x5f, 0x04, 0x63, +0x8a, 0xc0, 0x3d, 0xe6, 0x8a, 0x40, 0xd4, 0x0c, +0xc2, 0x92, 0x00, 0x2c, 0x22, 0x7c, 0x68, 0xee, +0x29, 0x20, 0x0d, 0x34, 0xa7, 0x52, 0xa9, 0xcd, +0xdf, 0xf8, 0xc6, 0x37, 0xbe, 0xd3, 0xd0, 0xd0, +0xd0, 0x15, 0x08, 0xae, 0xd1, 0xf6, 0xc5, 0x23, +0x34, 0x0d, 0xb5, 0x20, 0xfc, 0xda, 0x85, 0x5e, +0x8c, 0x72, 0xa9, 0x59, 0x86, 0xf7, 0x0c, 0x31, +0xdd, 0x32, 0x05, 0x40, 0xa1, 0x50, 0x98, 0xbe, +0x74, 0xe9, 0xd2, 0xe9, 0x2b, 0x57, 0xae, 0x9c, +0x05, 0xc6, 0x81, 0x7b, 0x04, 0x16, 0x11, 0xb5, +0x86, 0x9a, 0x40, 0x58, 0x14, 0x80, 0x2a, 0x66, +0xaf, 0x33, 0x6f, 0xf2, 0x0d, 0x40, 0x13, 0xd0, +0xd2, 0xd1, 0xd1, 0xd1, 0x7d, 0xf4, 0xe8, 0xd1, +0x97, 0x0d, 0xc3, 0x68, 0x90, 0x8e, 0xa4, 0xa5, +0xaf, 0x8d, 0x96, 0xeb, 0xad, 0x48, 0x57, 0xae, +0x5a, 0xf0, 0x4a, 0x9a, 0x6e, 0x9d, 0x64, 0x64, +0xf7, 0x6d, 0xf2, 0xc9, 0x39, 0x00, 0xef, 0xda, +0xb5, 0x6b, 0xef, 0x9e, 0x3d, 0x7b, 0xf6, 0x4d, +0x20, 0x43, 0x00, 0x44, 0x96, 0x85, 0x20, 0xb8, +0x04, 0xf2, 0xd7, 0x0e, 0x40, 0xc5, 0x50, 0x57, +0x4d, 0xf8, 0x16, 0x60, 0x5d, 0x77, 0x77, 0xf7, +0x89, 0xee, 0xee, 0xee, 0x6f, 0x29, 0x8a, 0xa2, +0x9b, 0xd9, 0x38, 0xed, 0xbf, 0xd9, 0x8c, 0x9a, +0xd7, 0xd6, 0x4e, 0xe2, 0xaa, 0x3d, 0x86, 0xb1, +0x1d, 0x77, 0x19, 0xdb, 0x3e, 0x0a, 0xc0, 0xe8, +0xe8, 0x68, 0x6f, 0x4f, 0x4f, 0xcf, 0x0f, 0x0b, +0x85, 0xc2, 0x1d, 0x60, 0x8c, 0xc0, 0x2d, 0xa6, +0x58, 0x68, 0x09, 0x55, 0x41, 0x58, 0x0a, 0x80, +0x70, 0xa8, 0x0b, 0xcd, 0xbe, 0x8e, 0xa2, 0xc9, +0x03, 0xeb, 0x9f, 0x7c, 0xf2, 0xc9, 0x17, 0xba, +0xba, 0xba, 0x9e, 0x13, 0x42, 0x88, 0xe4, 0xad, +0x06, 0x5a, 0x2f, 0x6c, 0x58, 0x96, 0x8f, 0xaf, +0x96, 0xa6, 0x37, 0x4c, 0x71, 0xf7, 0xb1, 0x61, +0x7c, 0xc5, 0x63, 0x6a, 0x6a, 0x6a, 0xe0, 0xed, +0xb7, 0xdf, 0xfe, 0x47, 0xcb, 0xb2, 0x6e, 0x13, +0x58, 0x43, 0x14, 0x84, 0x52, 0x60, 0xac, 0x09, +0x80, 0x0a, 0xd3, 0x0f, 0xa3, 0x7d, 0x54, 0xf3, +0xeb, 0xf7, 0xee, 0xdd, 0x7b, 0xfc, 0xf0, 0xe1, +0xc3, 0xdf, 0x01, 0x44, 0xd3, 0xe7, 0x2d, 0xa4, +0xae, 0x37, 0x3e, 0x34, 0x41, 0x97, 0x22, 0x3b, +0x65, 0x71, 0xf7, 0xc8, 0x6d, 0x1c, 0xd3, 0x21, +0x93, 0xc9, 0x5c, 0x7a, 0xeb, 0xad, 0xb7, 0xbe, +0x0f, 0xdc, 0x61, 0x1e, 0x84, 0x69, 0x82, 0xc0, +0x58, 0x1a, 0x22, 0x2b, 0x41, 0x28, 0x73, 0xd4, +0x8a, 0x29, 0x6e, 0x38, 0xd6, 0x87, 0x11, 0x3f, +0x05, 0x34, 0xb5, 0xb7, 0xb7, 0xef, 0x3e, 0x74, +0xe8, 0xd0, 0xb7, 0x85, 0x10, 0x22, 0xfd, 0x65, +0x13, 0x75, 0x37, 0x52, 0xb8, 0xc2, 0xfd, 0x9d, +0xb0, 0x32, 0xa5, 0xb2, 0xee, 0xec, 0x06, 0xa4, +0xab, 0xd0, 0xda, 0xda, 0xda, 0x7d, 0xec, 0xd8, +0xb1, 0x17, 0x09, 0x94, 0x94, 0x26, 0x18, 0xa1, +0x4c, 0x02, 0xf7, 0x2d, 0xcd, 0x3a, 0x2b, 0xf7, +0x27, 0xaa, 0xcd, 0x04, 0xab, 0x05, 0xbe, 0x7a, +0x20, 0x9d, 0x4c, 0x26, 0xdb, 0x8f, 0x1f, 0x3f, +0xfe, 0xd7, 0x9a, 0xa6, 0xc5, 0xcc, 0xe1, 0x38, +0x75, 0x7d, 0x29, 0x3c, 0xe9, 0x2d, 0x5f, 0x75, +0xd1, 0x97, 0x29, 0xc5, 0x99, 0x9b, 0xbb, 0xb2, +0x45, 0x9d, 0x32, 0xab, 0xd2, 0x74, 0x7e, 0x1d, +0xf7, 0x0f, 0x67, 0xe8, 0xea, 0xea, 0xfa, 0x83, +0xc9, 0xc9, 0xc9, 0xe1, 0x0b, 0x17, 0x2e, 0xfc, +0x9c, 0xea, 0x33, 0xc5, 0xb2, 0x25, 0x35, 0x2c, +0x0d, 0x80, 0x4a, 0x60, 0xfe, 0x09, 0x82, 0x99, +0x5d, 0xe3, 0x89, 0x13, 0x27, 0xbe, 0x1d, 0x8f, +0xc7, 0x9b, 0xd4, 0x49, 0x8d, 0xfa, 0x8b, 0x69, +0x5c, 0xe9, 0x2e, 0xbb, 0xc3, 0x42, 0x0a, 0x34, +0x53, 0x43, 0x4f, 0xe8, 0xc4, 0x12, 0x3a, 0x5a, +0x5c, 0x43, 0x33, 0x35, 0xd4, 0x58, 0xd0, 0x95, +0xfc, 0x54, 0x9e, 0xec, 0xcd, 0x09, 0xf2, 0x53, +0xf9, 0x9a, 0x9f, 0xa9, 0x65, 0x74, 0xea, 0xbf, +0x4c, 0x31, 0xb3, 0x6b, 0x4a, 0x1c, 0x7c, 0xec, +0xe0, 0x4b, 0xfd, 0xfd, 0xfd, 0x5f, 0x4e, 0x4e, +0x4e, 0xe6, 0x28, 0x5f, 0x3b, 0x84, 0xc1, 0x50, +0x44, 0xd7, 0x0c, 0x25, 0x17, 0x78, 0xd0, 0xb0, +0xd7, 0xd9, 0xd9, 0xb9, 0xa7, 0xb5, 0xb5, 0xb5, +0x5b, 0xf8, 0x82, 0xfa, 0x4f, 0x1b, 0xf0, 0x3d, +0x0f, 0x4f, 0xb8, 0xcb, 0x62, 0x54, 0x0f, 0xb5, +0x4e, 0x41, 0xab, 0x53, 0x50, 0xe3, 0x12, 0xc5, +0x94, 0x28, 0x46, 0x70, 0xd5, 0x12, 0x0a, 0x66, +0x93, 0xc1, 0xba, 0x5d, 0x2d, 0xec, 0x79, 0x7e, +0x27, 0xbb, 0xfe, 0x64, 0x3b, 0xb1, 0xb4, 0x5e, +0xf3, 0xb3, 0x8d, 0xeb, 0x71, 0xf4, 0x7b, 0x31, +0x54, 0x4d, 0x8d, 0x3d, 0xf5, 0xd4, 0x53, 0xcf, +0x31, 0xef, 0x06, 0xf1, 0xa2, 0x22, 0xa3, 0x2b, +0xd0, 0x12, 0x55, 0x0e, 0xd6, 0x51, 0xed, 0x97, +0x01, 0x70, 0xe8, 0xd0, 0xa1, 0xe7, 0x15, 0x45, +0x11, 0xc6, 0x50, 0x1c, 0xe6, 0x04, 0xae, 0xf4, +0x96, 0xcd, 0x18, 0x12, 0x51, 0x64, 0x69, 0x2a, +0x08, 0x53, 0x22, 0xe3, 0x0a, 0xd2, 0x0c, 0x58, +0x89, 0x2b, 0x28, 0xa6, 0x82, 0x62, 0xaa, 0x34, +0x76, 0x36, 0x72, 0xe8, 0xcf, 0x0e, 0xd2, 0xd8, +0xd5, 0x58, 0xf3, 0xf3, 0x8d, 0x2f, 0x12, 0x48, +0x29, 0xe9, 0xe8, 0xe8, 0x38, 0xb2, 0x61, 0xc3, +0x86, 0xad, 0x04, 0x96, 0x9b, 0x28, 0x02, 0xa0, +0x51, 0x25, 0x16, 0xc8, 0x0a, 0xed, 0x57, 0x9a, +0x7f, 0x1c, 0x48, 0xee, 0xdb, 0xb7, 0xef, 0xb1, +0xe6, 0xe6, 0xe6, 0x6d, 0xd2, 0x91, 0x68, 0xd7, +0x62, 0xcb, 0xd6, 0xbc, 0x27, 0x5c, 0x84, 0x06, +0x32, 0x26, 0x90, 0x31, 0x90, 0x86, 0x00, 0xcd, +0xc7, 0xca, 0x5b, 0x64, 0x47, 0xb2, 0x64, 0xfa, +0x33, 0xdc, 0xbb, 0x7d, 0x0f, 0x2b, 0x97, 0x47, +0x35, 0x15, 0xd4, 0xb8, 0x82, 0x1a, 0x57, 0x31, +0xd3, 0x06, 0x47, 0xfe, 0xfc, 0x71, 0xb6, 0x3c, +0xb9, 0xa9, 0xb6, 0x77, 0x4c, 0x0a, 0xb4, 0x61, +0x1d, 0x45, 0x51, 0x94, 0x27, 0x9e, 0x78, 0xe2, +0xb9, 0x08, 0x00, 0x66, 0x04, 0x80, 0x32, 0xa5, +0x57, 0xc6, 0x80, 0xe8, 0x62, 0xa7, 0x34, 0xdf, +0xef, 0xee, 0xee, 0xfe, 0x43, 0x29, 0x25, 0xca, +0x0d, 0x1d, 0xcf, 0xf1, 0x41, 0x2e, 0x3f, 0x60, +0x29, 0x86, 0x8a, 0xa7, 0xfa, 0xe4, 0x66, 0xe7, +0x98, 0xca, 0xce, 0xe0, 0xd8, 0xce, 0x82, 0x36, +0x37, 0x2f, 0xdf, 0xa2, 0xa1, 0x2d, 0xc5, 0xce, +0xdf, 0xdb, 0x41, 0x4b, 0x67, 0x33, 0xaa, 0xa1, +0xa2, 0xc5, 0x34, 0x0e, 0xfe, 0xe9, 0x63, 0x64, +0x33, 0x13, 0x8c, 0xf5, 0x8f, 0x97, 0xb5, 0x6f, +0xd9, 0xda, 0xcc, 0xf8, 0xe0, 0x3d, 0x7c, 0x6f, +0xbe, 0x3f, 0xca, 0x97, 0x31, 0xbc, 0x8d, 0x2e, +0x6d, 0x6d, 0x6d, 0xdd, 0x1b, 0x37, 0x6e, 0xdc, +0x3c, 0x3c, 0x3c, 0x1c, 0x2e, 0x9c, 0x74, 0xe6, +0x27, 0x46, 0xe1, 0x26, 0x4c, 0x19, 0x1a, 0xd1, +0xc9, 0x4f, 0xb8, 0xb1, 0x11, 0x4f, 0xa7, 0xd3, +0xad, 0x8d, 0x8d, 0x8d, 0x9b, 0x85, 0x2f, 0x10, +0x37, 0xe5, 0x8a, 0xb5, 0x5f, 0x70, 0x6c, 0x66, +0x26, 0xa6, 0xc9, 0xcd, 0xe6, 0xb0, 0x0b, 0xd6, +0xa2, 0x6d, 0xef, 0xdf, 0xbd, 0xcf, 0xd9, 0x1f, +0x7f, 0xcc, 0xdd, 0xbe, 0xbb, 0x68, 0xa6, 0x8a, +0x16, 0x57, 0x89, 0xd5, 0xeb, 0x9c, 0xf8, 0xdb, +0xe3, 0xa8, 0x09, 0x05, 0x4f, 0xb8, 0xc4, 0x9b, +0x4d, 0x9e, 0xf9, 0xbb, 0xe3, 0x7c, 0xfd, 0x2f, +0x9f, 0xc4, 0xf5, 0x9d, 0xb2, 0xfb, 0xfd, 0xbc, +0x87, 0xcc, 0x28, 0x48, 0x29, 0xc5, 0xce, 0x9d, +0x3b, 0x1f, 0x67, 0xde, 0x02, 0xc2, 0xe1, 0xb0, +0xb4, 0x13, 0x25, 0x84, 0x10, 0x6a, 0x05, 0x00, +0x95, 0x16, 0x10, 0xdf, 0xb7, 0x6f, 0xdf, 0x41, +0x29, 0xa5, 0xf0, 0xc7, 0x05, 0xae, 0xeb, 0x2e, +0x8c, 0x1a, 0x35, 0x90, 0xeb, 0x15, 0x47, 0x8b, +0x1a, 0xef, 0x75, 0x7d, 0x97, 0x8f, 0xfe, 0xe3, +0x63, 0x62, 0xa9, 0x18, 0xdb, 0x0e, 0x77, 0xa2, +0x19, 0x1a, 0x66, 0x83, 0xc9, 0x89, 0xbf, 0x39, +0xce, 0xfd, 0xdb, 0x59, 0x0e, 0xbf, 0x78, 0x08, +0x45, 0x57, 0x38, 0xfb, 0xc6, 0x6f, 0xaa, 0x8e, +0x44, 0x62, 0x54, 0x20, 0x1f, 0x91, 0xb4, 0xb7, +0xb7, 0xef, 0xad, 0x00, 0x60, 0x41, 0x20, 0x54, +0x17, 0xf1, 0xff, 0x10, 0x00, 0xb3, 0xbd, 0xbd, +0x7d, 0xaf, 0x10, 0x02, 0xef, 0xae, 0x8f, 0x27, +0x1e, 0x6e, 0x12, 0xa5, 0x92, 0x7e, 0xf5, 0xfa, +0x87, 0xb4, 0xef, 0x7b, 0x84, 0x78, 0x3a, 0x8e, +0x16, 0xd3, 0xd8, 0xfb, 0xfb, 0x7b, 0x90, 0x6a, +0x80, 0xa2, 0xe7, 0x78, 0x0c, 0x7e, 0x36, 0x88, +0x27, 0xaa, 0xcc, 0x43, 0x46, 0x41, 0xf3, 0x05, +0xe9, 0x74, 0xba, 0x23, 0x9d, 0x4e, 0x37, 0x67, +0xb3, 0xd9, 0x51, 0xca, 0x01, 0x90, 0x14, 0xd7, +0x07, 0x95, 0x2e, 0x10, 0xb5, 0x00, 0xdd, 0x34, +0xcd, 0xe4, 0xba, 0x96, 0x75, 0x9d, 0x52, 0x4a, +0x9c, 0x8c, 0x87, 0x2b, 0xdd, 0xaf, 0x94, 0x73, +0x73, 0x39, 0x3e, 0x7d, 0xef, 0x3c, 0x9a, 0xa1, +0x06, 0x73, 0x87, 0xb8, 0x1e, 0xb0, 0xa9, 0xe1, +0x79, 0x1e, 0x43, 0x57, 0x6f, 0x55, 0xbf, 0xd7, +0x73, 0xf1, 0xef, 0x83, 0x94, 0x52, 0xec, 0xdf, +0xbf, 0xff, 0x6b, 0x04, 0xee, 0x5c, 0xdd, 0x02, +0x22, 0xc2, 0x47, 0x63, 0x80, 0x0a, 0xe8, 0x5b, +0xb6, 0x6c, 0xe9, 0x50, 0x54, 0x45, 0xf3, 0xa6, +0x3d, 0x5c, 0xcb, 0x7d, 0x70, 0x4e, 0x67, 0x0d, +0xc9, 0xac, 0x37, 0x79, 0xf2, 0xc5, 0xa3, 0x1c, +0xfc, 0xa3, 0xaf, 0xa1, 0xc6, 0x34, 0x34, 0x43, +0x43, 0x37, 0x75, 0x14, 0x55, 0xc1, 0x73, 0x5d, +0x06, 0x7f, 0xf5, 0x05, 0x8e, 0xe7, 0x2c, 0xda, +0x27, 0x77, 0xdc, 0x43, 0x6d, 0x55, 0x68, 0x69, +0x69, 0xd9, 0xc4, 0xfc, 0x30, 0x58, 0xb9, 0x19, +0x5b, 0x75, 0x14, 0x28, 0xb9, 0x41, 0x43, 0x43, +0x43, 0xb3, 0x94, 0x12, 0xd7, 0xf2, 0xf0, 0x56, +0x30, 0xeb, 0x5b, 0x09, 0x49, 0x45, 0xb2, 0xe7, +0xe9, 0xdd, 0x1c, 0x7d, 0xfe, 0x08, 0xa9, 0xe6, +0x24, 0x8a, 0xae, 0xa2, 0xa8, 0x12, 0x55, 0x53, +0xd0, 0x62, 0x2a, 0x9a, 0xae, 0x61, 0xe5, 0x2c, +0xae, 0x7e, 0x7a, 0x6d, 0xc9, 0x3e, 0x79, 0x96, +0x44, 0x4a, 0x49, 0x3c, 0x1e, 0x4f, 0xb1, 0x88, +0xf0, 0xc0, 0x82, 0x20, 0x58, 0xb6, 0xe9, 0x59, +0x5f, 0x5f, 0x9f, 0x16, 0x42, 0xe0, 0xe5, 0x3d, +0x5c, 0xf1, 0xd5, 0x00, 0x10, 0x4b, 0xc4, 0x28, +0xb8, 0x05, 0x86, 0xae, 0xde, 0x62, 0x5b, 0xbc, +0x93, 0x58, 0x9d, 0x51, 0xea, 0x99, 0xef, 0xf9, +0xd8, 0x96, 0x8d, 0xe3, 0xb8, 0x7c, 0x71, 0xee, +0xcb, 0x25, 0xfb, 0xe4, 0x58, 0x02, 0x21, 0x04, +0xa6, 0x69, 0x26, 0x99, 0x17, 0xbe, 0x32, 0x33, +0x55, 0xe6, 0x02, 0xe1, 0x35, 0x6c, 0xa4, 0xd4, +0xd5, 0xd5, 0xa5, 0xa4, 0x94, 0x78, 0xb6, 0xb7, +0xea, 0x45, 0x4f, 0xad, 0x34, 0x33, 0x3b, 0xc3, +0x67, 0x1f, 0x5d, 0xe6, 0xb3, 0x8f, 0x2e, 0x23, +0x84, 0x60, 0x5d, 0x47, 0x0b, 0xdb, 0xf6, 0x6f, +0xa3, 0xeb, 0xb1, 0x47, 0xe9, 0x7a, 0xac, 0x0b, +0xb3, 0xde, 0x64, 0x74, 0x70, 0x94, 0xb1, 0xbb, +0x63, 0x4b, 0x8e, 0x2a, 0x8e, 0xe5, 0x22, 0xa5, +0x0c, 0x01, 0x28, 0x1b, 0xfe, 0xa2, 0xed, 0x54, +0xca, 0x85, 0x2f, 0xe3, 0xba, 0xba, 0xba, 0x94, +0x10, 0x82, 0x42, 0xde, 0xf9, 0xca, 0x2c, 0xa0, +0x92, 0xee, 0x0c, 0x8d, 0x70, 0x67, 0x68, 0x84, +0x0f, 0xde, 0xfa, 0x15, 0x42, 0x0a, 0x36, 0x6c, +0x69, 0xc3, 0x48, 0x98, 0x0f, 0xec, 0x8f, 0x67, +0x79, 0x08, 0x21, 0x30, 0x0c, 0x23, 0x41, 0xb9, +0xe6, 0xcb, 0x68, 0xc9, 0xc4, 0x88, 0x10, 0x02, +0x29, 0x03, 0x5f, 0x12, 0x72, 0xe9, 0x08, 0xd8, +0xd8, 0x9a, 0xa6, 0xfb, 0xe9, 0x7d, 0x5c, 0xbf, +0xdc, 0xcf, 0x70, 0xdf, 0x30, 0x9e, 0xf7, 0x70, +0x2c, 0xe6, 0xce, 0xc0, 0x48, 0xd0, 0xb7, 0x07, +0xf4, 0x47, 0xc8, 0xa0, 0xef, 0x0f, 0xda, 0xf5, +0x56, 0x59, 0x22, 0x2d, 0x9d, 0xcb, 0xe5, 0x26, +0x85, 0x10, 0x68, 0x09, 0x15, 0xa9, 0x2c, 0x3d, +0x8b, 0xd9, 0xf3, 0xc4, 0x1e, 0x9e, 0xfb, 0xee, +0x29, 0x14, 0x45, 0x21, 0x37, 0x9d, 0xe3, 0xea, +0xf9, 0x6b, 0x5c, 0xed, 0xbd, 0x46, 0xff, 0xe5, +0x7e, 0x46, 0x87, 0x32, 0x0f, 0xec, 0xc8, 0x5a, +0x93, 0x1a, 0x57, 0x10, 0x42, 0x60, 0x59, 0xd6, +0x2c, 0x15, 0x39, 0xc4, 0xb2, 0x76, 0xc5, 0x6b, +0x14, 0x84, 0xb0, 0xb1, 0x5b, 0x02, 0xc0, 0xd4, +0x50, 0xa4, 0xb2, 0xe4, 0x0b, 0x77, 0x1f, 0xd9, +0x45, 0xcc, 0x8c, 0xa1, 0xa8, 0x0a, 0x52, 0x91, +0xec, 0x3d, 0xba, 0x87, 0x47, 0xf7, 0x3f, 0x8a, +0x95, 0xb3, 0x98, 0x18, 0x9b, 0xa0, 0xff, 0x72, +0x3f, 0xd7, 0x2e, 0x5c, 0xe7, 0xfa, 0xc5, 0xeb, +0x6b, 0x26, 0xe4, 0x52, 0xa4, 0xc5, 0xf5, 0x10, +0x80, 0x29, 0x22, 0xf9, 0x43, 0x96, 0xd8, 0x10, +0x09, 0xff, 0x2c, 0x65, 0x69, 0xa7, 0xa7, 0xa7, +0xef, 0x4b, 0x29, 0xd1, 0x12, 0x4b, 0x03, 0xa0, +0x6a, 0x2a, 0x5d, 0x07, 0x1e, 0x45, 0x51, 0x95, +0x52, 0x45, 0x87, 0xef, 0xfb, 0xe0, 0xfb, 0xf8, +0xbe, 0x8f, 0x11, 0x8f, 0x61, 0xe5, 0x6c, 0x46, +0x6e, 0x8c, 0x3c, 0x10, 0xc8, 0xb5, 0x22, 0x3d, +0xae, 0x21, 0xa5, 0xc4, 0xb6, 0xed, 0x29, 0xca, +0x93, 0xa8, 0x65, 0x40, 0x54, 0xc6, 0x80, 0xb2, +0x2c, 0x6d, 0x36, 0x9b, 0xbd, 0x27, 0x84, 0x40, +0x8d, 0xab, 0x28, 0xca, 0xe2, 0x1d, 0xdf, 0xb2, +0x67, 0x0b, 0xaa, 0xae, 0x96, 0x56, 0x78, 0x8e, +0xed, 0xe0, 0x3a, 0x2e, 0xae, 0xe3, 0x71, 0xeb, +0xcb, 0x5b, 0xfc, 0xe2, 0xf5, 0x5f, 0x32, 0x76, +0x7b, 0x0c, 0x60, 0xc9, 0xe7, 0xac, 0x25, 0x69, +0x09, 0x0d, 0x21, 0x04, 0xb9, 0x5c, 0x6e, 0x92, +0xf9, 0x1d, 0xa1, 0xca, 0x6d, 0x31, 0x3f, 0xea, +0x02, 0x21, 0x87, 0x39, 0x7a, 0xbb, 0xbf, 0xbf, +0x7f, 0xc8, 0xf7, 0xfd, 0x82, 0x9e, 0xd4, 0x34, +0x35, 0xae, 0xe2, 0xe5, 0xab, 0x07, 0xb6, 0x6d, +0xdd, 0x9d, 0x38, 0x05, 0x17, 0xcf, 0xf5, 0xf0, +0x3d, 0x1f, 0xc7, 0x71, 0x29, 0xd8, 0x0e, 0xd9, +0xd1, 0x2c, 0xff, 0xf9, 0x4f, 0x3f, 0xc1, 0x75, +0x82, 0x21, 0xe9, 0xab, 0x24, 0x63, 0x5d, 0x0c, +0x29, 0x25, 0x63, 0x63, 0x63, 0x37, 0x59, 0x98, +0x4e, 0xaf, 0x6a, 0x01, 0x51, 0xf3, 0x2f, 0x00, +0xf6, 0xcc, 0xcc, 0xcc, 0xd4, 0xd8, 0xd8, 0xd8, +0x8d, 0xb6, 0xb6, 0xb6, 0x1d, 0xf1, 0x36, 0x93, +0xb9, 0xa1, 0xea, 0xfb, 0x74, 0x9b, 0x77, 0x6f, +0xa2, 0x90, 0xb7, 0x11, 0x52, 0xe2, 0x7b, 0x1e, +0x6e, 0x11, 0x00, 0xb3, 0xce, 0xe4, 0xe8, 0x1f, +0x1f, 0xe1, 0xec, 0xdb, 0x1f, 0x3f, 0x3c, 0x49, +0xab, 0x90, 0x50, 0x05, 0x46, 0x73, 0x0c, 0x1f, +0xdf, 0xfb, 0xe4, 0x93, 0x4f, 0x7a, 0x09, 0xf6, +0x06, 0xa3, 0xfb, 0x82, 0xa5, 0x38, 0x20, 0x8b, +0x9b, 0x83, 0x51, 0xff, 0x0f, 0x8b, 0x14, 0xf2, +0xc0, 0xdc, 0xc0, 0xc0, 0xc0, 0x67, 0x52, 0x4a, +0xcc, 0xf5, 0x06, 0x8a, 0x54, 0x16, 0x70, 0xb2, +0xa1, 0x9e, 0xc6, 0xd6, 0x34, 0x76, 0xbe, 0xc0, +0xa5, 0x5f, 0x5e, 0xe2, 0xb5, 0xbf, 0x7f, 0x83, +0xd9, 0x89, 0x59, 0x0a, 0x56, 0x81, 0x82, 0x55, +0x60, 0xd7, 0xe1, 0x9d, 0x74, 0x6c, 0xef, 0xa8, +0x7a, 0xef, 0x83, 0x58, 0x55, 0xd4, 0x15, 0xdd, +0x67, 0xb6, 0x1a, 0x48, 0x45, 0x92, 0xcd, 0x66, +0x6f, 0x8d, 0x8f, 0x8f, 0x8f, 0x57, 0x01, 0xa0, +0x04, 0x42, 0xd4, 0x2e, 0xa3, 0x16, 0x60, 0x17, +0x6f, 0xca, 0x9d, 0x3b, 0x77, 0xee, 0x53, 0xc0, +0x8b, 0x35, 0xeb, 0xa8, 0xba, 0x82, 0x22, 0x65, +0x19, 0xb7, 0x6f, 0x6f, 0x67, 0xb8, 0xef, 0x0e, +0x3f, 0xfe, 0x87, 0x7f, 0xe7, 0xe7, 0xff, 0xda, +0xc3, 0xc8, 0xf5, 0x3b, 0xfc, 0xd7, 0x8f, 0xde, +0xa7, 0x90, 0x2f, 0xe0, 0x58, 0x05, 0x9c, 0x82, +0xc3, 0x13, 0xdf, 0x3c, 0xc2, 0xe6, 0x9d, 0x1d, +0x0b, 0xee, 0x5d, 0x8c, 0x75, 0x5d, 0x23, 0x66, +0xe8, 0x48, 0x21, 0x6a, 0xbe, 0x27, 0xca, 0xe6, +0xfa, 0x18, 0x42, 0x08, 0x06, 0x07, 0x07, 0x3f, +0x23, 0xc8, 0x0e, 0x2d, 0x6a, 0x01, 0xd5, 0x46, +0x81, 0xd0, 0x05, 0x2c, 0x20, 0x97, 0xc9, 0x64, +0x32, 0xf7, 0xef, 0xdf, 0x1f, 0x6c, 0x69, 0x69, +0xd9, 0x9a, 0xd8, 0x1c, 0x67, 0x6e, 0xa0, 0xdc, +0x0d, 0xc6, 0x86, 0xc6, 0x78, 0xeb, 0xfb, 0x6f, +0xe3, 0xfb, 0x7e, 0x29, 0xc0, 0x0d, 0x5c, 0x1a, +0x60, 0xfd, 0xa6, 0x56, 0xda, 0x77, 0xb5, 0xe3, +0xd8, 0x0e, 0x9e, 0xeb, 0xd1, 0x7d, 0x6c, 0x1f, +0xa9, 0xe6, 0x14, 0x83, 0x9f, 0xdf, 0x64, 0x6e, +0x66, 0xae, 0xec, 0x19, 0x42, 0x08, 0x54, 0x5d, +0x45, 0xd1, 0x14, 0x14, 0x45, 0xc1, 0x75, 0x5d, +0x0a, 0xf9, 0xc2, 0x8a, 0x02, 0xa6, 0x34, 0x25, +0xb1, 0xf5, 0x31, 0x10, 0xf8, 0xe7, 0xcf, 0x9f, +0xff, 0x84, 0xa0, 0x90, 0x22, 0x2c, 0xa2, 0x28, +0x1b, 0x0e, 0x7d, 0xdf, 0xf7, 0xab, 0x8d, 0x02, +0x21, 0x00, 0x79, 0x82, 0x9c, 0xfb, 0xf4, 0xd9, +0xb3, 0x67, 0x7f, 0x7a, 0xea, 0xd4, 0xa9, 0xef, +0x9a, 0x5b, 0x0d, 0xec, 0x11, 0x07, 0xdf, 0x9e, +0x1f, 0x4a, 0x67, 0x27, 0x72, 0x08, 0x21, 0xa9, +0xac, 0x07, 0xed, 0xfd, 0xd9, 0x05, 0xa4, 0xaa, +0xd0, 0xd4, 0xd6, 0x88, 0x63, 0x3b, 0x14, 0x6c, +0x97, 0xd6, 0xcd, 0xad, 0xa4, 0xd7, 0x37, 0x32, +0x31, 0x3a, 0xc1, 0xec, 0x54, 0x0e, 0x7b, 0xce, +0x0a, 0xe6, 0x0d, 0x52, 0x52, 0xb0, 0x0b, 0xd8, +0xf9, 0x02, 0xf6, 0x9c, 0x8d, 0x63, 0xbb, 0xf8, +0x1e, 0xc8, 0x15, 0x0c, 0x99, 0x89, 0x2e, 0x13, +0xa9, 0x48, 0x06, 0x07, 0x07, 0x2f, 0x0d, 0x0c, +0x0c, 0xdc, 0x64, 0xbe, 0x6e, 0xa0, 0x7a, 0x0c, +0x80, 0x52, 0xee, 0xbc, 0x32, 0x0e, 0x58, 0x04, +0xe6, 0x33, 0xf5, 0xeb, 0x5f, 0xff, 0xba, 0x37, +0x93, 0xc9, 0x5c, 0x57, 0x74, 0x85, 0xc4, 0x36, +0x13, 0x45, 0x51, 0x1e, 0xc8, 0xbe, 0xe7, 0x73, +0xee, 0x9d, 0x4f, 0xb9, 0xde, 0x7b, 0x03, 0xc7, +0x76, 0x71, 0x0b, 0x4e, 0x70, 0x75, 0x5c, 0x8c, +0x3a, 0x83, 0x64, 0x63, 0x3d, 0xa9, 0xe6, 0x14, +0x31, 0x23, 0x86, 0xef, 0xfb, 0x78, 0xae, 0x8f, +0x5f, 0x1c, 0x45, 0xf0, 0xfc, 0x9a, 0xde, 0x51, +0xc9, 0x7a, 0x5a, 0xc7, 0xd8, 0x10, 0x03, 0x70, +0xdf, 0x7b, 0xef, 0xbd, 0x37, 0x09, 0x12, 0xa4, +0x33, 0x45, 0x65, 0x46, 0x4b, 0x68, 0x28, 0x03, +0x20, 0x42, 0x51, 0x00, 0xec, 0x22, 0x72, 0x33, +0xc0, 0x44, 0x4f, 0x4f, 0xcf, 0x4f, 0x00, 0xdf, +0x68, 0x8f, 0xa1, 0xd5, 0x69, 0x35, 0x05, 0x23, +0x29, 0x24, 0xfd, 0x17, 0x06, 0xf8, 0xed, 0x7f, +0x5f, 0x61, 0x6a, 0x6c, 0x1a, 0xb7, 0xe0, 0xe2, +0xda, 0x6e, 0xb0, 0xba, 0x2c, 0x14, 0xd9, 0xf1, +0xf0, 0x1c, 0x1f, 0xdf, 0xf1, 0xf1, 0xdd, 0x20, +0x45, 0x26, 0x90, 0x2b, 0x0a, 0x7e, 0xf1, 0x2e, +0x03, 0x21, 0x04, 0x7d, 0x7d, 0x7d, 0x1f, 0xf7, +0xf7, 0xf7, 0xf7, 0x53, 0x9e, 0x26, 0x0f, 0x01, +0x28, 0x99, 0x3f, 0x44, 0x62, 0x80, 0xef, 0xfb, +0x61, 0xd1, 0x61, 0x34, 0x10, 0x96, 0x00, 0xb8, +0x78, 0xf1, 0xe2, 0xe7, 0xc7, 0x8e, 0x1d, 0xbb, +0xb4, 0x79, 0xf3, 0xe6, 0xfd, 0x75, 0xfb, 0x4c, +0x72, 0xe7, 0xe7, 0xf0, 0x6b, 0x5c, 0x20, 0x4e, +0x66, 0x26, 0x98, 0xcc, 0x4c, 0x10, 0x4f, 0xc6, +0xa9, 0x6f, 0xaa, 0x47, 0x51, 0x03, 0xd3, 0xf6, +0x3c, 0x0f, 0xc7, 0x76, 0x70, 0xc2, 0x80, 0x69, +0x15, 0x8a, 0xda, 0x5f, 0xfe, 0x9c, 0x41, 0xdf, +0xa4, 0xa1, 0x37, 0x69, 0xd8, 0xb6, 0x9d, 0x7f, +0xf3, 0xcd, 0x37, 0xdf, 0xa4, 0x7a, 0xb1, 0xc4, +0x82, 0xf5, 0x40, 0xb5, 0xd5, 0x60, 0xa5, 0x1b, +0xcc, 0x12, 0x20, 0x79, 0xff, 0xf4, 0xe9, 0xd3, +0xff, 0xf6, 0xbd, 0xef, 0x7d, 0xaf, 0xbd, 0x2e, +0x59, 0xd7, 0x64, 0xee, 0x32, 0xc9, 0xff, 0xd6, +0x5e, 0x56, 0x27, 0xf3, 0x33, 0x16, 0xf9, 0x19, +0x6b, 0x89, 0x16, 0x62, 0x45, 0x7e, 0xaf, 0x36, +0x29, 0x18, 0x9d, 0x3a, 0x3e, 0xbe, 0xdf, 0xd3, +0xd3, 0xf3, 0x5a, 0x26, 0x93, 0x19, 0x02, 0x26, +0x58, 0x98, 0x1e, 0x2f, 0xd3, 0x3e, 0x54, 0xdf, +0x52, 0xa8, 0x1c, 0x0e, 0xe7, 0x8a, 0x0f, 0xca, +0x8e, 0x8f, 0x8f, 0xdf, 0x7a, 0xed, 0xb5, 0xd7, +0xfe, 0xd9, 0x75, 0x5d, 0x4b, 0x5f, 0xaf, 0x61, +0x6c, 0x89, 0xad, 0xc8, 0x54, 0xd7, 0x92, 0xb5, +0x3a, 0x15, 0x73, 0x4f, 0x0c, 0xa9, 0x48, 0x7a, +0x7b, 0x7b, 0x7f, 0xd6, 0xd3, 0xd3, 0xf3, 0x01, +0x4b, 0x54, 0x89, 0x2c, 0x80, 0x7c, 0x25, 0x05, +0x12, 0xcf, 0x3c, 0xf3, 0xcc, 0xf1, 0x53, 0xa7, +0x4e, 0x7d, 0x47, 0x08, 0x21, 0x0a, 0x37, 0x5c, +0x9c, 0xdb, 0xbf, 0x9b, 0xcd, 0x12, 0x59, 0x27, +0xd0, 0xf7, 0xa8, 0x88, 0x98, 0x60, 0x60, 0x60, +0xe0, 0xd2, 0x2b, 0xaf, 0xbc, 0xb2, 0xec, 0x02, +0x89, 0x05, 0x2e, 0x50, 0x11, 0x0b, 0xc2, 0x34, +0xd2, 0x1c, 0xf3, 0xbb, 0xc5, 0xca, 0x99, 0x33, +0x67, 0x3e, 0x68, 0x69, 0x69, 0x69, 0x7e, 0xea, +0xa9, 0xa7, 0x9e, 0xd3, 0xb7, 0xa9, 0x42, 0xa9, +0x97, 0x38, 0x7d, 0x6e, 0x45, 0x7c, 0x7d, 0xb8, +0x24, 0x9b, 0x25, 0xea, 0x76, 0x89, 0x50, 0x04, +0x99, 0x4c, 0x66, 0xe0, 0x07, 0x3f, 0xf8, 0xc1, +0xbf, 0xb0, 0xb0, 0x3c, 0x26, 0x5a, 0x28, 0x55, +0x5b, 0x89, 0x0c, 0xd4, 0x5e, 0x24, 0xf5, 0xec, +0xb3, 0xcf, 0x9e, 0x38, 0x79, 0xf2, 0xe4, 0xb7, +0x34, 0x4d, 0xd3, 0xfd, 0x69, 0x1f, 0xe7, 0x8a, +0x8b, 0xbf, 0xbc, 0xb0, 0xb0, 0x22, 0x52, 0x36, +0x49, 0x94, 0x8e, 0xc0, 0x7b, 0xfb, 0xfa, 0xfa, +0x7a, 0x5f, 0x7d, 0xf5, 0xd5, 0x1f, 0x5a, 0x96, +0xb5, 0x76, 0x45, 0x52, 0x50, 0x7b, 0x99, 0xdc, +0x81, 0x03, 0x07, 0xf6, 0xbd, 0xf4, 0xd2, 0x4b, +0x7f, 0x95, 0x48, 0x24, 0x1a, 0x70, 0xc1, 0xbb, +0xed, 0xe3, 0x0d, 0xfb, 0x0f, 0xc5, 0x1a, 0x44, +0x5a, 0x20, 0x37, 0x0b, 0x44, 0x02, 0x7c, 0xdf, +0xf7, 0x3e, 0xfc, 0xf0, 0xc3, 0x77, 0x4f, 0x9f, +0x3e, 0xbd, 0xf6, 0x65, 0x72, 0xa5, 0x3f, 0x6b, +0x2c, 0x94, 0x5c, 0xbf, 0x7e, 0xfd, 0xa6, 0x97, +0x5f, 0x7e, 0xf9, 0x2f, 0x1e, 0x79, 0xe4, 0x91, +0x1d, 0x00, 0xd8, 0xe0, 0x0d, 0xf9, 0x78, 0xa3, +0x54, 0x09, 0x3b, 0x2b, 0x10, 0xbc, 0x8e, 0x40, +0xf0, 0x86, 0xe0, 0x7b, 0x2e, 0x97, 0x9b, 0x7c, +0xe7, 0x9d, 0x77, 0x7e, 0x74, 0xe6, 0xcc, 0x99, +0x8f, 0x08, 0x8a, 0x24, 0xef, 0x11, 0x44, 0xfd, +0xb0, 0x7e, 0x78, 0xf5, 0x85, 0x92, 0xa5, 0x06, +0x8b, 0x97, 0xca, 0xc6, 0x09, 0xf2, 0xef, 0xa5, +0x52, 0xd9, 0x63, 0xc7, 0x8e, 0x1d, 0x3c, 0x79, +0xf2, 0xe4, 0x73, 0x4d, 0x4d, 0x4d, 0x1b, 0x01, +0x28, 0x80, 0x7f, 0x3f, 0xe8, 0x9e, 0x3f, 0xc9, +0xf2, 0xc0, 0x88, 0x83, 0x68, 0x0c, 0x98, 0xba, +0xe0, 0x27, 0xdb, 0xb6, 0xf3, 0xbd, 0xbd, 0xbd, +0xbf, 0x78, 0xe3, 0x8d, 0x37, 0xde, 0xcb, 0xe5, +0x72, 0x61, 0xa9, 0xec, 0x04, 0xe5, 0x33, 0xbe, +0xb5, 0x2b, 0x95, 0x5d, 0x04, 0x84, 0xc5, 0x8a, +0xa5, 0x53, 0x04, 0xae, 0x91, 0x7e, 0xe1, 0x85, +0x17, 0x9e, 0x7e, 0xfa, 0xe9, 0xa7, 0x9f, 0x4d, +0x26, 0x93, 0xa5, 0x62, 0x69, 0xdc, 0x62, 0x57, +0x2d, 0xf0, 0x6d, 0x31, 0x7f, 0x22, 0xc0, 0xa3, +0x74, 0x8a, 0x40, 0xc4, 0xfc, 0xe0, 0x73, 0x92, +0x00, 0xe2, 0x22, 0x39, 0x8e, 0x63, 0x5f, 0xb9, +0x72, 0xe5, 0xe3, 0xd7, 0x5f, 0x7f, 0xfd, 0xad, +0x4c, 0x26, 0x33, 0x52, 0x7c, 0xd2, 0x64, 0x91, +0xa3, 0x5a, 0x5f, 0xfb, 0x62, 0xe9, 0x25, 0x40, +0x88, 0x1e, 0x90, 0x08, 0xcf, 0x08, 0xd4, 0x15, +0xbb, 0x9f, 0x04, 0xea, 0x1f, 0x7f, 0xfc, 0xf1, +0xed, 0x87, 0x0e, 0x1d, 0x3a, 0xb8, 0x75, 0xeb, +0xd6, 0xdd, 0xe9, 0x74, 0x7a, 0x59, 0xe5, 0xf2, +0x96, 0x65, 0xe5, 0x6e, 0xde, 0xbc, 0x79, 0xf5, +0xf3, 0xcf, 0x3f, 0xbf, 0xf0, 0xfe, 0xfb, 0xef, +0x5f, 0x98, 0x99, 0x99, 0x09, 0x83, 0x5b, 0xa8, +0xed, 0xaf, 0xae, 0x5c, 0xbe, 0xd4, 0x78, 0xe9, +0x03, 0x13, 0xa1, 0x45, 0x54, 0x3d, 0x30, 0xb1, +0x63, 0xc7, 0x8e, 0x8d, 0x07, 0x0e, 0x1c, 0xd8, +0x91, 0x4c, 0x26, 0xd3, 0xf5, 0xf5, 0xf5, 0xa9, +0x78, 0x3c, 0x9e, 0x4c, 0x24, 0x12, 0xf5, 0xaa, +0xaa, 0xaa, 0xb9, 0x5c, 0x6e, 0x66, 0x66, 0x66, +0x66, 0x6a, 0x76, 0x76, 0x76, 0x6a, 0x7a, 0x7a, +0x3a, 0x7b, 0xfb, 0xf6, 0xed, 0xe1, 0x0f, 0x3e, +0xf8, 0xe0, 0x8b, 0x42, 0xa1, 0xb0, 0xd4, 0x81, +0x89, 0xa8, 0xe0, 0x65, 0x27, 0x47, 0x6a, 0x15, +0x7e, 0xd9, 0x00, 0x44, 0x40, 0x80, 0x95, 0x1f, +0x99, 0x89, 0x26, 0x2a, 0xc3, 0x99, 0x68, 0xb8, +0x0f, 0x51, 0xda, 0x8e, 0x63, 0xfe, 0xb8, 0x4c, +0x25, 0x2f, 0x7a, 0x64, 0x86, 0x25, 0xa2, 0xfd, +0xa2, 0xf2, 0xfc, 0x8e, 0x0e, 0x4d, 0x45, 0x4f, +0x8e, 0x41, 0xf9, 0xf4, 0x3b, 0x04, 0xe1, 0x2b, +0x39, 0x34, 0xb5, 0xaa, 0x83, 0x93, 0xab, 0x38, +0x36, 0x57, 0x99, 0xab, 0xab, 0xcc, 0x49, 0x84, +0xfc, 0xc0, 0x63, 0x73, 0xac, 0x42, 0x78, 0x58, +0x25, 0x00, 0x50, 0x06, 0x02, 0x94, 0x5b, 0x44, +0x34, 0xd3, 0x5c, 0xcb, 0xc1, 0xc9, 0xca, 0x4d, +0x99, 0x25, 0x0f, 0x4e, 0xb2, 0x4a, 0xc1, 0x4b, +0x1d, 0xfe, 0xff, 0x7e, 0x74, 0x76, 0xcd, 0x00, +0x28, 0x7b, 0xe8, 0x1a, 0x1e, 0x9e, 0x8e, 0x5c, +0x83, 0x2f, 0xff, 0x5b, 0x0f, 0x4f, 0xff, 0x5f, +0xa5, 0xff, 0x01, 0xc3, 0x79, 0x01, 0x32, 0xa3, +0x62, 0x09, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x49, +0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, +}; + +#endif + diff --git a/source/bitmaps/misc/activity5.png b/source/bitmaps/misc/activity5.png new file mode 100644 index 0000000000000000000000000000000000000000..fb28341d06af5f46d3ff5979b3a55aa9591aee4d GIT binary patch literal 4287 zcmV;w5J2yVP)iDWHU=hJ( zktOKzk8$~uF-$O7$ ziwFUTYCaU$Dsmo}D_--(-$Fn_%kU^#!*W4b763)zLk=|_YB>}*4kRKR2jc72t=qV9 zp~gckCxH4QCxQBoj*ji^?d=Dfo11sXmD!#Oc!~Ec`!nYh`L2hAk+jv72!1kvo?XcqRZ=Qk6HL>qvX*Gb=P zBz>ousq&N-TLLZbLZZ*ENc|FUj$={z&+-Q zK-3Jvk^n3sd}!_|APqF9QmM_~_{KNB)6me+6$q};_QfMK4YeTr+J#<>a;aH{_Y5)J zG6g`PP?)}S>C)*dSFW4|#({eT77?|Enm||-fGTFMGjH+@Koii?(b3U;^ytx-4Z~=V zj-;ipjh5@JNLQ{}@JgC)on&P9ZSu)E0PothYww;td-hErLjXjUg&?>D^4AVP#ZXsG z_!eMYcX#)R?(XhyDT<<-**NXL*^HXk)=uK8J%+IzcNyD03c%>-Xm3wX&kqZQ!X03Y zz%8a&XbDw8SPFn}s0+=$j-tr}>z{n`$rrl1x}Fn4h~%vXS}$x^mXEKNrZ-G+_pxDo z#bat}YT)g+-~LC-vThStLllHkV5|v%3eyjxeN^-7_wL<${P5w!-vLC^=PjhJH$F5$ zmm)i5arek=9Md6_$y|Ett+&1p++iMsX@bC58X_w}D09?`DQ-B{hY>#oG_|+4?>=6(bvIJD!u_4FGNrQa>;|N((AwJCeeBq=7YUSiUDp z$;sgh7cTsq>NCZ%B{eJ!fJ$Kg34)nj_$ z5;|I3Lo+qhSkRUHRG#e33G!3O^rSE)Kkwf?*{RrBBLwN5>*b?QSFxjaOlvX=M_Z} z#!wvQ1g`X!%@`6FDS< zvSGu9tpt{vC<35SB^JmE?N^$A97yilx9_p$=H_kEk!aUq%htRnT!aQPCXg|Zh5*gS z%3EYdvSj)*+`D}bE0;$#71X$b8dovX21ow0@Lw6O8qbm$h%%+RXUiJ$!GzKgyReyp1kxZEf8fH*VZKJUkpO zoOI?VM&Tw*85+^aPq?uWPp8wZjg5_)g)a~{<%+dmaBOBKrpe9bunX3rZSUW`&)FY; z%-z1bXr_u5SBcf@ocP=0s0js6xWt=Hp831ueElz<#PyxB`~AF!%qU1H#m=2OA7|bI z!r`#A6D5QYY6Sq577*XJZ{I;FrSQiEuInz08a0sX6-SF2?{$5bkN)FhVyPJ04tJs% z8fJsZiN86{{o7d%zjz2mS2+8|Z>o+&VpJd>k+iqB@2vn}K_FBY@&6D2v%S52uMh(7 zu8$`kZW5)Ee)al?wC{U_csh<2)7bm_dyr~?qUU%Fem00Fs?0-1LGuOabh;y*PB&+> z*-^>?kQCPkl`asq0NpgrwJer{fbBDMdu&LpB9z$1e zRlnDB@$Z9_QtaQq|7!&9T-^d9!bf9(3g}z5Z0S%`Mf0XTT+4lMPG=3ttT%b`#iJbj zqpzXHG&Dm)H+2+M!E;>(fAs~9=PcSMcicm5RcL8x*~I)XSh*QnbrdMMK|@1Bvy>9o z^6*wL>stv)MY8AV-5h=X2&v{Iimsxl5>->sVk(-hVdX5YetK=mK6#czN=ZB(PqB#b zz=9xHw&_`4U!N92;N?AB@znqjOT;L+1%|HPVq3hESe;SoneX}7mW|`Md~xo}CHv%9 z0wDyZX(pK$zA`ga<^th0Y^2oH)up7Ac(%9dMNh3XGdsg)A6@3Nk1ivGU|mNG+xBmx z>#;}adaMhx-eh!el(D;GOO7gzGBSE?5%V^2Oh!6rP178wy=?K`^nx^~deO$lX z&v4%`p7(Gp=FY%K(658CxsSt2c+%jG785NHV%sVqH<+4IC6p8M`86h$F7 zo#X2HYh3NUM*ro0Mu##F?8sV^8dnfPU|H5I6*IQzq_X4-cOThB z%#5L^3R02mJ-UZS_dkl2vzQp0p#O3|*DhS=`o-&OCgf72#q|(?DI)npme>#p|14!` zr>CdyODWM3O9P;4DqRO2MNySfMThVE;QRQ#j}eby|Cxk$at0>Ci9pAEN3#zV`R(Ou>;5sg@<8kZDTm0hnUov)k3}DIU ztR-m)4Iu=%TyB#29ihr?F+b`8A%{77yT8AG$oKt%p42oouHxmZ2exh9oj3&-&-L&< zAIEVi*bdpzEdTjWKf!f^A?d3mV_gg>C1Yb_H(8iYuWA8N^DhAQ%*@Qx*x1;Owzjq% z@ivpWq3Zi|n|E)bkhc+1;(H!$5dgE!{)d0(=l|Nn$n`t?*N@((kT2j^1)PGz6W=_-=A9i2?p=&^ zT_a}bNFi#zC(7pf7(xgJ2M0eR$PO)P0o6u<&;=|Ym&s%@_wU~yY-wrPn%Ep?ZlK%^ z#)igt>-%rx`+h0F4O|*v{iashceUf#4xa1LeQY18<`jdU-(+rPuIw2?2vl7~(G(O# z!F62<`NE02qCGg2krgY1*EFb)Ygb&I}~h}*3GS?*EcdTI>GEz4tvfD<_%I( zunXAv0`{DZW4rhs$Q2Bki7peVNCpQ7FAWR~++@CPpn42|QtrGm4p;={Gxh6V|GGDm z$y`@-g~T=!MNuBezUOo9olm*mdjrRIaSKjxbzF=(gJfepspb?hBZlw$c&?9M97XW_ zn%+^#dRoWW5Cd@Ed+)tB2@<3;MP)`yXea|9LQw$hB62gpL{Cr8PXOO&kD=9RH3cIn zB>fi#`0amRVQOp|x8UO1Zm_y66xs3c93S8D@!cRrCXg!%e(^2?Aq0JWeINJt_xDqt zCJzB9nLk8gfbaWZ(P1mR81Jm|A565w_FK2+aQs2mRGiVw<;kB{Ga?X}nb*>zn@U$0?oiLJ;~*OIk56?0DvsYrTzdw93y}iA^c;k&X-pl23VX5o{S|1fBmgYCNole z(qxgNT3`EO=_Npj9*_vn2-Fq3p9Jb3fBf<7hYlS&xOMB+-RX3CS>^JUW#w+(ym|HW z&p*HL{`>D=n3 z67{O8s<~WlW@ct)YIb&ZYI=G)d;9k7;SWCe;EO_`u+)KxsNiKMM`{&**#Ja9fR!Ja zi6$z;nP|8VQQD4U{pu08j=3lv_kJ(_G8J$;wTcB@a%rO2JDV{{Mb-cFh1Nd*~V-o{n6D hFaKK)Pyb(~{{h2!0Wzav37r4{002ovPDHLkV1ll;MwkEq literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/activity6.cpp b/source/bitmaps/misc/activity6.cpp new file mode 100644 index 0000000..37a2f2e --- /dev/null +++ b/source/bitmaps/misc/activity6.cpp @@ -0,0 +1,548 @@ +#include + +#ifndef MISC_ACTIVITY6_CPP +#define MISC_ACTIVITY6_CPP + +static unsigned char misc_activity6_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x51, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xf9, +0x73, 0x1c, 0xd7, 0x71, 0xc7, 0x3f, 0xef, 0xcd, +0xb1, 0x17, 0xb0, 0xc0, 0xe2, 0x24, 0x48, 0x02, +0xbc, 0x24, 0x08, 0xb0, 0x48, 0x82, 0x8c, 0x04, +0xea, 0xa4, 0x48, 0x9a, 0x4a, 0x99, 0x51, 0x1c, +0x53, 0x52, 0x52, 0x49, 0x95, 0xac, 0xb8, 0x52, +0xb1, 0x23, 0xc7, 0xa9, 0x24, 0x95, 0x3f, 0x21, +0xbf, 0xe5, 0x87, 0x94, 0x7e, 0x89, 0xe3, 0x92, +0x5d, 0x65, 0x57, 0xaa, 0x1c, 0x4a, 0x56, 0xe5, +0x17, 0xd3, 0x92, 0x68, 0xd9, 0x01, 0x65, 0x2b, +0x8c, 0x24, 0x52, 0xa2, 0xc0, 0x4b, 0xbc, 0x44, +0x88, 0x00, 0x0f, 0x80, 0x04, 0x17, 0xc7, 0x62, +0x71, 0x2c, 0x76, 0x66, 0xe7, 0xc8, 0x0f, 0xb3, +0xb3, 0x98, 0x5d, 0x2c, 0x80, 0xc5, 0x41, 0x39, +0xa9, 0x74, 0x55, 0xd7, 0xec, 0x31, 0xf3, 0xe6, +0xf5, 0xf7, 0x75, 0xf7, 0x7b, 0xaf, 0xbb, 0x9f, +0x70, 0x5d, 0x97, 0xfb, 0x49, 0x42, 0x08, 0xb1, +0xd0, 0x5f, 0x65, 0x7e, 0x9b, 0xd7, 0x19, 0xf7, +0x3e, 0x77, 0x50, 0xbd, 0x1f, 0x8d, 0x96, 0x08, +0x2d, 0x16, 0xb8, 0x2e, 0x44, 0x6e, 0xf0, 0x5a, +0x8a, 0xdf, 0x5a, 0x03, 0x22, 0xd6, 0xaa, 0xbd, +0x32, 0x42, 0x8b, 0x92, 0xcf, 0xb2, 0xcc, 0x6f, +0x41, 0x0a, 0x0a, 0xbe, 0x18, 0x7b, 0x37, 0xad, +0x51, 0xc7, 0x57, 0xad, 0x01, 0x0b, 0x08, 0x2e, +0x03, 0xd7, 0x72, 0x2c, 0x28, 0x06, 0xc1, 0x17, +0xc6, 0xc9, 0x7f, 0x76, 0x16, 0xe0, 0x02, 0x10, +0xfe, 0x6b, 0x57, 0x0b, 0xc4, 0xaa, 0x00, 0x08, +0x08, 0x5f, 0x2a, 0xb4, 0x12, 0x60, 0x35, 0xcf, +0x4a, 0x09, 0x97, 0x6a, 0x41, 0x50, 0x50, 0x0b, +0xb0, 0xcb, 0x5c, 0x6d, 0x4a, 0xc0, 0x58, 0x2d, +0x10, 0x2b, 0x32, 0x81, 0x12, 0xc1, 0x4b, 0x85, +0x56, 0x01, 0x2d, 0xc0, 0x7a, 0x9e, 0xfd, 0xef, +0x3e, 0x20, 0x41, 0x4d, 0xf0, 0x47, 0xdd, 0x17, +0x36, 0x97, 0x67, 0xb3, 0xe4, 0xea, 0x73, 0x39, +0x30, 0x56, 0x04, 0xc2, 0xb2, 0x35, 0x20, 0x20, +0xbc, 0x2f, 0x40, 0x70, 0x94, 0x75, 0x20, 0x94, +0xe7, 0x70, 0x9e, 0x23, 0x81, 0xef, 0x3e, 0x18, +0xbe, 0x46, 0xf8, 0x00, 0x04, 0x47, 0xde, 0x17, +0xd8, 0xc8, 0x73, 0x16, 0x98, 0xcd, 0x5f, 0xb3, +0xf9, 0xdf, 0x7c, 0x40, 0x7c, 0xcd, 0x70, 0xc8, +0x6b, 0xc3, 0x72, 0x41, 0x58, 0x16, 0x00, 0x79, +0xe1, 0x7d, 0xf6, 0x47, 0xdc, 0x1f, 0x65, 0x5f, +0xe0, 0x28, 0x10, 0x0b, 0x70, 0x14, 0x88, 0x36, +0x35, 0x35, 0x6d, 0xd8, 0xb0, 0x61, 0x43, 0x47, +0x38, 0x1c, 0xae, 0x0b, 0x87, 0xc3, 0xb5, 0xba, +0xae, 0xc7, 0x75, 0x5d, 0x8f, 0x4b, 0x29, 0x35, +0xd3, 0x34, 0xa7, 0x4c, 0xd3, 0x9c, 0x34, 0x0c, +0x63, 0xc2, 0x30, 0x8c, 0xd4, 0xc4, 0xc4, 0xc4, +0xe0, 0xf5, 0xeb, 0xd7, 0xaf, 0x38, 0x8e, 0x33, +0x03, 0x64, 0x80, 0x99, 0x00, 0x67, 0x02, 0x80, +0x18, 0xa5, 0x40, 0x2c, 0xd7, 0x24, 0x2a, 0x36, +0x81, 0x80, 0xf0, 0xbe, 0xba, 0xfb, 0x23, 0xee, +0x8f, 0x72, 0x0c, 0xa8, 0xce, 0x73, 0x1c, 0xa8, +0x6e, 0x6b, 0x6b, 0x7b, 0xa8, 0xb5, 0xb5, 0xf5, +0xd1, 0x86, 0x86, 0x86, 0x87, 0xa3, 0xd1, 0x68, +0x73, 0x45, 0x2f, 0xca, 0x93, 0x65, 0x59, 0x99, +0x54, 0x2a, 0xf5, 0xf9, 0xf0, 0xf0, 0xf0, 0xd9, +0xbe, 0xbe, 0xbe, 0x73, 0x86, 0x61, 0x8c, 0x01, +0x93, 0xc0, 0x54, 0x9e, 0xa7, 0x99, 0x03, 0xc3, +0xd7, 0x88, 0xa0, 0x59, 0x54, 0x04, 0x42, 0x45, +0x00, 0x94, 0x11, 0x5e, 0xc3, 0x53, 0xeb, 0x08, +0x50, 0x95, 0x17, 0xba, 0x16, 0xa8, 0x01, 0xea, +0x76, 0xed, 0xda, 0xf5, 0xcc, 0xb6, 0x6d, 0xdb, +0x0e, 0x85, 0xc3, 0xe1, 0x7a, 0xbf, 0x0d, 0x25, +0xa7, 0x92, 0x48, 0xd6, 0x11, 0x9e, 0x8e, 0xa0, +0x67, 0x75, 0x34, 0x43, 0x47, 0xcf, 0x86, 0x90, +0xb6, 0x24, 0x17, 0x36, 0x31, 0x43, 0x26, 0x66, +0xd8, 0xc0, 0x8c, 0x18, 0x4c, 0x34, 0xa5, 0xc8, +0xc6, 0x66, 0x0b, 0xef, 0x77, 0x1c, 0x27, 0x77, +0xf7, 0xee, 0xdd, 0x53, 0xbd, 0xbd, 0xbd, 0x6f, +0x4f, 0x4d, 0x4d, 0xdd, 0x01, 0x52, 0x40, 0x3a, +0x00, 0x48, 0x86, 0x39, 0xd3, 0xb0, 0x96, 0x03, +0xc2, 0x92, 0x00, 0x94, 0x08, 0xef, 0x3b, 0xb8, +0x30, 0x73, 0x23, 0x5e, 0x03, 0xd4, 0x01, 0x75, +0x1d, 0x1d, 0x1d, 0x8f, 0x77, 0x76, 0x76, 0x7e, +0x23, 0x16, 0x8b, 0xb5, 0x00, 0x68, 0x59, 0x9d, +0xc4, 0x70, 0x1d, 0x89, 0x3b, 0x0d, 0xc4, 0x47, +0x6b, 0x10, 0xce, 0x52, 0x6b, 0xa0, 0x39, 0x9a, +0xad, 0xce, 0x90, 0x5a, 0x3f, 0x46, 0xaa, 0x65, +0x8c, 0x99, 0xda, 0x69, 0x00, 0x6c, 0xdb, 0x36, +0x6e, 0xdf, 0xbe, 0xfd, 0xdb, 0xd3, 0xa7, 0x4f, +0x1f, 0x33, 0x0c, 0xe3, 0x1e, 0x30, 0x9e, 0x07, +0x63, 0x12, 0xcf, 0x3c, 0x66, 0xf3, 0x40, 0x54, +0x0c, 0xc2, 0xa2, 0x00, 0x2c, 0x20, 0xbc, 0xaf, +0xee, 0x35, 0x40, 0x02, 0x68, 0xa8, 0xa9, 0xa9, +0xd9, 0xbc, 0x6f, 0xdf, 0xbe, 0xef, 0xd4, 0xd6, +0xd6, 0xb6, 0x7b, 0x82, 0x6b, 0xb4, 0x5c, 0xd9, +0x48, 0xfd, 0xad, 0x46, 0x84, 0x5b, 0xb9, 0xd0, +0x0b, 0x51, 0xa6, 0x66, 0x86, 0xa1, 0xed, 0xb7, +0x98, 0x6a, 0x9c, 0x04, 0x20, 0x97, 0xcb, 0x4d, +0x9d, 0x3f, 0x7f, 0xfe, 0xc8, 0xe5, 0xcb, 0x97, +0x4f, 0x02, 0xa3, 0xc0, 0x18, 0x9e, 0x46, 0x04, +0xb5, 0xa1, 0x22, 0x10, 0x16, 0x04, 0xa0, 0x8c, +0xda, 0xeb, 0xcc, 0xa9, 0x7c, 0x2d, 0x50, 0x0f, +0x34, 0xb6, 0xb5, 0xb5, 0x75, 0x3d, 0xf1, 0xc4, +0x13, 0xaf, 0x84, 0xc3, 0xe1, 0x5a, 0x69, 0x49, +0x1a, 0xfb, 0x5a, 0x68, 0xfc, 0xa2, 0x19, 0x69, +0xcb, 0x55, 0x0b, 0x5e, 0x4a, 0x53, 0xcd, 0x69, +0xee, 0x3e, 0x3c, 0x48, 0x36, 0x3e, 0x0b, 0xe0, +0x5c, 0xbb, 0x76, 0xed, 0xd8, 0xc9, 0x93, 0x27, +0x8f, 0x02, 0x49, 0x3c, 0x20, 0x52, 0xcc, 0x07, +0xc1, 0xc6, 0x93, 0xbf, 0x72, 0x00, 0x4a, 0xa6, +0xba, 0x72, 0xc2, 0x37, 0x02, 0x4d, 0x5d, 0x5d, +0x5d, 0x07, 0xbb, 0xba, 0xba, 0x5e, 0x52, 0x14, +0x45, 0x8f, 0xa4, 0xa2, 0xb4, 0x7e, 0xbc, 0x19, +0x35, 0xab, 0xad, 0x9d, 0xc4, 0x65, 0x7b, 0x0c, +0x23, 0x1d, 0xc3, 0x8c, 0x3c, 0x74, 0x0f, 0x80, +0x7b, 0xf7, 0xee, 0xf5, 0xf6, 0xf4, 0xf4, 0xfc, +0x38, 0x97, 0xcb, 0xdd, 0x01, 0x46, 0xf0, 0xcc, +0x62, 0x92, 0xf9, 0x9a, 0x50, 0x16, 0x84, 0xc5, +0x00, 0xf0, 0xa7, 0x3a, 0x5f, 0xed, 0xab, 0xc8, +0xab, 0x3c, 0xb0, 0xee, 0xa9, 0xa7, 0x9e, 0x7a, +0xb1, 0xbd, 0xbd, 0xfd, 0x79, 0x21, 0x84, 0x88, +0xdf, 0xae, 0xa5, 0xf9, 0xec, 0xfa, 0x65, 0xd9, +0xf8, 0x6a, 0x69, 0x6a, 0xfd, 0x24, 0xc3, 0x8f, +0x0c, 0xe1, 0x2a, 0x0e, 0x93, 0x93, 0x93, 0x03, +0x6f, 0xbf, 0xfd, 0xf6, 0x3f, 0x1b, 0x86, 0x31, +0x88, 0xa7, 0x0d, 0x41, 0x10, 0x0a, 0x8e, 0xb1, +0x22, 0x00, 0x4a, 0x54, 0xdf, 0xf7, 0xf6, 0xc1, +0x91, 0x5f, 0xb7, 0x63, 0xc7, 0x8e, 0x03, 0x8f, +0x3d, 0xf6, 0xd8, 0x77, 0x00, 0x51, 0x7f, 0xb1, +0x91, 0x9a, 0x2f, 0xea, 0xee, 0x9b, 0xa0, 0x8b, +0x91, 0x59, 0x63, 0x30, 0xfc, 0xf8, 0x20, 0x56, +0xc4, 0x22, 0x99, 0x4c, 0x9e, 0x7f, 0xeb, 0xad, +0xb7, 0xbe, 0x0f, 0xdc, 0x61, 0x0e, 0x84, 0x29, +0x3c, 0xc7, 0x58, 0x98, 0x22, 0x4b, 0x41, 0x28, +0x32, 0xd4, 0x92, 0x25, 0xae, 0x3f, 0xd7, 0xfb, +0x1e, 0xbf, 0x06, 0xa8, 0x6f, 0x6d, 0x6d, 0x7d, +0xb8, 0xbb, 0xbb, 0xfb, 0x5b, 0x42, 0x08, 0x91, +0xb8, 0x5a, 0x4f, 0xd5, 0xf5, 0x1a, 0x6c, 0x61, +0xff, 0x4e, 0x58, 0x99, 0x54, 0x69, 0x3a, 0xb9, +0x1e, 0x69, 0x2b, 0x34, 0x37, 0x37, 0x77, 0xed, +0xdf, 0xbf, 0xff, 0x4f, 0xf0, 0x06, 0x29, 0x81, +0x37, 0x43, 0x45, 0xf0, 0xcc, 0xb7, 0xb0, 0xea, +0x2c, 0x8d, 0x4f, 0x94, 0x5b, 0x09, 0x96, 0x73, +0x7c, 0xd5, 0x40, 0x22, 0x1e, 0x8f, 0xb7, 0x1e, +0x38, 0x70, 0xe0, 0xaf, 0x35, 0x4d, 0x0b, 0x45, +0x86, 0xa2, 0x54, 0xf5, 0xd5, 0xe0, 0x48, 0x67, +0xf9, 0x43, 0xb7, 0x86, 0xa4, 0xcc, 0xa8, 0xd4, +0x9f, 0x69, 0x62, 0xfc, 0xb1, 0x24, 0xed, 0xed, +0xed, 0x5f, 0x4b, 0xa7, 0xd3, 0x43, 0x67, 0xcf, +0x9e, 0xfd, 0x4f, 0xca, 0xaf, 0x14, 0x8b, 0xb6, +0xd4, 0xb0, 0x38, 0x00, 0x2a, 0x9e, 0xfa, 0xc7, +0xf0, 0x56, 0x76, 0x75, 0x07, 0x0f, 0x1e, 0xfc, +0x56, 0x34, 0x1a, 0xad, 0x57, 0xd3, 0x1a, 0xd5, +0xe7, 0x12, 0xd8, 0xd2, 0x5e, 0x5d, 0xe7, 0x35, +0x05, 0x35, 0xac, 0xa2, 0xea, 0x0a, 0x52, 0xf5, +0x94, 0xd1, 0xb1, 0x1c, 0xb2, 0x93, 0x06, 0x76, +0xae, 0xf2, 0xb6, 0xb5, 0xa4, 0x4e, 0xf5, 0xd5, +0x1a, 0xa6, 0xbf, 0x32, 0x29, 0x1e, 0x7d, 0xe4, +0xd1, 0x97, 0xfb, 0xfb, 0xfb, 0xaf, 0xa6, 0xd3, +0xe9, 0x0c, 0xc5, 0x7b, 0x07, 0xdf, 0x19, 0x8a, +0xe0, 0x9e, 0xa1, 0x00, 0xc0, 0x52, 0xd3, 0xde, +0xb6, 0x6d, 0xdb, 0xb6, 0x37, 0x37, 0x37, 0x77, +0x09, 0x57, 0x50, 0xfd, 0x69, 0x2d, 0xae, 0xe3, +0xb0, 0x9a, 0x29, 0x5e, 0xd5, 0x15, 0x94, 0xb0, +0x44, 0x0d, 0x4b, 0xd4, 0xb0, 0x82, 0x16, 0xd6, +0x50, 0x74, 0x05, 0x35, 0xa4, 0xa2, 0xe8, 0x0a, +0xe6, 0xb4, 0x49, 0xea, 0xf6, 0x04, 0xb3, 0x13, +0xb3, 0x4b, 0x37, 0x06, 0x84, 0xbf, 0x88, 0x62, +0x36, 0x1b, 0xe4, 0x1a, 0xcc, 0xd0, 0xd3, 0x4f, +0x3f, 0xfd, 0xfc, 0xb1, 0x63, 0xc7, 0x7e, 0xc4, +0xdc, 0xde, 0xc1, 0xd7, 0x84, 0x79, 0x5a, 0x50, +0xaa, 0x01, 0xc1, 0xd1, 0x2f, 0x02, 0xa0, 0xbb, +0xbb, 0xfb, 0x05, 0x45, 0x51, 0x84, 0xde, 0x1f, +0x86, 0x59, 0x81, 0xbd, 0x0a, 0xd5, 0x57, 0x75, +0x15, 0x19, 0x51, 0x51, 0xc2, 0x0a, 0x32, 0xac, +0xa2, 0x84, 0x55, 0x64, 0xc8, 0x13, 0x5e, 0x0d, +0xab, 0xa8, 0x21, 0x95, 0x48, 0x7d, 0x84, 0xc4, +0xb6, 0x3a, 0x46, 0xbe, 0x18, 0x61, 0xf8, 0xca, +0x3d, 0x2a, 0x59, 0xb2, 0x87, 0xaf, 0xc4, 0xb0, +0xf7, 0x59, 0xb4, 0xb5, 0xb5, 0x3d, 0xbe, 0x7e, +0xfd, 0xfa, 0x9e, 0x3b, 0x77, 0xee, 0x4c, 0x32, +0xb7, 0x67, 0x08, 0x4e, 0x89, 0x05, 0x2d, 0x90, +0x40, 0xe9, 0x2e, 0x2f, 0xa8, 0xfe, 0x51, 0x20, +0xbe, 0x73, 0xe7, 0xce, 0x47, 0x1a, 0x1a, 0x1a, +0x1e, 0x90, 0x96, 0x44, 0xbb, 0x16, 0xc2, 0x11, +0xf6, 0x8a, 0x59, 0x86, 0x04, 0x4a, 0x44, 0x20, +0x34, 0x17, 0x47, 0x3a, 0xb8, 0xd2, 0x01, 0xc5, +0x05, 0xd5, 0x45, 0x86, 0x24, 0x6a, 0x54, 0x45, +0x8d, 0xa8, 0xa8, 0x51, 0x15, 0xbd, 0x5a, 0xa5, +0x6d, 0xcf, 0x46, 0x3a, 0x0e, 0xb5, 0x83, 0xea, +0x2e, 0xd9, 0xb6, 0x48, 0x0b, 0xb4, 0x21, 0x1d, +0x45, 0x51, 0x94, 0x27, 0x9f, 0x7c, 0xf2, 0x79, +0x3c, 0xd3, 0x8d, 0xe5, 0x07, 0x52, 0xc3, 0xd3, +0xec, 0x22, 0xc7, 0x5f, 0xaa, 0x01, 0xc1, 0xcd, +0x4e, 0x61, 0xbd, 0xdf, 0xd5, 0xd5, 0xf5, 0x07, +0x52, 0x4a, 0x94, 0xeb, 0x3a, 0x8e, 0xe5, 0x82, +0x5c, 0x59, 0x14, 0x4a, 0x48, 0x41, 0x0e, 0x0b, +0x33, 0x93, 0xc3, 0x75, 0xca, 0xb7, 0x51, 0xdd, +0x50, 0x45, 0x73, 0x7b, 0x33, 0x8d, 0x5b, 0x1b, +0x50, 0x75, 0x4f, 0x1b, 0x9a, 0x12, 0x4d, 0x18, +0x86, 0xc9, 0xe7, 0xff, 0x75, 0x6d, 0xc9, 0x77, +0x28, 0x57, 0x43, 0x38, 0x1b, 0x6c, 0x5a, 0x5a, +0x5a, 0xba, 0x36, 0x6c, 0xd8, 0xb0, 0x79, 0x68, +0x68, 0xc8, 0xdf, 0x38, 0xe9, 0xcc, 0x69, 0x81, +0x1f, 0x84, 0x29, 0x42, 0x23, 0xb8, 0xf8, 0xf1, +0x03, 0x1b, 0xd1, 0x44, 0x22, 0xd1, 0x5c, 0x57, +0x57, 0xb7, 0x59, 0xb8, 0x02, 0x71, 0x53, 0xae, +0x6a, 0xf4, 0x6d, 0xd7, 0xc2, 0xb2, 0x73, 0xd8, +0xae, 0xb5, 0xe0, 0x3d, 0xe9, 0xb1, 0x34, 0xd7, +0x4e, 0x5e, 0xa3, 0xff, 0xd3, 0x7e, 0x94, 0xb0, +0x44, 0x8b, 0xaa, 0xe8, 0x31, 0x8d, 0x07, 0xf7, +0x6e, 0xa3, 0xb1, 0xbd, 0x61, 0xc9, 0x77, 0xb8, +0x59, 0x07, 0x99, 0x54, 0x90, 0x52, 0x8a, 0xce, +0xce, 0xce, 0x3d, 0xcc, 0x69, 0x80, 0x3f, 0x1d, +0x16, 0x22, 0x51, 0x42, 0x08, 0x51, 0x0a, 0x40, +0xa9, 0x06, 0x44, 0x77, 0xee, 0xdc, 0xf9, 0xa8, +0x94, 0x52, 0x88, 0x71, 0x05, 0xdb, 0xb6, 0xb1, +0xe5, 0x97, 0xc3, 0x83, 0x7d, 0x43, 0x5c, 0x7c, +0xff, 0x32, 0x5a, 0x4c, 0xf3, 0x40, 0xa8, 0xd2, +0x79, 0xec, 0xa5, 0x6e, 0x5c, 0xcd, 0x5d, 0xf2, +0x59, 0xee, 0x09, 0xa4, 0x94, 0xb4, 0xb6, 0xb6, +0xee, 0x28, 0x01, 0x20, 0x18, 0x8a, 0x03, 0x40, +0x2e, 0x60, 0xff, 0x3e, 0x00, 0x91, 0xd6, 0xd6, +0xd6, 0x1d, 0x42, 0x08, 0xdc, 0x61, 0x17, 0x47, +0x38, 0x5f, 0x2a, 0x0f, 0x5d, 0x1b, 0xe2, 0x6e, +0xdf, 0x5d, 0xf4, 0x98, 0x8e, 0x1e, 0xd3, 0xa8, +0x59, 0x17, 0xa7, 0x6d, 0x77, 0xeb, 0x92, 0xcf, +0xd9, 0xf7, 0x5c, 0x84, 0x2b, 0x48, 0x24, 0x12, +0x6d, 0x89, 0x44, 0xa2, 0x81, 0xb9, 0x70, 0x9c, +0x0f, 0x40, 0x01, 0x84, 0xc5, 0x34, 0x40, 0x8f, +0x44, 0x22, 0xf1, 0xa6, 0xc6, 0xa6, 0x6d, 0x52, +0x4a, 0xac, 0xa4, 0xf3, 0xa5, 0x8d, 0x7e, 0x90, +0x3f, 0xfd, 0xf5, 0x19, 0x94, 0x90, 0xe2, 0x81, +0x10, 0xd5, 0xf9, 0xca, 0xc1, 0xce, 0x79, 0xf7, +0x88, 0x10, 0xc5, 0xbf, 0x39, 0x36, 0xee, 0x38, +0x48, 0x29, 0xc5, 0xae, 0x5d, 0xbb, 0x7e, 0x2f, +0x6f, 0xce, 0x65, 0x35, 0x40, 0x0d, 0x08, 0x1f, +0xf4, 0x01, 0x2a, 0xa0, 0x6f, 0xd9, 0xb2, 0xa5, +0x4d, 0x51, 0x15, 0xcd, 0x99, 0x72, 0xb0, 0x0d, +0x7b, 0xe9, 0x9c, 0xce, 0x7d, 0xa0, 0xcc, 0x4c, +0x86, 0xa1, 0xbe, 0x3b, 0x74, 0x3c, 0xf1, 0x10, +0x8a, 0xa6, 0xf0, 0x40, 0xf7, 0x36, 0xe2, 0xeb, +0xe2, 0x44, 0xe2, 0x11, 0x36, 0xef, 0x68, 0xa3, +0xb5, 0xb3, 0x95, 0xd4, 0x70, 0x8a, 0x9e, 0x9f, +0xbc, 0x57, 0xf4, 0x9c, 0x3d, 0xea, 0xa0, 0x36, +0x2b, 0x34, 0x36, 0x36, 0x6e, 0xc2, 0x03, 0xc0, +0x8f, 0x48, 0x17, 0x85, 0xe4, 0xcb, 0xcd, 0x02, +0x05, 0x33, 0xa8, 0xad, 0xad, 0x6d, 0x90, 0x52, +0x62, 0x1b, 0x0e, 0x4e, 0x05, 0xab, 0x3e, 0x21, +0xc5, 0x82, 0xde, 0x7d, 0x35, 0x74, 0xe5, 0xe3, +0xab, 0xec, 0xfc, 0xea, 0x76, 0x6f, 0xfd, 0xa0, +0x2a, 0xfc, 0xdd, 0x4f, 0xbe, 0x87, 0x90, 0x02, +0xdb, 0x72, 0x98, 0x9d, 0x9a, 0xe5, 0x9d, 0x1f, +0x1e, 0x9b, 0xd7, 0x3f, 0xc7, 0x90, 0x48, 0x29, +0x89, 0x46, 0xa3, 0x35, 0x2c, 0x20, 0x3c, 0x20, +0x82, 0x00, 0xcc, 0x0b, 0x7a, 0x56, 0x57, 0x57, +0x27, 0x84, 0x10, 0x38, 0x59, 0x07, 0x5b, 0x2c, +0x0e, 0x40, 0xc3, 0xc6, 0x06, 0xbe, 0xfd, 0x4f, +0x7f, 0xc1, 0xf1, 0x7f, 0xff, 0x0d, 0x67, 0x7a, +0xce, 0x56, 0xb4, 0x70, 0x59, 0x8c, 0x42, 0x91, +0x10, 0xad, 0x9d, 0x1b, 0xd9, 0xba, 0x73, 0x0b, +0x0f, 0x3e, 0xf2, 0x20, 0x7a, 0x54, 0xf7, 0xa6, +0x45, 0x4d, 0x05, 0x21, 0x70, 0x6c, 0x07, 0x99, +0xb3, 0xe8, 0xf9, 0xe9, 0x87, 0xa4, 0x27, 0xd2, +0xf3, 0xb4, 0xd3, 0x32, 0x04, 0x42, 0x08, 0x22, +0x91, 0x48, 0x3c, 0x20, 0x7c, 0x69, 0x66, 0xaa, +0xc8, 0x04, 0xfc, 0xab, 0x7f, 0x93, 0x52, 0x55, +0x55, 0x55, 0x23, 0xa5, 0xc4, 0x31, 0x9d, 0x25, +0x37, 0x3d, 0xcf, 0xff, 0xfd, 0x37, 0x68, 0xd9, +0xd6, 0xc2, 0x9f, 0xff, 0xe3, 0x37, 0x79, 0xe6, +0xcf, 0xf6, 0xf2, 0xf3, 0xef, 0x1f, 0xa5, 0xff, +0xc2, 0xc0, 0x8a, 0x84, 0xef, 0xd8, 0xd3, 0xc1, +0xb3, 0xdf, 0xfc, 0x2a, 0x91, 0xaa, 0x08, 0xa1, +0x48, 0x88, 0x50, 0x44, 0x47, 0x0b, 0x6b, 0xe8, +0x21, 0x0f, 0x04, 0x84, 0xc0, 0xce, 0x59, 0xdc, +0x19, 0x1a, 0xe1, 0xa3, 0x63, 0x27, 0xcb, 0xf6, +0xcd, 0x32, 0x6c, 0xa4, 0x94, 0x3e, 0x00, 0x45, +0xd3, 0x5f, 0xf0, 0x3e, 0xb5, 0x44, 0xf8, 0x22, +0xae, 0xaa, 0xaa, 0xaa, 0x11, 0x42, 0x90, 0xcb, +0x5a, 0x8b, 0x6a, 0xc0, 0xf6, 0x27, 0x1e, 0x66, +0xe7, 0xbe, 0x1d, 0xe8, 0x21, 0x1d, 0xc7, 0x75, +0xd8, 0xd4, 0xd9, 0xc6, 0xf7, 0x5e, 0xfd, 0x2e, +0x67, 0x7e, 0x7b, 0x96, 0x5f, 0xfe, 0xdb, 0xaf, +0x18, 0x1f, 0x1e, 0x5f, 0x16, 0x00, 0x97, 0x4e, +0x5f, 0xe2, 0xde, 0xd0, 0x3d, 0x7e, 0xff, 0x9b, +0x07, 0xe9, 0xec, 0xee, 0xf4, 0xf6, 0x08, 0xba, +0xea, 0x81, 0x10, 0xd6, 0x71, 0x1c, 0x07, 0xd7, +0x71, 0xf8, 0xf9, 0x6b, 0xbf, 0xc0, 0xb4, 0xcd, +0xb2, 0xbe, 0xc9, 0x31, 0x1c, 0x84, 0x10, 0x84, +0xc3, 0xe1, 0x18, 0x25, 0x9e, 0xbf, 0x14, 0x80, +0x05, 0x49, 0x08, 0x6f, 0x3e, 0x95, 0x52, 0x22, +0x64, 0x79, 0x0f, 0xa8, 0x6a, 0x2a, 0x2f, 0xfe, +0xed, 0x0b, 0xde, 0xff, 0x02, 0x1c, 0xcb, 0xc5, +0x71, 0x1c, 0x1c, 0xc7, 0xa5, 0xb3, 0xbb, 0x83, +0x4d, 0x9d, 0x9b, 0x38, 0xf5, 0xcb, 0x8f, 0xf9, +0xe8, 0x9d, 0x8f, 0xc8, 0x66, 0x8c, 0x8a, 0x41, +0x18, 0x1b, 0x1e, 0xe3, 0xcd, 0x57, 0xff, 0x83, +0x07, 0x77, 0x3d, 0xc0, 0x1f, 0xfd, 0xd5, 0xd7, +0x69, 0xeb, 0x68, 0x2b, 0xf8, 0x18, 0xc7, 0x72, +0x38, 0x77, 0xe2, 0x02, 0x9f, 0x9f, 0xb9, 0xb6, +0x60, 0xbf, 0x84, 0xf4, 0xfa, 0xbe, 0x94, 0x29, +0xaa, 0x2c, 0x92, 0x96, 0xce, 0x64, 0x32, 0x69, +0x21, 0x04, 0x5a, 0x4c, 0x45, 0x2a, 0xe5, 0x83, +0x9c, 0xcf, 0xbc, 0xb8, 0x97, 0xba, 0xe6, 0x04, +0x96, 0x69, 0xe1, 0x58, 0x0e, 0xb6, 0xed, 0x90, +0x33, 0x2d, 0xac, 0x9c, 0x85, 0x6d, 0x7b, 0xaa, +0xb9, 0x6b, 0x5f, 0x17, 0x55, 0xb5, 0x55, 0x1c, +0x7f, 0xf3, 0x3d, 0xb2, 0x33, 0xd9, 0x8a, 0x41, +0x00, 0xb8, 0xfe, 0x59, 0x3f, 0xff, 0xf2, 0x0f, +0xff, 0xca, 0x9e, 0xaf, 0x75, 0xf3, 0x87, 0x7f, +0xf9, 0x1c, 0x35, 0xf5, 0x71, 0x8c, 0x59, 0x83, +0xa3, 0xaf, 0xfd, 0x62, 0xc1, 0x3e, 0x01, 0xa8, +0x51, 0x05, 0x21, 0x04, 0x86, 0x61, 0xcc, 0x50, +0x92, 0x43, 0x2c, 0x05, 0x00, 0x8a, 0x41, 0xf0, +0x6f, 0xb6, 0x0b, 0x00, 0x44, 0x34, 0x14, 0xa9, +0xcc, 0x7b, 0x49, 0x75, 0x5d, 0x35, 0xfb, 0x5e, +0x78, 0x06, 0x2b, 0x67, 0xe1, 0xe4, 0xbd, 0xbf, +0xe3, 0x38, 0x58, 0xa6, 0xc5, 0xc4, 0xc8, 0x04, +0x97, 0x4e, 0x5d, 0xe6, 0xfa, 0x85, 0x7e, 0x6e, +0x7f, 0x7e, 0x1b, 0x63, 0xd6, 0x1b, 0xfd, 0x72, +0xed, 0x54, 0x42, 0xa7, 0x7f, 0xfd, 0x29, 0x17, +0x4e, 0x7c, 0xc6, 0xbe, 0x3f, 0x7e, 0x06, 0x63, +0xd6, 0x20, 0x3d, 0x92, 0x5e, 0xb4, 0x2d, 0x2d, +0xaa, 0xfb, 0x00, 0x4c, 0x12, 0xc8, 0x1f, 0x96, +0x82, 0x10, 0x34, 0x01, 0xff, 0xcf, 0x42, 0x96, +0x76, 0x6a, 0x6a, 0x6a, 0x5c, 0x4a, 0x89, 0x16, +0x2b, 0x0f, 0xc0, 0xc1, 0x3f, 0x3d, 0x80, 0x10, +0x02, 0x33, 0x9b, 0x63, 0x76, 0x3a, 0x8d, 0x1e, +0xd6, 0x51, 0x54, 0x05, 0x2b, 0x67, 0x33, 0x91, +0x9c, 0xe0, 0xf8, 0x91, 0xb9, 0xb9, 0x79, 0xa5, +0x82, 0x07, 0xc9, 0x32, 0x2c, 0xde, 0x7b, 0xe3, +0x37, 0x15, 0xb5, 0xa7, 0x47, 0x35, 0xa4, 0x94, +0x98, 0xa6, 0x39, 0x49, 0x71, 0x12, 0xb5, 0x08, +0x88, 0x52, 0x1f, 0x50, 0x94, 0xa5, 0x4d, 0xa5, +0x52, 0x63, 0x42, 0x08, 0xd4, 0xa8, 0x8a, 0xa2, +0x14, 0xbf, 0xb0, 0xa9, 0xb5, 0x11, 0x3d, 0xac, +0xf3, 0xde, 0x1b, 0xbf, 0xe1, 0xd6, 0xd5, 0x5b, +0x8c, 0x0c, 0x8e, 0x72, 0xf0, 0xa5, 0x03, 0x74, +0x3d, 0xb3, 0x13, 0xdb, 0xb2, 0xa9, 0x6d, 0xac, +0xa5, 0xa9, 0xb5, 0x89, 0xb1, 0x3b, 0x63, 0xab, +0x16, 0x7c, 0x25, 0xa4, 0xc5, 0x34, 0x84, 0x10, +0x64, 0x32, 0x99, 0x34, 0x73, 0x11, 0xa1, 0xd2, +0x80, 0x88, 0x1b, 0x34, 0x01, 0x9f, 0xfd, 0x1c, +0xbd, 0xd9, 0xdf, 0xdf, 0x7f, 0xcb, 0x75, 0xdd, +0x9c, 0x1e, 0xd7, 0x34, 0x35, 0xaa, 0xe2, 0x64, +0xe7, 0xa6, 0x9b, 0xd1, 0xa1, 0x31, 0xde, 0x7a, +0xed, 0x9d, 0xc2, 0x77, 0x21, 0x04, 0x9f, 0xfd, +0xf7, 0x45, 0x3a, 0xba, 0x3b, 0xb0, 0x2d, 0x1b, +0xdb, 0xb2, 0x79, 0xe8, 0x91, 0x76, 0x4e, 0x0d, +0x7f, 0x7c, 0xbf, 0x65, 0x2d, 0x4b, 0xe1, 0xa6, +0x10, 0x52, 0x4a, 0x46, 0x46, 0x46, 0x6e, 0x32, +0x3f, 0x9d, 0x5e, 0x56, 0x03, 0x82, 0xea, 0x9f, +0x03, 0xcc, 0xe9, 0xe9, 0xe9, 0xc9, 0x91, 0x91, +0x91, 0xeb, 0x2d, 0x2d, 0x2d, 0x1d, 0xd1, 0x96, +0x08, 0xb3, 0xb7, 0x16, 0x77, 0x60, 0xe3, 0x77, +0x53, 0xdc, 0xed, 0xbf, 0x4b, 0x6d, 0x53, 0x2d, +0xb6, 0xe5, 0xb0, 0x65, 0xfb, 0x16, 0xae, 0x9f, +0xbb, 0xce, 0xf8, 0x70, 0x6a, 0xed, 0x25, 0x5c, +0x84, 0x84, 0x2a, 0x08, 0x37, 0x84, 0x70, 0x71, +0x9d, 0x4f, 0x3e, 0xf9, 0xa4, 0x17, 0x2f, 0x36, +0x18, 0x8c, 0x0b, 0x16, 0xfc, 0x80, 0xcc, 0x07, +0x07, 0x83, 0xf6, 0xef, 0x17, 0x29, 0x64, 0x81, +0xd9, 0x81, 0x81, 0x81, 0x0b, 0x52, 0x4a, 0x22, +0xeb, 0xc2, 0x28, 0x52, 0x59, 0x92, 0x2f, 0x7f, +0x74, 0x85, 0x5c, 0x36, 0x47, 0x2e, 0x6b, 0x62, +0x9b, 0x16, 0xbb, 0x0f, 0xec, 0x26, 0x14, 0x0a, +0x55, 0xf4, 0xec, 0x5a, 0x71, 0xa4, 0x39, 0x8c, +0x54, 0x24, 0xa9, 0x54, 0xea, 0xf6, 0xe8, 0xe8, +0xe8, 0x68, 0x19, 0x00, 0x0a, 0x20, 0x04, 0xe7, +0x91, 0xa0, 0x06, 0x98, 0xf9, 0x87, 0x32, 0xa7, +0x4f, 0x9f, 0xfe, 0x14, 0x70, 0x42, 0x0d, 0xba, +0x17, 0xc8, 0x94, 0x72, 0x51, 0xbe, 0x75, 0xe9, +0x16, 0x83, 0x57, 0x07, 0xc9, 0x65, 0x73, 0x98, +0x59, 0x93, 0x50, 0x58, 0xa7, 0xfb, 0x6b, 0x8f, +0x50, 0x15, 0x8f, 0x2d, 0xf9, 0xec, 0x5a, 0x71, +0x64, 0x5d, 0x08, 0x21, 0x04, 0x37, 0x6e, 0xdc, +0xb8, 0x80, 0x17, 0x0f, 0x5c, 0x50, 0x03, 0xca, +0xcd, 0x02, 0xbe, 0x09, 0x18, 0x40, 0x26, 0x99, +0x4c, 0x26, 0xc7, 0xc7, 0xc7, 0x6f, 0x34, 0x36, +0x36, 0x6e, 0x8d, 0x6d, 0x8e, 0x32, 0x3b, 0xb0, +0xf4, 0x3c, 0x7e, 0xe1, 0xfd, 0xcf, 0xd8, 0xf3, +0xf5, 0x6e, 0x54, 0x55, 0xc5, 0xb2, 0x2c, 0xf4, +0x90, 0xce, 0xf6, 0xbd, 0xdb, 0x19, 0xb9, 0x95, +0x64, 0x74, 0x70, 0x0c, 0x63, 0xd6, 0xc0, 0x75, +0xdc, 0xa2, 0x45, 0x8a, 0xbf, 0xd8, 0x72, 0x5d, +0x17, 0xc7, 0x5e, 0x79, 0xc0, 0x55, 0x46, 0x24, +0xa1, 0x75, 0x21, 0x10, 0xb8, 0x67, 0xce, 0x9c, +0xf9, 0x04, 0x2f, 0x28, 0xea, 0x17, 0x51, 0x14, +0x4d, 0x87, 0xae, 0xeb, 0xba, 0xe5, 0x66, 0x01, +0x1f, 0x80, 0x2c, 0x5e, 0x58, 0x79, 0xea, 0xe4, +0xc9, 0x93, 0xbf, 0x3a, 0x7c, 0xf8, 0xf0, 0xdf, +0x44, 0xb6, 0x86, 0x31, 0xef, 0x5a, 0xb8, 0xe6, +0xe2, 0xab, 0x2b, 0xcb, 0xb4, 0xf9, 0xec, 0xfd, +0x4b, 0xb4, 0x77, 0x3f, 0x88, 0x54, 0x24, 0xb6, +0x65, 0xe3, 0xd8, 0x0e, 0x35, 0x8d, 0xb5, 0xc4, +0x6a, 0xaa, 0xb0, 0x4c, 0x8b, 0x9c, 0x69, 0x91, +0xcb, 0x9a, 0xe4, 0x8c, 0x1c, 0x39, 0x23, 0x87, +0x65, 0xd9, 0x9e, 0xe9, 0x18, 0x39, 0xe4, 0x2a, +0xa6, 0xcc, 0x58, 0x7b, 0x04, 0xa9, 0x48, 0x6e, +0xdc, 0xb8, 0x71, 0x7e, 0x60, 0x60, 0xe0, 0x26, +0x73, 0x75, 0x03, 0xe5, 0x7d, 0x00, 0x14, 0x72, +0xe7, 0xa5, 0x7e, 0xc0, 0xc0, 0x53, 0x9f, 0xc9, +0x0f, 0x3e, 0xf8, 0xa0, 0x37, 0x99, 0x4c, 0x7e, +0xa1, 0xe8, 0x0a, 0xb1, 0x07, 0x22, 0x28, 0x8a, +0xb2, 0x24, 0x67, 0xd2, 0x19, 0x2e, 0x9d, 0xb8, +0x44, 0x3a, 0x99, 0xc6, 0x32, 0x2c, 0x6c, 0xd3, +0xf6, 0x38, 0x37, 0xc7, 0x8e, 0xed, 0x7a, 0x9a, +0xe0, 0x80, 0x6b, 0x39, 0xb8, 0xb6, 0x53, 0x51, +0xdb, 0x0b, 0xb1, 0x9e, 0xd0, 0x09, 0xaf, 0x0f, +0x01, 0xd8, 0xef, 0xbe, 0xfb, 0xee, 0x51, 0xbc, +0x04, 0xe9, 0x74, 0x7e, 0x30, 0x83, 0x25, 0x34, +0x14, 0x01, 0x10, 0xa0, 0x20, 0x00, 0x66, 0x1e, +0xb9, 0x69, 0x60, 0xa2, 0xa7, 0xa7, 0xe7, 0xe7, +0x80, 0x1b, 0x6e, 0x0d, 0xa1, 0x55, 0x69, 0x15, +0x39, 0x23, 0xc7, 0x72, 0xb9, 0x71, 0xe1, 0x26, +0x77, 0xae, 0xdd, 0x65, 0x26, 0x35, 0x83, 0xe5, +0x83, 0x60, 0xda, 0xde, 0x0e, 0x33, 0xe7, 0x60, +0xfb, 0xd7, 0x9c, 0x83, 0x14, 0xab, 0x73, 0x7e, +0xd1, 0xf6, 0x30, 0x42, 0x08, 0xfa, 0xfa, 0xfa, +0x4e, 0xf5, 0xf7, 0xf7, 0xf7, 0x53, 0x9c, 0x26, +0x2f, 0x4a, 0x8c, 0xcc, 0xcb, 0x0c, 0xb9, 0xae, +0xeb, 0x17, 0x1d, 0x06, 0x1d, 0x61, 0x01, 0x80, +0x73, 0xe7, 0xce, 0x5d, 0xdc, 0xbf, 0x7f, 0xff, +0xf9, 0xcd, 0x9b, 0x37, 0xef, 0xaa, 0xda, 0x19, +0x21, 0x73, 0x66, 0x16, 0xb7, 0xc2, 0xec, 0xd5, +0x4c, 0x6a, 0x9a, 0x99, 0xd4, 0xb4, 0xb7, 0xa3, +0xd3, 0xb5, 0x22, 0x5b, 0xb7, 0x73, 0x16, 0x8e, +0x65, 0xa3, 0xc8, 0xd5, 0x15, 0x54, 0xe8, 0x9b, +0x34, 0xf4, 0x7a, 0x0d, 0xd3, 0x34, 0xb3, 0x47, +0x8f, 0x1e, 0x3d, 0x4a, 0xf9, 0x62, 0x89, 0x79, +0xfb, 0x81, 0x72, 0x6f, 0x2d, 0x35, 0x83, 0x19, +0x3c, 0x24, 0xc7, 0x8f, 0x1c, 0x39, 0xf2, 0xd3, +0x99, 0x99, 0x99, 0x31, 0x25, 0xae, 0x10, 0xf9, +0x4a, 0x04, 0x29, 0x95, 0x65, 0xb1, 0x63, 0xb9, +0x18, 0x19, 0x93, 0xec, 0xb4, 0x81, 0x31, 0x63, +0x92, 0xcb, 0x5a, 0xb8, 0x36, 0xcb, 0x6e, 0xa7, +0x94, 0xf5, 0x46, 0x9d, 0xf0, 0xb6, 0x10, 0x80, +0xdb, 0xd3, 0xd3, 0xf3, 0x7a, 0x32, 0x99, 0xbc, +0x05, 0x4c, 0x30, 0x3f, 0x3d, 0x5e, 0x34, 0xfa, +0x4b, 0x01, 0x10, 0xd4, 0x82, 0x29, 0x20, 0x35, +0x3a, 0x3a, 0x7a, 0xfb, 0xf5, 0xd7, 0x5f, 0xff, +0xa1, 0x6d, 0xdb, 0x86, 0xbe, 0x4e, 0x23, 0xbc, +0xe5, 0xcb, 0x9d, 0xdf, 0xcb, 0xb1, 0x56, 0xa5, +0x12, 0xd9, 0x1e, 0x42, 0x2a, 0x92, 0xde, 0xde, +0xde, 0x5f, 0xf7, 0xf4, 0xf4, 0x9c, 0x60, 0x91, +0x2a, 0x91, 0x52, 0x61, 0x57, 0x54, 0x20, 0xf1, +0xec, 0xb3, 0xcf, 0x1e, 0x38, 0x7c, 0xf8, 0xf0, +0x77, 0x84, 0x10, 0x22, 0x77, 0xdd, 0xc6, 0x1a, +0x5c, 0x5d, 0x96, 0x78, 0xa5, 0x24, 0xab, 0x04, +0xfa, 0x76, 0x15, 0x11, 0x12, 0x0c, 0x0c, 0x0c, +0x9c, 0x7f, 0xf5, 0xd5, 0x57, 0x97, 0x5d, 0x20, +0x31, 0x2f, 0x20, 0x52, 0xe2, 0x0b, 0xfc, 0x34, +0xd2, 0x2c, 0x73, 0xd1, 0x62, 0xe5, 0xf8, 0xf1, +0xe3, 0x27, 0x1a, 0x1b, 0x1b, 0x1b, 0x9e, 0x7e, +0xfa, 0xe9, 0xe7, 0xf5, 0x07, 0x54, 0xa1, 0x54, +0x4b, 0xac, 0x3e, 0xbb, 0xc4, 0xbf, 0xde, 0x5f, +0x92, 0x0d, 0x12, 0xf5, 0x21, 0x89, 0x50, 0x04, +0xc9, 0x64, 0x72, 0xe0, 0xb5, 0xd7, 0x5e, 0xfb, +0x11, 0xf3, 0xcb, 0x63, 0x82, 0x85, 0x52, 0x95, +0x95, 0xc8, 0x40, 0xe5, 0x45, 0x52, 0xcf, 0x3d, +0xf7, 0xdc, 0xc1, 0x43, 0x87, 0x0e, 0xbd, 0xa4, +0x69, 0x9a, 0xee, 0x4e, 0xb9, 0x58, 0x97, 0x6d, +0x5c, 0x73, 0xcd, 0x65, 0x9d, 0x47, 0xca, 0x26, +0x89, 0xd2, 0xe6, 0x59, 0x6f, 0x5f, 0x5f, 0x5f, +0xef, 0x0f, 0x7e, 0xf0, 0x83, 0x1f, 0x1b, 0x86, +0xb1, 0x76, 0x45, 0x52, 0x50, 0x79, 0x99, 0xdc, +0xee, 0xdd, 0xbb, 0x77, 0xbe, 0xfc, 0xf2, 0xcb, +0xdf, 0x8d, 0xc5, 0x62, 0xb5, 0xd8, 0xe0, 0x0c, +0xba, 0x38, 0x43, 0xee, 0x7d, 0xd1, 0x06, 0x91, +0x10, 0xc8, 0xcd, 0x02, 0x11, 0x03, 0xd7, 0x75, +0x9d, 0x0f, 0x3f, 0xfc, 0xf0, 0xd8, 0x91, 0x23, +0x47, 0xd6, 0xbe, 0x4c, 0xae, 0xf0, 0x67, 0x85, +0x85, 0x92, 0xeb, 0xd6, 0xad, 0xdb, 0xf4, 0xca, +0x2b, 0xaf, 0x7c, 0x7b, 0xe3, 0xc6, 0x8d, 0x1d, +0x00, 0x98, 0xe0, 0xdc, 0x72, 0x71, 0xee, 0x51, +0xc6, 0xed, 0xac, 0x40, 0xf0, 0x2a, 0x3c, 0xc1, +0x6b, 0xbd, 0xef, 0x99, 0x4c, 0x26, 0xfd, 0xce, +0x3b, 0xef, 0xbc, 0x71, 0xfc, 0xf8, 0xf1, 0x8f, +0xf0, 0x8a, 0x24, 0xc7, 0xf0, 0xbc, 0x7e, 0xb9, +0x5a, 0x80, 0x95, 0x15, 0x4a, 0x16, 0x6e, 0x58, +0xb8, 0x54, 0x36, 0x8a, 0x97, 0x7f, 0x2f, 0x94, +0xca, 0xee, 0xdf, 0xbf, 0xff, 0xd1, 0x43, 0x87, +0x0e, 0x3d, 0x5f, 0x5f, 0x5f, 0xbf, 0x01, 0x80, +0x1c, 0xb8, 0xe3, 0x5e, 0xf7, 0xdc, 0x34, 0xcb, +0x03, 0x23, 0x0a, 0xa2, 0xce, 0x63, 0xaa, 0xbc, +0x9f, 0x4c, 0xd3, 0xcc, 0xf6, 0xf6, 0xf6, 0xbe, +0xf7, 0xe6, 0x9b, 0x6f, 0xbe, 0x9b, 0xc9, 0x64, +0xfc, 0x52, 0xd9, 0x09, 0x8a, 0x57, 0x7c, 0x6b, +0x57, 0x2a, 0xbb, 0x00, 0x08, 0x0b, 0x15, 0x4b, +0xd7, 0xe0, 0x99, 0x46, 0xe2, 0xc5, 0x17, 0x5f, +0xdc, 0xbb, 0x77, 0xef, 0xde, 0xe7, 0xe2, 0xf1, +0x78, 0xa1, 0x58, 0x1a, 0x3b, 0xdf, 0x55, 0x03, +0x5c, 0x53, 0xcc, 0x9d, 0x08, 0x70, 0x28, 0x9c, +0x22, 0x10, 0x21, 0xd7, 0xfb, 0x1c, 0xc7, 0x83, +0x38, 0x4f, 0x96, 0x65, 0x99, 0x97, 0x2f, 0x5f, +0x3e, 0xf5, 0xb3, 0x9f, 0xfd, 0xec, 0xad, 0x64, +0x32, 0x79, 0x37, 0xdf, 0x52, 0x3a, 0xcf, 0xc1, +0x51, 0x5f, 0xfb, 0x62, 0xe9, 0x45, 0x40, 0x08, +0x1e, 0x90, 0xf0, 0xcf, 0x08, 0x54, 0xe5, 0xbb, +0x1f, 0x07, 0xaa, 0xf7, 0xec, 0xd9, 0xf3, 0x50, +0x77, 0x77, 0xf7, 0xa3, 0x5b, 0xb7, 0x6e, 0x7d, +0x38, 0x91, 0x48, 0x2c, 0xab, 0x5c, 0xde, 0x30, +0x8c, 0xcc, 0xcd, 0x9b, 0x37, 0x3f, 0xbf, 0x78, +0xf1, 0xe2, 0xd9, 0xf7, 0xdf, 0x7f, 0xff, 0xec, +0xf4, 0xf4, 0xb4, 0xef, 0xdc, 0xfc, 0xd1, 0xfe, +0xf2, 0xca, 0xe5, 0x0b, 0x37, 0x2f, 0x7e, 0x60, +0xc2, 0xd7, 0x88, 0xb2, 0x07, 0x26, 0x3a, 0x3a, +0x3a, 0x36, 0xec, 0xde, 0xbd, 0xbb, 0x23, 0x1e, +0x8f, 0x27, 0xaa, 0xab, 0xab, 0x6b, 0xa2, 0xd1, +0x68, 0x3c, 0x16, 0x8b, 0x55, 0xab, 0xaa, 0xaa, +0x66, 0x32, 0x99, 0xe9, 0xe9, 0xe9, 0xe9, 0xc9, +0x99, 0x99, 0x99, 0xc9, 0xa9, 0xa9, 0xa9, 0xd4, +0xe0, 0xe0, 0xe0, 0xd0, 0x89, 0x13, 0x27, 0xae, +0xe4, 0x72, 0xb9, 0xc5, 0x0e, 0x4c, 0x04, 0x05, +0x2f, 0x3a, 0x39, 0x52, 0xa9, 0xf0, 0xcb, 0x06, +0x20, 0x00, 0x02, 0xac, 0xfc, 0xc8, 0x4c, 0x30, +0x51, 0xe9, 0xaf, 0x44, 0xfd, 0x38, 0x44, 0x21, +0x1c, 0xc7, 0xdc, 0x71, 0x99, 0x52, 0x5e, 0xf0, +0xc8, 0x0c, 0x8b, 0x78, 0xfb, 0x05, 0xe5, 0xf9, +0x1d, 0x1d, 0x9a, 0x0a, 0x9e, 0x1c, 0x83, 0xe2, +0xe5, 0xb7, 0x0f, 0xc2, 0x97, 0x72, 0x68, 0x6a, +0x55, 0x07, 0x27, 0x57, 0x71, 0x6c, 0xae, 0x34, +0x57, 0x57, 0x9a, 0x93, 0xf0, 0x79, 0xc9, 0x63, +0x73, 0xac, 0x42, 0x78, 0x58, 0x25, 0x00, 0x50, +0x04, 0x02, 0x14, 0x6b, 0x44, 0x30, 0xd3, 0x5c, +0xc9, 0xc1, 0xc9, 0xd2, 0xa0, 0xcc, 0xa2, 0x07, +0x27, 0x59, 0xa5, 0xe0, 0x85, 0x0e, 0xff, 0x7f, +0x3f, 0x3a, 0xbb, 0x66, 0x00, 0x14, 0x35, 0xba, +0x86, 0x87, 0xa7, 0x03, 0x57, 0xef, 0xcb, 0xff, +0xd6, 0xc3, 0xd3, 0xff, 0x57, 0xe9, 0x7f, 0x00, +0x6d, 0xa9, 0x8e, 0x3e, 0xbc, 0x36, 0x76, 0x15, +0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, +0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity6.png b/source/bitmaps/misc/activity6.png new file mode 100644 index 0000000000000000000000000000000000000000..21755878076ed199470597e594cfee8653a4c8b3 GIT binary patch literal 4308 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 literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/activity7.cpp b/source/bitmaps/misc/activity7.cpp new file mode 100644 index 0000000..8a36c83 --- /dev/null +++ b/source/bitmaps/misc/activity7.cpp @@ -0,0 +1,551 @@ +#include + +#ifndef MISC_ACTIVITY7_CPP +#define MISC_ACTIVITY7_CPP + +static unsigned char misc_activity7_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x66, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0x69, +0x6c, 0x5c, 0xd7, 0x75, 0xc7, 0x7f, 0xf7, 0xbe, +0x65, 0x56, 0xce, 0x70, 0xb8, 0x4a, 0xa4, 0x49, +0x6b, 0xab, 0x16, 0x5b, 0x12, 0xad, 0x58, 0xf2, +0x22, 0x4b, 0xb1, 0x1c, 0x39, 0x88, 0xe2, 0xa2, +0xb1, 0xec, 0x66, 0x71, 0x0d, 0x37, 0xfd, 0x50, +0xc3, 0x2d, 0x50, 0x14, 0x68, 0x9b, 0x4f, 0xfd, +0x54, 0xa0, 0x2d, 0x8a, 0x14, 0xa9, 0x91, 0x02, +0x45, 0x90, 0x06, 0xc8, 0x97, 0xa4, 0x72, 0xec, +0x74, 0x8b, 0x63, 0x27, 0x70, 0x5b, 0x3a, 0x88, +0xe1, 0xc6, 0x91, 0x6d, 0x85, 0x96, 0x64, 0x38, +0xb2, 0x2c, 0x4a, 0xa4, 0xc5, 0xcd, 0xd2, 0x98, +0xe2, 0x88, 0x9c, 0xe1, 0x70, 0xde, 0xde, 0x0f, +0x6f, 0xde, 0xf0, 0xcd, 0x70, 0x38, 0x33, 0x12, +0xa9, 0xa4, 0x45, 0x0f, 0x70, 0xf0, 0x38, 0xc3, +0x77, 0xef, 0xdc, 0xf3, 0x3f, 0xcb, 0xbd, 0xf7, +0xdc, 0x73, 0x85, 0xe7, 0x79, 0xdc, 0x4a, 0x12, +0x42, 0x88, 0xd5, 0xfe, 0x55, 0xe7, 0xbb, 0x15, +0x83, 0xf1, 0x6e, 0xf1, 0x00, 0xd5, 0x5b, 0xd1, +0x69, 0x8d, 0xd0, 0x62, 0x95, 0xe7, 0x6a, 0xe4, +0x85, 0x9f, 0xb5, 0xf8, 0xad, 0x37, 0x20, 0x62, +0xbd, 0xfa, 0xab, 0x23, 0xb4, 0xa8, 0xf9, 0x5b, +0xd6, 0xf9, 0x2e, 0x4c, 0x61, 0xc1, 0x1b, 0xb1, +0xff, 0xd2, 0x3a, 0x0d, 0x7c, 0xcd, 0x16, 0xb0, +0x8a, 0xe0, 0x32, 0xf4, 0xac, 0xc7, 0x82, 0x6a, +0x10, 0x02, 0x61, 0xdc, 0xf2, 0xdf, 0xee, 0x2a, +0x5c, 0x01, 0x22, 0xf8, 0xd9, 0xb5, 0x02, 0xb1, +0x26, 0x00, 0x42, 0xc2, 0xd7, 0x0a, 0xad, 0x84, +0x58, 0x2d, 0xb3, 0x52, 0xc3, 0xb5, 0x56, 0x10, +0x16, 0xd4, 0x06, 0x9c, 0x3a, 0x4f, 0x87, 0x1a, +0x30, 0xd6, 0x0a, 0xc4, 0x4d, 0xb9, 0x40, 0x8d, +0xe0, 0xb5, 0x42, 0xab, 0x80, 0x16, 0x62, 0xbd, +0xcc, 0xc1, 0xe7, 0x00, 0x90, 0xb0, 0x25, 0x04, +0x5a, 0x0f, 0x84, 0xb5, 0xca, 0x6c, 0xd6, 0x3c, +0x03, 0xae, 0x07, 0xc6, 0x4d, 0x81, 0x70, 0xc3, +0x16, 0x10, 0x12, 0x3e, 0x10, 0x20, 0xac, 0x65, +0x1d, 0x88, 0x94, 0x39, 0x5a, 0xe6, 0x58, 0xe8, +0x73, 0x00, 0x46, 0x60, 0x11, 0x01, 0x00, 0x61, +0xcd, 0x07, 0x02, 0x1b, 0x65, 0x2e, 0x01, 0x4b, +0xe5, 0x67, 0xa9, 0xfc, 0x5d, 0x00, 0x48, 0x60, +0x19, 0x2e, 0x65, 0x6b, 0xb8, 0x51, 0x10, 0x6e, +0x08, 0x80, 0xb2, 0xf0, 0x01, 0x07, 0x1a, 0x0f, +0xb4, 0x1c, 0x08, 0x1c, 0x07, 0x12, 0x21, 0x8e, +0x03, 0xf1, 0x9e, 0x9e, 0x9e, 0xfe, 0xfe, 0xfe, +0xfe, 0x9d, 0xd1, 0x68, 0xb4, 0x23, 0x1a, 0x8d, +0xb6, 0xeb, 0xba, 0x9e, 0xd2, 0x75, 0x3d, 0x25, +0xa5, 0xd4, 0x4c, 0xd3, 0xcc, 0x9b, 0xa6, 0xb9, +0x60, 0x18, 0xc6, 0x75, 0xc3, 0x30, 0x72, 0xd7, +0xaf, 0x5f, 0x9f, 0xba, 0x74, 0xe9, 0xd2, 0xfb, +0xae, 0xeb, 0x2e, 0x02, 0x45, 0x60, 0x31, 0xc4, +0xc5, 0x10, 0x20, 0x46, 0x2d, 0x10, 0x37, 0xea, +0x12, 0x2d, 0xbb, 0x40, 0x48, 0xf8, 0xc0, 0xdc, +0x03, 0x8d, 0x07, 0x5a, 0x4e, 0x00, 0x6d, 0x65, +0x4e, 0x01, 0x6d, 0x83, 0x83, 0x83, 0x3b, 0x06, +0x06, 0x06, 0xf6, 0x77, 0x75, 0x75, 0xdd, 0x19, +0x8f, 0xc7, 0x7b, 0x5b, 0xfa, 0xa1, 0x32, 0xd9, +0xb6, 0x5d, 0xcc, 0xe5, 0x72, 0x1f, 0x5c, 0xb9, +0x72, 0xe5, 0xf4, 0xe8, 0xe8, 0xe8, 0x19, 0xc3, +0x30, 0xae, 0x01, 0x0b, 0x40, 0xbe, 0xcc, 0x05, +0x96, 0xc1, 0x08, 0x2c, 0x22, 0xec, 0x16, 0x2d, +0x81, 0xd0, 0x12, 0x00, 0x75, 0x84, 0xd7, 0xf0, +0xcd, 0x3a, 0x06, 0x24, 0xcb, 0x42, 0xb7, 0x03, +0x69, 0xa0, 0xe3, 0xae, 0xbb, 0xee, 0xfa, 0xe4, +0xd6, 0xad, 0x5b, 0x8f, 0x45, 0xa3, 0xd1, 0xce, +0xa0, 0x0f, 0xc5, 0x52, 0xc9, 0x64, 0x3b, 0x88, +0x16, 0x62, 0xe8, 0x25, 0x1d, 0xcd, 0xd0, 0xd1, +0x4b, 0x11, 0xa4, 0x23, 0xb1, 0xa2, 0x26, 0x66, +0xc4, 0xc4, 0x8c, 0x1a, 0x98, 0x31, 0x83, 0xeb, +0x3d, 0x39, 0x4a, 0x89, 0xa5, 0xca, 0xef, 0xbb, +0xae, 0x6b, 0x7d, 0xf4, 0xd1, 0x47, 0x6f, 0x8e, +0x8c, 0x8c, 0xbc, 0x9c, 0xcf, 0xe7, 0x67, 0x80, +0x1c, 0x30, 0x1f, 0x02, 0xa4, 0xc8, 0xb2, 0x6b, +0xd8, 0x37, 0x02, 0x42, 0x53, 0x00, 0x6a, 0x84, +0x0f, 0x02, 0x5c, 0x94, 0x65, 0x8d, 0xa7, 0x81, +0x0e, 0xa0, 0x63, 0xe7, 0xce, 0x9d, 0xf7, 0xed, +0xda, 0xb5, 0xeb, 0x73, 0x89, 0x44, 0x62, 0x23, +0x80, 0x56, 0xd2, 0xc9, 0x5c, 0xe9, 0x20, 0x33, +0xd3, 0x45, 0x6a, 0x36, 0x8d, 0x70, 0x9b, 0xad, +0x81, 0x96, 0x69, 0xa9, 0xad, 0x48, 0xae, 0xef, +0x1a, 0xb9, 0x8d, 0xd7, 0x58, 0x6c, 0x2f, 0x00, +0xe0, 0x38, 0x8e, 0x31, 0x39, 0x39, 0xf9, 0xd3, +0x53, 0xa7, 0x4e, 0xfd, 0xd8, 0x30, 0x8c, 0xab, +0xc0, 0x5c, 0x19, 0x8c, 0x05, 0x7c, 0xf7, 0x58, +0x2a, 0x03, 0xd1, 0x32, 0x08, 0x0d, 0x01, 0x58, +0x45, 0xf8, 0xc0, 0xdc, 0xd3, 0x40, 0x06, 0xe8, +0x4a, 0xa7, 0xd3, 0x9b, 0x1e, 0x7c, 0xf0, 0xc1, +0xa7, 0xdb, 0xdb, 0xdb, 0xb7, 0xfb, 0x82, 0x6b, +0x6c, 0x7c, 0xff, 0x36, 0x3a, 0x27, 0xba, 0x11, +0x5e, 0xeb, 0x42, 0xaf, 0x46, 0xc5, 0xf4, 0x22, +0xd3, 0xbb, 0x27, 0xc8, 0x77, 0x2f, 0x00, 0x60, +0x59, 0x56, 0xfe, 0xec, 0xd9, 0xb3, 0x27, 0xce, +0x9d, 0x3b, 0x77, 0x12, 0x98, 0x05, 0xae, 0xe1, +0x5b, 0x44, 0xd8, 0x1a, 0x5a, 0x02, 0x61, 0x55, +0x00, 0xea, 0x98, 0xbd, 0xce, 0xb2, 0xc9, 0xb7, +0x03, 0x9d, 0x40, 0xf7, 0xe0, 0xe0, 0xe0, 0xd0, +0xfd, 0xf7, 0xdf, 0xff, 0x4c, 0x34, 0x1a, 0x6d, +0x97, 0xb6, 0xa4, 0x7b, 0x74, 0x23, 0xdd, 0x17, +0x7b, 0x91, 0x8e, 0x5c, 0xb3, 0xe0, 0xb5, 0x94, +0xef, 0x9d, 0xe7, 0xa3, 0x3b, 0xa7, 0x28, 0xa5, +0x96, 0x00, 0xdc, 0x0b, 0x17, 0x2e, 0xfc, 0xf8, +0xe4, 0xc9, 0x93, 0x2f, 0x02, 0x59, 0x7c, 0x20, +0x72, 0xac, 0x04, 0xc1, 0xc1, 0x97, 0xbf, 0x75, +0x00, 0x6a, 0xa6, 0xba, 0x7a, 0xc2, 0x77, 0x03, +0x3d, 0x43, 0x43, 0x43, 0x47, 0x87, 0x86, 0x86, +0x9e, 0x54, 0x14, 0x45, 0x8f, 0xe5, 0xe2, 0x0c, +0xbc, 0xb5, 0x09, 0xb5, 0xa4, 0xad, 0x9f, 0xc4, +0x75, 0x47, 0x0c, 0x1f, 0xef, 0xbc, 0xc2, 0xc7, +0x3b, 0xae, 0x02, 0x70, 0xf5, 0xea, 0xd5, 0x91, +0xe1, 0xe1, 0xe1, 0x6f, 0x5b, 0x96, 0x35, 0x03, +0x7c, 0x8c, 0xef, 0x16, 0x0b, 0xac, 0xb4, 0x84, +0xba, 0x20, 0x34, 0x02, 0x20, 0x98, 0xea, 0x02, +0xb3, 0x4f, 0x52, 0x36, 0x79, 0x60, 0xc3, 0x03, +0x0f, 0x3c, 0xf0, 0xf8, 0xf6, 0xed, 0xdb, 0x8f, +0x0b, 0x21, 0x44, 0x6a, 0xb2, 0x9d, 0xde, 0xd3, +0x7d, 0x37, 0xe4, 0xe3, 0x6b, 0xa5, 0x7c, 0xdf, +0x02, 0x57, 0xee, 0x9e, 0xc6, 0x53, 0x5c, 0x16, +0x16, 0x16, 0xc6, 0x5f, 0x7e, 0xf9, 0xe5, 0xaf, +0x19, 0x86, 0x31, 0x85, 0x6f, 0x0d, 0x61, 0x10, +0x2a, 0x81, 0xb1, 0x25, 0x00, 0x6a, 0x4c, 0x3f, +0x88, 0xf6, 0x61, 0xcd, 0x6f, 0xd8, 0xb3, 0x67, +0xcf, 0x43, 0xf7, 0xde, 0x7b, 0xef, 0xd3, 0x80, +0xe8, 0x7c, 0xaf, 0x9b, 0xf4, 0xc5, 0x8e, 0x5b, +0x26, 0x68, 0x23, 0x32, 0xd3, 0x06, 0x57, 0xee, +0x9b, 0xc2, 0x8e, 0xd9, 0x64, 0xb3, 0xd9, 0xb3, +0x2f, 0xbd, 0xf4, 0xd2, 0x3f, 0x00, 0x33, 0x2c, +0x83, 0x90, 0xc7, 0x0f, 0x8c, 0x95, 0x29, 0xb2, +0x16, 0x84, 0x2a, 0x47, 0xad, 0x59, 0xe2, 0x06, +0x73, 0x7d, 0x10, 0xf1, 0xd3, 0x40, 0xe7, 0xc0, +0xc0, 0xc0, 0x9d, 0x07, 0x0e, 0x1c, 0xf8, 0xb2, +0x10, 0x42, 0x64, 0xce, 0x77, 0x92, 0xbc, 0x94, +0xc6, 0x11, 0xce, 0xaf, 0x85, 0x95, 0x05, 0x95, +0x9e, 0x93, 0x7d, 0x48, 0x47, 0xa1, 0xb7, 0xb7, +0x77, 0xe8, 0xc8, 0x91, 0x23, 0x9f, 0xc7, 0x57, +0x52, 0x06, 0x7f, 0x86, 0x8a, 0xe1, 0xbb, 0x6f, +0x65, 0xd5, 0x59, 0x9b, 0x9f, 0xa8, 0xb7, 0x12, +0xac, 0x17, 0xf8, 0xda, 0x80, 0x4c, 0x2a, 0x95, +0x1a, 0x78, 0xe8, 0xa1, 0x87, 0xfe, 0x50, 0xd3, +0xb4, 0x48, 0x6c, 0x3a, 0x4e, 0x72, 0x34, 0x8d, +0x2b, 0xdd, 0x1b, 0x57, 0xdd, 0x3a, 0x92, 0xb2, +0xa8, 0xd2, 0xf9, 0x4e, 0x0f, 0x73, 0xf7, 0x66, +0xd9, 0xbe, 0x7d, 0xfb, 0x67, 0xe6, 0xe7, 0xe7, +0xa7, 0x4f, 0x9f, 0x3e, 0xfd, 0x5f, 0xd4, 0x5f, +0x29, 0x56, 0x6d, 0xa9, 0xa1, 0x31, 0x00, 0x2a, +0xbe, 0xf9, 0x27, 0xf0, 0x57, 0x76, 0x1d, 0x47, +0x8f, 0x1e, 0xfd, 0x72, 0x3c, 0x1e, 0xef, 0x54, +0xe7, 0x35, 0xda, 0xce, 0x64, 0x70, 0xa4, 0xb3, +0xae, 0xc2, 0x48, 0xa5, 0xbc, 0x8c, 0x75, 0x3d, +0x6e, 0x64, 0x45, 0xaf, 0x65, 0x75, 0xda, 0xce, +0xa7, 0x29, 0xdc, 0xb1, 0x20, 0xf6, 0xdf, 0xbd, +0xff, 0xa9, 0xb1, 0xb1, 0xb1, 0xf3, 0xf3, 0xf3, +0xf3, 0x45, 0xaa, 0xf7, 0x0e, 0x41, 0x30, 0x14, +0xe1, 0x3d, 0x43, 0xc5, 0x05, 0x9a, 0x4d, 0x7b, +0x5b, 0xb7, 0x6e, 0xdd, 0xdd, 0xdb, 0xdb, 0x3b, +0x24, 0x3c, 0x41, 0xdb, 0x2f, 0xda, 0xf1, 0x5c, +0x17, 0x57, 0x38, 0xeb, 0xc2, 0x42, 0x07, 0x35, +0xa9, 0xa0, 0xa5, 0x34, 0xa2, 0x9d, 0x11, 0xe2, +0xbd, 0x71, 0x22, 0xed, 0x1a, 0xa8, 0xad, 0xff, +0x46, 0xf4, 0x62, 0x1c, 0xfd, 0x5a, 0x04, 0x55, +0x53, 0x23, 0x87, 0x0e, 0x1d, 0x3a, 0xce, 0xb2, +0x1b, 0xc4, 0xf1, 0x15, 0x19, 0xde, 0x81, 0x56, +0xa8, 0xd6, 0x02, 0xc2, 0xda, 0xaf, 0x02, 0xe0, +0xc0, 0x81, 0x03, 0x8f, 0x29, 0x8a, 0x22, 0xf4, +0xb1, 0x28, 0x2c, 0x09, 0x9c, 0x75, 0x30, 0x7d, +0xa9, 0x4a, 0x54, 0x5d, 0x45, 0xd1, 0x14, 0x54, +0x5d, 0x41, 0xd1, 0x15, 0xa4, 0xaa, 0xa0, 0x6a, +0x0a, 0xd1, 0xae, 0x28, 0x29, 0x25, 0x4d, 0x3e, +0x5b, 0x20, 0x9f, 0xcd, 0xb7, 0xd4, 0x5f, 0xf4, +0xfd, 0x04, 0xce, 0x83, 0x36, 0x83, 0x83, 0x83, +0xf7, 0xf5, 0xf5, 0xf5, 0x0d, 0xcf, 0xcc, 0xcc, +0x2c, 0xb0, 0xbc, 0x67, 0x08, 0x4f, 0x89, 0x15, +0x2b, 0x90, 0x40, 0xed, 0x2e, 0x2f, 0x6c, 0xfe, +0x71, 0x20, 0xb5, 0x77, 0xef, 0xde, 0xbb, 0xbb, +0xba, 0xba, 0xb6, 0x49, 0x5b, 0xa2, 0x5d, 0x88, +0xac, 0x8b, 0xd6, 0xd1, 0x3c, 0x84, 0x0e, 0xa8, +0x1e, 0x42, 0xf3, 0x50, 0xe2, 0x0a, 0x6a, 0x42, +0x45, 0x4b, 0x2a, 0xbe, 0x35, 0x24, 0x54, 0xf4, +0x36, 0x8d, 0xee, 0xed, 0x9d, 0x6c, 0xd8, 0xdd, +0x83, 0xd0, 0x68, 0x6e, 0x49, 0xf3, 0x02, 0x6d, +0x5a, 0x47, 0x51, 0x14, 0xe5, 0xe0, 0xc1, 0x83, +0xc7, 0xf1, 0x5d, 0x37, 0x51, 0x56, 0xa4, 0x86, +0x6f, 0xd9, 0x55, 0x81, 0xbf, 0xd6, 0x02, 0xc2, +0x9b, 0x9d, 0xca, 0x7a, 0x7f, 0x68, 0x68, 0xe8, +0xb3, 0x52, 0x4a, 0x94, 0x4b, 0x3a, 0xae, 0xed, +0x81, 0x5c, 0x7b, 0x3a, 0xce, 0x71, 0x5d, 0x2c, +0xc3, 0xf6, 0xf5, 0xb2, 0x08, 0x62, 0xbe, 0x40, +0x2c, 0x15, 0x25, 0xd1, 0x91, 0x20, 0x99, 0x4a, +0xa2, 0x46, 0x34, 0x14, 0x4d, 0xa2, 0xa8, 0x0a, +0xed, 0xed, 0x19, 0xf4, 0xf6, 0x08, 0x63, 0x6f, +0x8e, 0xd3, 0x6c, 0xef, 0xa2, 0x9c, 0x8f, 0xe0, +0xf6, 0x3b, 0x6c, 0xdc, 0xb8, 0x71, 0xa8, 0xbf, +0xbf, 0x7f, 0xd3, 0xf4, 0xf4, 0x74, 0xb0, 0x71, +0xd2, 0x59, 0xb6, 0x82, 0x20, 0x09, 0x53, 0x05, +0x40, 0x78, 0xf1, 0x13, 0x24, 0x36, 0xe2, 0x99, +0x4c, 0xa6, 0xb7, 0xa3, 0xa3, 0x63, 0x13, 0x2e, +0x88, 0xcb, 0xd2, 0xd7, 0xde, 0xad, 0x20, 0x0f, +0x0a, 0xf3, 0x05, 0x0a, 0xf3, 0x05, 0xb2, 0x97, +0xb3, 0x74, 0x0e, 0x74, 0x70, 0xdb, 0xee, 0x7e, +0x14, 0xcd, 0x77, 0x8b, 0x68, 0xba, 0x1d, 0x63, +0x69, 0x23, 0x13, 0x67, 0x27, 0x1b, 0xf7, 0x53, +0x02, 0x99, 0x55, 0xf0, 0xfa, 0x5c, 0xb1, 0x6b, +0xd7, 0xae, 0x7b, 0xa6, 0xa7, 0xa7, 0x2f, 0x50, +0x3d, 0x1d, 0x56, 0x32, 0x51, 0x42, 0x88, 0x15, +0x00, 0xd4, 0x5a, 0x40, 0x7c, 0xef, 0xde, 0xbd, +0xfb, 0xa5, 0x94, 0xc2, 0x9b, 0x15, 0x38, 0x8e, +0x53, 0x63, 0x40, 0xb7, 0x8e, 0xae, 0x4e, 0x66, +0x59, 0x2c, 0x16, 0xd9, 0xfd, 0xf0, 0x9d, 0xe8, +0x11, 0x0d, 0xa1, 0x08, 0x36, 0xdd, 0x7b, 0x3b, +0x73, 0xd9, 0x1c, 0xf3, 0x57, 0xe7, 0x1b, 0xb6, +0x15, 0x57, 0x05, 0xf2, 0x36, 0xc9, 0xc0, 0xc0, +0xc0, 0x1e, 0x96, 0x5d, 0x20, 0xc8, 0x44, 0x55, +0x05, 0x42, 0xb9, 0x8a, 0xff, 0x07, 0x00, 0xc4, +0x06, 0x06, 0x06, 0xf6, 0x08, 0x21, 0xf0, 0xae, +0x78, 0xb8, 0xc2, 0x6d, 0xca, 0xc9, 0xde, 0x64, +0x4b, 0xef, 0xb5, 0xc2, 0x0b, 0x73, 0x0b, 0x8c, +0xbd, 0x33, 0x86, 0x9e, 0xd4, 0x89, 0x24, 0x23, +0xe8, 0x09, 0x9d, 0xdb, 0x3f, 0x31, 0xd8, 0xb4, +0x9d, 0x73, 0xd5, 0x43, 0x78, 0x82, 0x4c, 0x26, +0x33, 0x98, 0xc9, 0x64, 0xba, 0x58, 0x4e, 0xc7, +0x05, 0x00, 0x54, 0x40, 0x08, 0xeb, 0xb3, 0xd6, +0x02, 0xf4, 0x58, 0x2c, 0x96, 0xea, 0xe9, 0xee, +0xd9, 0x2a, 0xa5, 0xc4, 0xce, 0xba, 0x38, 0xd2, +0x69, 0xc8, 0x07, 0x7e, 0xfb, 0x6e, 0xfe, 0xe4, +0xfb, 0x7f, 0xcc, 0x8e, 0x23, 0xdb, 0x9b, 0xbe, +0xdb, 0x2a, 0x4f, 0x8f, 0xcd, 0x70, 0x7d, 0xf6, +0x3a, 0x7a, 0x52, 0x43, 0x6f, 0xd3, 0x19, 0xdc, +0x37, 0x80, 0x92, 0x50, 0x1a, 0xb7, 0x73, 0x1d, +0xbc, 0x39, 0x90, 0x52, 0x8a, 0xbb, 0xee, 0xba, +0xeb, 0x13, 0xf8, 0xee, 0x5c, 0xdf, 0x02, 0x42, +0xc2, 0x87, 0x63, 0x80, 0x0a, 0xe8, 0x9b, 0x37, +0x6f, 0x1e, 0x54, 0x54, 0x45, 0xf3, 0x0a, 0x1e, +0x8e, 0xe1, 0x34, 0x44, 0xfd, 0xfe, 0x2f, 0xde, +0xc7, 0xe3, 0x7f, 0x7e, 0x9c, 0x44, 0x3a, 0xce, +0xef, 0x7e, 0xf5, 0x49, 0x76, 0x1f, 0xbd, 0x63, +0xdd, 0x2c, 0x61, 0xea, 0xc2, 0x34, 0x7a, 0x22, +0x42, 0x24, 0x11, 0x21, 0x96, 0x8e, 0x31, 0xb8, +0x77, 0xa0, 0xb9, 0x15, 0xcc, 0xba, 0x08, 0x21, +0xe8, 0xee, 0xee, 0xbe, 0xbd, 0x0c, 0x40, 0x90, +0x91, 0xae, 0x4a, 0xc9, 0xd7, 0x9b, 0x05, 0x2a, +0x6e, 0xd0, 0xde, 0xde, 0xde, 0x25, 0xa5, 0xc4, +0x31, 0x5c, 0xdc, 0x06, 0xab, 0xbe, 0xc3, 0x5f, +0x78, 0x80, 0xc7, 0xbe, 0xf2, 0x39, 0xf4, 0xa8, +0x8e, 0x54, 0x24, 0x42, 0x0a, 0x9e, 0xf8, 0x8b, +0x2f, 0xe1, 0x29, 0x1e, 0x67, 0x7f, 0xf2, 0xee, +0xaa, 0xed, 0x5a, 0xa5, 0xc9, 0x8b, 0x93, 0xe8, +0xf1, 0x4f, 0xa2, 0x68, 0x0a, 0x42, 0x08, 0x3a, +0x06, 0x33, 0xb8, 0xbf, 0x68, 0x1c, 0x8c, 0x5d, +0x43, 0x22, 0xa5, 0x24, 0x1e, 0x8f, 0xa7, 0x59, +0x45, 0x78, 0x40, 0xd4, 0x9b, 0x05, 0x2a, 0x49, +0xcf, 0xb6, 0xb6, 0xb6, 0x8c, 0x10, 0x02, 0xb7, +0xe4, 0xe2, 0xac, 0x12, 0xfd, 0x0f, 0x7f, 0xfe, +0x10, 0xbf, 0xf9, 0x47, 0x8f, 0xe0, 0x79, 0xe0, +0xba, 0x2e, 0xae, 0xeb, 0x62, 0xdb, 0x0e, 0x08, +0x8f, 0xc7, 0xff, 0xec, 0x38, 0xae, 0xe7, 0x72, +0xe6, 0xa7, 0x67, 0xd7, 0x04, 0x80, 0x63, 0x39, +0x58, 0x96, 0x45, 0xbc, 0x3d, 0x8e, 0x90, 0x82, +0x54, 0x4f, 0x6a, 0xd5, 0xf1, 0x04, 0x64, 0x1b, +0x02, 0x21, 0x04, 0xb1, 0x58, 0x2c, 0x15, 0x12, +0xbe, 0xf6, 0x64, 0xaa, 0x62, 0x01, 0xb5, 0x27, +0x3c, 0x12, 0x50, 0x92, 0xc9, 0x64, 0x5a, 0x4a, +0x89, 0x6b, 0xba, 0x75, 0x37, 0x3d, 0x87, 0x1e, +0x7b, 0x80, 0x4f, 0xff, 0xde, 0x51, 0x1c, 0xdb, +0x41, 0x08, 0x0b, 0xd7, 0x71, 0xf0, 0x3c, 0x0f, +0xc7, 0x76, 0xb0, 0x4d, 0x1b, 0xdb, 0x71, 0xf8, +0xec, 0x33, 0xc7, 0x70, 0x85, 0xcb, 0x99, 0xd7, +0xd6, 0x06, 0x82, 0x61, 0x98, 0x44, 0x13, 0x11, +0x84, 0x94, 0x74, 0xf4, 0x65, 0x9a, 0x6e, 0xc2, +0x6c, 0xc3, 0x41, 0x4a, 0x19, 0x00, 0x50, 0x35, +0xfd, 0x85, 0xdf, 0x53, 0x6b, 0x84, 0xaf, 0xe2, +0x64, 0x32, 0x99, 0x16, 0x42, 0x60, 0x95, 0xec, +0x15, 0x88, 0x3f, 0xf0, 0x5b, 0x07, 0x79, 0xf0, +0x0b, 0x87, 0xb1, 0x2d, 0x1b, 0x0f, 0x7c, 0x10, +0xa4, 0xc0, 0x73, 0x3d, 0x1c, 0xc7, 0xc5, 0xb6, +0x6c, 0x6c, 0xd3, 0xc6, 0xb2, 0x2c, 0x8e, 0x3c, +0xf1, 0x20, 0xb6, 0x6b, 0x73, 0xf6, 0xbf, 0x5b, +0x73, 0x87, 0xae, 0xbe, 0x2e, 0xba, 0xfa, 0xbb, +0x50, 0x14, 0xe9, 0xbb, 0x94, 0x10, 0xc4, 0x52, +0x51, 0x22, 0x89, 0x28, 0x42, 0x0a, 0x7a, 0x37, +0xf7, 0xb2, 0xf7, 0x53, 0x7b, 0xfc, 0x4d, 0x93, +0xeb, 0xe1, 0xba, 0x2e, 0x57, 0x27, 0xb2, 0x64, +0x27, 0xb3, 0x95, 0x3e, 0x5c, 0xc3, 0x8f, 0x01, +0xd1, 0x68, 0x34, 0x41, 0x4d, 0xe4, 0xaf, 0x05, +0x60, 0x55, 0x12, 0x42, 0x20, 0xa5, 0xef, 0x4b, +0x42, 0x2e, 0xb7, 0x55, 0x54, 0x85, 0x89, 0x0b, +0x93, 0x7c, 0xe7, 0xaf, 0x4f, 0x20, 0xa4, 0x40, +0x08, 0xd8, 0x36, 0xb4, 0x95, 0x4f, 0x3e, 0x76, +0xb8, 0x32, 0xa0, 0x1f, 0x7e, 0xeb, 0x65, 0xe6, +0xae, 0xe4, 0xf0, 0x3c, 0xb7, 0xf2, 0x9d, 0x54, +0x25, 0x9e, 0xdb, 0x7c, 0x15, 0x99, 0xcf, 0xe5, +0x79, 0xf8, 0x77, 0x3e, 0xc5, 0xa6, 0x3b, 0x6e, +0x47, 0x8b, 0xe8, 0x68, 0x11, 0x0d, 0x4d, 0x57, +0x51, 0x54, 0xc5, 0xd7, 0x6a, 0x22, 0xca, 0x13, +0x5f, 0xf9, 0x12, 0xb6, 0x65, 0x63, 0x19, 0x16, +0x1f, 0x9e, 0xfb, 0x90, 0xe7, 0xff, 0xee, 0xfb, +0x55, 0x63, 0x14, 0xd2, 0x1f, 0x7b, 0xb3, 0x95, +0xa3, 0x4a, 0x83, 0x63, 0xe9, 0x62, 0xb1, 0x38, +0x2f, 0x84, 0x40, 0x4b, 0xa8, 0x48, 0x65, 0x79, +0xc6, 0xf4, 0x3c, 0x8f, 0x99, 0xb1, 0x99, 0xaa, +0x8e, 0xa4, 0xa2, 0x70, 0xcf, 0x67, 0xee, 0xa9, +0x08, 0xbb, 0x70, 0x6d, 0x81, 0xa9, 0x8b, 0x53, +0x2b, 0x00, 0x15, 0x4a, 0xf3, 0xb4, 0x99, 0x6d, +0xdb, 0xfc, 0xf0, 0x5b, 0x2f, 0xf1, 0xc5, 0x3f, +0xfd, 0x02, 0xdb, 0xf6, 0x6e, 0x45, 0x8f, 0xfa, +0x20, 0xa8, 0xba, 0xea, 0x0b, 0xe5, 0x7a, 0xd8, +0xb6, 0x8d, 0x10, 0x82, 0xcb, 0xef, 0x5f, 0xe6, +0xfb, 0x5f, 0xff, 0x17, 0x6c, 0xcb, 0xae, 0x1a, +0xa3, 0x1a, 0xf7, 0x03, 0xa6, 0x61, 0x18, 0x8b, +0xd4, 0x9c, 0x21, 0x56, 0x8d, 0x3b, 0x24, 0x7c, +0xf0, 0x0c, 0x5e, 0x76, 0x2a, 0x00, 0xc4, 0x34, +0x14, 0xa9, 0x34, 0xe4, 0xc5, 0x5c, 0x01, 0xa3, +0x68, 0x54, 0x38, 0x96, 0x88, 0x37, 0x6d, 0xd3, +0x88, 0x1d, 0xcb, 0xe5, 0x5f, 0xff, 0xfe, 0xdf, +0x99, 0xf8, 0x60, 0x12, 0x4d, 0xd7, 0xd0, 0x23, +0x3a, 0x91, 0x58, 0x84, 0x68, 0x22, 0x8a, 0x16, +0xd5, 0x51, 0x35, 0x95, 0x89, 0xf3, 0x13, 0x7c, +0xef, 0x6f, 0x5f, 0xc0, 0x31, 0x9d, 0x15, 0xed, +0xb5, 0xb8, 0x1e, 0x00, 0xb0, 0x40, 0xe8, 0xfc, +0xb0, 0x16, 0x84, 0xf0, 0x42, 0xc8, 0xa3, 0xe6, +0x94, 0x36, 0x9f, 0xcf, 0xcf, 0x49, 0x29, 0xd1, +0x12, 0xcd, 0x01, 0x28, 0x2e, 0x2c, 0x61, 0x14, +0x0d, 0xcc, 0x25, 0x13, 0x73, 0xc9, 0xa4, 0xbd, +0x33, 0xbd, 0x26, 0x00, 0x14, 0xa9, 0xe0, 0xda, +0x2e, 0x2f, 0x7c, 0xed, 0x9f, 0x19, 0x3d, 0x73, +0x11, 0xa9, 0x48, 0x14, 0xc5, 0x77, 0x01, 0x01, +0x5c, 0x3a, 0x33, 0xc6, 0x77, 0xff, 0xea, 0x44, +0x5d, 0xe1, 0x15, 0xa9, 0xa0, 0xc7, 0x35, 0xa4, +0x94, 0x98, 0xa6, 0xb9, 0x40, 0xf5, 0x21, 0x6a, +0x15, 0x10, 0xb5, 0x2b, 0xfb, 0xaa, 0x53, 0xda, +0x5c, 0x2e, 0x77, 0x4d, 0x08, 0x81, 0x1a, 0x57, +0x51, 0x14, 0xa5, 0x21, 0xbb, 0xb6, 0xcb, 0xdc, +0x95, 0x1c, 0xa5, 0xa2, 0x81, 0xb1, 0x64, 0xd0, +0xbf, 0xad, 0xaf, 0x69, 0x9b, 0x56, 0xd8, 0x73, +0x3c, 0x9e, 0xff, 0xea, 0x0b, 0xfc, 0xf2, 0xe7, +0xe7, 0x30, 0x4b, 0x26, 0xa5, 0xa2, 0xc1, 0xfb, +0x6f, 0x9d, 0xe7, 0x3b, 0x7f, 0xf9, 0x4f, 0xb8, +0xb6, 0xbb, 0x6a, 0x3b, 0x2d, 0xa1, 0x21, 0x84, +0xa0, 0x58, 0x2c, 0xce, 0xb3, 0x9c, 0x11, 0xaa, +0x4d, 0x8b, 0x79, 0xc1, 0xc2, 0x20, 0x00, 0xa3, +0x6a, 0x23, 0xb4, 0xb8, 0xb8, 0xa8, 0x1e, 0x3c, +0x78, 0xf0, 0xd3, 0x5a, 0x4c, 0x55, 0x96, 0xa6, +0x0c, 0x70, 0xca, 0x7e, 0xbc, 0x0a, 0x2b, 0x8a, +0x24, 0xd3, 0xd3, 0x8e, 0x63, 0xf9, 0x53, 0xd0, +0xec, 0xcc, 0x35, 0x4a, 0x8b, 0xa5, 0x86, 0x6d, +0x5a, 0x61, 0xcf, 0x83, 0xf7, 0xde, 0xf8, 0x25, +0x9d, 0x7d, 0x9d, 0xcc, 0x5d, 0x99, 0xe3, 0xb9, +0xbf, 0x79, 0x1e, 0xdb, 0xb2, 0x1b, 0xb6, 0x69, +0xdb, 0x9e, 0x40, 0x4b, 0xa8, 0x7c, 0xf0, 0xc1, +0x07, 0x6f, 0x8c, 0x8e, 0x8e, 0xbe, 0xcb, 0xf2, +0xa1, 0xc9, 0x52, 0x18, 0x8c, 0xf0, 0x2c, 0x10, +0x36, 0x7f, 0x0b, 0x30, 0x0b, 0x85, 0xc2, 0xc2, +0xc7, 0x1f, 0x7f, 0x7c, 0x69, 0xe3, 0xc6, 0x8d, +0x3b, 0xe3, 0x1b, 0x63, 0x2c, 0x4d, 0x94, 0x6a, +0x63, 0x48, 0x15, 0x4d, 0x9e, 0x9f, 0x62, 0xcb, +0x9e, 0xcd, 0x95, 0x40, 0x78, 0xe7, 0x7d, 0xbb, +0x78, 0xeb, 0x95, 0x53, 0x38, 0xd6, 0xfa, 0x6c, +0xa1, 0xff, 0xed, 0xeb, 0x3f, 0x40, 0x28, 0x02, +0xd7, 0xf1, 0x35, 0xbf, 0x1a, 0x09, 0x55, 0x10, +0xed, 0x8a, 0xe0, 0xe1, 0xb9, 0x6f, 0xbf, 0xfd, +0xf6, 0x08, 0x7e, 0x6e, 0x30, 0x9c, 0x17, 0xac, +0xc4, 0x01, 0x59, 0x4e, 0x0e, 0x86, 0xfd, 0x3f, +0x28, 0x52, 0x28, 0x01, 0x4b, 0xe3, 0xe3, 0xe3, +0xef, 0x4a, 0x29, 0x89, 0x6d, 0x88, 0x36, 0xf5, +0x59, 0xb3, 0x68, 0x32, 0x73, 0xf1, 0x23, 0xcc, +0x25, 0x0b, 0x73, 0xc9, 0x42, 0x51, 0x54, 0x76, +0xde, 0xbd, 0x03, 0x5d, 0xd7, 0xd7, 0x1c, 0x0f, +0x14, 0xa9, 0x20, 0x10, 0xe0, 0xd0, 0xf4, 0xbd, +0x58, 0x6f, 0x14, 0xa9, 0x48, 0x72, 0xb9, 0xdc, +0xe4, 0xec, 0xec, 0xec, 0x6c, 0x1d, 0x00, 0x2a, +0x20, 0xd4, 0x06, 0xc1, 0xc0, 0x02, 0xcc, 0x72, +0xa3, 0xe2, 0xa9, 0x53, 0xa7, 0x7e, 0x01, 0xb8, +0x91, 0x2e, 0xdd, 0xcf, 0xdb, 0x49, 0xd9, 0x90, +0x2f, 0x8e, 0x5c, 0xa4, 0x90, 0xcb, 0x63, 0x95, +0x4c, 0xac, 0x92, 0x49, 0x22, 0x15, 0x67, 0xc7, +0xfe, 0xdf, 0x20, 0x95, 0x69, 0x43, 0x55, 0x9a, +0xb7, 0x5f, 0x0f, 0x8e, 0x6d, 0x88, 0x20, 0x84, +0xe0, 0xc3, 0x0f, 0x3f, 0x7c, 0x17, 0x3f, 0x1f, +0xb8, 0xaa, 0x05, 0xd4, 0xba, 0x80, 0xc7, 0xb2, +0x0b, 0x18, 0x40, 0x31, 0x9b, 0xcd, 0x66, 0xe7, +0xe6, 0xe6, 0x3e, 0xec, 0xee, 0xee, 0xde, 0x92, +0xd8, 0x14, 0x67, 0x69, 0xbc, 0xb1, 0x1b, 0x78, +0x8e, 0xc7, 0xd8, 0xe9, 0x31, 0x36, 0xef, 0xdd, +0xec, 0x23, 0xea, 0xb8, 0x48, 0x21, 0xe9, 0xdf, +0xd6, 0x87, 0x65, 0x58, 0x14, 0xae, 0x2f, 0xb2, +0x38, 0xbf, 0x88, 0xb9, 0x64, 0x36, 0x5d, 0xa4, +0xdc, 0x0c, 0xc9, 0x98, 0x24, 0xb2, 0x21, 0x02, +0x02, 0xef, 0x9d, 0x77, 0xde, 0x79, 0x1b, 0x3f, +0x29, 0x1a, 0x14, 0x51, 0x54, 0x4d, 0x87, 0x95, +0xa4, 0x68, 0x88, 0xc2, 0x31, 0xa0, 0x84, 0x7f, +0xe6, 0x9e, 0x3f, 0x79, 0xf2, 0xe4, 0x7f, 0x08, +0x21, 0x88, 0x6d, 0x89, 0xa2, 0x44, 0x55, 0xa4, +0x54, 0x1a, 0x72, 0x69, 0xd1, 0x64, 0xfc, 0xdd, +0xcb, 0x2c, 0xe5, 0x4b, 0x58, 0x25, 0x0b, 0xcb, +0xb0, 0xb1, 0x0c, 0x07, 0xd7, 0xf1, 0xd0, 0xa3, +0x11, 0x52, 0x9d, 0x69, 0xda, 0x7b, 0x32, 0xb4, +0x65, 0x52, 0xc4, 0x92, 0x71, 0xf4, 0x48, 0x04, +0x45, 0x69, 0xde, 0x6f, 0x2b, 0x9c, 0xd8, 0x1e, +0x47, 0x2a, 0x92, 0x89, 0x89, 0x89, 0xb3, 0xe3, +0xe3, 0xe3, 0x97, 0x59, 0xae, 0x1b, 0xa8, 0x1f, +0x03, 0xa0, 0x72, 0x76, 0x5e, 0x1b, 0x07, 0x0c, +0x7c, 0xf3, 0x59, 0xf8, 0xd9, 0xcf, 0x7e, 0x36, +0x92, 0xcd, 0x66, 0x2f, 0x2a, 0xba, 0x42, 0x62, +0x5b, 0xac, 0xa5, 0xe9, 0xcb, 0x2a, 0x59, 0xcc, +0x5c, 0x98, 0xa1, 0x30, 0x57, 0xc0, 0x32, 0xca, +0xfb, 0x02, 0xc3, 0xc6, 0x31, 0x7d, 0x76, 0x6d, +0x07, 0xd7, 0x71, 0xf1, 0x1c, 0x7f, 0x3d, 0x2f, +0xa5, 0x5c, 0xf3, 0x94, 0xa9, 0x67, 0x74, 0xa2, +0x7d, 0x11, 0x00, 0xe7, 0x95, 0x57, 0x5e, 0x79, +0x11, 0xff, 0x80, 0xb4, 0x50, 0x56, 0x66, 0xb8, +0x84, 0x86, 0x2a, 0x00, 0x42, 0x14, 0x06, 0xc0, +0x2c, 0x23, 0x57, 0x00, 0xae, 0x0f, 0x0f, 0x0f, +0xff, 0x00, 0xf0, 0xa2, 0x03, 0x11, 0xb4, 0x64, +0xf3, 0x85, 0x91, 0x22, 0x15, 0x84, 0x27, 0x98, +0xbf, 0xba, 0x40, 0x6e, 0x3a, 0xc7, 0xd2, 0xfc, +0x12, 0x76, 0xc9, 0xc6, 0x36, 0x9c, 0x0a, 0x3b, +0xa6, 0x03, 0x6e, 0xf3, 0xa0, 0xd6, 0x2a, 0xc7, +0xb7, 0x47, 0x11, 0x42, 0x30, 0x3a, 0x3a, 0xfa, +0xe6, 0xd8, 0xd8, 0xd8, 0x18, 0xd5, 0xc7, 0xe4, +0x01, 0x00, 0x15, 0xf3, 0xaf, 0x02, 0x20, 0x64, +0x05, 0xe1, 0x40, 0x58, 0x01, 0xe0, 0xcc, 0x99, +0x33, 0xef, 0x4d, 0x4e, 0x4e, 0x9e, 0x95, 0x8a, +0x24, 0xb9, 0x37, 0x86, 0xaa, 0x4b, 0x14, 0xa5, +0x35, 0xc6, 0xf3, 0x30, 0x8b, 0x06, 0xa5, 0xfc, +0x12, 0xd6, 0x92, 0x89, 0x63, 0xd9, 0xe0, 0x7a, +0x7e, 0xd0, 0x6a, 0xb1, 0x8f, 0x66, 0x1c, 0xdb, +0x12, 0x41, 0xef, 0xd4, 0xb0, 0x6d, 0xbb, 0xf4, +0xe2, 0x8b, 0x2f, 0xbe, 0x48, 0xfd, 0x62, 0x89, +0x15, 0xfb, 0x81, 0x7a, 0x39, 0xde, 0x5a, 0x37, +0x58, 0x2c, 0x23, 0x39, 0x77, 0xe2, 0xc4, 0x89, +0xef, 0x2e, 0x2e, 0x2e, 0x5e, 0x53, 0x52, 0x0a, +0xb1, 0x3b, 0x62, 0x37, 0xe5, 0xa3, 0x42, 0x48, +0xa4, 0x58, 0xbb, 0xaf, 0x87, 0x59, 0xef, 0xd6, +0x89, 0x6e, 0x8d, 0x00, 0x78, 0xc3, 0xc3, 0xc3, +0xcf, 0x65, 0xb3, 0xd9, 0x09, 0xe0, 0x3a, 0x2b, +0x8f, 0xc7, 0xab, 0xb4, 0xdf, 0x0c, 0x80, 0xb0, +0x15, 0xe4, 0x81, 0xdc, 0xec, 0xec, 0xec, 0xe4, +0x73, 0xcf, 0x3d, 0xf7, 0x8f, 0x8e, 0xe3, 0x18, +0xfa, 0x06, 0x8d, 0xe8, 0xe6, 0xc8, 0xba, 0x99, +0xef, 0xcd, 0xb2, 0x96, 0x54, 0x89, 0xed, 0x8e, +0x20, 0x15, 0xc9, 0xc8, 0xc8, 0xc8, 0x7f, 0x0e, +0x0f, 0x0f, 0xbf, 0x4e, 0x83, 0x2a, 0x91, 0x5a, +0x61, 0x6f, 0xaa, 0x40, 0xe2, 0xe1, 0x87, 0x1f, +0x7e, 0xe8, 0xd1, 0x47, 0x1f, 0x7d, 0x5a, 0x08, +0x21, 0xac, 0x4b, 0x0e, 0xf6, 0xd4, 0x2d, 0x3a, +0x2c, 0x69, 0x42, 0x32, 0x29, 0xd0, 0x77, 0xab, +0x88, 0x88, 0x60, 0x7c, 0x7c, 0xfc, 0xec, 0xb3, +0xcf, 0x3e, 0x7b, 0xc3, 0x05, 0x12, 0x2b, 0x12, +0x22, 0x9e, 0xe7, 0x05, 0x05, 0xc8, 0x81, 0x1b, +0x88, 0x72, 0x27, 0x41, 0xb6, 0x58, 0x79, 0xf5, +0xd5, 0x57, 0x5f, 0xef, 0xee, 0xee, 0xee, 0x3a, +0x74, 0xe8, 0xd0, 0x71, 0x7d, 0x9b, 0x2a, 0x94, +0x36, 0x89, 0x3d, 0xea, 0xd4, 0xc4, 0xd7, 0x5b, +0x4b, 0xb2, 0x4b, 0xa2, 0xee, 0x90, 0x08, 0x45, +0x90, 0xcd, 0x66, 0xc7, 0xbf, 0xf9, 0xcd, 0x6f, +0x7e, 0x8b, 0x95, 0xe5, 0x31, 0xe1, 0x42, 0xa9, +0xd6, 0x4a, 0x64, 0xa0, 0xf5, 0x22, 0xa9, 0x47, +0x1e, 0x79, 0xe4, 0xe8, 0xb1, 0x63, 0xc7, 0x9e, +0xd4, 0x34, 0x4d, 0xf7, 0xf2, 0x1e, 0xf6, 0x39, +0x07, 0xcf, 0x5c, 0x77, 0x59, 0x57, 0x90, 0x72, +0xbb, 0x44, 0x19, 0xf4, 0xbd, 0x77, 0x74, 0x74, +0x74, 0xe4, 0x1b, 0xdf, 0xf8, 0xc6, 0xb7, 0x0d, +0xc3, 0x58, 0xbf, 0x22, 0x29, 0x68, 0xbd, 0x4c, +0x6e, 0xdf, 0xbe, 0x7d, 0x7b, 0x9f, 0x7a, 0xea, +0xa9, 0x3f, 0x48, 0x24, 0x12, 0xed, 0x38, 0xe0, +0x4e, 0x79, 0xb8, 0xd3, 0xde, 0x2d, 0xb1, 0x06, +0x91, 0x11, 0xc8, 0x4d, 0x02, 0x91, 0x00, 0xcf, +0xf3, 0xdc, 0x37, 0xde, 0x78, 0xe3, 0xc7, 0x27, +0x4e, 0x9c, 0x58, 0xff, 0x32, 0xb9, 0xca, 0x3f, +0x5b, 0x2c, 0x94, 0xdc, 0xb0, 0x61, 0xc3, 0xed, +0xcf, 0x3c, 0xf3, 0xcc, 0xef, 0xdf, 0x76, 0xdb, +0x6d, 0x3b, 0x01, 0x30, 0xc1, 0x9d, 0xf0, 0x70, +0xaf, 0x52, 0x27, 0xec, 0xdc, 0x84, 0xe0, 0x49, +0x7c, 0xc1, 0xdb, 0xfd, 0xcf, 0xc5, 0x62, 0x71, +0xfe, 0x47, 0x3f, 0xfa, 0xd1, 0xf7, 0x5e, 0x7d, +0xf5, 0xd5, 0x9f, 0xe3, 0x17, 0x49, 0x5e, 0xc3, +0x8f, 0xfa, 0xf5, 0x6a, 0x01, 0x6e, 0xae, 0x50, +0xb2, 0xf2, 0xc2, 0xea, 0xa5, 0xb2, 0x71, 0xfc, +0xf3, 0xf7, 0x4a, 0xa9, 0xec, 0x91, 0x23, 0x47, +0xf6, 0x1f, 0x3b, 0x76, 0xec, 0x78, 0x67, 0x67, +0x67, 0x3f, 0x00, 0x16, 0x78, 0x73, 0xfe, 0xf0, +0xbc, 0x79, 0x6e, 0x0c, 0x8c, 0x38, 0x88, 0x0e, +0x9f, 0x49, 0xfa, 0x5f, 0x99, 0xa6, 0x59, 0x1a, +0x19, 0x19, 0xf9, 0xc9, 0x0b, 0x2f, 0xbc, 0xf0, +0x4a, 0xb1, 0x58, 0x0c, 0x4a, 0x65, 0xaf, 0x53, +0xbd, 0xe2, 0x5b, 0xbf, 0x52, 0xd9, 0x55, 0x40, +0x58, 0xad, 0x58, 0x3a, 0x8d, 0xef, 0x1a, 0x99, +0xc7, 0x1f, 0x7f, 0xfc, 0xf0, 0xe1, 0xc3, 0x87, +0x1f, 0x49, 0xa5, 0x52, 0x95, 0x62, 0x69, 0x9c, +0xf2, 0x50, 0x0d, 0xf0, 0x4c, 0xb1, 0x7c, 0x23, +0xc0, 0xa5, 0x72, 0x8b, 0x40, 0x44, 0x3c, 0xff, +0xef, 0x14, 0x3e, 0xc4, 0x65, 0xb2, 0x6d, 0xdb, +0x3c, 0x77, 0xee, 0xdc, 0x9b, 0xcf, 0x3f, 0xff, +0xfc, 0x4b, 0xd9, 0x6c, 0xf6, 0xa3, 0x72, 0x4f, +0xf3, 0x65, 0x0e, 0x6b, 0x7d, 0xfd, 0x8b, 0xa5, +0x1b, 0x80, 0x10, 0xbe, 0x20, 0x11, 0xdc, 0x11, +0x48, 0x96, 0x87, 0x9f, 0x02, 0xda, 0xee, 0xb9, +0xe7, 0x9e, 0x1d, 0x07, 0x0e, 0x1c, 0xd8, 0xbf, +0x65, 0xcb, 0x96, 0x3b, 0x33, 0x99, 0xcc, 0x0d, +0x95, 0xcb, 0x1b, 0x86, 0x51, 0xbc, 0x7c, 0xf9, +0xf2, 0x07, 0xef, 0xbd, 0xf7, 0xde, 0xe9, 0xd7, +0x5e, 0x7b, 0xed, 0x74, 0xa1, 0x50, 0x08, 0x82, +0x5b, 0xa0, 0xed, 0x5f, 0x5d, 0xb9, 0x7c, 0xe5, +0xe5, 0xc6, 0x17, 0x26, 0x02, 0x8b, 0xa8, 0x7b, +0x61, 0x62, 0xe7, 0xce, 0x9d, 0xfd, 0xfb, 0xf6, +0xed, 0xdb, 0x99, 0x4a, 0xa5, 0x32, 0x6d, 0x6d, +0x6d, 0xe9, 0x78, 0x3c, 0x9e, 0x4a, 0x24, 0x12, +0x6d, 0xaa, 0xaa, 0xaa, 0xc5, 0x62, 0xb1, 0x50, +0x28, 0x14, 0x16, 0x16, 0x17, 0x17, 0x17, 0xf2, +0xf9, 0x7c, 0x6e, 0x6a, 0x6a, 0x6a, 0xfa, 0xf5, +0xd7, 0x5f, 0x7f, 0xdf, 0xb2, 0xac, 0x46, 0x17, +0x26, 0xc2, 0x82, 0x57, 0xdd, 0x1c, 0x69, 0x55, +0xf8, 0x1b, 0x06, 0x20, 0x04, 0x02, 0xdc, 0xfc, +0x95, 0x99, 0xf0, 0x41, 0x65, 0x38, 0x2d, 0x1f, +0xdc, 0x03, 0x0a, 0x5f, 0x99, 0x29, 0xd5, 0xe1, +0x55, 0xaf, 0xcc, 0xd0, 0x20, 0xda, 0xaf, 0x2a, +0xcf, 0xaf, 0xe9, 0xd2, 0x54, 0xf8, 0xe6, 0x18, +0x54, 0x2f, 0xbf, 0x03, 0x10, 0x7e, 0x25, 0x97, +0xa6, 0xd6, 0x74, 0x71, 0x72, 0x0d, 0xd7, 0xe6, +0x6a, 0xcf, 0xea, 0x6a, 0x77, 0xa2, 0x01, 0x37, +0xbd, 0x36, 0xc7, 0x1a, 0x84, 0x87, 0x35, 0x02, +0x00, 0x55, 0x20, 0x40, 0xb5, 0x45, 0x84, 0x4f, +0x9a, 0x5b, 0xb9, 0x38, 0x59, 0x9b, 0x94, 0x69, +0x78, 0x71, 0x92, 0x35, 0x0a, 0x5e, 0x19, 0xf0, +0xff, 0xf7, 0xab, 0xb3, 0xeb, 0x06, 0x40, 0x55, +0xa7, 0x2b, 0xc1, 0xa8, 0xf7, 0x5c, 0x8d, 0xbc, +0x55, 0x9e, 0xfe, 0x87, 0xff, 0xad, 0x97, 0xa7, +0xff, 0xaf, 0xd2, 0xff, 0x00, 0x48, 0xcd, 0x74, +0xd3, 0xf2, 0xf1, 0xae, 0xb0, 0x00, 0x00, 0x00, +0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, +0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity7.png b/source/bitmaps/misc/activity7.png new file mode 100644 index 0000000000000000000000000000000000000000..45771f5d592e404404135a7e9bcf702e1fa4ad23 GIT binary patch literal 4329 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 XNX>N9^6{>)00000NkvXXu0mjfn8jps literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/activity8.cpp b/source/bitmaps/misc/activity8.cpp new file mode 100644 index 0000000..1623961 --- /dev/null +++ b/source/bitmaps/misc/activity8.cpp @@ -0,0 +1,552 @@ +#include + +#ifndef MISC_ACTIVITY8_CPP +#define MISC_ACTIVITY8_CPP + +static unsigned char misc_activity8_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x73, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xfb, +0x6f, 0x1c, 0xd7, 0x75, 0xc7, 0x3f, 0xf7, 0xce, +0x63, 0xdf, 0xbb, 0x5c, 0xbe, 0x45, 0x8a, 0x94, +0x2d, 0x19, 0x32, 0x65, 0x3d, 0x68, 0x21, 0xa2, +0x64, 0xd9, 0x52, 0x24, 0xd9, 0x6e, 0xaa, 0xba, +0x68, 0xac, 0x18, 0x69, 0x8b, 0xa6, 0x6e, 0x10, +0xa0, 0x86, 0x9b, 0xfe, 0x5e, 0xa0, 0xfd, 0x0f, +0xfa, 0x43, 0xe1, 0x9f, 0x0a, 0x23, 0x6d, 0x91, +0xb6, 0x48, 0x22, 0xc7, 0x6e, 0x01, 0xc3, 0x8e, +0x1f, 0x70, 0x13, 0xca, 0xa9, 0xed, 0x4a, 0x95, +0x1b, 0x85, 0x96, 0xe4, 0x28, 0xb2, 0x2d, 0x4a, +0xa4, 0x44, 0x91, 0x94, 0xb8, 0x22, 0xb5, 0x24, +0x97, 0xdc, 0xdd, 0x99, 0x9d, 0x47, 0x7f, 0x98, +0x9d, 0xe5, 0xec, 0x6a, 0xb9, 0x24, 0x25, 0x2a, +0x4e, 0xd1, 0x03, 0x1c, 0x0c, 0x77, 0x39, 0x33, +0x7b, 0xcf, 0xf7, 0x3c, 0xee, 0xbd, 0xe7, 0x9c, +0x2b, 0x5c, 0xd7, 0xe5, 0x7e, 0x92, 0x10, 0x42, +0x2c, 0xf7, 0xaf, 0x3a, 0xdf, 0xdd, 0x31, 0x18, +0xf7, 0x3e, 0x0f, 0x50, 0xbd, 0x1f, 0x2f, 0xad, +0x11, 0x5a, 0x2c, 0x73, 0x5d, 0x8e, 0xdc, 0xe0, +0xb5, 0x16, 0xbf, 0xf5, 0x06, 0x44, 0xac, 0xd7, +0xfb, 0xea, 0x08, 0x2d, 0x6a, 0xfe, 0x96, 0x75, +0xbe, 0x0b, 0x52, 0x50, 0xf0, 0x46, 0xec, 0xdd, +0xb4, 0x4e, 0x03, 0xbf, 0x67, 0x0b, 0x58, 0x46, +0x70, 0x19, 0xb8, 0xd6, 0x63, 0x41, 0x35, 0x08, +0xbe, 0x30, 0x4e, 0xf9, 0x6f, 0x67, 0x19, 0xae, +0x00, 0xe1, 0xff, 0xec, 0xbd, 0x02, 0x71, 0x4f, +0x00, 0x04, 0x84, 0xaf, 0x15, 0x5a, 0x09, 0xb0, +0x5a, 0x66, 0xa5, 0x86, 0x6b, 0xad, 0x20, 0x28, +0xa8, 0x05, 0xd8, 0x75, 0xae, 0x36, 0x35, 0x60, +0xdc, 0x2b, 0x10, 0x77, 0xe5, 0x02, 0x35, 0x82, +0xd7, 0x0a, 0xad, 0x02, 0x5a, 0x80, 0xf5, 0x32, +0xfb, 0x9f, 0x7d, 0x40, 0x82, 0x96, 0xe0, 0x6b, +0xdd, 0x17, 0xb6, 0x54, 0x66, 0xb3, 0xe6, 0xea, +0x73, 0x3d, 0x30, 0xee, 0x0a, 0x84, 0x35, 0x5b, +0x40, 0x40, 0x78, 0x5f, 0x80, 0xa0, 0x96, 0x75, +0x20, 0x54, 0xe6, 0x70, 0x99, 0x23, 0x81, 0xcf, +0x3e, 0x18, 0xbe, 0x45, 0xf8, 0x00, 0x04, 0x35, +0xef, 0x0b, 0x6c, 0x94, 0xb9, 0x08, 0x14, 0xca, +0xd7, 0x62, 0xf9, 0x3b, 0x1f, 0x10, 0xdf, 0x32, +0x1c, 0xca, 0xd6, 0xb0, 0x56, 0x10, 0xd6, 0x04, +0x40, 0x59, 0x78, 0x9f, 0x7d, 0x8d, 0xfb, 0x5a, +0xf6, 0x05, 0x8e, 0x02, 0xb1, 0x00, 0x47, 0x81, +0x68, 0x7b, 0x7b, 0x7b, 0x77, 0x77, 0x77, 0x77, +0x5f, 0x38, 0x1c, 0x6e, 0x0e, 0x87, 0xc3, 0x4d, +0xba, 0xae, 0x27, 0x75, 0x5d, 0x4f, 0x4a, 0x29, +0x35, 0xd3, 0x34, 0x73, 0xa6, 0x69, 0xce, 0x1b, +0x86, 0x31, 0x6b, 0x18, 0x46, 0x76, 0x76, 0x76, +0x76, 0xfc, 0xca, 0x95, 0x2b, 0x9f, 0x39, 0x8e, +0xb3, 0x08, 0xe4, 0x81, 0xc5, 0x00, 0xe7, 0x03, +0x80, 0x18, 0xb5, 0x40, 0xac, 0xd5, 0x25, 0x56, +0xed, 0x02, 0x01, 0xe1, 0x7d, 0x73, 0xf7, 0x35, +0xee, 0x6b, 0x39, 0x06, 0x24, 0xca, 0x9c, 0x04, +0x12, 0xbd, 0xbd, 0xbd, 0x0f, 0xf7, 0xf4, 0xf4, +0xec, 0x69, 0x6d, 0x6d, 0xdd, 0x1e, 0x8d, 0x46, +0x3b, 0x56, 0xf5, 0x43, 0x65, 0xb2, 0x2c, 0x2b, +0x9f, 0xcd, 0x66, 0xbf, 0xb8, 0x79, 0xf3, 0xe6, +0xd9, 0xe1, 0xe1, 0xe1, 0x73, 0x86, 0x61, 0xcc, +0x00, 0xf3, 0x40, 0xae, 0xcc, 0x0b, 0x2c, 0x81, +0xe1, 0x5b, 0x44, 0xd0, 0x2d, 0x56, 0x05, 0xc2, +0xaa, 0x00, 0xa8, 0x23, 0xbc, 0x86, 0x67, 0xd6, +0x11, 0x20, 0x5e, 0x16, 0xba, 0x09, 0x48, 0x01, +0xcd, 0x8f, 0x3e, 0xfa, 0xe8, 0x57, 0xb7, 0x6c, +0xd9, 0x72, 0x34, 0x1c, 0x0e, 0xb7, 0xf8, 0xef, +0x50, 0x4a, 0x2a, 0xe9, 0x4c, 0x33, 0xe1, 0x85, +0x08, 0x7a, 0x51, 0x47, 0x33, 0x74, 0xf4, 0x62, +0x08, 0x69, 0x4b, 0x4a, 0x61, 0x13, 0x33, 0x64, +0x62, 0x86, 0x0d, 0xcc, 0x88, 0xc1, 0x6c, 0x7b, +0x96, 0x62, 0xac, 0x50, 0xf9, 0x7d, 0xc7, 0x71, +0x4a, 0x37, 0x6e, 0xdc, 0xf8, 0x78, 0x68, 0x68, +0xe8, 0xed, 0x5c, 0x2e, 0x37, 0x09, 0x64, 0x81, +0xb9, 0x00, 0x20, 0x79, 0x96, 0x5c, 0xc3, 0x5a, +0x0b, 0x08, 0x2b, 0x02, 0x50, 0x23, 0xbc, 0x1f, +0xe0, 0xc2, 0x2c, 0x69, 0x3c, 0x05, 0x34, 0x03, +0xcd, 0x7d, 0x7d, 0x7d, 0x8f, 0x6d, 0xdb, 0xb6, +0xed, 0xeb, 0xb1, 0x58, 0x6c, 0x03, 0x80, 0x56, +0xd4, 0x49, 0xdf, 0x6c, 0x26, 0x3d, 0xd9, 0x4a, +0x72, 0x3a, 0x85, 0x70, 0x56, 0x5a, 0x03, 0x2d, +0x51, 0x21, 0x91, 0x27, 0xdb, 0x35, 0x43, 0x76, +0xc3, 0x0c, 0x8b, 0x4d, 0x0b, 0x00, 0xd8, 0xb6, +0x6d, 0x5c, 0xbf, 0x7e, 0xfd, 0x3f, 0xcf, 0x9c, +0x39, 0xf3, 0xae, 0x61, 0x18, 0x53, 0xc0, 0xed, +0x32, 0x18, 0xf3, 0x78, 0xee, 0x51, 0x28, 0x03, +0xb1, 0x6a, 0x10, 0x1a, 0x02, 0xb0, 0x8c, 0xf0, +0xbe, 0xb9, 0xa7, 0x80, 0x34, 0xd0, 0x9a, 0x4a, +0xa5, 0x1e, 0x38, 0x74, 0xe8, 0xd0, 0x0b, 0x4d, +0x4d, 0x4d, 0x5b, 0x3d, 0xc1, 0x35, 0x36, 0x7c, +0xb6, 0x91, 0x96, 0xb1, 0x36, 0x84, 0xbb, 0x7a, +0xa1, 0x97, 0xa3, 0x7c, 0x6a, 0x91, 0x89, 0x1d, +0x63, 0xe4, 0xda, 0xe6, 0x01, 0x28, 0x95, 0x4a, +0xb9, 0xf3, 0xe7, 0xcf, 0x1f, 0xbf, 0x78, 0xf1, +0xe2, 0x69, 0x60, 0x1a, 0x98, 0xc1, 0xb3, 0x88, +0xa0, 0x35, 0xac, 0x0a, 0x84, 0x65, 0x01, 0xa8, +0x63, 0xf6, 0x3a, 0x4b, 0x26, 0xdf, 0x04, 0xb4, +0x00, 0x6d, 0xbd, 0xbd, 0xbd, 0xfd, 0xfb, 0xf7, +0xef, 0x7f, 0x31, 0x1c, 0x0e, 0x37, 0x49, 0x4b, +0xd2, 0x36, 0xbc, 0x81, 0xb6, 0xcb, 0x1d, 0x48, +0x5b, 0xde, 0xb3, 0xe0, 0xb5, 0x94, 0xeb, 0x98, +0xe3, 0xc6, 0xf6, 0x71, 0x8a, 0xc9, 0x02, 0x80, +0x73, 0xe9, 0xd2, 0xa5, 0x77, 0x4f, 0x9f, 0x3e, +0xfd, 0x26, 0x90, 0xc1, 0x03, 0x22, 0xcb, 0x9d, +0x20, 0xd8, 0x78, 0xf2, 0xaf, 0x1e, 0x80, 0x9a, +0xa9, 0xae, 0x9e, 0xf0, 0x6d, 0x40, 0x7b, 0x7f, +0x7f, 0xff, 0x53, 0xfd, 0xfd, 0xfd, 0xdf, 0x52, +0x14, 0x45, 0x8f, 0x64, 0xa3, 0xf4, 0xfc, 0xcf, +0x03, 0xa8, 0x45, 0x6d, 0xfd, 0x24, 0xae, 0x3b, +0x62, 0xb8, 0xd5, 0x77, 0x93, 0x5b, 0x0f, 0x4f, +0x01, 0x30, 0x35, 0x35, 0x35, 0x34, 0x38, 0x38, +0xf8, 0xfd, 0x52, 0xa9, 0x34, 0x09, 0xdc, 0xc2, +0x73, 0x8b, 0x79, 0xee, 0xb4, 0x84, 0xba, 0x20, +0x34, 0x02, 0xc0, 0x9f, 0xea, 0x7c, 0xb3, 0x8f, +0x53, 0x36, 0x79, 0xa0, 0xf3, 0x89, 0x27, 0x9e, +0x78, 0x6e, 0xeb, 0xd6, 0xad, 0xc7, 0x84, 0x10, +0x22, 0x79, 0xbd, 0x89, 0x8e, 0xb3, 0x5d, 0x6b, +0xf2, 0xf1, 0x7b, 0xa5, 0x5c, 0xd7, 0x3c, 0x37, +0xbf, 0x32, 0x81, 0xab, 0x38, 0xcc, 0xcf, 0xcf, +0x8f, 0xbe, 0xfd, 0xf6, 0xdb, 0x7f, 0x67, 0x18, +0xc6, 0x38, 0x9e, 0x35, 0x04, 0x41, 0xa8, 0x04, +0xc6, 0x55, 0x01, 0x50, 0x63, 0xfa, 0x7e, 0xb4, +0x0f, 0x6a, 0xbe, 0x73, 0xe7, 0xce, 0x9d, 0x47, +0xf6, 0xed, 0xdb, 0xf7, 0x02, 0x20, 0x5a, 0x2e, +0xb4, 0x91, 0xba, 0xdc, 0x7c, 0xdf, 0x04, 0x6d, +0x44, 0x66, 0xca, 0xe0, 0xe6, 0x63, 0xe3, 0x58, +0x11, 0x8b, 0x4c, 0x26, 0x73, 0xfe, 0xad, 0xb7, +0xde, 0xfa, 0x7b, 0x60, 0x92, 0x25, 0x10, 0x72, +0x78, 0x81, 0xb1, 0x32, 0x45, 0xd6, 0x82, 0x50, +0xe5, 0xa8, 0x35, 0x4b, 0x5c, 0x7f, 0xae, 0xf7, +0x23, 0x7e, 0x0a, 0x68, 0xe9, 0xe9, 0xe9, 0xd9, +0x3e, 0x30, 0x30, 0xf0, 0x6d, 0x21, 0x84, 0x48, +0x7f, 0xde, 0x42, 0xfc, 0x4a, 0x0a, 0x5b, 0xd8, +0x5f, 0x0a, 0x2b, 0xf3, 0x2a, 0xed, 0xa7, 0xbb, +0x90, 0xb6, 0x42, 0x47, 0x47, 0x47, 0xff, 0xe1, +0xc3, 0x87, 0xbf, 0x89, 0xa7, 0xa4, 0x34, 0xde, +0x0c, 0x15, 0xc1, 0x73, 0xdf, 0xca, 0xaa, 0xb3, +0x36, 0x3f, 0x51, 0x6f, 0x25, 0x58, 0x2f, 0xf0, +0x25, 0x80, 0x74, 0x32, 0x99, 0xec, 0x39, 0x72, +0xe4, 0xc8, 0x77, 0x35, 0x4d, 0x0b, 0x45, 0x26, +0xa2, 0xc4, 0x87, 0x53, 0x38, 0xd2, 0x59, 0xbb, +0xea, 0xd6, 0x91, 0x94, 0x45, 0x95, 0x96, 0x4f, +0xda, 0xb9, 0xbd, 0x2f, 0xc3, 0xd6, 0xad, 0x5b, +0x7f, 0x77, 0x6e, 0x6e, 0x6e, 0xe2, 0xec, 0xd9, +0xb3, 0x3f, 0xa3, 0xfe, 0x4a, 0xb1, 0x6a, 0x4b, +0x0d, 0x8d, 0x01, 0x50, 0xf1, 0xcc, 0x3f, 0x86, +0xb7, 0xb2, 0x6b, 0x7e, 0xea, 0xa9, 0xa7, 0xbe, +0x1d, 0x8d, 0x46, 0x5b, 0xd4, 0x39, 0x8d, 0xc4, +0xb9, 0x34, 0xb6, 0xb4, 0xef, 0x9f, 0x64, 0x6b, +0x20, 0x2d, 0xa3, 0x93, 0xf8, 0x3c, 0xc5, 0xc2, +0x23, 0xf3, 0x62, 0xcf, 0x57, 0xf6, 0x3c, 0x3f, +0x32, 0x32, 0xf2, 0xf9, 0xdc, 0xdc, 0x5c, 0x9e, +0xea, 0xbd, 0x83, 0x1f, 0x0c, 0x45, 0x70, 0xcf, +0x50, 0x71, 0x81, 0x95, 0xa6, 0xbd, 0x2d, 0x5b, +0xb6, 0xec, 0xe8, 0xe8, 0xe8, 0xe8, 0x17, 0xae, +0x20, 0xf1, 0xcb, 0x26, 0x5c, 0xc7, 0xc1, 0x11, +0xf6, 0x6f, 0x0d, 0x87, 0x2f, 0x47, 0xd1, 0x67, +0x42, 0xa8, 0x9a, 0x1a, 0x3a, 0x70, 0xe0, 0xc0, +0x31, 0x96, 0xdc, 0x20, 0x8a, 0xa7, 0xc8, 0xe0, +0x0e, 0xb4, 0x42, 0xb5, 0x16, 0x10, 0xd4, 0x7e, +0x15, 0x00, 0x03, 0x03, 0x03, 0xdf, 0x50, 0x14, +0x45, 0xe8, 0x23, 0x61, 0x28, 0x08, 0xec, 0x75, +0x36, 0x7d, 0x21, 0x04, 0x52, 0x91, 0x08, 0xa5, +0x7c, 0x95, 0xde, 0x38, 0xad, 0xa2, 0x85, 0x6d, +0xad, 0xce, 0xd2, 0xc2, 0x9f, 0xc5, 0xb0, 0x0f, +0x59, 0xf4, 0xf6, 0xf6, 0x3e, 0xd6, 0xd5, 0xd5, +0x35, 0x38, 0x39, 0x39, 0x39, 0xcf, 0xd2, 0x9e, +0x21, 0x38, 0x25, 0x56, 0xac, 0x40, 0x02, 0xb5, +0xbb, 0xbc, 0xa0, 0xf9, 0x47, 0x81, 0xe4, 0xae, +0x5d, 0xbb, 0xbe, 0xd2, 0xda, 0xda, 0xfa, 0x90, +0xb4, 0x24, 0xda, 0xa5, 0xd0, 0xba, 0x6a, 0xce, +0x95, 0x0e, 0x42, 0x03, 0x25, 0x26, 0xd1, 0x12, +0x0a, 0x5a, 0x42, 0x45, 0x8b, 0x7b, 0x57, 0x3d, +0xa5, 0x11, 0xef, 0x8c, 0x12, 0x4a, 0x69, 0xab, +0x7a, 0x97, 0x98, 0x13, 0x68, 0x13, 0x3a, 0x8a, +0xa2, 0x28, 0x8f, 0x3f, 0xfe, 0xf8, 0x31, 0x3c, +0xd7, 0x8d, 0xe1, 0x29, 0x52, 0xc3, 0xb3, 0xec, +0xaa, 0xc0, 0x5f, 0x6b, 0x01, 0xc1, 0xcd, 0x4e, +0x65, 0xbd, 0xdf, 0xdf, 0xdf, 0xff, 0x7b, 0x52, +0x4a, 0x94, 0x2b, 0x3a, 0x8e, 0xe5, 0x82, 0x5c, +0x79, 0x03, 0xa5, 0x86, 0x54, 0x2c, 0xc3, 0x5a, +0x95, 0xe6, 0x70, 0x6c, 0x28, 0x94, 0x50, 0x6d, +0x95, 0x70, 0x22, 0x8c, 0x9e, 0xd4, 0x91, 0xd2, +0xb3, 0x02, 0x21, 0x05, 0x89, 0x94, 0x8e, 0x96, +0xd3, 0xc9, 0x4e, 0xcc, 0xae, 0xf8, 0x2a, 0xe5, +0xf3, 0x10, 0x4e, 0xb7, 0xcd, 0x86, 0x0d, 0x1b, +0xfa, 0xbb, 0xbb, 0xbb, 0x1f, 0x98, 0x98, 0x98, +0xf0, 0x37, 0x4e, 0x3a, 0x4b, 0x56, 0xe0, 0x27, +0x61, 0xaa, 0x00, 0x08, 0x2e, 0x7e, 0xfc, 0xc4, +0x46, 0x34, 0x9d, 0x4e, 0x77, 0x34, 0x37, 0x37, +0x3f, 0x80, 0x03, 0xe2, 0x9a, 0xc4, 0x11, 0x8d, +0xcd, 0x31, 0xd9, 0x9e, 0xe0, 0xc9, 0xef, 0x1e, +0x66, 0x43, 0xdf, 0x06, 0xfe, 0xe9, 0xdb, 0xff, +0xbc, 0x6a, 0xf3, 0x05, 0x30, 0x4b, 0x36, 0xe6, +0x6d, 0x03, 0xc3, 0x08, 0xd1, 0xdc, 0xd3, 0x8c, +0x1e, 0xd1, 0x3c, 0x10, 0x84, 0x40, 0x4f, 0x68, +0x38, 0xd8, 0x64, 0x27, 0x57, 0x00, 0xa1, 0x08, +0x32, 0xa3, 0xe0, 0x76, 0x39, 0x62, 0xdb, 0xb6, +0x6d, 0x7b, 0x27, 0x26, 0x26, 0x2e, 0x51, 0x3d, +0x1d, 0x56, 0x32, 0x51, 0x42, 0x88, 0x3b, 0x00, +0xa8, 0xb5, 0x80, 0xe8, 0xae, 0x5d, 0xbb, 0xf6, +0x48, 0x29, 0x85, 0x3b, 0x2d, 0xb0, 0x6d, 0xbb, +0xc6, 0x80, 0x96, 0x48, 0x0b, 0x6b, 0x1c, 0xfc, +0xb3, 0x27, 0xf8, 0xea, 0x77, 0x0e, 0x12, 0x8a, +0xea, 0x38, 0xb6, 0xc3, 0xde, 0x3f, 0x1d, 0xe0, +0xe4, 0x8f, 0x4e, 0xad, 0x1a, 0x00, 0x9f, 0xf2, +0x85, 0x3c, 0xc5, 0x2b, 0x45, 0x5a, 0x7a, 0x5b, +0x68, 0xd9, 0x98, 0x46, 0x08, 0x09, 0x02, 0xda, +0xfb, 0xda, 0x29, 0x9a, 0x06, 0x0b, 0xb7, 0x17, +0x1a, 0x3e, 0x2f, 0xa6, 0x04, 0x72, 0xa3, 0xa4, +0xa7, 0xa7, 0x67, 0x27, 0x4b, 0x2e, 0xe0, 0x67, +0xa2, 0xaa, 0x02, 0xa1, 0xba, 0x8c, 0xff, 0xfb, +0x00, 0x44, 0x7a, 0x7a, 0x7a, 0x76, 0x0a, 0x21, +0x70, 0x6e, 0xba, 0x38, 0xa2, 0xee, 0xb2, 0x99, +0x1d, 0x4f, 0x6d, 0xe7, 0x6b, 0x7f, 0xf9, 0x34, +0xad, 0xbd, 0x2d, 0x68, 0x61, 0x0d, 0x55, 0x57, +0x29, 0x19, 0x25, 0x9e, 0x7c, 0xe1, 0x10, 0xe7, +0x7e, 0x7a, 0x8e, 0xf9, 0x5b, 0xb9, 0x35, 0x83, +0xe0, 0x38, 0x0e, 0x53, 0x57, 0xa7, 0x28, 0x59, +0x25, 0x36, 0xed, 0xec, 0x01, 0x21, 0x10, 0x02, +0x36, 0xee, 0xea, 0xe6, 0xe2, 0x87, 0x9f, 0x35, +0x7e, 0x78, 0x0a, 0x34, 0x57, 0x90, 0x4e, 0xa7, +0x7b, 0xd3, 0xe9, 0x74, 0x6b, 0x36, 0x9b, 0x9d, +0xaa, 0x01, 0x40, 0x52, 0xde, 0x1f, 0x04, 0xf3, +0x72, 0x41, 0xcd, 0xc7, 0x81, 0xa6, 0x48, 0x24, +0xd2, 0x75, 0xf8, 0xd0, 0xe1, 0x3f, 0x91, 0x8a, +0x54, 0xcc, 0x4f, 0x6d, 0x1c, 0xdb, 0xc1, 0x15, +0x6e, 0x85, 0xbb, 0xfa, 0x36, 0x70, 0xec, 0xaf, +0xff, 0x80, 0xbd, 0xdf, 0x18, 0x20, 0x9a, 0x8c, +0x20, 0x15, 0x89, 0x54, 0x14, 0x5c, 0xc7, 0xc5, +0xb1, 0xbc, 0x59, 0x22, 0x92, 0x8e, 0x72, 0xe1, +0xbf, 0x7e, 0x5d, 0xf5, 0xdc, 0x5a, 0x38, 0x9f, +0xcb, 0x13, 0x4e, 0x45, 0x48, 0x75, 0xa6, 0x50, +0x74, 0x85, 0x50, 0x3c, 0xc4, 0xdc, 0xf4, 0x2c, +0x85, 0x42, 0x71, 0xf9, 0xe7, 0x5c, 0x17, 0xa5, +0x55, 0xa2, 0xc4, 0xa5, 0x70, 0x5d, 0xf7, 0xf6, +0xd5, 0xab, 0x57, 0xbf, 0x60, 0x29, 0x5f, 0x60, +0x12, 0xc8, 0x23, 0xfa, 0x06, 0x5d, 0x9b, 0xeb, +0x53, 0x01, 0xfd, 0xc1, 0x07, 0x1f, 0xec, 0x55, +0x54, 0x45, 0x73, 0x17, 0x5c, 0x6c, 0xc3, 0xc6, +0x11, 0x4e, 0x85, 0x5b, 0x36, 0x35, 0xb3, 0xff, +0x0f, 0x1f, 0xa3, 0xa5, 0xb7, 0x05, 0xdb, 0xb2, +0xb0, 0x2c, 0x9b, 0x92, 0x61, 0x61, 0xe4, 0x0d, +0x8a, 0x8b, 0x45, 0x8c, 0x82, 0x81, 0x69, 0x94, +0xe8, 0x7b, 0xe2, 0x61, 0x7a, 0x76, 0xf5, 0x54, +0x3d, 0xbb, 0x56, 0x1e, 0xbf, 0x74, 0x1d, 0x3d, +0xa6, 0x13, 0x4e, 0x84, 0x08, 0xc5, 0x75, 0xba, +0xb7, 0x77, 0xaf, 0xf8, 0x8c, 0x3d, 0xed, 0x20, +0x84, 0xa0, 0xad, 0xad, 0x6d, 0x13, 0x5e, 0x3c, +0xf3, 0x33, 0xd2, 0x55, 0x29, 0xf9, 0x7a, 0xb3, +0x40, 0xc5, 0x0d, 0x9a, 0x9a, 0x9a, 0x5a, 0xa5, +0x94, 0xd8, 0x86, 0x83, 0x53, 0xb3, 0xea, 0x9b, +0x1a, 0x9f, 0xe2, 0xb5, 0xbf, 0xfd, 0x37, 0xb4, +0xb0, 0x46, 0xef, 0x23, 0xbd, 0x6c, 0xdd, 0xf3, +0x10, 0xfb, 0xbe, 0xbe, 0x0f, 0x69, 0x4a, 0x84, +0x00, 0xd7, 0x71, 0xb1, 0x6d, 0x07, 0xcb, 0xb4, +0x78, 0xf2, 0x3b, 0x87, 0xf8, 0xd7, 0xbf, 0xf9, +0x01, 0x8e, 0x7d, 0x77, 0x6b, 0x87, 0x7c, 0x21, +0xcf, 0xc2, 0x5c, 0x8e, 0xd6, 0x9e, 0x56, 0x00, +0x9a, 0x7b, 0xd2, 0x77, 0x8c, 0xa7, 0x96, 0x1c, +0x43, 0x22, 0xa5, 0x24, 0x1a, 0x8d, 0xa6, 0x96, +0x13, 0x1e, 0x10, 0xf5, 0x66, 0x81, 0x4a, 0xd2, +0x33, 0x91, 0x48, 0xa4, 0x85, 0x10, 0x38, 0x45, +0x07, 0x7b, 0x99, 0xe8, 0x6f, 0x1b, 0x36, 0x97, +0xce, 0x5e, 0x62, 0x66, 0x6a, 0x86, 0x47, 0x7f, +0xa7, 0xdf, 0xab, 0xe5, 0x09, 0xc1, 0xcd, 0x91, +0x9b, 0x44, 0x53, 0x51, 0xc2, 0xd1, 0x10, 0x89, +0xd6, 0x04, 0x3b, 0x8e, 0x6c, 0xe7, 0xec, 0xfb, +0xe7, 0xee, 0x0a, 0x00, 0x80, 0x7c, 0x3e, 0x4f, +0x28, 0xa6, 0x03, 0x20, 0xb5, 0xc4, 0xb2, 0xe3, +0xf1, 0xc9, 0x32, 0xbc, 0xd9, 0x23, 0x12, 0x89, +0x24, 0x03, 0xc2, 0xd7, 0x56, 0xa6, 0x2a, 0x16, +0x50, 0x5b, 0xe1, 0x91, 0x80, 0x12, 0x8f, 0xc7, +0x53, 0x52, 0x4a, 0x1c, 0xd3, 0x59, 0x71, 0xd3, +0x93, 0xea, 0x4c, 0x52, 0x58, 0x2c, 0x56, 0x56, +0x70, 0xef, 0xfd, 0xe0, 0xa7, 0x8c, 0x7d, 0x36, +0x46, 0x6b, 0x77, 0x0b, 0x1b, 0xb7, 0x6e, 0xa4, +0xad, 0xbb, 0x15, 0x35, 0xa2, 0x60, 0x1a, 0xa5, +0x35, 0x0b, 0x0f, 0x60, 0x39, 0x16, 0xa1, 0x44, +0x18, 0x5c, 0x17, 0xdd, 0xd5, 0x51, 0x22, 0x0a, +0xa5, 0x06, 0xef, 0xb2, 0x0c, 0x1b, 0x29, 0xa5, +0x0f, 0x40, 0xd5, 0xf4, 0x17, 0xbc, 0x4f, 0xad, +0x11, 0xbe, 0x8a, 0xe3, 0xf1, 0x78, 0x4a, 0x08, +0x41, 0xa9, 0x68, 0xad, 0x88, 0x78, 0xa2, 0x2d, +0x41, 0x21, 0x5f, 0xa8, 0x54, 0x73, 0xa7, 0x26, +0xa6, 0xb0, 0x85, 0xcd, 0xd4, 0x64, 0x86, 0xa9, +0xc9, 0xcc, 0xd2, 0x8d, 0x77, 0x99, 0x33, 0x11, +0xaa, 0xf0, 0x2c, 0xc0, 0x05, 0xd7, 0x75, 0x71, +0x15, 0xb7, 0xe1, 0x98, 0x1c, 0xc3, 0x8b, 0x01, +0xe1, 0x70, 0x38, 0x46, 0xb5, 0xe6, 0xab, 0xa8, +0x61, 0x61, 0x44, 0x08, 0x81, 0x94, 0xb2, 0xb2, +0x2a, 0x6b, 0x44, 0xb1, 0x54, 0x0c, 0x23, 0x6f, +0x20, 0x84, 0xc0, 0x34, 0x4c, 0x0a, 0x8b, 0x85, +0x15, 0x9f, 0x69, 0xf4, 0xbb, 0xb5, 0x89, 0x9a, +0xf6, 0xde, 0x76, 0x22, 0xf1, 0x08, 0xae, 0xeb, +0x92, 0x9f, 0xcf, 0x63, 0x1a, 0x66, 0xc3, 0xf7, +0x0b, 0xe9, 0x8d, 0x7d, 0xa5, 0xac, 0xb7, 0x4a, +0x83, 0xb2, 0x74, 0x3e, 0x9f, 0x9f, 0x13, 0x42, +0xa0, 0xc5, 0x54, 0xa4, 0xd2, 0x38, 0xc9, 0x69, +0x14, 0x0c, 0x8c, 0x82, 0x01, 0x02, 0x1c, 0xdb, +0x59, 0xf1, 0xfe, 0x46, 0xb4, 0xeb, 0xc0, 0x4e, +0x36, 0x6d, 0xdb, 0xc4, 0xc4, 0xe5, 0x09, 0xc6, +0xbe, 0x18, 0x63, 0x7a, 0x72, 0x86, 0xee, 0x87, +0xba, 0x88, 0xc4, 0xc2, 0xb8, 0x2e, 0xdc, 0x1a, +0x9f, 0x5e, 0xf1, 0xfd, 0x6a, 0x54, 0x41, 0x08, +0x81, 0x61, 0x18, 0x8b, 0xd4, 0xd4, 0x10, 0xab, +0xee, 0x2b, 0x5f, 0x83, 0x20, 0xf8, 0x37, 0xdb, +0x15, 0x00, 0x22, 0x1a, 0x8a, 0x54, 0x1a, 0xfe, +0xe0, 0x42, 0x76, 0x81, 0x62, 0xde, 0xa8, 0xd8, +0x58, 0x28, 0x1c, 0xc2, 0x32, 0x57, 0xb9, 0x17, +0xa8, 0xa1, 0xcf, 0x7f, 0xf1, 0x05, 0x7b, 0xbf, +0x36, 0xc0, 0xf6, 0x7d, 0x8f, 0xa0, 0x6a, 0x2a, +0xf9, 0x5c, 0x9e, 0x78, 0x53, 0x0c, 0x45, 0xf5, +0xd6, 0x18, 0x0b, 0xb3, 0x0b, 0x2b, 0x8e, 0x47, +0x8b, 0xea, 0x3e, 0x00, 0xf3, 0x04, 0xe6, 0x7d, +0x1a, 0x24, 0x44, 0xfc, 0x7f, 0x56, 0xaa, 0xb4, +0xb9, 0x5c, 0xee, 0xb6, 0x94, 0x12, 0x2d, 0xb6, +0x32, 0x00, 0xf9, 0xb9, 0x02, 0x66, 0xd9, 0x05, +0x00, 0x5a, 0xda, 0x9b, 0x99, 0x9e, 0x9c, 0x59, +0x9b, 0xe4, 0x3e, 0x39, 0x70, 0xf2, 0x8d, 0x53, +0xfc, 0xf1, 0x5f, 0xfd, 0x11, 0xaa, 0xa6, 0x12, +0x4b, 0x46, 0x91, 0x52, 0x82, 0x10, 0xb8, 0xae, +0x43, 0xdf, 0x9e, 0x87, 0xb1, 0x8c, 0x12, 0x23, +0xbf, 0x1a, 0xe5, 0xfa, 0xa5, 0xf1, 0xba, 0x40, +0xeb, 0x51, 0x0d, 0x29, 0x25, 0xa6, 0x69, 0xce, +0x53, 0x5d, 0x44, 0xad, 0x02, 0xa2, 0x36, 0x06, +0x54, 0x55, 0x69, 0xb3, 0xd9, 0xec, 0x8c, 0x10, +0x02, 0x35, 0xaa, 0xa2, 0x28, 0x8d, 0x01, 0x98, +0x9f, 0x9e, 0xc3, 0x28, 0x98, 0x15, 0x00, 0xba, +0x36, 0x77, 0x91, 0x9d, 0x5a, 0x79, 0xf7, 0xb6, +0x1c, 0x5d, 0xbb, 0x38, 0xc6, 0xd5, 0x5f, 0x5f, +0x63, 0xfb, 0xfe, 0x6d, 0xa8, 0x9a, 0x8a, 0xa2, +0x2a, 0x15, 0xf7, 0x6a, 0xef, 0x69, 0xe7, 0xe0, +0x37, 0x0e, 0xf2, 0xd8, 0x33, 0xfb, 0x28, 0x2e, +0x16, 0x19, 0x3a, 0x71, 0x96, 0x93, 0x3f, 0x39, +0x85, 0xeb, 0x2c, 0x29, 0x57, 0x8b, 0x69, 0x08, +0x21, 0xc8, 0xe7, 0xf3, 0x73, 0x2c, 0x65, 0x84, +0x6a, 0xd3, 0x62, 0x6e, 0xd0, 0x05, 0x7c, 0xf6, +0x6b, 0xf4, 0xe6, 0xc8, 0xc8, 0xc8, 0x98, 0xeb, +0xba, 0x25, 0x3d, 0xa9, 0x69, 0x6a, 0x54, 0xc5, +0x29, 0x2e, 0x3f, 0x15, 0x9a, 0xc5, 0x12, 0x99, +0xb1, 0x5b, 0x34, 0xb5, 0xa7, 0x00, 0x48, 0xb6, +0x24, 0x49, 0x36, 0x27, 0x59, 0x98, 0x6d, 0xbc, +0x71, 0x69, 0x44, 0xef, 0xff, 0xf8, 0xe7, 0x6c, +0x7f, 0xfc, 0x11, 0xb4, 0x90, 0x86, 0x16, 0xf2, +0x04, 0xb2, 0x4a, 0x16, 0x60, 0xe2, 0xd8, 0x0e, +0xf3, 0x33, 0x45, 0x3e, 0xf8, 0xf7, 0x0f, 0xb9, +0x70, 0xea, 0xd7, 0x08, 0x44, 0x55, 0x50, 0x0c, +0xb7, 0x87, 0x90, 0x52, 0x72, 0xeb, 0xd6, 0xad, +0x6b, 0xdc, 0x59, 0x4e, 0xaf, 0x80, 0x10, 0x5c, +0x19, 0xd5, 0x66, 0x83, 0xa2, 0xa6, 0x69, 0x86, +0x77, 0xec, 0xd8, 0xb1, 0x3d, 0x91, 0x48, 0xb4, +0xba, 0x45, 0x17, 0x3b, 0xe7, 0x54, 0x66, 0x85, +0x7a, 0x6c, 0x97, 0x2c, 0x92, 0x2d, 0x49, 0x1c, +0xcb, 0xc1, 0xb1, 0x1d, 0x12, 0xe9, 0x38, 0x73, +0xb7, 0xe6, 0xc1, 0xa5, 0xe1, 0x73, 0xcb, 0xb1, +0x91, 0x37, 0xd0, 0x74, 0x95, 0xcd, 0xfd, 0x5b, +0x50, 0x34, 0x15, 0x29, 0x25, 0x8e, 0xe3, 0x60, +0x16, 0x4d, 0x4e, 0xbe, 0x71, 0x8a, 0x9f, 0xbc, +0xfc, 0x36, 0x37, 0xaf, 0x4e, 0x55, 0xcd, 0x56, +0x52, 0x4a, 0x14, 0x5d, 0x21, 0xb5, 0x23, 0x01, +0xe0, 0xbc, 0xfe, 0xfa, 0xeb, 0x3f, 0xca, 0xe7, +0xf3, 0x37, 0x80, 0x59, 0xbc, 0xec, 0x50, 0x55, +0xb1, 0x44, 0x75, 0x5d, 0xd7, 0x6f, 0x33, 0xf1, +0xfd, 0xdf, 0x6f, 0x52, 0x28, 0x02, 0x85, 0xd1, +0xd1, 0xd1, 0x4f, 0xbb, 0xbb, 0xbb, 0xfb, 0x22, +0x9d, 0x61, 0xcc, 0xf1, 0xc6, 0x8b, 0x98, 0x85, +0xdb, 0x8b, 0x64, 0x6f, 0x64, 0x89, 0x37, 0xc5, +0x71, 0x5d, 0x17, 0x81, 0xe0, 0xc1, 0x1d, 0x0f, +0x72, 0x6b, 0x2c, 0x43, 0x2e, 0x7b, 0x77, 0x96, +0x70, 0xea, 0x8d, 0xd3, 0xec, 0x7e, 0x72, 0x37, +0xe9, 0xce, 0x34, 0xb8, 0x2e, 0xe7, 0x3f, 0xfc, +0x15, 0x83, 0x3f, 0x3c, 0xc1, 0xfc, 0xb4, 0x57, +0x27, 0xac, 0x17, 0x9b, 0x42, 0x1d, 0x3a, 0x52, +0x91, 0x4c, 0x4f, 0x4f, 0x5f, 0x9f, 0x9e, 0x9e, +0x9e, 0x2e, 0xcb, 0x52, 0x5b, 0x39, 0xbe, 0x23, +0x06, 0x04, 0x03, 0xa0, 0x59, 0x7e, 0x28, 0x7f, +0xe6, 0xcc, 0x99, 0x5f, 0x1e, 0x38, 0x70, 0xe0, +0x9b, 0xa1, 0x56, 0x5d, 0xaa, 0xba, 0x82, 0x6b, +0x35, 0x9e, 0x57, 0xa7, 0x46, 0xa7, 0x50, 0xb6, +0x48, 0x14, 0x4d, 0x05, 0xd7, 0xdb, 0x99, 0xb5, +0x74, 0x36, 0x13, 0x89, 0x45, 0x98, 0xcd, 0xcc, +0xae, 0x29, 0x41, 0x02, 0xe0, 0x94, 0x6c, 0x7e, +0xf6, 0x2f, 0x3f, 0x63, 0xef, 0xef, 0x0f, 0xf0, +0xfe, 0xf1, 0x9f, 0x33, 0x31, 0x3c, 0x59, 0x16, +0x7c, 0xf9, 0x69, 0x30, 0xd2, 0x19, 0x42, 0x08, +0xc1, 0xd5, 0xab, 0x57, 0x3f, 0xc5, 0xcb, 0x07, +0xd6, 0x02, 0x50, 0x11, 0xa2, 0xde, 0x2c, 0x60, +0xe3, 0x59, 0x80, 0x01, 0xe4, 0x33, 0x99, 0x4c, +0xe6, 0xf6, 0xed, 0xdb, 0x57, 0xdb, 0xda, 0xda, +0x36, 0xc7, 0x1e, 0x88, 0x52, 0x18, 0x2d, 0xae, +0x38, 0xe8, 0x5b, 0xd7, 0xa7, 0x49, 0x77, 0xa4, +0x91, 0x8a, 0xc0, 0x75, 0xbd, 0x8d, 0x91, 0xaa, +0x2a, 0xa4, 0xdb, 0xd3, 0x14, 0x16, 0x0b, 0x94, +0x8a, 0xa5, 0x35, 0x01, 0x31, 0x3c, 0x74, 0x99, +0xe1, 0xa1, 0xcb, 0x9e, 0xe0, 0x2b, 0x04, 0x63, +0x19, 0x91, 0x84, 0x3a, 0x43, 0x20, 0x70, 0x3f, +0xf9, 0xe4, 0x93, 0x5f, 0xe0, 0x99, 0xfd, 0x1d, +0xdb, 0x60, 0xca, 0xb5, 0xc2, 0x5a, 0x18, 0x7d, +0x0b, 0xf0, 0x5d, 0x60, 0x11, 0xc8, 0x9d, 0x3e, +0x7d, 0xfa, 0x3f, 0x84, 0x10, 0x44, 0x36, 0x87, +0x51, 0xc2, 0x2a, 0x52, 0x2a, 0x0d, 0xd9, 0xb1, +0x5c, 0xb2, 0x37, 0x66, 0x29, 0xe4, 0x0c, 0x4a, +0x45, 0x8b, 0x52, 0xb1, 0x44, 0xa9, 0x68, 0x61, +0x99, 0x36, 0x8a, 0xa2, 0xa2, 0x87, 0x43, 0x84, +0x22, 0x61, 0x54, 0x55, 0x5b, 0xf1, 0x5d, 0x6b, +0xe5, 0xd8, 0xd6, 0x28, 0x52, 0x91, 0x8c, 0x8d, +0x8d, 0x9d, 0x1f, 0x1d, 0x1d, 0xbd, 0x46, 0x75, +0x1e, 0xa0, 0xbe, 0x05, 0x2c, 0x13, 0x07, 0x0c, +0x3c, 0xf3, 0x99, 0x3f, 0x79, 0xf2, 0xe4, 0xd0, +0xfe, 0xfd, 0xfb, 0x2f, 0x77, 0x76, 0x76, 0x3e, +0x14, 0x7b, 0x28, 0x42, 0xe1, 0x0b, 0x63, 0x55, +0x9a, 0x2b, 0xcc, 0x17, 0x50, 0x35, 0x05, 0xa9, +0x2a, 0xe0, 0xba, 0x38, 0x8e, 0xeb, 0xd5, 0x13, +0x6c, 0x07, 0xd7, 0xf5, 0x96, 0xbc, 0x2b, 0x69, +0x74, 0x2d, 0xa4, 0x24, 0x15, 0xc2, 0x5d, 0x21, +0x1c, 0xc7, 0xb1, 0xdf, 0x7b, 0xef, 0xbd, 0x37, +0xf1, 0x0a, 0xa4, 0x0b, 0x78, 0xca, 0x0c, 0xb6, +0xd0, 0x54, 0xa8, 0xd6, 0x02, 0x82, 0x00, 0x98, +0x78, 0xc8, 0x2d, 0x00, 0xb3, 0x83, 0x83, 0x83, +0x6f, 0x00, 0x6e, 0xb8, 0x27, 0x84, 0x16, 0xf7, +0x16, 0x46, 0xab, 0x61, 0xd7, 0xf6, 0xb6, 0xcc, +0xb6, 0xe9, 0x78, 0xf1, 0xc3, 0x11, 0x48, 0xb1, +0xba, 0x67, 0xd7, 0xca, 0xd1, 0xad, 0x61, 0x84, +0x10, 0x0c, 0x0f, 0x0f, 0x7f, 0x3c, 0x32, 0x32, +0x32, 0x42, 0x75, 0x99, 0xdc, 0x07, 0xa0, 0x62, +0xfe, 0x55, 0x00, 0x94, 0xbf, 0xa8, 0x0d, 0x84, +0x15, 0x00, 0xce, 0x9d, 0x3b, 0x77, 0xe1, 0xfa, +0xf5, 0xeb, 0xe7, 0xa5, 0x22, 0x89, 0xef, 0x8a, +0xa0, 0xea, 0x12, 0x45, 0xf9, 0xed, 0xe1, 0xc8, +0xe6, 0x10, 0x7a, 0x8b, 0x86, 0x65, 0x59, 0xc5, +0x37, 0xdf, 0x7c, 0xf3, 0x4d, 0xea, 0x37, 0x4b, +0xdc, 0xb1, 0x1f, 0xa8, 0x17, 0x4a, 0x6b, 0xdd, +0x60, 0xb1, 0x8c, 0xe4, 0xed, 0xe3, 0xc7, 0x8f, +0xff, 0x70, 0x71, 0x71, 0x71, 0x46, 0x49, 0x2a, +0x44, 0x1e, 0x89, 0xac, 0xbb, 0xff, 0xde, 0x2d, +0xeb, 0x6d, 0x3a, 0xe1, 0x2d, 0x21, 0x00, 0x77, +0x70, 0x70, 0xf0, 0x95, 0x4c, 0x26, 0x33, 0x86, +0x37, 0xef, 0xd7, 0x96, 0xc7, 0xab, 0xb4, 0xbf, +0x12, 0x00, 0x41, 0x2b, 0xc8, 0x01, 0xd9, 0xe9, +0xe9, 0xe9, 0xeb, 0xaf, 0xbc, 0xf2, 0xca, 0x3f, +0xd8, 0xb6, 0x6d, 0xe8, 0x9d, 0x1a, 0xe1, 0x07, +0x43, 0xf7, 0xc5, 0x94, 0xd7, 0xc2, 0x5a, 0x5c, +0x25, 0xb2, 0x23, 0x84, 0x54, 0x24, 0x43, 0x43, +0x43, 0x3f, 0x1d, 0x1c, 0x1c, 0xfc, 0x88, 0x06, +0x5d, 0x22, 0xb5, 0xc2, 0xde, 0x55, 0x83, 0xc4, +0xd3, 0x4f, 0x3f, 0x7d, 0xe4, 0xd9, 0x67, 0x9f, +0x7d, 0x41, 0x08, 0x21, 0x4a, 0x57, 0x6c, 0xac, +0xf1, 0x2f, 0xa7, 0x4a, 0x2c, 0xe3, 0x02, 0x7d, +0x87, 0x8a, 0x08, 0x09, 0x46, 0x47, 0x47, 0xcf, +0xbf, 0xf4, 0xd2, 0x4b, 0x6b, 0x6e, 0x90, 0xb8, +0x23, 0x21, 0x12, 0x98, 0x11, 0x7c, 0x37, 0x10, +0xe5, 0x97, 0xf8, 0xd9, 0x62, 0xe5, 0xc4, 0x89, +0x13, 0x1f, 0xb5, 0xb5, 0xb5, 0xb5, 0x1e, 0x38, +0x70, 0xe0, 0x98, 0xfe, 0x90, 0x2a, 0x94, 0x84, +0xc4, 0x1a, 0xb6, 0x6b, 0xe2, 0xeb, 0xfd, 0x25, +0xd9, 0x2a, 0x51, 0x1f, 0xf6, 0x8a, 0xa9, 0x99, +0x4c, 0x66, 0xf4, 0x7b, 0xdf, 0xfb, 0xde, 0x3f, +0x72, 0x67, 0x7b, 0x4c, 0xb0, 0x51, 0x6a, 0x75, +0x2d, 0x32, 0xb0, 0xfa, 0x26, 0xa9, 0x67, 0x9e, +0x79, 0xe6, 0xa9, 0xa3, 0x47, 0x8f, 0x7e, 0x4b, +0xd3, 0x34, 0xdd, 0xcd, 0xb9, 0x58, 0x17, 0x6d, +0x5c, 0x73, 0xdd, 0x65, 0xbd, 0x83, 0x94, 0x4d, +0x12, 0xa5, 0xd7, 0xf3, 0xde, 0xe1, 0xe1, 0xe1, +0xa1, 0x97, 0x5f, 0x7e, 0xf9, 0xfb, 0x86, 0x61, +0xac, 0x5f, 0x93, 0x14, 0xac, 0xbe, 0x4d, 0x6e, +0xf7, 0xee, 0xdd, 0xbb, 0x9e, 0x7f, 0xfe, 0xf9, +0xbf, 0x88, 0xc5, 0x62, 0x4d, 0xd8, 0xe0, 0x8c, +0xbb, 0x38, 0x13, 0xee, 0x7d, 0xb1, 0x06, 0x91, +0x16, 0xc8, 0x07, 0x04, 0x22, 0x06, 0xae, 0xeb, +0x3a, 0xa7, 0x4e, 0x9d, 0x7a, 0xf7, 0xf8, 0xf1, +0xe3, 0xeb, 0xdf, 0x26, 0x57, 0xf9, 0xe7, 0x2a, +0x1b, 0x25, 0x3b, 0x3b, 0x3b, 0x37, 0xbd, 0xf8, +0xe2, 0x8b, 0x7f, 0xbe, 0x71, 0xe3, 0xc6, 0x3e, +0x00, 0x4c, 0x70, 0xc6, 0x5c, 0x9c, 0x29, 0xea, +0x84, 0x9d, 0xbb, 0x10, 0x3c, 0x8e, 0x27, 0x78, +0x93, 0xf7, 0x39, 0x9f, 0xcf, 0xcf, 0xbd, 0xf3, +0xce, 0x3b, 0x3f, 0x3e, 0x71, 0xe2, 0xc4, 0x7f, +0xe3, 0x35, 0x49, 0xce, 0xb0, 0xb4, 0xdb, 0x5b, +0x9f, 0x46, 0xc9, 0xca, 0x0d, 0xcb, 0xb7, 0xca, +0x46, 0xf1, 0xea, 0xef, 0x95, 0x56, 0xd9, 0xc3, +0x87, 0x0f, 0xef, 0x39, 0x7a, 0xf4, 0xe8, 0xb1, +0x96, 0x96, 0x96, 0x6e, 0x00, 0x4a, 0xe0, 0xde, +0xf6, 0x86, 0xe7, 0xce, 0xb1, 0x36, 0x30, 0xa2, +0x20, 0x9a, 0x3d, 0x26, 0xee, 0x7d, 0x65, 0x9a, +0x66, 0x71, 0x68, 0x68, 0xe8, 0xfd, 0xd7, 0x5e, +0x7b, 0xed, 0xbd, 0x7c, 0x3e, 0xef, 0xb7, 0xca, +0xce, 0x52, 0xbd, 0xe2, 0x5b, 0xbf, 0x56, 0xd9, +0x65, 0x40, 0x58, 0xae, 0x59, 0x3a, 0x85, 0xe7, +0x1a, 0xe9, 0xe7, 0x9e, 0x7b, 0xee, 0xe0, 0xc1, +0x83, 0x07, 0x9f, 0x49, 0x26, 0x93, 0x95, 0x66, +0x69, 0xec, 0xf2, 0x50, 0x0d, 0x70, 0x4d, 0xb1, +0x74, 0x22, 0xc0, 0xa1, 0x72, 0x8a, 0x40, 0x84, +0x5c, 0xef, 0xef, 0x24, 0x1e, 0xc4, 0x65, 0xb2, +0x2c, 0xcb, 0xbc, 0x78, 0xf1, 0xe2, 0xc7, 0xaf, +0xbe, 0xfa, 0xea, 0x5b, 0x99, 0x4c, 0xc6, 0xdf, +0xdb, 0xcf, 0x95, 0x39, 0xa8, 0xf5, 0xf5, 0x6f, +0x96, 0x6e, 0x00, 0x42, 0xf0, 0x80, 0x84, 0x7f, +0x46, 0x20, 0x5e, 0x1e, 0x7e, 0x12, 0x48, 0xec, +0xdd, 0xbb, 0xf7, 0xe1, 0x81, 0x81, 0x81, 0x3d, +0x9b, 0x37, 0x6f, 0xde, 0x9e, 0x4e, 0xa7, 0xd7, +0xd4, 0x2e, 0x6f, 0x18, 0x46, 0xfe, 0xda, 0xb5, +0x6b, 0x5f, 0x5c, 0xb8, 0x70, 0xe1, 0xec, 0x07, +0x1f, 0x7c, 0x70, 0x76, 0x61, 0x61, 0xc1, 0x0f, +0x6e, 0xbe, 0xb6, 0x7f, 0x73, 0xed, 0xf2, 0x95, +0x9b, 0x1b, 0x1f, 0x98, 0xf0, 0x2d, 0xa2, 0xee, +0x81, 0x89, 0xbe, 0xbe, 0xbe, 0xee, 0xdd, 0xbb, +0x77, 0xf7, 0x25, 0x93, 0xc9, 0x74, 0x22, 0x91, +0x48, 0x45, 0xa3, 0xd1, 0x64, 0x2c, 0x16, 0x4b, +0xa8, 0xaa, 0xaa, 0xe6, 0xf3, 0xf9, 0x85, 0x85, +0x85, 0x85, 0xf9, 0xc5, 0xc5, 0xc5, 0xf9, 0x5c, +0x2e, 0x97, 0x1d, 0x1f, 0x1f, 0x9f, 0xf8, 0xe8, +0xa3, 0x8f, 0x3e, 0x2b, 0x95, 0x4a, 0x8d, 0x0e, +0x4c, 0x04, 0x05, 0xaf, 0x3a, 0x39, 0xb2, 0x5a, +0xe1, 0xd7, 0x0c, 0x40, 0x00, 0x04, 0xb8, 0xfb, +0x23, 0x33, 0xc1, 0x42, 0xa5, 0xbf, 0x12, 0xf5, +0xf3, 0x10, 0xfe, 0x56, 0xdc, 0x77, 0x90, 0x62, +0x1d, 0x5e, 0xf6, 0xc8, 0x0c, 0x0d, 0xa2, 0xfd, +0xb2, 0xf2, 0x7c, 0x49, 0x87, 0xa6, 0x82, 0x27, +0xc7, 0xa0, 0x7a, 0xf9, 0xed, 0x83, 0xf0, 0x1b, +0x39, 0x34, 0x75, 0x4f, 0x07, 0x27, 0xef, 0xe1, +0xd8, 0x5c, 0x6d, 0xad, 0xae, 0x76, 0x27, 0xea, +0xf3, 0x8a, 0xc7, 0xe6, 0xb8, 0x07, 0xe1, 0xe1, +0x1e, 0x01, 0x80, 0x2a, 0x10, 0xa0, 0xda, 0x22, +0x82, 0x95, 0xe6, 0xd5, 0x1c, 0x9c, 0x0c, 0xf2, +0x8a, 0x07, 0x27, 0xb9, 0x47, 0xc1, 0x2b, 0x03, +0xfe, 0xff, 0x7e, 0x74, 0x76, 0xdd, 0x00, 0xa8, +0x7a, 0xe9, 0x3a, 0x1e, 0x9e, 0x0e, 0x5c, 0xbd, +0x0f, 0xbf, 0xad, 0x87, 0xa7, 0xff, 0xaf, 0xd2, +0xff, 0x02, 0x4d, 0x04, 0x17, 0xe5, 0x2a, 0xd4, +0x8c, 0xff, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, +0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity8.png b/source/bitmaps/misc/activity8.png new file mode 100644 index 0000000000000000000000000000000000000000..6d87a805100f811c8f3562050c0f31546ccdcdc1 GIT binary patch literal 4342 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 k4qUwtzpaO-|F6>j0!;)L + +#ifndef MISC_ACTIVITY9_CPP +#define MISC_ACTIVITY9_CPP + +static unsigned char misc_activity9_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x27, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xd9, +0x6f, 0x1c, 0x57, 0x76, 0xc6, 0x7f, 0xf7, 0xd6, +0xd2, 0x55, 0xbd, 0x91, 0xcd, 0x9d, 0x94, 0x48, +0x6d, 0x86, 0x96, 0x91, 0x2d, 0x4a, 0xb6, 0x24, +0x5b, 0xe3, 0x4d, 0x1a, 0x1b, 0x88, 0x62, 0x20, +0x63, 0xc7, 0x08, 0x32, 0x99, 0x81, 0xe1, 0x97, +0x18, 0x9e, 0x20, 0xff, 0x40, 0xf2, 0x12, 0x20, +0x0f, 0x41, 0x5e, 0x82, 0x09, 0x10, 0x04, 0x03, +0x67, 0x00, 0x3f, 0x05, 0x72, 0xc6, 0x48, 0x1c, +0x8c, 0xe3, 0x25, 0x9e, 0x89, 0x9c, 0x8c, 0xe3, +0x99, 0x89, 0x66, 0x6c, 0xd3, 0x92, 0x1c, 0x47, +0x96, 0x45, 0x8b, 0xa4, 0x24, 0xd2, 0x22, 0x5b, +0x5c, 0x9b, 0xcd, 0xee, 0xae, 0xea, 0xae, 0xaa, +0x3c, 0x54, 0x57, 0xb3, 0xba, 0xd9, 0x1b, 0x4d, +0xc9, 0x76, 0x90, 0x03, 0x1c, 0x54, 0x2f, 0xb7, +0xaa, 0xee, 0xf9, 0xee, 0x77, 0xce, 0xdd, 0xce, +0x15, 0x9e, 0xe7, 0x71, 0x27, 0x45, 0x08, 0x21, +0x1a, 0xfd, 0x55, 0xe7, 0xb7, 0x0d, 0x95, 0xf1, +0xee, 0x70, 0x05, 0xd5, 0x3b, 0xf1, 0xd0, 0x1a, +0xa3, 0x45, 0x83, 0x6b, 0x23, 0xf1, 0xc2, 0xd7, +0x5a, 0xfc, 0x6e, 0x37, 0x20, 0xe2, 0x76, 0x3d, +0xaf, 0x8e, 0xd1, 0xa2, 0xe6, 0xb3, 0xac, 0xf3, +0x5b, 0x58, 0xc2, 0x86, 0x37, 0x53, 0xbf, 0xd0, +0x6d, 0xaa, 0xf8, 0x96, 0x19, 0xd0, 0xc0, 0x70, +0x19, 0xba, 0xd6, 0x53, 0x41, 0x35, 0x08, 0x81, +0x31, 0x6e, 0xf9, 0xb3, 0xdb, 0x40, 0x2b, 0x40, +0x04, 0xaf, 0xdd, 0x2a, 0x10, 0x5b, 0x02, 0x20, +0x64, 0x7c, 0xad, 0xd1, 0x4a, 0x48, 0xd5, 0xb2, +0x2a, 0x35, 0x5a, 0xcb, 0x82, 0xb0, 0xa1, 0x25, +0xc0, 0xa9, 0x73, 0x75, 0xa8, 0x01, 0x63, 0xab, +0x40, 0x7c, 0x21, 0x17, 0xa8, 0x31, 0xbc, 0xd6, +0x68, 0x15, 0xd0, 0x42, 0xaa, 0x97, 0x35, 0xf8, +0x1e, 0x00, 0x12, 0x66, 0x42, 0xd0, 0xea, 0x81, +0xb1, 0xc5, 0xb2, 0xda, 0x35, 0xd7, 0x40, 0xeb, +0x81, 0xf1, 0x85, 0x40, 0xd8, 0x34, 0x03, 0x42, +0xc6, 0x07, 0x06, 0x84, 0x5b, 0x59, 0x07, 0x22, +0x65, 0x35, 0xca, 0x6a, 0x86, 0xbe, 0x07, 0x60, +0x04, 0x8c, 0x08, 0x00, 0x08, 0xb7, 0x7c, 0x60, +0xb0, 0x55, 0xd6, 0x02, 0x90, 0x2f, 0x5f, 0x0b, +0xe5, 0xdf, 0x02, 0x40, 0x02, 0x66, 0xb8, 0x94, +0xd9, 0xb0, 0x59, 0x10, 0x36, 0x05, 0x40, 0xd9, +0xf8, 0x40, 0x83, 0x16, 0x0f, 0x5a, 0x39, 0x30, +0x38, 0x0a, 0xc4, 0x42, 0x1a, 0x05, 0xa2, 0x7d, +0x7d, 0x7d, 0xdb, 0xb6, 0x6d, 0xdb, 0xb6, 0xdf, +0x30, 0x8c, 0x2e, 0xc3, 0x30, 0x3a, 0x75, 0x5d, +0x4f, 0xea, 0xba, 0x9e, 0x94, 0x52, 0x6a, 0xb6, +0x6d, 0xaf, 0xda, 0xb6, 0x9d, 0xb1, 0x2c, 0x6b, +0xd9, 0xb2, 0xac, 0xa5, 0xe5, 0xe5, 0xe5, 0xe9, +0xab, 0x57, 0xaf, 0x7e, 0xe2, 0xba, 0xee, 0x1a, +0x90, 0x03, 0xd6, 0x42, 0x9a, 0x0b, 0x01, 0x62, +0xd5, 0x02, 0xb1, 0x59, 0x97, 0x68, 0xdb, 0x05, +0x42, 0xc6, 0x07, 0x74, 0x0f, 0x5a, 0x3c, 0x68, +0xe5, 0x18, 0x90, 0x28, 0x6b, 0x12, 0x48, 0x8c, +0x8c, 0x8c, 0xec, 0x1b, 0x1e, 0x1e, 0x3e, 0xda, +0xd3, 0xd3, 0x73, 0x30, 0x1a, 0x8d, 0xf6, 0xb7, +0xf5, 0xa2, 0xb2, 0x94, 0x4a, 0xa5, 0xdc, 0xd2, +0xd2, 0xd2, 0xa7, 0xb3, 0xb3, 0xb3, 0xe7, 0xc7, +0xc7, 0xc7, 0x2f, 0x58, 0x96, 0xb5, 0x00, 0x64, +0x80, 0xd5, 0xb2, 0x66, 0x59, 0x07, 0x23, 0x60, +0x44, 0xd8, 0x2d, 0xda, 0x02, 0xa1, 0x2d, 0x00, +0xea, 0x18, 0xaf, 0xe1, 0xd3, 0xda, 0x04, 0xe2, +0x65, 0xa3, 0x3b, 0x81, 0x0e, 0xa0, 0xeb, 0xf0, +0xe1, 0xc3, 0x8f, 0xec, 0xd9, 0xb3, 0xe7, 0xb4, +0x61, 0x18, 0xdd, 0xc1, 0x33, 0x94, 0xa2, 0x4a, +0x2a, 0xdd, 0x85, 0x91, 0x35, 0xd1, 0x0b, 0x3a, +0x9a, 0xa5, 0xa3, 0x17, 0x22, 0x48, 0x47, 0x52, +0x34, 0x6c, 0xec, 0x88, 0x8d, 0x6d, 0x58, 0xd8, +0xa6, 0xc5, 0x72, 0xdf, 0x12, 0x85, 0x58, 0xbe, +0xf2, 0x7e, 0xd7, 0x75, 0x8b, 0x37, 0x6f, 0xde, +0xfc, 0xf5, 0xd8, 0xd8, 0xd8, 0xeb, 0xab, 0xab, +0xab, 0x9f, 0x03, 0x4b, 0xc0, 0x4a, 0x08, 0x90, +0x1c, 0xeb, 0xae, 0x51, 0xda, 0x0c, 0x08, 0x2d, +0x01, 0xa8, 0x31, 0x3e, 0x08, 0x70, 0x06, 0xeb, +0x2d, 0xde, 0x01, 0x74, 0x01, 0x5d, 0xfb, 0xf7, +0xef, 0x7f, 0xe0, 0xc0, 0x81, 0x03, 0xdf, 0x8e, +0xc5, 0x62, 0x83, 0x00, 0x5a, 0x41, 0x27, 0x35, +0xdb, 0x45, 0xea, 0xf3, 0x1e, 0x92, 0xf3, 0x1d, +0x08, 0xb7, 0xd5, 0x18, 0x68, 0x5d, 0xf2, 0x89, +0x1c, 0x4b, 0x43, 0x0b, 0x2c, 0x0d, 0x2e, 0xb0, +0xd6, 0x99, 0x05, 0xc0, 0x71, 0x1c, 0xeb, 0xc6, +0x8d, 0x1b, 0x3f, 0x7f, 0xff, 0xfd, 0xf7, 0xdf, +0xb4, 0x2c, 0x6b, 0x0e, 0x58, 0x2c, 0x83, 0x91, +0xc1, 0x77, 0x8f, 0x7c, 0x19, 0x88, 0xb6, 0x41, +0x68, 0x0a, 0x40, 0x03, 0xe3, 0x03, 0xba, 0x77, +0x00, 0x29, 0xa0, 0xa7, 0xa3, 0xa3, 0x63, 0xe7, +0xa3, 0x8f, 0x3e, 0xfa, 0x5c, 0x67, 0x67, 0xe7, +0x5e, 0xdf, 0x70, 0x8d, 0xc1, 0x4f, 0xb6, 0xd3, +0x7d, 0xbd, 0x17, 0xe1, 0xb5, 0x6f, 0x74, 0x23, +0xc9, 0x75, 0xac, 0x31, 0x73, 0xf7, 0x75, 0x56, +0x7b, 0x33, 0x00, 0x14, 0x8b, 0xc5, 0xd5, 0x8b, +0x17, 0x2f, 0x9e, 0xb9, 0x74, 0xe9, 0xd2, 0x39, +0x60, 0x1e, 0x58, 0xc0, 0x67, 0x44, 0x98, 0x0d, +0x6d, 0x81, 0xd0, 0x10, 0x80, 0x3a, 0xb4, 0xd7, +0x59, 0xa7, 0x7c, 0x27, 0xd0, 0x0d, 0xf4, 0x8e, +0x8c, 0x8c, 0x8c, 0x9e, 0x38, 0x71, 0xe2, 0x79, +0xc3, 0x30, 0x3a, 0x65, 0x49, 0xd2, 0x3b, 0x3e, +0x48, 0xef, 0x67, 0xfd, 0x48, 0x47, 0x6e, 0xd9, +0xf0, 0x5a, 0x59, 0xed, 0x5f, 0xe1, 0xe6, 0xc1, +0x69, 0x0a, 0xc9, 0x3c, 0x80, 0x7b, 0xe5, 0xca, +0x95, 0x37, 0xcf, 0x9d, 0x3b, 0xf7, 0x2a, 0x90, +0xc6, 0x07, 0x62, 0x89, 0x8d, 0x20, 0x38, 0xf8, +0xf6, 0xb7, 0x0f, 0x40, 0x4d, 0x57, 0x57, 0xcf, +0xf8, 0x5e, 0xa0, 0x6f, 0x74, 0x74, 0xf4, 0xb1, +0xd1, 0xd1, 0xd1, 0xef, 0x29, 0x8a, 0xa2, 0x9b, +0x4b, 0x51, 0x86, 0x7f, 0xb3, 0x13, 0xb5, 0xa0, +0xdd, 0x3e, 0x8b, 0xeb, 0xd6, 0x18, 0x6e, 0xed, +0x9f, 0xe5, 0xd6, 0xbe, 0x39, 0x00, 0xe6, 0xe6, +0xe6, 0xc6, 0xce, 0x9e, 0x3d, 0xfb, 0x62, 0xb1, +0x58, 0xfc, 0x1c, 0xb8, 0x85, 0xef, 0x16, 0x19, +0x36, 0x32, 0xa1, 0x2e, 0x08, 0xcd, 0x00, 0x08, +0xba, 0xba, 0x80, 0xf6, 0x71, 0xca, 0x94, 0x07, +0x06, 0x1e, 0x7c, 0xf0, 0xc1, 0xa7, 0xf7, 0xee, +0xdd, 0xfb, 0x94, 0x10, 0x42, 0x24, 0x6f, 0x74, +0xd2, 0x7f, 0x7e, 0x68, 0x53, 0x3e, 0xbe, 0x55, +0x59, 0x1d, 0xca, 0x30, 0x7b, 0xdf, 0x0c, 0x9e, +0xe2, 0x92, 0xc9, 0x64, 0x26, 0x5f, 0x7f, 0xfd, +0xf5, 0xbf, 0xb2, 0x2c, 0x6b, 0x1a, 0x9f, 0x0d, +0x61, 0x10, 0x2a, 0x81, 0xb1, 0x2d, 0x00, 0x6a, +0xa8, 0x1f, 0x44, 0xfb, 0x70, 0xcb, 0x0f, 0xdc, +0x73, 0xcf, 0x3d, 0xa7, 0xee, 0xbf, 0xff, 0xfe, +0xe7, 0x00, 0xd1, 0xfd, 0x71, 0x2f, 0x1d, 0x9f, +0x75, 0xdd, 0x31, 0x43, 0x9b, 0x89, 0xdd, 0x61, +0x31, 0xfb, 0xc0, 0x34, 0x25, 0xb3, 0x44, 0x3a, +0x9d, 0xbe, 0xf8, 0xda, 0x6b, 0xaf, 0xfd, 0x2d, +0xf0, 0x39, 0xeb, 0x20, 0xac, 0xe2, 0x07, 0xc6, +0x4a, 0x17, 0x59, 0x0b, 0x42, 0x95, 0xa3, 0xd6, +0x0c, 0x71, 0x83, 0xbe, 0x3e, 0x88, 0xf8, 0x1d, +0x40, 0xf7, 0xf0, 0xf0, 0xf0, 0xc1, 0x63, 0xc7, +0x8e, 0x3d, 0x2b, 0x84, 0x10, 0xa9, 0xcb, 0xdd, +0xc4, 0xaf, 0x76, 0xe0, 0x08, 0xe7, 0x2b, 0x51, +0x25, 0xa3, 0xd2, 0x77, 0x6e, 0x08, 0xe9, 0x28, +0xf4, 0xf7, 0xf7, 0x8f, 0x9e, 0x3c, 0x79, 0xf2, +0xf7, 0xf0, 0x1b, 0x29, 0x85, 0xdf, 0x43, 0x99, +0xf8, 0xee, 0x5b, 0x19, 0x75, 0xd6, 0xae, 0x4f, +0xd4, 0x1b, 0x09, 0xd6, 0x0b, 0x7c, 0x09, 0x20, +0x95, 0x4c, 0x26, 0x87, 0x4f, 0x9d, 0x3a, 0xf5, +0x47, 0x9a, 0xa6, 0x45, 0xcc, 0x99, 0x28, 0xf1, +0xf1, 0x0e, 0x5c, 0xe9, 0x6e, 0xbe, 0xe9, 0x6e, +0xa3, 0x28, 0x6b, 0x2a, 0xdd, 0x1f, 0xf6, 0xb1, +0x78, 0x7f, 0x9a, 0xbd, 0x7b, 0xf7, 0xfe, 0xd6, +0xca, 0xca, 0xca, 0xcc, 0xf9, 0xf3, 0xe7, 0xff, +0x8d, 0xfa, 0x23, 0xc5, 0xaa, 0x29, 0x35, 0x34, +0x07, 0x40, 0xc5, 0xa7, 0x7f, 0x0c, 0x7f, 0x64, +0xd7, 0xf5, 0xd8, 0x63, 0x8f, 0x3d, 0x1b, 0x8d, +0x46, 0xbb, 0xd5, 0x15, 0x8d, 0xc4, 0x85, 0x14, +0x8e, 0x74, 0xee, 0x9c, 0x65, 0x9b, 0x10, 0x2d, +0xad, 0x93, 0xb8, 0xdc, 0x41, 0xf6, 0x1b, 0x19, +0x71, 0xf4, 0xbe, 0xa3, 0xcf, 0x4c, 0x4c, 0x4c, +0x5c, 0x5e, 0x59, 0x59, 0xc9, 0x51, 0x3d, 0x77, +0x08, 0x82, 0xa1, 0x08, 0xcf, 0x19, 0x2a, 0x2e, +0xd0, 0xaa, 0xdb, 0xdb, 0xb3, 0x67, 0xcf, 0xdd, +0xfd, 0xfd, 0xfd, 0xa3, 0xc2, 0x13, 0x24, 0x3e, +0xe8, 0xc4, 0x73, 0x5d, 0x5c, 0xe1, 0x7c, 0x6d, +0xd4, 0xf8, 0x2c, 0x8a, 0xbe, 0x10, 0x41, 0xd5, +0xd4, 0xc8, 0x43, 0x0f, 0x3d, 0xf4, 0x14, 0xeb, +0x6e, 0x10, 0xc5, 0x6f, 0xc8, 0xf0, 0x0c, 0xb4, +0x22, 0xb5, 0x9d, 0x75, 0xb8, 0xf5, 0xab, 0x00, +0x38, 0x76, 0xec, 0xd8, 0xef, 0x2a, 0x8a, 0x22, +0x8c, 0xeb, 0x51, 0xc8, 0x0b, 0x1c, 0xe9, 0xb6, +0x54, 0x4f, 0x87, 0x81, 0xd1, 0x01, 0xf4, 0x54, +0xa4, 0xad, 0xf2, 0x5b, 0x55, 0xe3, 0x93, 0x18, +0x52, 0x4a, 0x46, 0x46, 0x46, 0x1e, 0x18, 0x1a, +0x1a, 0xda, 0x8d, 0xcf, 0xdc, 0x58, 0x19, 0x00, +0x8d, 0x3a, 0xb1, 0x40, 0xad, 0x69, 0xfd, 0x5a, +0xfa, 0x47, 0x81, 0xe4, 0xa1, 0x43, 0x87, 0xee, +0xeb, 0xe9, 0xe9, 0xb9, 0x4b, 0x14, 0x05, 0xda, +0x95, 0x08, 0xae, 0xa8, 0x4f, 0x7d, 0x21, 0x05, +0xfd, 0x7b, 0xfb, 0xd8, 0x75, 0x7c, 0x27, 0xbb, +0xee, 0xdf, 0xc9, 0xf0, 0x91, 0xed, 0x28, 0x9a, +0xca, 0x5b, 0x7f, 0xf9, 0x53, 0xce, 0xff, 0xe4, +0x62, 0x3b, 0x6c, 0xf6, 0xd7, 0x00, 0xc3, 0x6d, +0xe4, 0x41, 0xdb, 0x13, 0xb6, 0x15, 0x81, 0x36, +0xa3, 0x53, 0xda, 0x5e, 0x54, 0xbe, 0xf9, 0xcd, +0x6f, 0x3e, 0xf5, 0xca, 0x2b, 0xaf, 0x4c, 0xe0, +0x8f, 0x10, 0xb3, 0xac, 0x4f, 0x9a, 0x82, 0x09, +0x13, 0x15, 0x00, 0x42, 0x12, 0x9e, 0xec, 0x54, +0xc6, 0xfb, 0xa3, 0xa3, 0xa3, 0xbf, 0x2d, 0xa5, +0x44, 0xb9, 0xaa, 0xe3, 0x96, 0x3c, 0x90, 0xeb, +0x15, 0x4a, 0x6d, 0xeb, 0x64, 0x78, 0x74, 0x3b, +0x3b, 0xee, 0x1d, 0x61, 0xd7, 0xb1, 0x9d, 0x24, +0x7a, 0xe3, 0x68, 0x86, 0x86, 0x66, 0x68, 0x08, +0x29, 0x70, 0x8a, 0x0e, 0x7b, 0x1e, 0xd9, 0xc3, +0x07, 0xff, 0x72, 0xbe, 0x2d, 0x23, 0x54, 0x5d, +0x45, 0x8d, 0xd4, 0x54, 0xcb, 0xf3, 0x28, 0x16, +0x4a, 0x38, 0xa5, 0xd6, 0x31, 0x47, 0xb9, 0x1c, +0xc1, 0xdd, 0xe6, 0x30, 0x38, 0x38, 0x38, 0xba, +0x6d, 0xdb, 0xb6, 0x9d, 0x33, 0x33, 0x33, 0xc1, +0xc4, 0x49, 0x67, 0x7d, 0x60, 0x14, 0x2c, 0xc2, +0x54, 0x01, 0x10, 0x1e, 0xfc, 0x04, 0x0b, 0x1b, +0xd1, 0x54, 0x2a, 0xd5, 0xdf, 0xd5, 0xd5, 0xb5, +0x13, 0x17, 0xc4, 0x35, 0xb9, 0xa1, 0xf5, 0x85, +0x2e, 0xd8, 0x7d, 0x62, 0x17, 0x3b, 0x0e, 0x8f, +0xa0, 0x99, 0x9a, 0xdf, 0x5a, 0x3e, 0xc9, 0x90, +0xaa, 0xc4, 0x75, 0x3d, 0x76, 0x1f, 0xdf, 0x89, +0xd0, 0x68, 0xcb, 0x00, 0xbb, 0xe8, 0xe0, 0x78, +0x25, 0xcc, 0x0e, 0x13, 0x45, 0x53, 0xd6, 0x81, +0x89, 0x29, 0xe4, 0x96, 0xf3, 0x94, 0xec, 0x52, +0xf3, 0x07, 0x14, 0x40, 0xa6, 0x15, 0xbc, 0x21, +0x57, 0x1c, 0x38, 0x70, 0xe0, 0xf8, 0xcc, 0xcc, +0xcc, 0x15, 0xaa, 0xbb, 0xc3, 0xca, 0x4a, 0x94, +0x10, 0xa2, 0x2a, 0x06, 0xd4, 0x4e, 0x77, 0x0d, +0x20, 0x7a, 0xe8, 0xd0, 0xa1, 0xa3, 0x52, 0x4a, +0x21, 0x16, 0x15, 0x1c, 0xc7, 0xc1, 0x91, 0xd5, +0x3a, 0x77, 0x7d, 0x8e, 0x7f, 0xfa, 0xf3, 0x7f, +0xe6, 0x8d, 0xbf, 0xfe, 0x57, 0x56, 0xe6, 0x56, +0x70, 0x4a, 0x0e, 0x45, 0xab, 0x84, 0x9d, 0xb7, +0xb0, 0xb2, 0x16, 0xc5, 0x82, 0x8d, 0xa2, 0x2b, +0x0c, 0x8d, 0x0e, 0x6e, 0xb8, 0xb7, 0x91, 0xda, +0xae, 0x4d, 0x66, 0x39, 0x03, 0x3a, 0x68, 0x49, +0x0d, 0x2d, 0xa1, 0xa2, 0x25, 0x35, 0xe2, 0x83, +0x71, 0x3c, 0xcd, 0x6b, 0x79, 0x3f, 0x73, 0x02, +0x29, 0x25, 0xc3, 0xc3, 0xc3, 0xf7, 0xe0, 0xb3, +0x38, 0x00, 0x60, 0x43, 0x20, 0x94, 0x0d, 0xfc, +0x3f, 0x00, 0xc0, 0x1c, 0x1e, 0x1e, 0xbe, 0x47, +0x08, 0x81, 0x37, 0xeb, 0xe1, 0x0a, 0xb7, 0xa1, +0x5e, 0xfa, 0xc5, 0x27, 0xfc, 0xe8, 0xfb, 0x2f, +0xb2, 0x3c, 0xb7, 0x82, 0x9d, 0xb7, 0xb1, 0x72, +0x36, 0x85, 0x35, 0x0b, 0x3b, 0x67, 0x63, 0xe7, +0x6d, 0x76, 0xdc, 0x3b, 0xd2, 0xf4, 0xfe, 0x5a, +0x75, 0x70, 0x58, 0x9c, 0x5d, 0x44, 0xa8, 0xa0, +0xc5, 0x75, 0xf4, 0xb8, 0x8e, 0xd1, 0x11, 0xa1, +0x63, 0x5b, 0x47, 0xeb, 0x7b, 0xe7, 0x3c, 0x84, +0x27, 0x48, 0xa5, 0x52, 0x23, 0xa9, 0x54, 0xaa, +0x87, 0xf5, 0xe5, 0xb8, 0x00, 0x80, 0x0a, 0x08, +0xcd, 0x18, 0xa0, 0x9b, 0xa6, 0x99, 0xec, 0xeb, +0xed, 0xdb, 0x23, 0xa5, 0xa4, 0x94, 0x76, 0x5b, +0x22, 0xdf, 0xbd, 0xab, 0x0b, 0x45, 0x57, 0xb0, +0x72, 0x16, 0x85, 0xb5, 0x82, 0xaf, 0xb9, 0x02, +0x56, 0xde, 0x66, 0xf8, 0xd0, 0xf6, 0xb6, 0x19, +0x10, 0x68, 0xd1, 0x2b, 0x72, 0xf3, 0xda, 0x2c, +0x42, 0x17, 0x68, 0x09, 0x0d, 0x2d, 0xa1, 0x91, +0x18, 0x88, 0xa3, 0xc6, 0xd5, 0xe6, 0xf7, 0xba, +0x0e, 0xde, 0x22, 0x48, 0x29, 0xc5, 0xe1, 0xc3, +0x87, 0xef, 0xc5, 0x77, 0xe7, 0xfa, 0x0c, 0x08, +0x19, 0x1f, 0x8e, 0x01, 0x2a, 0xa0, 0xef, 0xda, +0xb5, 0x6b, 0x44, 0x51, 0x15, 0xcd, 0xcb, 0x7a, +0x38, 0x96, 0xd3, 0x12, 0xf9, 0xbb, 0x1f, 0x3b, +0x58, 0x65, 0xfc, 0x6b, 0x7f, 0xf3, 0x06, 0xd7, +0x2f, 0x4d, 0x53, 0xc8, 0x15, 0x48, 0xf6, 0x25, +0x31, 0x53, 0xe6, 0xa6, 0x58, 0xe0, 0x0a, 0x17, +0xbb, 0x68, 0x33, 0xf3, 0xd9, 0x0c, 0x7a, 0xcc, +0x67, 0x81, 0x1e, 0xd7, 0xe9, 0x1a, 0x4e, 0xb5, +0x66, 0xc1, 0xbc, 0x8b, 0x10, 0x82, 0xde, 0xde, +0xde, 0x1d, 0xac, 0x77, 0x83, 0xb5, 0x8b, 0xb1, +0x75, 0x7b, 0x81, 0x8a, 0x1b, 0x74, 0x76, 0x76, +0xf6, 0x48, 0x29, 0x71, 0x2c, 0x17, 0xb7, 0xc5, +0xa8, 0x2f, 0xd1, 0x15, 0x67, 0x68, 0xdf, 0x20, +0x85, 0x7c, 0x01, 0x45, 0x55, 0x98, 0xbe, 0x3c, +0xcd, 0xf9, 0xff, 0x38, 0xcf, 0x85, 0x9f, 0x5f, +0xe0, 0xe0, 0xc3, 0x07, 0x79, 0xe0, 0xdb, 0xc7, +0xd9, 0x7e, 0x70, 0x88, 0x4f, 0xce, 0x5d, 0x6e, +0xfa, 0x9c, 0x7a, 0xb2, 0xb6, 0x96, 0xa5, 0x50, +0xc8, 0x93, 0xe8, 0x4e, 0xe0, 0xb9, 0x1e, 0x3d, +0x46, 0x37, 0xd3, 0x13, 0xd3, 0x78, 0x6e, 0xe3, +0xee, 0xd1, 0xb5, 0x24, 0x52, 0x4a, 0xa2, 0xd1, +0x68, 0x47, 0x23, 0xe3, 0x01, 0x51, 0xaf, 0x17, +0xa8, 0x2c, 0x7a, 0x26, 0x12, 0x89, 0x94, 0x10, +0x02, 0xb7, 0xe0, 0xe2, 0x34, 0xe8, 0xfb, 0x03, +0x19, 0xdc, 0x37, 0x88, 0x55, 0xb0, 0x28, 0x95, +0x4a, 0x48, 0x45, 0xf2, 0x9b, 0xb7, 0xde, 0xab, +0xdc, 0x73, 0xf1, 0x17, 0x17, 0xb9, 0xfc, 0xc1, +0x65, 0x7a, 0x47, 0x7a, 0x5b, 0x3e, 0xa7, 0x91, +0x2c, 0xa4, 0x17, 0xe8, 0xde, 0xd1, 0x8d, 0xe7, +0xb8, 0x38, 0x8e, 0x82, 0x1a, 0x55, 0x29, 0xac, +0x15, 0x1a, 0x96, 0x2f, 0x59, 0x02, 0x21, 0x04, +0xa6, 0x69, 0x26, 0x43, 0xc6, 0xd7, 0xee, 0x4c, +0x55, 0x18, 0x50, 0xbb, 0xc3, 0x23, 0x01, 0x25, +0x1e, 0x8f, 0x77, 0x48, 0x29, 0x71, 0x6d, 0xb7, +0xe5, 0xa4, 0xc7, 0xec, 0x34, 0xc9, 0xe7, 0x0a, +0xa8, 0x9a, 0x82, 0xeb, 0x7a, 0xdc, 0x98, 0x98, +0xc6, 0x0b, 0x8d, 0x17, 0xf2, 0x56, 0x9e, 0xeb, +0xe3, 0xd7, 0x37, 0x8e, 0x3d, 0xdb, 0x14, 0xab, +0x68, 0x13, 0x89, 0x47, 0x70, 0x1d, 0x17, 0xd7, +0x71, 0x89, 0x24, 0x74, 0x72, 0xf9, 0x5c, 0xc3, +0xf2, 0x25, 0xcb, 0x41, 0x4a, 0x19, 0x00, 0x50, +0xd5, 0xfd, 0x85, 0xcb, 0xa9, 0x54, 0x1b, 0x5f, +0xa5, 0xf1, 0x78, 0xbc, 0x43, 0x08, 0xe1, 0x0f, +0x42, 0x5a, 0xb4, 0x9c, 0x1e, 0xd3, 0x29, 0xe4, +0xf3, 0x48, 0x5b, 0x61, 0x29, 0xbd, 0x44, 0xc9, +0x2b, 0xb5, 0xde, 0x07, 0xde, 0x84, 0xd8, 0x25, +0x8b, 0x48, 0x4c, 0xc7, 0x75, 0x5c, 0x1c, 0xc7, +0x45, 0x8b, 0x69, 0x4d, 0xeb, 0xe4, 0x5a, 0x7e, +0x0c, 0x30, 0x0c, 0x23, 0x46, 0x4d, 0xe4, 0x0f, +0x4b, 0xd3, 0x8d, 0x11, 0x21, 0xfc, 0xfe, 0x54, +0x4a, 0x89, 0x90, 0xcd, 0xad, 0x51, 0x75, 0x95, +0x42, 0xae, 0x80, 0x54, 0x14, 0x96, 0xe7, 0x97, +0x5b, 0x96, 0xdf, 0xac, 0x74, 0xf6, 0x76, 0x62, +0xc4, 0x4d, 0xdc, 0x92, 0x83, 0xe3, 0xb8, 0x14, +0xf2, 0x56, 0xd3, 0x77, 0x08, 0xe9, 0xd7, 0xbd, +0xd5, 0x30, 0x5a, 0xa5, 0xc9, 0xb6, 0x74, 0x2e, +0x97, 0x5b, 0x11, 0x42, 0xa0, 0xc5, 0x54, 0xa4, +0xd2, 0x9c, 0xbb, 0xd9, 0xe5, 0x2c, 0x9a, 0xae, +0x21, 0x15, 0x89, 0xa2, 0x28, 0x2d, 0xcb, 0x6f, +0x56, 0xfa, 0x77, 0xf4, 0x63, 0xc6, 0x4c, 0x5c, +0xc7, 0xc1, 0x29, 0x39, 0xe4, 0xb2, 0xb9, 0xa6, +0xef, 0x50, 0xa3, 0x0a, 0x42, 0x08, 0x2c, 0xcb, +0x5a, 0xa3, 0x66, 0x0f, 0xb1, 0xaa, 0x5c, 0xf9, +0x1a, 0x06, 0x21, 0x28, 0xec, 0x54, 0x00, 0x30, +0x35, 0x14, 0xa9, 0xd4, 0xde, 0x5b, 0x25, 0x6b, +0x2b, 0x39, 0x62, 0x49, 0x7f, 0x36, 0xa6, 0xe9, +0xad, 0xcb, 0x37, 0x12, 0x33, 0x6e, 0x32, 0xbc, +0x77, 0x98, 0xf1, 0xf3, 0xe3, 0x95, 0xd6, 0x13, +0x42, 0xb0, 0xff, 0xbe, 0x7d, 0x44, 0xe3, 0x26, +0xa5, 0x92, 0x43, 0x66, 0x21, 0x83, 0x57, 0xf2, +0x9a, 0xbe, 0x43, 0x8b, 0xea, 0x01, 0x00, 0x19, +0x42, 0xfb, 0x87, 0x34, 0x59, 0x10, 0x09, 0xfe, +0xac, 0xec, 0xd2, 0xae, 0xae, 0xae, 0x2e, 0x4a, +0x29, 0xd1, 0x62, 0xad, 0x0d, 0xca, 0xad, 0xe4, +0xb0, 0x7b, 0xec, 0x8a, 0xbb, 0x74, 0xf5, 0x75, +0xb1, 0x32, 0xbf, 0xb2, 0x69, 0x00, 0xec, 0x9c, +0xcd, 0x83, 0xbf, 0x73, 0x82, 0xa3, 0x8f, 0xdf, +0xcb, 0x7f, 0xbe, 0xf2, 0x0b, 0x66, 0xa7, 0x66, +0xd9, 0x33, 0xba, 0x9b, 0xfe, 0x91, 0x7e, 0xdf, +0xff, 0x4b, 0x0e, 0x97, 0xce, 0x5d, 0x6a, 0x59, +0x1f, 0x3d, 0xaa, 0x21, 0xa5, 0xc4, 0xb6, 0xed, +0x0c, 0xd5, 0x9b, 0xa8, 0x55, 0x40, 0xd4, 0xc6, +0x80, 0xaa, 0x5d, 0xda, 0xa5, 0xa5, 0xa5, 0x05, +0x21, 0x04, 0x6a, 0x54, 0x45, 0x51, 0x9a, 0xbf, +0x70, 0x25, 0xbd, 0x42, 0xcf, 0x50, 0x0f, 0x8a, +0x22, 0x11, 0x52, 0xd2, 0xb7, 0xbd, 0x97, 0xb5, +0xe5, 0xb5, 0xb6, 0xa7, 0xb2, 0x61, 0x99, 0x9d, +0x9a, 0x63, 0xf4, 0x91, 0x43, 0x3c, 0xfb, 0x67, +0xcf, 0x70, 0xf9, 0xbd, 0xcb, 0xa4, 0xfa, 0x53, +0x98, 0x31, 0x03, 0xc7, 0x71, 0x29, 0x5a, 0x45, +0xae, 0x7c, 0x70, 0xa5, 0x65, 0x7d, 0xb4, 0x98, +0x86, 0x10, 0x82, 0x5c, 0x2e, 0xb7, 0xc2, 0xfa, +0x8a, 0x50, 0xed, 0xb2, 0x98, 0x17, 0x76, 0x81, +0x40, 0x83, 0x3d, 0x7a, 0x7b, 0x62, 0x62, 0xe2, +0xba, 0xe7, 0x79, 0x45, 0x3d, 0xa9, 0x69, 0x6a, +0x54, 0xc5, 0x2d, 0x34, 0xee, 0x0a, 0x9d, 0x92, +0xc3, 0x72, 0x7a, 0x99, 0x44, 0x67, 0x1c, 0x21, +0x05, 0x9a, 0xae, 0x31, 0xb0, 0x73, 0x80, 0xb9, +0x6b, 0x73, 0x9b, 0x06, 0x60, 0xfa, 0xd3, 0x69, +0x8e, 0x9f, 0x3e, 0x86, 0xa2, 0x48, 0x8e, 0x7c, +0xeb, 0x08, 0x40, 0xa5, 0xf5, 0x3f, 0xbb, 0x70, +0x95, 0x5c, 0x26, 0x8f, 0x94, 0xcd, 0x63, 0x8c, +0xd1, 0x17, 0x41, 0x4a, 0xc9, 0xad, 0x5b, 0xb7, +0xae, 0xb1, 0x71, 0x3b, 0xbd, 0x2e, 0x03, 0xc2, +0xf4, 0x2f, 0x02, 0x76, 0x36, 0x9b, 0xcd, 0xdc, +0xba, 0x75, 0xeb, 0xea, 0xe0, 0xe0, 0xe0, 0xfe, +0xe8, 0xa0, 0x49, 0xfe, 0x7a, 0xe3, 0x81, 0x07, +0x40, 0x66, 0x3e, 0x43, 0xc4, 0xd0, 0x2b, 0x6e, +0x60, 0xc6, 0x4d, 0xba, 0x07, 0xba, 0x58, 0xbe, +0xb5, 0x39, 0x57, 0x98, 0xbe, 0x32, 0x83, 0xaa, +0xa9, 0x68, 0x11, 0x0d, 0x59, 0x8e, 0xf4, 0xae, +0xe3, 0xfa, 0xfe, 0x3f, 0x9f, 0x69, 0xd9, 0xfa, +0x42, 0x15, 0x18, 0x3d, 0x11, 0x3c, 0x3c, 0xf7, +0xbd, 0xf7, 0xde, 0x1b, 0xc3, 0x5f, 0x1b, 0x0c, +0xaf, 0x0b, 0x56, 0x68, 0x29, 0xcb, 0x8b, 0x83, +0x61, 0xff, 0x0f, 0x92, 0x14, 0x0a, 0x40, 0x7e, +0x72, 0x72, 0xf2, 0x23, 0x29, 0x25, 0xe6, 0x80, +0x81, 0x22, 0x95, 0xa6, 0xea, 0x16, 0x5d, 0x32, +0xb7, 0x56, 0x29, 0x16, 0x8a, 0x14, 0x0b, 0x25, +0x4a, 0xf9, 0x22, 0x66, 0x2c, 0x4a, 0xa2, 0x33, +0xd1, 0xf2, 0xde, 0xb0, 0x3a, 0xb6, 0xc3, 0xec, +0xe4, 0x2c, 0x11, 0x43, 0xc7, 0x88, 0x1a, 0x18, +0x51, 0x03, 0xdd, 0x8c, 0xa0, 0x47, 0x34, 0x4e, +0x7d, 0xe7, 0x51, 0xbe, 0xfb, 0x27, 0xdf, 0x61, +0x60, 0xc7, 0x40, 0xc3, 0xfb, 0xcd, 0x7e, 0x03, +0xa9, 0x48, 0x96, 0x96, 0x96, 0x6e, 0xcc, 0xcf, +0xcf, 0xcf, 0xd7, 0x01, 0xa0, 0x02, 0x42, 0x98, +0x47, 0x61, 0x06, 0xd8, 0xe5, 0x9b, 0x72, 0xef, +0xbf, 0xff, 0xfe, 0x07, 0x80, 0x1b, 0xe9, 0xd1, +0x51, 0x75, 0x05, 0x45, 0xca, 0xa6, 0x6a, 0xe7, +0x2c, 0x0a, 0xd9, 0x02, 0xc5, 0xbc, 0xed, 0x03, +0x91, 0xb7, 0x31, 0x0c, 0x9d, 0x78, 0x32, 0x86, +0xaa, 0xb4, 0xbe, 0x3f, 0xd0, 0xa9, 0xff, 0x9e, +0x42, 0x51, 0x15, 0x34, 0x43, 0x43, 0x37, 0x75, +0x34, 0x5d, 0x45, 0x51, 0xfd, 0x58, 0x34, 0x72, +0x60, 0x98, 0xef, 0xfe, 0xe9, 0xef, 0xf3, 0xad, +0x3f, 0x38, 0x89, 0x19, 0x33, 0x36, 0xdc, 0x6b, +0x0e, 0x44, 0x10, 0x42, 0x30, 0x35, 0x35, 0xf5, +0x11, 0xfe, 0xee, 0x50, 0x43, 0x06, 0xd4, 0xeb, +0x05, 0x02, 0x17, 0xb0, 0x80, 0x5c, 0x3a, 0x9d, +0x4e, 0x2f, 0x2e, 0x2e, 0x4e, 0xf5, 0xf6, 0xf6, +0xee, 0x8e, 0xed, 0x8c, 0x92, 0x9f, 0x6c, 0xee, +0x06, 0xe0, 0x47, 0x72, 0x57, 0x77, 0x91, 0x8a, +0xac, 0xe4, 0xf9, 0x09, 0x21, 0x30, 0x62, 0x06, +0x25, 0xab, 0x84, 0xeb, 0xb6, 0xde, 0x4b, 0x98, +0xfc, 0x68, 0x0a, 0xd7, 0xf5, 0x70, 0x4b, 0x2e, +0x42, 0x0a, 0x02, 0xa2, 0xe6, 0xb3, 0x79, 0x26, +0x3f, 0x9a, 0x64, 0xea, 0x7f, 0xae, 0x33, 0xfd, +0xe9, 0x34, 0x8e, 0xed, 0x54, 0xb9, 0x84, 0x34, +0x25, 0x91, 0x81, 0x08, 0x08, 0xbc, 0x0f, 0x3f, +0xfc, 0xf0, 0x3d, 0xea, 0xaf, 0x07, 0x7a, 0x94, +0xf7, 0x0a, 0xeb, 0xf5, 0x02, 0x01, 0x00, 0x05, +0xfc, 0x3d, 0xf7, 0xd5, 0x73, 0xe7, 0xce, 0xfd, +0xf4, 0xc9, 0x27, 0x9f, 0xfc, 0x63, 0x73, 0xb7, +0x81, 0x7d, 0xb3, 0x84, 0x67, 0xb7, 0x8e, 0xec, +0x6e, 0xc9, 0xc3, 0xad, 0xbb, 0x04, 0x26, 0x90, +0x6d, 0x8c, 0x11, 0x16, 0xa6, 0x17, 0x59, 0x4e, +0x2f, 0x63, 0xc4, 0x0c, 0xa6, 0x3f, 0x9d, 0x66, +0xf2, 0xa3, 0x29, 0xae, 0x7d, 0x7c, 0x8d, 0x5b, +0x37, 0xe6, 0xab, 0x7a, 0x96, 0xda, 0x67, 0xc5, +0xf6, 0x9a, 0x48, 0x45, 0x32, 0x35, 0x35, 0x75, +0x71, 0x72, 0x72, 0xf2, 0x1a, 0xeb, 0x79, 0x03, +0x8d, 0x19, 0xe0, 0x79, 0x5e, 0x90, 0x6e, 0x16, +0x8e, 0x03, 0x16, 0x3e, 0x7d, 0x32, 0xbf, 0xfc, +0xe5, 0x2f, 0xc7, 0x4e, 0x9c, 0x38, 0xf1, 0xd9, +0xc0, 0xc0, 0xc0, 0x5d, 0xb1, 0xbb, 0x4c, 0xf2, +0x9f, 0x5a, 0x2d, 0x0d, 0xb8, 0x1d, 0xf2, 0xf2, +0x5f, 0xfc, 0x23, 0xab, 0x8b, 0xab, 0xb8, 0xce, +0x3a, 0x63, 0x9a, 0x45, 0x7f, 0x25, 0xa9, 0x60, +0x0c, 0x45, 0x70, 0x5d, 0xd7, 0x79, 0xeb, 0xad, +0xb7, 0x5e, 0xc5, 0xdf, 0x20, 0xcd, 0xe2, 0x37, +0x66, 0x38, 0x85, 0x66, 0xfd, 0x79, 0x35, 0xcf, +0x08, 0x03, 0x60, 0xe3, 0x23, 0x97, 0x05, 0x96, +0xcf, 0x9e, 0x3d, 0xfb, 0x13, 0xc0, 0x33, 0x86, +0x23, 0x68, 0x71, 0x6d, 0x53, 0x41, 0xed, 0x8b, +0x6a, 0x76, 0x21, 0x8b, 0xf0, 0x44, 0xdb, 0xe5, +0xa3, 0x7b, 0x0d, 0x84, 0x10, 0x8c, 0x8f, 0x8f, +0xff, 0x7a, 0x62, 0x62, 0x62, 0x82, 0xea, 0x6d, +0xf2, 0x00, 0x80, 0x0a, 0xfd, 0xab, 0x00, 0x08, +0xf5, 0x06, 0xe1, 0x40, 0x58, 0x01, 0xe0, 0xc2, +0x85, 0x0b, 0x1f, 0xdf, 0xb8, 0x71, 0xe3, 0xa2, +0x54, 0x24, 0xf1, 0x43, 0x26, 0xaa, 0x2e, 0x51, +0x94, 0xaf, 0x8f, 0x9a, 0xbb, 0x23, 0xe8, 0xdd, +0x1a, 0xa5, 0x52, 0xa9, 0xf0, 0xea, 0xab, 0xaf, +0xbe, 0x4a, 0xfd, 0x64, 0x89, 0x0d, 0xf3, 0x81, +0x7a, 0x7c, 0xaa, 0x75, 0x83, 0xb5, 0x32, 0x92, +0x8b, 0x67, 0xce, 0x9c, 0xf9, 0xfb, 0xb5, 0xb5, +0xb5, 0x05, 0x25, 0xa9, 0x60, 0x7e, 0xc3, 0x44, +0x4a, 0xe5, 0x6b, 0xa1, 0x7a, 0xaf, 0x8e, 0xb1, +0x27, 0x02, 0xe0, 0x9d, 0x3d, 0x7b, 0xf6, 0xa5, +0x74, 0x3a, 0x7d, 0x1d, 0x58, 0x66, 0xe3, 0xf6, +0x78, 0x55, 0xeb, 0xb7, 0x02, 0x20, 0xcc, 0x82, +0x55, 0x60, 0x69, 0x7e, 0x7e, 0xfe, 0xc6, 0x4b, +0x2f, 0xbd, 0xf4, 0x77, 0x8e, 0xe3, 0x58, 0xfa, +0x80, 0x86, 0xb1, 0x2b, 0xf2, 0xa5, 0xb8, 0x42, +0x33, 0xd5, 0xe2, 0x2a, 0xe6, 0xdd, 0x11, 0xa4, +0x22, 0x19, 0x1b, 0x1b, 0xfb, 0xd9, 0xd9, 0xb3, +0x67, 0xdf, 0xa5, 0x49, 0x96, 0x48, 0xad, 0xb1, +0x5f, 0x28, 0x41, 0xe2, 0xf1, 0xc7, 0x1f, 0x3f, +0xf5, 0xe4, 0x93, 0x4f, 0x3e, 0x27, 0x84, 0x10, +0xc5, 0xab, 0x0e, 0xa5, 0xe9, 0xaf, 0x66, 0x97, +0x58, 0xc6, 0x05, 0xfa, 0xdd, 0x2a, 0x22, 0x22, +0x98, 0x9c, 0x9c, 0xbc, 0xf8, 0x83, 0x1f, 0xfc, +0x60, 0xd3, 0x09, 0x12, 0x1b, 0x16, 0x44, 0x42, +0x3d, 0x42, 0xe0, 0x06, 0xa2, 0xfc, 0x90, 0x60, +0xb5, 0x58, 0x79, 0xfb, 0xed, 0xb7, 0xdf, 0xed, +0xed, 0xed, 0xed, 0x79, 0xe8, 0xa1, 0x87, 0x9e, +0xd2, 0xef, 0x52, 0x85, 0x92, 0x90, 0x94, 0xc6, +0x9d, 0x9a, 0xf8, 0x7a, 0x67, 0x45, 0xf6, 0x48, +0xd4, 0x7d, 0x12, 0xa1, 0x08, 0xd2, 0xe9, 0xf4, +0xe4, 0x0b, 0x2f, 0xbc, 0xf0, 0x23, 0x36, 0xa6, +0xc7, 0x84, 0x13, 0xa5, 0xda, 0x4b, 0x91, 0x81, +0xf6, 0x93, 0xa4, 0x9e, 0x78, 0xe2, 0x89, 0xc7, +0x4e, 0x9f, 0x3e, 0xfd, 0x3d, 0x4d, 0xd3, 0x74, +0x6f, 0xd5, 0xa3, 0x74, 0xc9, 0xc1, 0xb3, 0x6f, +0xbb, 0xad, 0x1b, 0x44, 0xd9, 0x21, 0x51, 0x46, +0x7c, 0xef, 0x1d, 0x1f, 0x1f, 0x1f, 0xfb, 0xe1, +0x0f, 0x7f, 0xf8, 0xa2, 0x65, 0x59, 0xb7, 0x2f, +0x49, 0x0a, 0xda, 0x4f, 0x93, 0x3b, 0x72, 0xe4, +0xc8, 0xa1, 0x67, 0x9e, 0x79, 0xe6, 0xfb, 0xb1, +0x58, 0xac, 0x13, 0x07, 0xdc, 0x69, 0x0f, 0x77, +0xc6, 0xbb, 0x23, 0x6c, 0x10, 0x29, 0x81, 0xdc, +0x29, 0x10, 0x31, 0xf0, 0x3c, 0xcf, 0xfd, 0xd5, +0xaf, 0x7e, 0xf5, 0xe6, 0x99, 0x33, 0x67, 0x6e, +0x7f, 0x9a, 0x5c, 0xe5, 0xcf, 0x36, 0x13, 0x25, +0x07, 0x06, 0x06, 0x76, 0x3c, 0xff, 0xfc, 0xf3, +0x7f, 0xb8, 0x7d, 0xfb, 0xf6, 0xfd, 0x00, 0xd8, +0xe0, 0x5e, 0xf7, 0x70, 0xe7, 0xa8, 0x13, 0x76, +0xbe, 0x80, 0xe1, 0x71, 0x7c, 0xc3, 0x3b, 0xfd, +0xef, 0xb9, 0x5c, 0x6e, 0xe5, 0x8d, 0x37, 0xde, +0xf8, 0x87, 0xb7, 0xdf, 0x7e, 0xfb, 0xbf, 0xf0, +0x93, 0x24, 0x17, 0xf0, 0xa3, 0x7e, 0x90, 0x3f, +0xbc, 0xf5, 0x44, 0xc9, 0x4a, 0x81, 0xc6, 0xa9, +0xb2, 0x51, 0xfc, 0x04, 0x84, 0x4a, 0xaa, 0xec, +0xc9, 0x93, 0x27, 0x8f, 0x9e, 0x3e, 0x7d, 0xfa, +0xa9, 0xee, 0xee, 0xee, 0x6d, 0x00, 0x14, 0xc1, +0x5b, 0xf4, 0xab, 0xe7, 0xad, 0xb0, 0x39, 0x30, +0xa2, 0x20, 0xba, 0x7c, 0x25, 0xee, 0xff, 0x64, +0xdb, 0x76, 0x61, 0x6c, 0x6c, 0xec, 0xdf, 0x5f, +0x7e, 0xf9, 0xe5, 0xb7, 0x72, 0xb9, 0x5c, 0x90, +0x2a, 0xbb, 0x4c, 0xf5, 0x88, 0xef, 0xf6, 0xa5, +0xca, 0x36, 0x00, 0xa1, 0x51, 0xb2, 0x74, 0x07, +0xbe, 0x6b, 0xa4, 0x9e, 0x7e, 0xfa, 0xe9, 0x87, +0x1f, 0x7e, 0xf8, 0xe1, 0x27, 0x92, 0xc9, 0x64, +0x25, 0x59, 0x1a, 0xa7, 0x5c, 0x55, 0x0b, 0x3c, +0x5b, 0xac, 0x9f, 0x08, 0x70, 0xa9, 0x9c, 0x22, +0x10, 0x11, 0xcf, 0xff, 0x9c, 0xc4, 0x87, 0xb8, +0x2c, 0xa5, 0x52, 0xc9, 0xbe, 0x74, 0xe9, 0xd2, +0xaf, 0x7f, 0xfc, 0xe3, 0x1f, 0xbf, 0x96, 0x4e, +0xa7, 0x6f, 0x96, 0x9f, 0xb4, 0xc2, 0x7a, 0xf2, +0xc3, 0x9d, 0x4b, 0x96, 0x6e, 0x02, 0x42, 0xf8, +0x80, 0x44, 0x70, 0x46, 0x20, 0x5e, 0xae, 0x7e, +0x12, 0x48, 0x1c, 0x3f, 0x7e, 0x7c, 0xdf, 0xb1, +0x63, 0xc7, 0x8e, 0xee, 0xde, 0xbd, 0xfb, 0x60, +0x2a, 0x95, 0xda, 0x54, 0xba, 0xbc, 0x65, 0x59, +0xb9, 0x6b, 0xd7, 0xae, 0x7d, 0xfa, 0xf1, 0xc7, +0x1f, 0x9f, 0x7f, 0xe7, 0x9d, 0x77, 0xce, 0x67, +0xb3, 0xd9, 0x20, 0xb8, 0x05, 0xad, 0xfd, 0xe5, +0xa5, 0xcb, 0x57, 0x0a, 0x37, 0x3f, 0x30, 0x11, +0x30, 0xa2, 0xee, 0x81, 0x89, 0xfd, 0xfb, 0xf7, +0x6f, 0x3b, 0x72, 0xe4, 0xc8, 0xfe, 0x64, 0x32, +0x99, 0x4a, 0x24, 0x12, 0x1d, 0xd1, 0x68, 0x34, +0x19, 0x8b, 0xc5, 0x12, 0xaa, 0xaa, 0xaa, 0xb9, +0x5c, 0x2e, 0x9b, 0xcd, 0x66, 0x33, 0x6b, 0x6b, +0x6b, 0x99, 0xd5, 0xd5, 0xd5, 0xa5, 0xe9, 0xe9, +0xe9, 0x99, 0x77, 0xdf, 0x7d, 0xf7, 0x93, 0x62, +0xb1, 0xd8, 0xec, 0xc0, 0x44, 0xd8, 0xf0, 0xaa, +0x93, 0x23, 0xed, 0x1a, 0xbf, 0x69, 0x00, 0x42, +0x20, 0xc0, 0x17, 0x3f, 0x32, 0x13, 0xde, 0xa8, +0x0c, 0x46, 0xa2, 0xc1, 0x3a, 0x44, 0x65, 0x39, +0x8e, 0xf5, 0xe3, 0x32, 0xb5, 0xda, 0xf0, 0xc8, +0x0c, 0x4d, 0xa2, 0x7d, 0x43, 0x7b, 0xbe, 0xa2, +0x43, 0x53, 0xe1, 0x93, 0x63, 0x50, 0x3d, 0xfc, +0x0e, 0x40, 0xf8, 0x52, 0x0e, 0x4d, 0x6d, 0xe9, +0xe0, 0xe4, 0x16, 0x8e, 0xcd, 0xd5, 0xee, 0xd5, +0xd5, 0xce, 0x44, 0x03, 0x6d, 0x79, 0x6c, 0x8e, +0x2d, 0x18, 0x0f, 0x5b, 0x04, 0x00, 0xaa, 0x40, +0x80, 0x6a, 0x46, 0x84, 0x77, 0x9a, 0xdb, 0x39, +0x38, 0x59, 0xbb, 0x38, 0xdb, 0xf4, 0xe0, 0x24, +0x5b, 0x34, 0xbc, 0x52, 0xe1, 0xff, 0xef, 0x47, +0x67, 0x6f, 0x1b, 0x00, 0x55, 0x0f, 0xbd, 0x8d, +0x87, 0xa7, 0x43, 0x57, 0xff, 0xcb, 0xd7, 0xf5, +0xf0, 0xf4, 0xff, 0x55, 0xf9, 0x5f, 0xce, 0x2f, +0x76, 0x5f, 0xa2, 0x7d, 0xd2, 0x3f, 0x00, 0x00, +0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, +0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activity9.png b/source/bitmaps/misc/activity9.png new file mode 100644 index 0000000000000000000000000000000000000000..c66559651dd66826f36934124bf1c9137b5959a8 GIT binary patch literal 4266 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 literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/activitysleep.cpp b/source/bitmaps/misc/activitysleep.cpp new file mode 100644 index 0000000..e7b0b42 --- /dev/null +++ b/source/bitmaps/misc/activitysleep.cpp @@ -0,0 +1,531 @@ +#include + +#ifndef MISC_ACTIVITYSLEEP_CPP +#define MISC_ACTIVITYSLEEP_CPP + +static unsigned char misc_activitysleep_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, +0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, +0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, +0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x0f, 0xcb, 0x49, +0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x5b, 0x6b, +0x6c, 0x1b, 0x57, 0x76, 0xfe, 0xee, 0x9d, 0xe1, +0xf0, 0x25, 0xbe, 0x24, 0x51, 0xd4, 0x8b, 0xb4, +0x64, 0xd9, 0x7a, 0xf8, 0x21, 0xd9, 0xb1, 0x94, +0xd8, 0xb1, 0x1c, 0xdb, 0xeb, 0x05, 0xac, 0x75, +0x91, 0xd8, 0x31, 0x16, 0x6d, 0x91, 0xba, 0xfb, +0xa3, 0x5d, 0x64, 0x8b, 0x76, 0xd1, 0x22, 0x28, +0xda, 0xbf, 0xed, 0x8f, 0xa2, 0x3f, 0x9a, 0x5f, +0x45, 0x91, 0xa6, 0x2d, 0x12, 0x6c, 0xbb, 0x71, +0x36, 0x41, 0xeb, 0x6d, 0x0d, 0x3b, 0x89, 0xb3, +0x96, 0xd2, 0xb8, 0x5e, 0x3b, 0x72, 0xec, 0xc8, +0xb2, 0x6c, 0x59, 0xde, 0x58, 0xb2, 0x64, 0xeb, +0x61, 0x49, 0xa4, 0x24, 0x4a, 0x24, 0x45, 0x71, +0x48, 0xce, 0x4c, 0x7f, 0x0c, 0x67, 0x38, 0x43, +0x0d, 0x25, 0x59, 0xa4, 0xb7, 0x2d, 0x7a, 0x80, +0x83, 0xe1, 0xcc, 0x5c, 0xde, 0xb9, 0xe7, 0xbb, +0xe7, 0x9c, 0x7b, 0xef, 0xb9, 0xe7, 0x12, 0x49, +0x92, 0xf0, 0x3c, 0x89, 0x10, 0x42, 0xf2, 0xbd, +0x32, 0x78, 0xb6, 0xaa, 0x31, 0xd2, 0x73, 0x6e, +0x20, 0xfb, 0x3c, 0x2a, 0xcd, 0x11, 0x9a, 0xe4, +0xb9, 0xe6, 0x23, 0x49, 0x7b, 0xcd, 0xc5, 0xaf, +0xd8, 0x80, 0x90, 0x62, 0xd5, 0x67, 0x20, 0x34, +0xc9, 0xf9, 0x4d, 0x0d, 0x9e, 0x69, 0x49, 0x2b, +0xf8, 0x5a, 0x2c, 0x17, 0x2a, 0x52, 0xc3, 0x0b, +0xd6, 0x80, 0x3c, 0x82, 0x53, 0xcd, 0xd5, 0x88, +0x09, 0xf4, 0x20, 0x28, 0xc2, 0x88, 0x99, 0xdf, +0x62, 0x1e, 0x56, 0x81, 0x50, 0x3e, 0x5b, 0x28, +0x10, 0x05, 0x01, 0xa0, 0x11, 0x3e, 0x57, 0x68, +0x46, 0xc3, 0x6c, 0x86, 0x99, 0x1c, 0xce, 0xd5, +0x02, 0xad, 0xa0, 0x69, 0x00, 0x82, 0xc1, 0x55, +0x40, 0x0e, 0x18, 0x85, 0x02, 0xb1, 0x29, 0x13, +0xc8, 0x11, 0x3c, 0x57, 0x68, 0x16, 0x80, 0x49, +0xc3, 0x5c, 0x86, 0x95, 0x7b, 0x05, 0x10, 0xad, +0x26, 0x28, 0xbd, 0xae, 0x08, 0x9b, 0xca, 0x70, +0x32, 0xe7, 0xaa, 0xb0, 0x11, 0x18, 0x9b, 0x02, +0xe1, 0x99, 0x35, 0x40, 0x23, 0xbc, 0x22, 0x80, +0xb6, 0x97, 0x39, 0x00, 0xe6, 0x0c, 0x5b, 0x32, +0x6c, 0xd5, 0xdc, 0x2b, 0x60, 0x28, 0x1a, 0xa1, +0x00, 0xa0, 0xed, 0x79, 0x45, 0x60, 0x3e, 0xc3, +0x09, 0x00, 0x2b, 0x99, 0x6b, 0x22, 0xf3, 0x4c, +0x01, 0x44, 0xd1, 0x0c, 0x11, 0x19, 0x6d, 0x78, +0x56, 0x10, 0x9e, 0x09, 0x80, 0x8c, 0xf0, 0x0a, +0x2b, 0x3d, 0xae, 0xf4, 0xb2, 0x22, 0xb0, 0x0d, +0x80, 0x5d, 0xc3, 0x36, 0x00, 0xb6, 0x8a, 0x8a, +0x8a, 0x9a, 0x9a, 0x9a, 0x9a, 0x66, 0x8b, 0xc5, +0x52, 0x6a, 0xb1, 0x58, 0xdc, 0x1c, 0xc7, 0x39, +0x39, 0x8e, 0x73, 0x52, 0x4a, 0x4d, 0xc9, 0x64, +0x32, 0x9a, 0x4c, 0x26, 0x23, 0x3c, 0xcf, 0x2f, +0xf2, 0x3c, 0x1f, 0x5e, 0x5c, 0x5c, 0x9c, 0x7c, +0xf4, 0xe8, 0xd1, 0x03, 0x51, 0x14, 0x97, 0x01, +0xc4, 0x01, 0x2c, 0x6b, 0x38, 0xae, 0x01, 0x84, +0xcf, 0x05, 0xe2, 0x59, 0x4d, 0x62, 0xc3, 0x26, +0xa0, 0x11, 0x5e, 0x51, 0x77, 0xa5, 0xc7, 0x95, +0x5e, 0xb6, 0x03, 0x70, 0x64, 0xd8, 0x09, 0xc0, +0x11, 0x08, 0x04, 0x9a, 0xfc, 0x7e, 0x7f, 0x7b, +0x79, 0x79, 0xf9, 0x4e, 0x9b, 0xcd, 0xe6, 0xdb, +0xd0, 0x87, 0x32, 0x94, 0x4e, 0xa7, 0xe3, 0xe1, +0x70, 0xf8, 0xdb, 0x99, 0x99, 0x99, 0xfe, 0xe1, +0xe1, 0xe1, 0x3b, 0x3c, 0xcf, 0xcf, 0x03, 0x88, +0x00, 0x88, 0x66, 0x38, 0x86, 0x2c, 0x18, 0x8a, +0x46, 0x68, 0xcd, 0x62, 0x43, 0x20, 0x6c, 0x08, +0x00, 0x03, 0xe1, 0x4d, 0x90, 0xd5, 0xda, 0x0a, +0xa0, 0x24, 0x23, 0xb4, 0x1b, 0x80, 0x0b, 0x40, +0xe9, 0x9e, 0x3d, 0x7b, 0x5e, 0x69, 0x68, 0x68, +0xe8, 0xb2, 0x58, 0x2c, 0x65, 0x4a, 0x1d, 0x4c, +0x8a, 0x85, 0x27, 0x58, 0x0a, 0x4b, 0xcc, 0x0a, +0x2e, 0xc1, 0xc1, 0xc4, 0x73, 0xe0, 0x12, 0x66, +0x50, 0x81, 0x22, 0x65, 0x49, 0x22, 0x69, 0x4e, +0x22, 0x69, 0xe1, 0x91, 0xb4, 0xf2, 0x58, 0xac, +0x08, 0x23, 0x61, 0x5f, 0x51, 0xbf, 0x2f, 0x8a, +0x62, 0x6a, 0x7a, 0x7a, 0xfa, 0x46, 0x5f, 0x5f, +0xdf, 0xc5, 0x68, 0x34, 0xfa, 0x14, 0x40, 0x18, +0xc0, 0x92, 0x06, 0x90, 0x38, 0xb2, 0xa6, 0x91, +0x7e, 0x16, 0x10, 0xd6, 0x05, 0x20, 0x47, 0x78, +0xc5, 0xc1, 0x59, 0x90, 0xed, 0x71, 0x17, 0x80, +0x52, 0x00, 0xa5, 0xcd, 0xcd, 0xcd, 0xfb, 0x5b, +0x5a, 0x5a, 0x5e, 0xb3, 0xdb, 0xed, 0x55, 0x00, +0x60, 0x4a, 0x70, 0xf0, 0xcc, 0x94, 0xc2, 0xf3, +0xb4, 0x1c, 0xce, 0x39, 0x17, 0x88, 0xb8, 0xde, +0x1c, 0x28, 0x4b, 0x2b, 0x8e, 0x38, 0xc2, 0xd5, +0xf3, 0x08, 0x57, 0xcd, 0x63, 0xd9, 0x1d, 0x03, +0x00, 0x08, 0x82, 0xc0, 0x4f, 0x4c, 0x4c, 0x7c, +0x79, 0xeb, 0xd6, 0xad, 0x4f, 0x79, 0x9e, 0x9f, +0x05, 0xb0, 0x90, 0x01, 0x23, 0x02, 0xd9, 0x3c, +0x56, 0x32, 0x40, 0x6c, 0x18, 0x84, 0x35, 0x01, +0xc8, 0x23, 0xbc, 0xa2, 0xee, 0x2e, 0x00, 0x1e, +0x00, 0xe5, 0x2e, 0x97, 0xab, 0xee, 0xf0, 0xe1, +0xc3, 0x3f, 0x74, 0xbb, 0xdd, 0x8d, 0xb2, 0xe0, +0x26, 0x54, 0x3d, 0xa8, 0x45, 0xd9, 0xb8, 0x17, +0x44, 0xda, 0xb8, 0xd0, 0xf9, 0x28, 0xee, 0x5a, +0xc6, 0xd4, 0xae, 0x71, 0x44, 0xbd, 0x11, 0x00, +0x40, 0x2a, 0x95, 0x8a, 0x0e, 0x0c, 0x0c, 0x9c, +0x1d, 0x1a, 0x1a, 0xea, 0x05, 0x30, 0x07, 0x60, +0x1e, 0xb2, 0x46, 0x68, 0xb5, 0x61, 0x43, 0x20, +0xe4, 0x05, 0xc0, 0x40, 0xed, 0x39, 0x64, 0x55, +0xde, 0x0d, 0xa0, 0x0c, 0x80, 0x37, 0x10, 0x08, +0xb4, 0x1d, 0x38, 0x70, 0xe0, 0x4d, 0x8b, 0xc5, +0xe2, 0xa6, 0x69, 0x0a, 0xef, 0x70, 0x15, 0xbc, +0x23, 0x3e, 0x50, 0x81, 0x16, 0x2c, 0x78, 0x2e, +0x45, 0x7d, 0x4b, 0x98, 0xde, 0x39, 0x89, 0x84, +0x73, 0x05, 0x00, 0xc4, 0x87, 0x0f, 0x1f, 0x7e, +0xda, 0xdb, 0xdb, 0x7b, 0x1e, 0x40, 0x10, 0x32, +0x10, 0x61, 0xac, 0x06, 0x41, 0x80, 0x2c, 0xff, +0xc6, 0x01, 0xc8, 0x19, 0xea, 0x8c, 0x84, 0xf7, +0x02, 0xa8, 0x68, 0x6b, 0x6b, 0x3b, 0xd6, 0xd6, +0xd6, 0xf6, 0x06, 0xc3, 0x30, 0x9c, 0x35, 0x6c, +0x83, 0xff, 0xeb, 0x3a, 0xb0, 0x09, 0x53, 0xf1, +0x24, 0xce, 0x90, 0x2b, 0xe0, 0x84, 0xd9, 0x65, +0x46, 0xf0, 0x5e, 0x08, 0x20, 0x40, 0xa8, 0x79, +0x06, 0xa1, 0xa6, 0x59, 0x00, 0xc0, 0xec, 0xec, +0x6c, 0x5f, 0x77, 0x77, 0xf7, 0x7b, 0xa9, 0x54, +0xea, 0x29, 0x80, 0x10, 0x64, 0xb3, 0x88, 0x60, +0xb5, 0x26, 0x18, 0x82, 0xb0, 0x16, 0x00, 0xca, +0x50, 0xa7, 0xa8, 0x7d, 0x09, 0x32, 0x2a, 0x0f, +0xa0, 0xf2, 0xe0, 0xc1, 0x83, 0xa7, 0x1b, 0x1b, +0x1b, 0x4f, 0x11, 0x42, 0x88, 0x73, 0xc2, 0x0d, +0x5f, 0x7f, 0xf5, 0x33, 0xd9, 0xf8, 0x7a, 0xe4, +0xa9, 0x77, 0xa3, 0xe9, 0x64, 0x23, 0x9a, 0x5e, +0xdb, 0x8e, 0xca, 0x36, 0x1f, 0x2e, 0xfd, 0xc9, +0x65, 0xdc, 0x3d, 0x3b, 0xa8, 0xbe, 0x8f, 0x56, +0x47, 0x30, 0xb3, 0x6f, 0x0a, 0x12, 0x23, 0x22, +0x12, 0x89, 0x8c, 0x5d, 0xbc, 0x78, 0xf1, 0x6d, +0x9e, 0xe7, 0x27, 0x21, 0x6b, 0x83, 0x16, 0x04, +0xd5, 0x31, 0x1a, 0x01, 0xb0, 0x6a, 0x1e, 0x60, +0x60, 0xf7, 0x4a, 0xef, 0x3b, 0x32, 0x00, 0x78, +0x77, 0xef, 0xde, 0xfd, 0x4a, 0x4b, 0x4b, 0xcb, +0x29, 0x00, 0xa4, 0x6c, 0xd0, 0x0b, 0xd7, 0x48, +0x29, 0x24, 0x48, 0x90, 0x68, 0x61, 0xeb, 0x93, +0xb2, 0x6d, 0xa5, 0x68, 0x7a, 0xb5, 0x11, 0xcd, +0xaf, 0x35, 0xc2, 0xb7, 0xab, 0x42, 0xf7, 0x6e, +0x6e, 0x78, 0x0e, 0x22, 0x15, 0xd5, 0x7b, 0xfb, +0x4c, 0x09, 0xfc, 0xd7, 0xea, 0x30, 0xb3, 0x7f, +0x12, 0x6e, 0xb7, 0xbb, 0xfe, 0xf8, 0xf1, 0xe3, +0x3f, 0xba, 0x70, 0xe1, 0xc2, 0xdf, 0x65, 0x84, +0x55, 0x58, 0x9d, 0x24, 0x65, 0x64, 0x5b, 0x05, +0x82, 0x0e, 0x80, 0x9c, 0x29, 0xae, 0x32, 0xd6, +0x2b, 0x1e, 0xdf, 0x05, 0xa0, 0xcc, 0xef, 0xf7, +0xef, 0xec, 0xe8, 0xe8, 0xf8, 0x01, 0x21, 0x84, +0xb8, 0x1f, 0x94, 0xa2, 0xe4, 0x91, 0x0b, 0x02, +0x11, 0x0a, 0x12, 0x7a, 0xe7, 0xeb, 0x2d, 0x68, +0x79, 0xb5, 0x09, 0xde, 0x66, 0x6f, 0xde, 0x72, +0xb3, 0x23, 0xa1, 0x55, 0xdf, 0x61, 0x22, 0x2c, +0x2a, 0x7a, 0xab, 0x31, 0x73, 0x78, 0x0a, 0x3e, +0x9f, 0xaf, 0xed, 0xc8, 0x91, 0x23, 0xdf, 0xbf, +0x72, 0xe5, 0xca, 0x47, 0xc8, 0x4e, 0x99, 0xb5, +0x20, 0x88, 0x8a, 0x88, 0x5a, 0x10, 0x8c, 0x66, +0x82, 0x46, 0x8e, 0xcf, 0x01, 0xc0, 0xe3, 0x74, +0x3a, 0xfd, 0x47, 0x8f, 0x1e, 0xfd, 0x03, 0x93, +0xc9, 0x64, 0xb6, 0x4e, 0xd9, 0x50, 0x32, 0xec, +0xd2, 0xf5, 0xca, 0x66, 0xa8, 0xf5, 0x8d, 0xdd, +0x38, 0xf8, 0xe3, 0xfd, 0x6b, 0x96, 0x59, 0x0e, +0x2d, 0x23, 0x1e, 0x89, 0xcb, 0xad, 0xca, 0x21, +0x66, 0x99, 0x45, 0xd9, 0xed, 0x0a, 0x2c, 0xbc, +0x14, 0x44, 0x63, 0x63, 0xe3, 0xf1, 0xa5, 0xa5, +0xa5, 0xa9, 0xfe, 0xfe, 0xfe, 0xcb, 0x30, 0x9e, +0x29, 0xea, 0x96, 0xd4, 0x80, 0x61, 0x95, 0x3a, +0xf5, 0x37, 0x43, 0xee, 0x7d, 0x27, 0x80, 0xd2, +0x63, 0xc7, 0x8e, 0xfd, 0xc0, 0x66, 0xb3, 0x95, +0x99, 0x22, 0x1c, 0x1c, 0x77, 0x3c, 0x10, 0xa8, +0x50, 0x30, 0xdf, 0xbb, 0x38, 0x68, 0xd0, 0x04, +0x3d, 0x85, 0x86, 0xe7, 0xd6, 0xac, 0xc3, 0x14, +0xe4, 0xe0, 0xf8, 0x95, 0x0b, 0x94, 0x52, 0xd2, +0xbe, 0xaf, 0xfd, 0x8c, 0xcb, 0xe5, 0x0a, 0x40, +0x76, 0xd6, 0x0e, 0xc8, 0x1a, 0x6c, 0x82, 0x66, +0xed, 0xa1, 0x5d, 0xc2, 0xab, 0x00, 0xac, 0x37, +0xec, 0x35, 0x34, 0x34, 0xec, 0xf2, 0xf9, 0x7c, +0x6d, 0x44, 0x22, 0x70, 0x7c, 0xe3, 0x86, 0x24, +0x8a, 0x10, 0x89, 0x50, 0x30, 0x4f, 0x0d, 0x4e, +0x61, 0xe1, 0xf1, 0x82, 0x2a, 0x6c, 0x2c, 0x18, +0xc3, 0x17, 0x6f, 0x7f, 0x89, 0xd0, 0xf0, 0x9c, +0xfa, 0x2c, 0x38, 0x12, 0x5a, 0xb7, 0x1e, 0xcb, +0x88, 0x0d, 0xdc, 0xbc, 0x19, 0xac, 0x89, 0x35, +0x77, 0x76, 0x76, 0x9e, 0x82, 0xec, 0xaf, 0x1c, +0x90, 0xd7, 0x22, 0x66, 0xe8, 0x57, 0xa0, 0x2a, +0xe5, 0x9a, 0x80, 0x91, 0xf3, 0x2b, 0x01, 0xe0, +0xee, 0xe8, 0xe8, 0x78, 0x9d, 0x61, 0x18, 0xc2, +0x8d, 0x5a, 0x80, 0x15, 0x02, 0xa1, 0x40, 0xd5, +0xd7, 0xd2, 0xdd, 0x8b, 0x83, 0x68, 0x3c, 0xba, +0x1d, 0xd7, 0xdf, 0xeb, 0xc5, 0xdd, 0x0b, 0x83, +0x60, 0xcd, 0x2c, 0x8e, 0xbe, 0x75, 0x58, 0x7d, +0x3f, 0x3b, 0x12, 0xdc, 0xd0, 0xf7, 0x2c, 0x0f, +0xec, 0x10, 0x0e, 0xa7, 0x11, 0x08, 0x04, 0xf6, +0x57, 0x57, 0x57, 0x77, 0x3f, 0x7d, 0xfa, 0x34, +0x82, 0xec, 0x9a, 0x41, 0x3b, 0x24, 0xaa, 0xbe, +0x80, 0x05, 0x90, 0xbb, 0xca, 0xd3, 0xaa, 0xbf, +0x0d, 0x80, 0xb3, 0xb5, 0xb5, 0x75, 0x5f, 0x79, +0x79, 0xf9, 0x36, 0x92, 0x22, 0x30, 0x3d, 0x34, +0x43, 0x2c, 0xc0, 0xe9, 0x19, 0x51, 0xcf, 0xdf, +0xfe, 0x27, 0x3e, 0x7f, 0xfb, 0xb2, 0x7a, 0xbf, +0xed, 0x70, 0x3d, 0x28, 0x9b, 0xb5, 0xce, 0xd9, +0x91, 0xd9, 0x0d, 0x7d, 0x93, 0x2c, 0x11, 0x98, +0xa6, 0x38, 0xa4, 0x6b, 0x53, 0xcc, 0xcb, 0x2f, +0xbf, 0x7c, 0xea, 0xdc, 0xb9, 0x73, 0xa3, 0x90, +0x67, 0x88, 0x31, 0x64, 0x17, 0x4d, 0x8a, 0x53, +0x04, 0xb0, 0x5a, 0x03, 0xb4, 0x8b, 0x1d, 0x75, +0xbe, 0xdf, 0xd6, 0xd6, 0xf6, 0x3d, 0x4a, 0x29, +0x98, 0x47, 0x1c, 0xc4, 0xb4, 0x04, 0x14, 0x38, +0xdc, 0xe5, 0x92, 0x90, 0x4e, 0xea, 0xbc, 0xd1, +0xd6, 0x43, 0x0d, 0xba, 0xf7, 0x33, 0xa3, 0xb3, +0xaa, 0x06, 0x98, 0xac, 0x26, 0x78, 0xeb, 0xcb, +0xf1, 0x74, 0x68, 0xda, 0xb0, 0x2e, 0xe6, 0x57, +0x66, 0x88, 0x35, 0x02, 0xaa, 0xaa, 0xaa, 0xda, +0x6a, 0x6a, 0x6a, 0xea, 0xa6, 0xa6, 0xa6, 0x94, +0x85, 0x13, 0x87, 0xac, 0x16, 0x28, 0x41, 0x18, +0x1d, 0x00, 0xda, 0xc9, 0x8f, 0x12, 0xd8, 0xb0, +0x79, 0x3c, 0x1e, 0x5f, 0x69, 0x69, 0x69, 0x1d, +0x44, 0x80, 0x3c, 0xa1, 0x45, 0xef, 0x7d, 0x23, +0xda, 0xde, 0x99, 0x05, 0x20, 0x11, 0x4b, 0x20, +0x3c, 0x1b, 0x46, 0x60, 0x6f, 0x00, 0x2f, 0xfd, +0x66, 0x3b, 0xf6, 0xbc, 0xda, 0x86, 0xc9, 0xbb, +0x53, 0x78, 0xf7, 0x77, 0xfe, 0xc9, 0xf8, 0xcf, +0x09, 0x80, 0x06, 0x19, 0x48, 0xd5, 0x22, 0x69, +0x69, 0x69, 0x79, 0x71, 0x6a, 0x6a, 0xea, 0x21, +0x64, 0x53, 0xe6, 0x32, 0xb2, 0xa9, 0x91, 0x28, +0x42, 0xc8, 0x2a, 0x00, 0x72, 0x35, 0xc0, 0xd6, +0xda, 0xda, 0xda, 0x4e, 0x29, 0x25, 0xd2, 0x1c, +0x81, 0x20, 0x08, 0xc6, 0xe3, 0x46, 0x11, 0xc9, +0xe9, 0x75, 0xa0, 0xb2, 0x31, 0x1b, 0x3a, 0x90, +0x44, 0x09, 0x7f, 0x76, 0xf9, 0x2d, 0x54, 0x6e, +0xaf, 0x54, 0x9f, 0x95, 0xd7, 0x97, 0x41, 0xa0, +0xf9, 0x3b, 0x82, 0xcc, 0x12, 0xd0, 0x5a, 0x0a, +0xbf, 0xdf, 0xbf, 0x1b, 0xb2, 0x16, 0x2b, 0x00, +0xac, 0x72, 0x84, 0x6c, 0x1e, 0xfb, 0x57, 0x00, +0xb0, 0xfa, 0xfd, 0xfe, 0xdd, 0x84, 0x10, 0x88, +0x33, 0x12, 0x44, 0xf2, 0x7c, 0x37, 0x51, 0x00, +0x60, 0xdb, 0xc1, 0x6d, 0xba, 0x7b, 0xab, 0xd3, +0x0a, 0xab, 0xd3, 0xaa, 0x7b, 0xe6, 0xaa, 0x74, +0x81, 0xb1, 0x32, 0x48, 0x25, 0x52, 0xc6, 0x95, +0xcc, 0x02, 0x26, 0x89, 0xc0, 0xe3, 0xf1, 0x04, +0x3c, 0x1e, 0x4f, 0x79, 0x38, 0x1c, 0x9e, 0x85, +0x1e, 0x00, 0x8a, 0xcc, 0x0c, 0x51, 0xdb, 0x9f, +0xb9, 0x1a, 0xc0, 0x59, 0xad, 0x56, 0x67, 0x85, +0xb7, 0xa2, 0x81, 0x52, 0x8a, 0x74, 0x50, 0x2c, +0xca, 0xb8, 0xbf, 0x1e, 0x37, 0xe6, 0x00, 0x60, +0x44, 0x84, 0x10, 0x94, 0xd6, 0x95, 0xe6, 0xaf, +0x47, 0x14, 0x20, 0x2d, 0x00, 0x94, 0x52, 0xb2, +0x67, 0xcf, 0x9e, 0x17, 0x20, 0x9b, 0xb3, 0xb1, +0x06, 0x68, 0x84, 0xd7, 0xfa, 0x00, 0x16, 0x00, +0x57, 0x5f, 0x5f, 0x1f, 0x60, 0x58, 0xc6, 0x24, +0x46, 0x45, 0x08, 0xbc, 0xb0, 0xfe, 0x9e, 0x4e, +0x11, 0xa8, 0xe9, 0x40, 0xe3, 0xba, 0x65, 0x9e, +0x0c, 0x8e, 0x43, 0x80, 0x00, 0x91, 0xe4, 0x1f, +0x1a, 0x85, 0x39, 0x11, 0xac, 0x8f, 0x81, 0xd7, +0xeb, 0xdd, 0x02, 0x19, 0x00, 0x25, 0x22, 0xad, +0x0b, 0xc9, 0x1b, 0x8d, 0x02, 0xaa, 0x19, 0xb8, +0xdd, 0xee, 0x72, 0x4a, 0x29, 0x04, 0x5e, 0x84, +0xb8, 0x86, 0xcd, 0x6d, 0x86, 0x7c, 0xf5, 0x3e, +0xec, 0x3b, 0xbe, 0x17, 0x5f, 0xfd, 0x7b, 0x2f, +0x16, 0x83, 0x4b, 0xf2, 0xb3, 0xba, 0x0a, 0x78, +0xaa, 0x3c, 0xab, 0xca, 0x8a, 0x82, 0x88, 0xe1, +0x6f, 0x46, 0xd0, 0xdf, 0x73, 0x07, 0x77, 0x7a, +0x06, 0x10, 0x9e, 0x09, 0x67, 0x5b, 0x9b, 0x87, +0x44, 0x9e, 0x82, 0x52, 0x0a, 0x9b, 0xcd, 0xe6, +0x42, 0x1e, 0xe1, 0x01, 0x10, 0xa3, 0x51, 0x40, +0x0d, 0x7a, 0x3a, 0x1c, 0x0e, 0x0f, 0x21, 0x04, +0x62, 0x42, 0x2c, 0x68, 0xc1, 0xa3, 0x50, 0x65, +0xbd, 0x0f, 0xed, 0xc7, 0xf7, 0xa1, 0xfd, 0xf8, +0x3e, 0xd4, 0x36, 0xd5, 0x42, 0x12, 0x25, 0x7c, +0xfe, 0xcf, 0x97, 0xd5, 0xba, 0x9b, 0x5e, 0x6e, +0x52, 0xcb, 0x26, 0x13, 0x29, 0x0c, 0xf5, 0x0e, +0xa1, 0xbf, 0xe7, 0x0e, 0x06, 0xbe, 0x1c, 0x40, +0x6c, 0x71, 0x59, 0xdf, 0xd2, 0x75, 0x28, 0xcd, +0x13, 0x10, 0x42, 0x60, 0xb5, 0x5a, 0x9d, 0xc8, +0x0a, 0x9f, 0xbb, 0x33, 0xa5, 0x33, 0x01, 0xe5, +0xaa, 0x14, 0x62, 0x4a, 0x4a, 0x4a, 0x5c, 0x94, +0x52, 0x88, 0x49, 0x71, 0xd3, 0x8b, 0x9e, 0xca, +0xba, 0x4a, 0x74, 0x74, 0xb5, 0xa3, 0xe3, 0x78, +0x3b, 0x6a, 0xb7, 0xd7, 0xe8, 0xde, 0xcd, 0x4f, +0xcf, 0x83, 0x4f, 0xf1, 0x6a, 0x4f, 0x06, 0x76, +0xf9, 0x71, 0xe3, 0x93, 0xaf, 0xd1, 0xf7, 0xc5, +0x6d, 0x0c, 0x5e, 0xbb, 0x0f, 0x7e, 0x85, 0xcf, +0x16, 0x7e, 0xc6, 0xd1, 0x27, 0xcd, 0x0b, 0xa0, +0x94, 0x2a, 0x00, 0xe8, 0x86, 0x3f, 0x6d, 0x39, +0x16, 0x7a, 0xe1, 0x75, 0x5c, 0x52, 0x52, 0xe2, +0x22, 0x84, 0x20, 0x95, 0x48, 0x6f, 0x5a, 0x03, +0xbe, 0xfb, 0xbb, 0xdf, 0xc1, 0x77, 0x7e, 0xeb, +0xa8, 0xe1, 0xbb, 0xe9, 0xb1, 0x69, 0x5d, 0xbd, +0xef, 0xff, 0xc5, 0x4f, 0xa0, 0x5b, 0xae, 0x17, +0xe0, 0x73, 0x44, 0x5e, 0x04, 0x21, 0x04, 0x16, +0x8b, 0xc5, 0x0e, 0x7d, 0xcf, 0xeb, 0x68, 0x4d, +0x5c, 0x09, 0x21, 0xa0, 0x54, 0xb6, 0x25, 0x42, +0xc9, 0xa6, 0xf8, 0xab, 0xcf, 0x6e, 0xe8, 0xea, +0x0c, 0x4e, 0x04, 0xd5, 0xdf, 0xd3, 0x4f, 0x66, +0x75, 0x65, 0x41, 0xb0, 0xe9, 0xef, 0x18, 0xb1, +0xd2, 0xf6, 0xb5, 0x88, 0xc5, 0x1a, 0xdb, 0xd2, +0xf1, 0x78, 0x7c, 0x89, 0x10, 0x02, 0x93, 0x9d, +0x05, 0x65, 0x36, 0x37, 0x03, 0x1a, 0xbd, 0x37, +0x8a, 0xe0, 0x64, 0x08, 0xa1, 0x89, 0x20, 0x3e, +0x3f, 0xdb, 0x0d, 0x48, 0x12, 0xfe, 0xf4, 0xef, +0xdf, 0xca, 0x80, 0x31, 0xbb, 0xe9, 0x7a, 0xd7, +0x23, 0xd6, 0xc6, 0x80, 0x10, 0x02, 0x9e, 0xe7, +0x97, 0x91, 0xb3, 0x87, 0xa8, 0x2b, 0x97, 0xb9, +0x6a, 0x41, 0x50, 0x0a, 0x0b, 0x2a, 0x00, 0x56, +0x13, 0x18, 0xca, 0x6c, 0xba, 0x31, 0x7f, 0x75, +0xe6, 0xaf, 0xb1, 0x12, 0x93, 0x37, 0x3a, 0x5e, +0xff, 0xa3, 0x53, 0xea, 0xf3, 0xe0, 0x78, 0xa8, +0xa0, 0x7a, 0xd7, 0x22, 0x93, 0x8d, 0x53, 0x00, +0x88, 0x40, 0x1f, 0x1a, 0xcb, 0x1b, 0x12, 0x53, +0x5e, 0xaa, 0xbb, 0xb4, 0xd1, 0x68, 0x74, 0x81, +0x52, 0x0a, 0x93, 0xbd, 0x30, 0x00, 0x92, 0xf1, +0xa4, 0xfa, 0xff, 0x96, 0x8e, 0x66, 0xf5, 0x79, +0x68, 0x3c, 0x04, 0x96, 0x65, 0xd1, 0xd2, 0xd1, +0x8c, 0x8a, 0x2d, 0x15, 0xb8, 0xf2, 0xaf, 0xff, +0xb5, 0xe9, 0x6f, 0xe4, 0x12, 0x67, 0x33, 0x81, +0x52, 0x8a, 0x64, 0x32, 0x19, 0xc1, 0xea, 0xd0, +0x98, 0x0a, 0x44, 0xee, 0x3c, 0x40, 0xb7, 0x4b, +0x1b, 0x0e, 0x87, 0xe7, 0x09, 0x21, 0x60, 0x6d, +0x2c, 0x18, 0xa6, 0xf0, 0x9e, 0xb2, 0xd8, 0x2d, +0xd8, 0xb2, 0x23, 0x20, 0x7f, 0x48, 0x10, 0x71, +0xe8, 0xf4, 0x21, 0xec, 0xff, 0x8d, 0x97, 0x50, +0xea, 0xf3, 0x60, 0x7a, 0x6c, 0x06, 0xbf, 0xfc, +0xf9, 0xb5, 0x82, 0xbf, 0xa1, 0x90, 0xc9, 0x6e, +0x02, 0x21, 0x04, 0xf1, 0x78, 0x7c, 0x09, 0xd9, +0xc8, 0x70, 0x6e, 0x58, 0x4c, 0xd2, 0x9a, 0x80, +0xc2, 0xca, 0x1e, 0x7d, 0x72, 0x74, 0x74, 0x74, +0x5c, 0x92, 0xa4, 0x14, 0xe7, 0x34, 0x99, 0x58, +0x1b, 0x0b, 0x31, 0x51, 0x58, 0x10, 0xa4, 0xf1, +0x85, 0xed, 0xaa, 0x53, 0xa2, 0x0c, 0xc5, 0x89, +0xdf, 0xeb, 0x52, 0xdf, 0x55, 0xd4, 0x7a, 0xc1, +0x9a, 0x58, 0x88, 0x42, 0x71, 0x02, 0x2d, 0x96, +0x0a, 0x33, 0x28, 0xa5, 0x08, 0x85, 0x42, 0x4f, +0xb0, 0x7a, 0x3b, 0xdd, 0x50, 0x03, 0xb4, 0xea, +0x9f, 0x02, 0x90, 0x8c, 0xc5, 0x62, 0x91, 0x50, +0x28, 0xf4, 0xa8, 0xaa, 0xaa, 0xaa, 0xd9, 0x56, +0x65, 0xc5, 0xca, 0x78, 0xa2, 0xa0, 0x46, 0x35, +0xb5, 0x37, 0xe5, 0x7d, 0xc7, 0x98, 0x18, 0x54, +0xf8, 0x2b, 0x10, 0x9a, 0x08, 0x15, 0xf4, 0x0d, +0x00, 0x20, 0x2c, 0x81, 0xa5, 0xdc, 0x0c, 0x09, +0x92, 0x78, 0xf3, 0xe6, 0xcd, 0x3e, 0xc8, 0x01, +0x52, 0xed, 0xc6, 0x69, 0x36, 0x2a, 0x2c, 0x49, +0x92, 0x92, 0x66, 0xa2, 0x00, 0xa0, 0x24, 0x29, +0x24, 0x00, 0xac, 0x8c, 0x8d, 0x8d, 0xdd, 0xad, +0xa9, 0xa9, 0x69, 0xb6, 0x56, 0x5a, 0x90, 0x9c, +0xcc, 0xb3, 0xfa, 0xda, 0x20, 0x35, 0xee, 0xdb, +0xbe, 0xea, 0xd9, 0x72, 0x24, 0x8e, 0xfb, 0xd7, +0x87, 0x70, 0xef, 0xea, 0x3d, 0x2c, 0x05, 0x97, +0x8a, 0xe2, 0x14, 0xcd, 0x3e, 0x0e, 0x94, 0xa1, +0x98, 0x9b, 0x9b, 0x9b, 0x98, 0x9b, 0x9b, 0x9b, +0xc3, 0x6a, 0x00, 0x54, 0x10, 0xf2, 0x69, 0x40, +0x32, 0xf3, 0xa7, 0xf8, 0xad, 0x5b, 0xb7, 0xbe, +0xe9, 0xec, 0xec, 0xfc, 0xbe, 0xb9, 0x9c, 0xa3, +0x2c, 0xc7, 0x40, 0x4a, 0x6f, 0x6e, 0x49, 0x6c, +0x77, 0xd9, 0x51, 0xb5, 0x55, 0x5e, 0xd3, 0x47, +0xe6, 0xa3, 0xb8, 0x7f, 0x6d, 0x10, 0xf7, 0x7e, +0x79, 0x1f, 0xa3, 0x03, 0xa3, 0x3a, 0xb5, 0x67, +0xd6, 0x19, 0xb7, 0x37, 0x42, 0xd6, 0x4a, 0x33, +0x08, 0x21, 0x78, 0xfc, 0xf8, 0xf1, 0x5d, 0xc8, +0xf1, 0xc0, 0xfc, 0x1a, 0xa0, 0xf9, 0x9f, 0xd6, +0x07, 0xa4, 0x20, 0x87, 0x8f, 0xe2, 0xc1, 0x60, +0x30, 0xb8, 0xb0, 0xb0, 0xf0, 0xd8, 0xeb, 0xf5, +0x6e, 0xb5, 0xd7, 0xd9, 0xb0, 0x32, 0xb6, 0xbe, +0x19, 0xd8, 0x1c, 0x56, 0xec, 0x38, 0xb8, 0x03, +0xbb, 0x5f, 0xd9, 0x85, 0x7f, 0xfb, 0x9b, 0x73, +0x88, 0x2d, 0x2e, 0xc3, 0xb7, 0xc5, 0x87, 0x6b, +0x3f, 0xbf, 0x8e, 0xfb, 0xd7, 0xee, 0x63, 0x7c, +0x68, 0x42, 0x9d, 0xf1, 0x11, 0x90, 0xa2, 0x38, +0x58, 0x85, 0xa8, 0x95, 0xc2, 0x5c, 0x69, 0x06, +0x08, 0xa4, 0xdb, 0xb7, 0x6f, 0xdf, 0x84, 0x71, +0x3c, 0x50, 0x42, 0x66, 0xaf, 0xd0, 0x68, 0x14, +0x50, 0x00, 0x48, 0x40, 0xde, 0x73, 0x8f, 0xf6, +0xf6, 0xf6, 0x7e, 0x7e, 0xf2, 0xe4, 0xc9, 0x3f, +0xb4, 0x6e, 0xb5, 0x20, 0x39, 0x9d, 0x86, 0x94, +0x34, 0xd6, 0x82, 0x7d, 0xc7, 0x5f, 0xc0, 0xee, +0x57, 0x76, 0xa1, 0x61, 0xef, 0x56, 0x50, 0x86, +0x22, 0xb9, 0x92, 0x44, 0x3c, 0x92, 0x00, 0xa5, +0x0c, 0x26, 0x1e, 0x4c, 0x62, 0xe2, 0xc1, 0xa4, +0x2c, 0x34, 0xa1, 0xc8, 0x9b, 0x3f, 0x5a, 0x20, +0xd9, 0x1b, 0xad, 0xa0, 0x0c, 0xc5, 0xe3, 0xc7, +0x8f, 0x07, 0xc6, 0xc6, 0xc6, 0x9e, 0x20, 0x9b, +0x37, 0x90, 0x5f, 0x03, 0xf2, 0xf8, 0x01, 0x1e, +0xb2, 0xfa, 0x44, 0xae, 0x5d, 0xbb, 0xd6, 0x77, +0xe0, 0xc0, 0x81, 0x91, 0xca, 0xca, 0xca, 0x6d, +0xf6, 0x6d, 0x56, 0xac, 0x7c, 0xcb, 0xc3, 0x88, +0xda, 0xbb, 0xf6, 0x21, 0xb0, 0xc3, 0x0f, 0x49, +0x92, 0x20, 0x49, 0xc0, 0xfc, 0xd3, 0x85, 0xa2, +0xf6, 0xee, 0x7a, 0xc4, 0x38, 0x19, 0x58, 0xaa, +0xcd, 0x10, 0x45, 0x51, 0xb8, 0x74, 0xe9, 0xd2, +0x79, 0xc8, 0x1b, 0xa4, 0x31, 0xc8, 0x9d, 0xa9, +0x4d, 0xa1, 0x51, 0x29, 0xd7, 0xe0, 0xb4, 0x00, +0x24, 0x21, 0x23, 0x17, 0x03, 0xb0, 0xd8, 0xdd, +0xdd, 0xfd, 0x1f, 0x00, 0x24, 0x8b, 0xdf, 0x0c, +0x53, 0x89, 0x3c, 0x31, 0xca, 0xe5, 0xdb, 0xbf, +0xe8, 0xc7, 0xd7, 0x17, 0x6e, 0xe1, 0x27, 0x7f, +0xfe, 0x2f, 0x20, 0x04, 0x58, 0x78, 0xba, 0x60, +0x58, 0xee, 0x79, 0xb1, 0xad, 0xd1, 0x02, 0x42, +0x08, 0x86, 0x87, 0x87, 0x6f, 0x8c, 0x8e, 0x8e, +0x8e, 0x42, 0xbf, 0x4d, 0xae, 0x00, 0xa0, 0xaa, +0xbf, 0x0e, 0x80, 0xcc, 0x83, 0x5c, 0x47, 0xa8, +0x02, 0x70, 0xe7, 0xce, 0x9d, 0xc1, 0x89, 0x89, +0x89, 0x01, 0xca, 0x50, 0x94, 0xb4, 0x5a, 0xc1, +0x72, 0x14, 0x0c, 0xa3, 0xe7, 0xc1, 0x2b, 0x83, +0xe8, 0x7e, 0xbf, 0x1b, 0x1e, 0x9f, 0x1b, 0x80, +0x0c, 0x00, 0xcb, 0x32, 0xa8, 0xde, 0x56, 0xb5, +0xaa, 0x6c, 0xb1, 0xd9, 0xba, 0xd5, 0x0c, 0xae, +0xcc, 0x84, 0x74, 0x3a, 0x9d, 0x38, 0x7f, 0xfe, +0xfc, 0x79, 0x18, 0x27, 0x4b, 0xac, 0x5a, 0x0f, +0x18, 0xb9, 0xdc, 0x5c, 0x33, 0x58, 0xce, 0x20, +0xb9, 0x70, 0xf6, 0xec, 0xd9, 0x9f, 0x2e, 0x2f, +0x2f, 0xcf, 0x33, 0x4e, 0x06, 0xd6, 0x1d, 0x56, +0x50, 0xca, 0x18, 0x72, 0x7d, 0x5b, 0x3d, 0x00, +0x60, 0xcb, 0xae, 0x2d, 0xf8, 0xe3, 0xf7, 0x7f, +0x8c, 0x37, 0xfe, 0xf2, 0xb7, 0xf3, 0x96, 0x2d, +0x06, 0x73, 0x5e, 0x0e, 0x96, 0x06, 0x33, 0x00, +0x48, 0xdd, 0xdd, 0xdd, 0x1f, 0x06, 0x83, 0xc1, +0x71, 0x00, 0x8b, 0x19, 0x00, 0x56, 0xf2, 0xf5, +0xfe, 0x7a, 0x00, 0x68, 0xb5, 0x20, 0x0a, 0x20, +0x3c, 0x37, 0x37, 0x37, 0xf1, 0xe1, 0x87, 0x1f, +0xfe, 0x83, 0x20, 0x08, 0x3c, 0x57, 0x69, 0x82, +0xa5, 0xde, 0x6c, 0xa8, 0x8a, 0x75, 0xad, 0x75, +0x00, 0x80, 0xc0, 0x4e, 0x3f, 0x1c, 0x65, 0x0e, +0xd8, 0xdd, 0x76, 0xd8, 0x9d, 0xf6, 0xe7, 0xa2, +0xf6, 0xa6, 0x12, 0x16, 0xd6, 0x5d, 0x66, 0x50, +0x86, 0xa2, 0xaf, 0xaf, 0xef, 0x17, 0xdd, 0xdd, +0xdd, 0x57, 0xb1, 0x46, 0x96, 0x48, 0xae, 0xb0, +0xba, 0x51, 0x20, 0xe3, 0x0c, 0x95, 0x5d, 0x13, +0x65, 0x4a, 0x9c, 0x40, 0x36, 0x54, 0xce, 0x0d, +0x0d, 0x0d, 0xdd, 0xff, 0xec, 0xb3, 0xcf, 0x7e, +0x7a, 0xf2, 0xe4, 0xc9, 0x1f, 0x9a, 0x1b, 0x4c, +0x84, 0x82, 0x22, 0x3d, 0x99, 0x0d, 0x6a, 0x38, +0xbd, 0x4e, 0xb8, 0x7d, 0x2e, 0x00, 0x40, 0x62, +0x39, 0x81, 0x47, 0xdf, 0x8c, 0xe2, 0xe1, 0xd7, +0x23, 0x10, 0x92, 0x42, 0xd1, 0x1d, 0x22, 0x2d, +0x21, 0xe0, 0x76, 0xb1, 0x20, 0x26, 0x82, 0xb1, +0xb1, 0xb1, 0x81, 0x0f, 0x3e, 0xf8, 0xe0, 0x1c, +0xe4, 0x34, 0x19, 0x45, 0xfd, 0xd7, 0xec, 0xfd, +0x55, 0x00, 0x68, 0x40, 0x00, 0xb2, 0x66, 0x40, +0x32, 0x15, 0x29, 0xd1, 0x62, 0xa6, 0xa7, 0xa7, +0xe7, 0xaa, 0xd7, 0xeb, 0x2d, 0xef, 0xec, 0xec, +0x3c, 0xc5, 0x6d, 0x63, 0x09, 0xe3, 0xa0, 0x48, +0x0f, 0x0b, 0x80, 0x08, 0xf8, 0xb6, 0x78, 0x31, +0xd0, 0x7d, 0x17, 0x23, 0x37, 0x1f, 0x61, 0x72, +0x68, 0x52, 0x9d, 0xe4, 0x10, 0x14, 0x67, 0x92, +0xa3, 0x0a, 0x5f, 0x4e, 0xc1, 0x36, 0x51, 0x10, +0x86, 0x20, 0x18, 0x0c, 0x8e, 0xbd, 0xfb, 0xee, +0xbb, 0xff, 0x88, 0xd5, 0xe9, 0x31, 0xda, 0x44, +0x29, 0xc3, 0x14, 0x99, 0x82, 0x92, 0xa4, 0x4e, +0x9c, 0x38, 0x71, 0xac, 0xab, 0xab, 0xeb, 0x0d, +0x93, 0xc9, 0xc4, 0x49, 0x51, 0x09, 0xe9, 0x21, +0x01, 0x52, 0xb2, 0x68, 0x32, 0xe6, 0x25, 0x66, +0x0b, 0x05, 0x13, 0x90, 0xc1, 0x1c, 0x1e, 0x1e, +0xee, 0x7b, 0xe7, 0x9d, 0x77, 0xde, 0xe3, 0x79, +0xbe, 0x78, 0x49, 0x52, 0xc0, 0xc6, 0xd3, 0xe4, +0xf6, 0xee, 0xdd, 0xdb, 0x7a, 0xe6, 0xcc, 0x99, +0x1f, 0xd9, 0xed, 0x76, 0x37, 0x04, 0x40, 0x9c, +0x94, 0x20, 0x4e, 0x49, 0x39, 0xa3, 0x6d, 0x71, +0x88, 0x78, 0x08, 0x68, 0x1d, 0x01, 0xb1, 0x03, +0x92, 0x24, 0x89, 0xd7, 0xaf, 0x5f, 0xff, 0xf4, +0xec, 0xd9, 0xb3, 0xc5, 0x4f, 0x93, 0x53, 0x5f, +0x6e, 0x30, 0x51, 0xb2, 0xb2, 0xb2, 0x72, 0xcb, +0x9b, 0x6f, 0xbe, 0xf9, 0xfb, 0xb5, 0xb5, 0xb5, +0x72, 0xb4, 0x23, 0x09, 0x88, 0xe3, 0x12, 0xc4, +0x59, 0x18, 0xb8, 0x9d, 0x4d, 0x08, 0x5e, 0x02, +0x59, 0x70, 0x79, 0x74, 0x45, 0x3c, 0x1e, 0x5f, +0xfa, 0xe4, 0x93, 0x4f, 0x7e, 0xd6, 0xd3, 0xd3, +0xf3, 0x15, 0xe4, 0x24, 0xc9, 0x79, 0xc8, 0x5e, +0xdf, 0x28, 0x17, 0x60, 0x73, 0x89, 0x92, 0x6a, +0x81, 0xfc, 0xa9, 0xb2, 0x36, 0xc8, 0xa9, 0x33, +0x6a, 0xaa, 0xec, 0x91, 0x23, 0x47, 0xda, 0xbb, +0xba, 0xba, 0x4e, 0x95, 0x95, 0x95, 0xc9, 0xf1, +0xef, 0x14, 0x20, 0x2d, 0xc8, 0xcd, 0x93, 0x96, +0xf0, 0x6c, 0x60, 0xd8, 0x00, 0x52, 0x2a, 0x33, +0x4a, 0xe4, 0x47, 0xc9, 0x64, 0x32, 0xd1, 0xd7, +0xd7, 0xf7, 0xc5, 0xc7, 0x1f, 0x7f, 0x7c, 0x29, +0x1e, 0x8f, 0x2b, 0xa9, 0xb2, 0x8b, 0xd0, 0xcf, +0xf8, 0x8a, 0x97, 0x2a, 0x9b, 0x07, 0x84, 0x7c, +0xc9, 0xd2, 0x2e, 0xc8, 0xa6, 0xe1, 0x39, 0x7d, +0xfa, 0xf4, 0xa1, 0x43, 0x87, 0x0e, 0x9d, 0x70, +0x3a, 0x9d, 0x6a, 0xb2, 0x34, 0x84, 0x4c, 0x53, +0x79, 0x40, 0x4a, 0x92, 0xec, 0x89, 0x00, 0x11, +0xea, 0x29, 0x02, 0x62, 0x96, 0xe4, 0xdf, 0x4e, +0xc8, 0x10, 0x67, 0x28, 0x9d, 0x4e, 0x27, 0x87, +0x86, 0x86, 0x6e, 0x7c, 0xf4, 0xd1, 0x47, 0x17, +0x82, 0xc1, 0xe0, 0x74, 0xa6, 0xa6, 0x25, 0x64, +0x93, 0x1f, 0x9e, 0x5f, 0xb2, 0xf4, 0x1a, 0x20, +0x68, 0x0f, 0x48, 0x28, 0x67, 0x04, 0x4a, 0x32, +0xcd, 0x77, 0x02, 0x70, 0xbc, 0xf8, 0xe2, 0x8b, +0x4d, 0x1d, 0x1d, 0x1d, 0xed, 0x5b, 0xb7, 0x6e, +0xdd, 0xe9, 0xf1, 0x78, 0x9e, 0x29, 0x5d, 0x9e, +0xe7, 0xf9, 0xf8, 0x93, 0x27, 0x4f, 0xbe, 0x1d, +0x1c, 0x1c, 0xec, 0xbf, 0x72, 0xe5, 0x4a, 0x7f, +0x2c, 0x16, 0x53, 0x9c, 0x9b, 0xd2, 0xdb, 0xbf, +0xbe, 0x74, 0x79, 0xb5, 0xf0, 0xda, 0x07, 0x26, +0x14, 0x8d, 0x30, 0x3c, 0x30, 0xd1, 0xdc, 0xdc, +0x5c, 0xb3, 0x77, 0xef, 0xde, 0x66, 0xa7, 0xd3, +0xe9, 0x71, 0x38, 0x1c, 0x2e, 0x9b, 0xcd, 0xe6, +0xb4, 0xdb, 0xed, 0x0e, 0x96, 0x65, 0xd9, 0x78, +0x3c, 0x1e, 0x8b, 0xc5, 0x62, 0x91, 0xe5, 0xe5, +0xe5, 0x48, 0x34, 0x1a, 0x0d, 0x4f, 0x4e, 0x4e, +0x4e, 0x5d, 0xbd, 0x7a, 0xf5, 0x41, 0x2a, 0x95, +0x5a, 0xeb, 0xc0, 0x84, 0x56, 0xf0, 0x55, 0x49, +0x91, 0x45, 0x3f, 0x30, 0x91, 0x03, 0x02, 0xb0, +0xf9, 0x23, 0x33, 0xda, 0x8d, 0x4a, 0x65, 0x62, +0xa0, 0x4c, 0xbc, 0xd4, 0x70, 0x1c, 0xb2, 0xc7, +0x65, 0x72, 0x39, 0xef, 0x91, 0x19, 0xac, 0xe1, +0xed, 0xf3, 0xca, 0xf3, 0x3f, 0x74, 0x68, 0x4a, +0x7b, 0x72, 0x0c, 0xd0, 0x4f, 0xbf, 0x15, 0x10, +0x7e, 0x2d, 0x87, 0xa6, 0x0a, 0x3a, 0x38, 0x59, +0xc0, 0xb1, 0xb9, 0xdc, 0xbd, 0xba, 0xdc, 0x95, +0xa8, 0xc2, 0xeb, 0x1e, 0x9b, 0x43, 0x01, 0xc2, +0x03, 0x05, 0x02, 0x00, 0xe8, 0x40, 0x00, 0xf4, +0x1a, 0xa1, 0xdd, 0x69, 0xde, 0xc8, 0xc1, 0x49, +0x2d, 0xaf, 0x7b, 0x70, 0x12, 0x05, 0x0a, 0xae, +0x36, 0xf8, 0xff, 0xfb, 0xd1, 0xd9, 0xa2, 0x01, +0xa0, 0xab, 0xb4, 0x88, 0x87, 0xa7, 0x35, 0x57, +0xf9, 0xe6, 0x7f, 0xeb, 0xe1, 0xe9, 0xff, 0xab, +0xf4, 0xdf, 0x2a, 0xe5, 0xf7, 0xa0, 0x93, 0xbb, +0x74, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, +0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, }; + +#endif + diff --git a/source/bitmaps/misc/activitysleep.png b/source/bitmaps/misc/activitysleep.png new file mode 100644 index 0000000000000000000000000000000000000000..8c37ab6a54c88130cf1b23e03126c998b6b66d37 GIT binary patch literal 4174 zcmV-U5V7xxP)m zY+2q|vSjOFNu(r7Bt>yZ&P;y{XE;L*C0V4mEqZ{1;mlm#x#zp*oO|!N=MqVh@H~kS zLh`*bc($rB(sOPg`#dVm5t`(=<|9da&Bd?SfRJLo&vpzV1@U_QeM04temBJ)fEM9~Zp8Etr05S|HujPMF8J+Ab!BCrjBUBfm2 zwu*|1nwpxLW{bsAYOz?{9LG61j&o8#vvV#6k&5nfSurN@r}0BVk`r zzb}enYI=J5Mqgjw#b`A86hIijk_M1CvZj%K77*42AV+w`!C8>)aTkD60Hw{%&HGzg zT3)l;?NtC^N^tPZl*0409L_lxh`8PyC`&7jIKtKQ2v^Nx*&PD_2!g;*OiX-v>(;GL zd7hsIu#f>G0@*xPGC*t?gf#)kBfO&SE&v_?33=Etd8XD>aFb7~BvPNjNVM8F~1;9YDd4WJBw zHxLN49XN2{O^e0irfCZAa232GK2U)cEO;(OeM^|$If;aG1pvf{4K1iGAa+C^5DUPryCm^ zPZ2_hbHWW@fAurj_Q%Ftcw85+foKiHu#m zc=2tX=O-a+gBAqUF&Y7|Y93%<_e$?OG5~mY@811NOH0cs0Hkct3)e^~BuJ2GVe6B! zZKY^>wGqv)HNv;6LicWNcn%^J)qDF)3H;aUFtdLWZnwMs`0?XEx^Usb-(`eVSe+zg zWLpJ-4uG5~t}@mu9^VC^%n&(`wF%y4Z{BjV zBcWB_VInLldaE&WcnUtBukFZ@Bj3Mr<;q9MPMNhJh>D0>5R7JmMvl(`z~gi}{YQ@; z{R5N9WVTM(P%`Y&^~z?b^^M&)_~ZR+mRSxhBOZy%t;!*0nMK*{3M{-7L}O#)@uj7u zss8@{%P^iP>Xy`iVU;@dH$(1yCxFsp$BzBLX0w%bg@)(W ztiu%K;P{mblv2{ZulD*@o{=;(NzVHm=VT7VS-p+MEw(%p-LXgsfU~u=bzgaT`8JXw zFg-LwEWqg*QP1E0Cq94svUb%j`Lk+t3Go!Pr2AHfS zcz)gozWX?byK zYU&|mQ|2<|sOdoCx@DdWjzfR|k>np5g*g$dkAc_g-2xc^B_gd0$s3IVsu{T5 z?s7^g1YU%=hRtn;eDyx;JH8iR{d+GKgG=(Wx(axzJgdrzf{5X7M$q4L2X}e~5S|HV zTbqYOo`O;eo6Y7z9^nBHqftN&dO92q4k4D}A7zvm7Hz8pYoaarHebtugf5JF(JTAj!WpSv@qGXdqQ6k1RapRM((f7q|3|_kreud8# ze#X%!%?qHEDgfw)KW#Y{df|0kQc~g~gdmkjZ(0Ms`@7%4cYf=r;k)UvXu60}2_c|Vwk1NzrueJRZs_U^P6XB8(@$n~WkIm%?-;St z_O*z`8r#zGczlTv0+XEuWi~eh8of7);A9A)i6A~d+YLw({`BwP%78Ju>3Y{A*2aJk z0-ooWk+X-WE0?)yK~M?{Dgag!7|LwAF@JUDudx!7H#%Pbqf_eh;CQH@def`u~=WX7zb!JOq|y(bCb3iY*nm@~{83>2Kr` zXET9Piexew!RpYM3PkQaK(|X94u|InAz*DR7^d)^ve+%yvLhgWNDy)8^dap3jh9gB z^I&>x2EY9IwSvE)kjZWWAq4Swdr&rU)Ox|1ScpP#0xgybGbp79g+foTdOO`v1GMU&0+5WwVv$fN z^r)(;s@Ya$#mac1phh*dH|2fDm>5*}D-fCp74!`NAS{8U+zbhlc=P7XKF9%5?Z#;~ zDlAEol4ha+pd=|I0IZCSjoq!OscE)WT9BN~v-;W~HSXKK>e+H6j{Db#aPR6pECrW} z;uOt34wRvoo12@Mo12@%Y5-Ia@@YUa^QZW&TerUH?Cku$xtyac$3RMNZb@u+*-^Ds zUeibBqqu)<5cht0AEN`KI<;rk8Mik=)=D!7A$a`w@m8HcA;VKR#1i_xspUYk^rR)CLT;;;=!aWG@;0wKUyH!8?B%W#pB112gb(6 zo*yViH$z=4s<%F1o_ZC0#&%fpD;yY?Zl!w*T4AW6Xd(}kk; z?s~*H8Ca^#5JgeAbm`K0$Qz_F$epQ8p;0N<;IsfFAtM(9u-M(*{T~1%i{A`Wi99jN z<=emL$JZBb;U|CoFCYY1c)DO%?s>7T(E>sUhKGl5jE;_uLcdL}0HCVB4uH&qTt}z^ zaOcjQ!HJ290m@L6v|7P(6bz&1!7GF4e!m+YpBsP-0LwC{-d44$Y_Zw8)eNr8gmgNc zIDh{9c^D^4tXdBkx!hbcSk551aQ5ukpDr&i&ofR2)*V(*${2EeTRi|^%dRc>OPPlz806=0nfk)qr z;^EgL5RyXC9U?6u;C8VfCW5iCv4Iah_~0DmG#N$x*X;dO0BAq}vSvUs6)DkTrl+Up zs@Ll+@9gY6#cg8=A zLOJiIQr8{Hd}w$f+}Gs_c;?N7}o(x=xjqmC5n%6d*0g z&6Ae!Y+%>`QYte_T! z^r1tC4xMm1oocc)giKR;KuVJAi2xDmDFR}aG61;DP5lD`S_D3Pre-- z9PGbx_W~bBXaX1_%y(NHiJ^PfkuwUA=nsK`ND6>%fFo@Ks5XML#f+0|K!5BQx5KN@Zf8 zOuW=^9J0q{ayjpj8LZ*$^UCu-bZAO@atzQHn+r Y-zw$zpp(0F@&Et;07*qoM6N<$g5z!16#xJL literal 0 HcmV?d00001 diff --git a/source/bitmaps/misc/emptyimage.cpp b/source/bitmaps/misc/emptyimage.cpp new file mode 100644 index 0000000..7d79d8f --- /dev/null +++ b/source/bitmaps/misc/emptyimage.cpp @@ -0,0 +1,28 @@ +#include + +#ifndef MISC_EMPTYIMAGE_CPP +#define MISC_EMPTYIMAGE_CPP + +static unsigned char misc_emptyimage_png[] = { +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, +0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x15, 0xc4, +0x89, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, +0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, +0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, +0x73, 0x00, 0x00, 0x03, 0x5e, 0x00, 0x00, 0x03, +0x5e, 0x01, 0xcb, 0x77, 0xab, 0x3d, 0x00, 0x00, +0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, +0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, +0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, +0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, +0xee, 0x3c, 0x1a, 0x00, 0x00, 0x00, 0x0d, 0x49, +0x44, 0x41, 0x54, 0x08, 0x99, 0x63, 0xf8, 0xff, +0xff, 0x3f, 0x03, 0x00, 0x08, 0xfc, 0x02, 0xfe, +0x85, 0xcd, 0xab, 0x34, 0x00, 0x00, 0x00, 0x00, +0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, +0x82, }; + +#endif + diff --git a/source/bitmaps/misc/emptyimage.png b/source/bitmaps/misc/emptyimage.png new file mode 100644 index 0000000000000000000000000000000000000000..163ac0b64fd16ad25d4fa43bfe278902290fe79c GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blmSQK*5Dp-y;YjHK@;M7UB8wRq znBzd0@pSoWTcDt1iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$Qb0w#o-U3d h95a)D{Qqyy%)s%7>0j&F)h0j*22WQ%mvv4FO#pQbC4c|` literal 0 HcmV?d00001 diff --git a/source/carddav/carddav.cpp b/source/carddav/carddav.cpp new file mode 100644 index 0000000..5a07c41 --- /dev/null +++ b/source/carddav/carddav.cpp @@ -0,0 +1,3636 @@ +#include "carddav.h" +#include "../version.h" +#include +#include +#include +#include +#include +#include +#include +#include "../vcard/vcard.h" +#include "../common/dirs.h" + +size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, wxString *stream){ + + wxString Data; + wxString *PageInput; + Data = wxString::FromUTF8((char *)ptr); + + stream->Append(Data); + + return size * nmemb; + +} + +struct UploadDataStruc{ + wxString *readptr; + long sizeleft; + int seek = 0; +}; + +int ProgressFunc(void *clientdata, double TTDown, double NDown, double TTUp, double NUp){ + + int ProgressRet; + + CardDAV *IncCardDAV = static_cast(clientdata); + ProgressRet = IncCardDAV->ProgressFuncProc(clientdata, TTDown, NDown, TTUp, NUp); + if (ProgressRet != 0){ + return 1; + } + return 0; + +} + +wxString CardDAV::ServerAddress; +int CardDAV::ServerPort; +wxString CardDAV::ServerUser; +wxString CardDAV::ServerPass; +wxString CardDAV::ServerPrefix; +wxString CardDAV::ServerAccount; +bool CardDAV::ServerSSL; +bool *CardDAV::ServerResult; +bool *CardDAV::ServerMonitor; +bool CardDAV::SSLStatus; +bool CardDAV::SSLVerified; +bool CardDAV::ValidResponse; +bool CardDAV::AuthPassed; +bool CardDAV::HasCalDAVSupport; +bool CardDAV::AbortConnection; +wxString CardDAV::ServerResponse; +wxString CardDAV::ServerMethod; +wxString CardDAV::ServerFilenameLocation; +wxString CardDAV::ServerUploadData; +wxString CardDAV::ETagData; +wxString CardDAV::ETagResult; +bool CardDAV::UploadMode; +bool CardDAV::EditMode; +long CardDAV::ItemIndex; +std::map *CardDAV::ActivityListPtr; +char CardDAV::curlerrbuffer[CURL_ERROR_SIZE]; +SSLCertCollection CardDAV::SSLCertCol; +int CardDAV::SSLErrorCode; +int CardDAV::ConnectionErrorCode; +wxString CardDAV::PageHeader; +wxString CardDAV::PageData; +CURLcode CardDAV::claconncode; +int CardDAV::HTTPErrorCode; +wxString CardDAV::ErrorMessage; + +CardDAV::CardDAV(){ + ServerPort = 8080; + SSLStatus = FALSE; + SSLVerified = FALSE; + AuthPassed = FALSE; + ValidResponse = FALSE; + HasCalDAVSupport = FALSE; + SSLCertCol.SuccessCode = 0; + + AbortConnection = FALSE; + UploadMode = FALSE; + EditMode = FALSE; + HTTPErrorCode = 0; +} + +CardDAV::~CardDAV(){ + +} + +size_t UploadReadFunc(void *ptr, size_t size, size_t nmemb, void *userdata){ + + struct UploadDataStruc *UploadPtr = (struct UploadDataStruc *)userdata; + + if (UploadPtr->sizeleft){ + + //MeepMoop->sizeleft--; + //return 1; + + UploadPtr->sizeleft--; + wxString wxSChar; + + wxSChar = UploadPtr->readptr->Mid(UploadPtr->seek,1); + + //*(char *)ptr = (char)wxSChar.mb_str(); + + strncpy((char *)ptr, (const char*)wxSChar.mb_str(wxConvUTF8), 1); + + UploadPtr->seek++; + + return 1; + + } + + return 0; + +} + +bool CardDAV::SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL){ + + ServerAddress = SvrAddress; + ServerPort = SvrPort; + ServerUser = SvrUser; + ServerPass = SvrPass; + ServerSSL = SvrSSL; + + return TRUE; + +} + +bool CardDAV::SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL, wxString SvrPrefix, wxString SvrAccount){ + + ServerAddress = SvrAddress; + ServerPort = SvrPort; + ServerUser = SvrUser; + ServerPass = SvrPass; + ServerSSL = SvrSSL; + ServerPrefix = SvrPrefix; + ServerAccount = SvrAccount; + + return TRUE; + +} + +bool CardDAV::SetupResultBools(bool *SvrResult, bool *SvrMonitor){ + + ServerResult = SvrResult; + ServerMonitor = SvrMonitor; + + return TRUE; + +} + +bool CardDAV::HasValidResponse(){ + + return ValidResponse; + +} + +bool CardDAV::CanDoCardDAV(){ + + return HasCalDAVSupport; + +} + +bool CardDAV::CanDoSSL(){ + + return SSLStatus; + +} + +bool CardDAV::SSLVerify(){ + + return SSLVerified; + +} + +bool CardDAV::AbleToLogin(){ + + return AuthPassed; + +} + +/* + +size_t CardDAV::WritebackFunc(char *ptr, size_t size, size_t nmemb, FILE *stream){ + + wxString Data; + Data = wxString::FromUTF8((char *)ptr); + if ((bool)stream == TRUE){ + PageHeader.Append(Data); + } else { + PageData.Append(Data); + } + return size * nmemb; + +} + +*/ + +int CardDAV::ProgressFuncProc(void *clientdata, double TTUp, double NUp, double TTDown, double NDown){ + + if (AbortConnection == TRUE){ + + return -1; + + } else { + + return 0; + + } + +} + +void CardDAV::Abort(){ + + AbortConnection = TRUE; + +} + +bool CardDAV::Connect(){ + + PageData.Clear(); + PageHeader.Clear(); + + SSLStatus = TRUE; + AuthPassed = TRUE; + AbortConnection = FALSE; + + CURL *conn; + CURLcode conncode; + wxString ServerAddressURL; + wxString ServerAuth; + wxString ServerAddressSSL; + wxString ServerAddressNormal; + + conn = curl_easy_init(); + + struct CardDAVCURLPasser { + + CardDAV *Data; + bool HeaderMode = TRUE; + + } CardDAVHeader, CardDAVFooter; + + CardDAVHeader.Data = this; + CardDAVHeader.HeaderMode = TRUE; + + CardDAVFooter.Data = this; + CardDAVFooter.HeaderMode = FALSE; + + wxString Data1; + wxString Data2; + + ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + ServerAddressSSL = wxT("https://") + ServerAddressURL; + ServerAddressNormal = wxT("http://") + ServerAddressURL; + + ServerAuth = ServerUser + wxT(":") + ServerPass; + + // Try SSL first. + + + /* + char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)]; + //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1)); + + char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)]; + //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1)); + + char *ServerAuthChar = new char[(ServerAuth.Length() - 1)]; + //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1)); + + */ + + if (ServerSSL){ + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_CERTINFO, 1); + + conncode = (curl_easy_perform(conn)); + + union { + struct curl_slist *certdata; + struct curl_certinfo *certinfo; + } ptr; + + ptr.certdata = NULL; + + curl_easy_getinfo(conn, CURLINFO_CERTINFO, &ptr.certdata); + + if (conncode == CURLE_OK){ + + *ServerResult = TRUE; + AuthPassed = TRUE; + SSLStatus = TRUE; + return TRUE; + + } else if (conncode == CURLE_HTTP_RETURNED_ERROR){ + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + ErrorMessage = wxString::Format(wxT("%s"), curl_easy_strerror(conncode)); + + *ServerResult = TRUE; + ValidResponse = FALSE; + AuthPassed = FALSE; + SSLStatus = TRUE; + return TRUE; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + ErrorMessage = wxString::Format(wxT("%s"), curl_easy_strerror(conncode)); + + *ServerResult = FALSE; + return FALSE; + + } + + } else { + + // No SSL. + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + conncode = (curl_easy_perform(conn)); + + if (conncode == CURLE_OK){ + + // Process the server header response and look for + // 'addressbook' within the DAV header. + + wxStringTokenizer wxSHeaderLines(PageHeader, wxT("\r\n")); + wxString wxSHeaderLine; + std::map DAVHeaderLines; + + while (wxSHeaderLines.HasMoreTokens()){ + + wxSHeaderLine = wxSHeaderLines.GetNextToken(); + + if (wxSHeaderLine.Mid(0, 4) == wxT("DAV:")){ + + // Look for address book in the line. + + if (wxSHeaderLine.Find(wxT("addressbook")) != wxNOT_FOUND){ + + HasCalDAVSupport = TRUE; + + } + + } + + } + + *ServerResult = TRUE; + ValidResponse = TRUE; + AuthPassed = TRUE; + SSLStatus = FALSE; + return TRUE; + + } else if (conncode == CURLE_HTTP_RETURNED_ERROR){ + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + *ServerResult = TRUE; + ValidResponse = FALSE; + AuthPassed = FALSE; + SSLStatus = FALSE; + return TRUE; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + *ServerResult = FALSE; + return FALSE; + + } + + // TODO: Double check and make sure HTTP Authentication is possible. + + } + + *ServerResult = TRUE; + return TRUE; + +} + +void CardDAV::GetSSLResults(){ + + + +} + +void CardDAV::ProcessDataThread(){ + + PageData.Clear(); + PageHeader.Clear(); + + SSLStatus = TRUE; + AuthPassed = TRUE; + AbortConnection = FALSE; + + CURL *conn; + CURLcode conncode; + wxString ServerAddressURL; + wxString ServerAuth; + wxString ServerAddressSSL; + wxString ServerAddressNormal; + + conn = curl_easy_init(); + + struct CardDAVCURLPasser { + + CardDAV *Data; + bool HeaderMode = TRUE; + + } CardDAVHeader, CardDAVFooter; + + CardDAVHeader.Data = this; + CardDAVHeader.HeaderMode = TRUE; + + CardDAVFooter.Data = this; + CardDAVFooter.HeaderMode = FALSE; + + wxString Data1; + wxString Data2; + + wxString ETag; + wxString ETagOriginal; + wxString ETagServer; + + ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation; + ServerAddressSSL = wxT("https://") + ServerAddressURL; + ServerAddressNormal = wxT("http://") + ServerAddressURL; + + ServerAuth = ServerUser + wxT(":") + ServerPass; + + // Try SSL first. + + + /* + char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)]; + //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1)); + + char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)]; + //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1)); + + char *ServerAuthChar = new char[(ServerAuth.Length() - 1)]; + //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1)); + + */ + + //std::string WriteDataString = std::string(ServerUploadData.mb_str()); + + std::map::iterator ActIter; + struct UploadDataStruc UploadData; + + + ActIter = ActivityListPtr->find(ItemIndex); + + // Update result flag. + + ActIter->second = 1; + + // Setup the request mode if it is not empty. + + if (!ServerMethod.IsEmpty()){ + + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, (const char*)ServerMethod.mb_str(wxConvUTF8)); + + } + + if (ServerSSL){ + + wxString ServerCertFilename; + bool MatchingCert = FALSE; + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + if (UploadMode == TRUE){ + + UploadData.readptr = &ServerUploadData; + UploadData.sizeleft = ServerUploadData.Len(); + curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + } + + ServerCertFilename = GetAccountDir(ServerAccount, TRUE); + + if (wxFile::Exists(ServerCertFilename) == TRUE){ + + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1); + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2); + curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8)); + + } + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc); + + claconncode = (curl_easy_perform(conn)); + + // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without + // the local certificate in use. + + if (claconncode == CURLE_PEER_FAILED_VERIFICATION){ + + curl_easy_cleanup(conn); + conn = curl_easy_init(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + if (UploadMode == TRUE){ + + UploadData.readptr = &ServerUploadData; + UploadData.sizeleft = ServerUploadData.Len(); + curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + } + + claconncode = (curl_easy_perform(conn)); + + // If claconncode is CURLE_OK then delete the certificate file as that + // is no longer needed. + + if (claconncode == CURLE_OK){ + + // Delete the certificate file. + + wxRemoveFile(ServerCertFilename); + + } + + } + + // Check if it fails with a CURLE_SSL_CACERT then compare + // the certificates as PEM files. + + if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){ + + //curl_easy_cleanup(conn); + //conn = curl_easy_init(); + + CURL *sslerrconn; + sslerrconn = curl_easy_init(); + CURLcode sslerrconncode; + + //claconncode = (curl_easy_perform(conn)); + + wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + + curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8)); + curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1); + + wxString SSLLocalData; + wxString SSLServerData; + + sslerrconncode = (curl_easy_perform(sslerrconn)); + + SSLCertCol = BuildSSLCollection(sslerrconn); + std::map::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0); + std::multimap::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert")); + + wxFFile SSLLocalFile; + +#if wxABI_VERSION < 20900 + SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r")); +#else + SSLLocalFile.Open(ServerCertFilename, wxT("r")); +#endif + + // Load the recovery database for tasks not done. + + if (SSLLocalFile.IsOpened() == TRUE){ + + // Check if we are using wxWidgets version 2.8 or less and + // execute the required command accordingly. + + SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto()); + + + } + + SSLServerData = SSLDataIter->second; + + if (SSLLocalData == SSLServerData){ + + // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER + // and CURLOPT_SSL_VERIFYHOST off. + + curl_easy_cleanup(conn); + conn = curl_easy_init(); + + PageData.clear(); + PageHeader.clear(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + if (UploadMode == TRUE){ + + UploadData.readptr = &ServerUploadData; + UploadData.sizeleft = ServerUploadData.Len(); + curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + } + + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0); + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0); + + claconncode = (curl_easy_perform(conn)); + + MatchingCert = TRUE; + + } + + if (MatchingCert == FALSE){ + + claconncode = CURLE_SSL_CACERT; + return; + + } + + curl_easy_cleanup(sslerrconn); + + } + + // Sort out SSL error. + + // When SSL cert error occurs, connect again and fetch certificates. + // Display a message to the user explaining that an invalid + // certificate has been given and let the user decide what + // to do next. + + if (claconncode == CURLE_OK){ + + } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){ + + CURL *sslerrconn; + sslerrconn = curl_easy_init(); + CURLcode sslerrconncode; + + wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + + // Replace conn with sslerrconn! + + curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8)); + curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1); + + sslerrconncode = (curl_easy_perform(sslerrconn)); + + SSLCertCol = BuildSSLCollection(sslerrconn); + SSLCertCol.SuccessCode = 1; + + return; + + } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){ + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %d\n", http_code); + + return; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %d\n", http_code); + + return; + + } + + } else { + + // No SSL. + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + if (UploadMode == TRUE){ + + UploadData.readptr = &ServerUploadData; + UploadData.sizeleft = ServerUploadData.Len(); + curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + } + + conncode = (curl_easy_perform(conn)); + + if (conncode == CURLE_OK){ + + // Process the server header response and look for + // 'addressbook' within the DAV header. + + wxStringTokenizer wxSHeaderLines(PageHeader, wxT("\r\n")); + wxString wxSHeaderLine; + std::map DAVHeaderLines; + + while (wxSHeaderLines.HasMoreTokens()){ + + wxSHeaderLine = wxSHeaderLines.GetNextToken(); + + if (wxSHeaderLine.Mid(0, 5) == wxT("ETag:")){ + + ETagData = wxSHeaderLine.Mid(5); + ETagData.Trim(); + ETagData.Trim(FALSE); + + // Check for commas. + + if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){ + + ETagData.Remove(0, 1); + ETagData.RemoveLast(); + + } + + } + + if (wxSHeaderLine.Mid(0, 4) == wxT("DAV:")){ + + // Look for address book in the line. + + if (wxSHeaderLine.Find(wxT("addressbook")) != wxNOT_FOUND){ + + HasCalDAVSupport = TRUE; + + } + + } + + } + + // Get the ETag from the header. + + if (UploadMode == TRUE){ + + wxString PageHeaderLine; + + wxStringTokenizer PageHeaderSplit(PageHeader, wxT("\r\n")); + + if (PageHeaderSplit.HasMoreTokens()){ + + PageHeaderLine = PageHeaderSplit.GetNextToken(); + + } + + } + + ActIter->second = 4; + return; + + } else if (conncode == CURLE_HTTP_RETURNED_ERROR){ + + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode); + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n", + GetHTTPCode()); + + ActIter->second = 2; + return; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + ActIter->second = 2; + return; + + } + + } + + /* + + } + + */ + + // Connection was successful + /* + + if (conn){ + + wxString ServerAddressURL; + + // Try secure connection first. + + + + + ServerAddressURL = wxT("http://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + + ServerAddressURL.Trim(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressURL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, NULL); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, NULL); + + + conncode = (curl_easy_perform(conn)); + + if (conncode == CURLE_OK){ + *ServerResult = TRUE; + return TRUE; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + *ServerResult = FALSE; + return FALSE; + } + + // Failed. So use unsecure connection. + UseSSL = FALSE; + + ServerAddress = wxT("http://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort); + + curl_easy_setopt(conn, CURLOPT_URL, ServerAddress.c_str()); + + conncode = (curl_easy_perform(conn)); + + if (conncode != CURLE_OK){ + *ServerResult = FALSE; + return FALSE; + } else { + *ServerResult = TRUE; + return TRUE; + } + + } else { + + *ServerResult = FALSE; + return FALSE; + + } + + */ + + // Catch all. + + ActIter->second = 1; + *ServerResult = TRUE; + return; + +} + +void CardDAV::ProcessData(){ + + std::thread ConnectThread(&CardDAV::ProcessDataThread, this); + ConnectThread.detach(); + +} + +void CardDAV::SetServerFilename(wxString Filename){ + + ServerFilenameLocation = Filename; + +} + +void CardDAV::GetServerContactData() +{ + + PageData.Clear(); + PageHeader.Clear(); + + SSLStatus = TRUE; + AuthPassed = TRUE; + AbortConnection = FALSE; + + wxString ServerCertFilename; + bool MatchingCert = FALSE; + + CURL *conn; + CURLcode conncode; + wxString ServerAddressURL; + wxString ServerAuth; + wxString ServerAddressSSL; + wxString ServerAddressNormal; + + conn = curl_easy_init(); + + struct CardDAVCURLPasser { + + CardDAV *Data; + bool HeaderMode = TRUE; + + } CardDAVHeader, CardDAVFooter; + + CardDAVHeader.Data = this; + CardDAVHeader.HeaderMode = TRUE; + + CardDAVFooter.Data = this; + CardDAVFooter.HeaderMode = FALSE; + + wxString Data1; + wxString Data2; + + ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation; + ServerAddressSSL = wxT("https://") + ServerAddressURL; + ServerAddressNormal = wxT("http://") + ServerAddressURL; + + ServerAuth = ServerUser + wxT(":") + ServerPass; + + // Try SSL first. + + + /* + char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)]; + //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1)); + + char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)]; + //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1)); + + char *ServerAuthChar = new char[(ServerAuth.Length() - 1)]; + //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1)); + + */ + + //std::string WriteDataString = std::string(ServerUploadData.mb_str()); + + std::map::iterator ActIter; + struct UploadDataStruc UploadData; + + + ActIter = ActivityListPtr->find(ItemIndex); + + //ActIter->second = 1; + + /*wxString CardDAVDataQuery = wxT("\r\n"); + CardDAVDataQuery.Append(wxT("\r\n")); + CardDAVDataQuery.Append(wxT("\r\n")); + CardDAVDataQuery.Append(wxT("\r\n")); + CardDAVDataQuery.Append(wxT(" \r\n")); + CardDAVDataQuery.Append(wxT("\r\n")); + CardDAVDataQuery.Append(wxT(""));*/ + + if (ServerSSL){ + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + ServerCertFilename = GetAccountDir(ServerAccount, TRUE); + + if (wxFile::Exists(ServerCertFilename) == TRUE){ + + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1); + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2); + curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8)); + + } + + claconncode = (curl_easy_perform(conn)); + + // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without + // the local certificate in use. + + if (claconncode == CURLE_PEER_FAILED_VERIFICATION){ + + curl_easy_cleanup(conn); + conn = curl_easy_init(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + + claconncode = (curl_easy_perform(conn)); + + // If claconncode is CURLE_OK then delete the certificate file as that + // is no longer needed. + + if (claconncode == CURLE_OK){ + + // Delete the certificate file. + + wxRemoveFile(ServerCertFilename); + + } + + } + + // Check if it fails with a CURLE_SSL_CACERT then compare + // the certificates as PEM files. + + if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){ + + //curl_easy_cleanup(conn); + //conn = curl_easy_init(); + + CURL *sslerrconn; + sslerrconn = curl_easy_init(); + CURLcode sslerrconncode; + + //claconncode = (curl_easy_perform(conn)); + + wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1); + + wxString SSLLocalData; + wxString SSLServerData; + + sslerrconncode = (curl_easy_perform(sslerrconn)); + + SSLCertCol = BuildSSLCollection(sslerrconn); + std::map::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0); + std::multimap::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert")); + + wxFFile SSLLocalFile; + +#if wxABI_VERSION < 20900 + SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r")); +#else + SSLLocalFile.Open(ServerCertFilename, wxT("r")); +#endif + + // Load the recovery database for tasks not done. + + if (SSLLocalFile.IsOpened() == TRUE){ + + // Check if we are using wxWidgets version 2.8 or less and + // execute the required command accordingly. + + SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto()); + + + } + + SSLServerData = SSLDataIter->second; + + if (SSLLocalData == SSLServerData){ + + // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER + // and CURLOPT_SSL_VERIFYHOST off. + + curl_easy_cleanup(conn); + conn = curl_easy_init(); + + PageData.clear(); + PageHeader.clear(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0); + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0); + + claconncode = (curl_easy_perform(conn)); + + MatchingCert = TRUE; + + } + + if (MatchingCert == FALSE){ + + claconncode = CURLE_SSL_CACERT; + return; + + } + + curl_easy_cleanup(sslerrconn); + + } + + // Sort out SSL error. + + // When SSL cert error occurs, connect again and fetch certificates. + // Display a message to the user explaining that an invalid + // certificate has been given and let the user decide what + // to do next. + + if (claconncode == CURLE_OK){ + + } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){ + + CURL *sslerrconn; + sslerrconn = curl_easy_init(); + CURLcode sslerrconncode; + + wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + + // Replace conn with sslerrconn! + + curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8)); + curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1); + + sslerrconncode = (curl_easy_perform(sslerrconn)); + + SSLCertCol = BuildSSLCollection(sslerrconn); + SSLCertCol.SuccessCode = 1; + + return; + + } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){ + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %d\n", http_code); + + return; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %d\n", http_code); + + return; + + } + } else { + + // No SSL. + + wxString EmptyString; + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc); + + PageData.Clear(); + PageHeader.Clear(); + + conncode = (curl_easy_perform(conn)); + + if (conncode == CURLE_OK){ + + } else if (conncode == CURLE_HTTP_RETURNED_ERROR){ + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n", + GetHTTPCode()); + + return; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + return; + + } + + } + + return; + +} + +wxString CardDAV::GetPageData() +{ + + return PageData; + +} + +void CardDAV::GetServerETagValueThread() +{ + + PageData.Clear(); + PageHeader.Clear(); + + SSLStatus = TRUE; + AuthPassed = TRUE; + AbortConnection = FALSE; + + CURL *conn; + CURLcode conncode; + wxString ServerAddressURL; + wxString ServerAuth; + wxString ServerAddressSSL; + wxString ServerAddressNormal; + + conn = curl_easy_init(); + + struct CardDAVCURLPasser { + + CardDAV *Data; + bool HeaderMode = TRUE; + + } CardDAVHeader, CardDAVFooter; + + CardDAVHeader.Data = this; + CardDAVHeader.HeaderMode = TRUE; + + CardDAVFooter.Data = this; + CardDAVFooter.HeaderMode = FALSE; + + wxString Data1; + wxString Data2; + + ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation; + ServerAddressSSL = wxT("https://") + ServerAddressURL; + ServerAddressNormal = wxT("http://") + ServerAddressURL; + + ServerAuth = ServerUser + wxT(":") + ServerPass; + + // Try SSL first. + + + /* + char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)]; + //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1)); + + char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)]; + //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1)); + + char *ServerAuthChar = new char[(ServerAuth.Length() - 1)]; + //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); + strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1)); + + */ + + //std::string WriteDataString = std::string(ServerUploadData.mb_str()); + + std::map::iterator ActIter; + struct UploadDataStruc UploadData; + + + ActIter = ActivityListPtr->find(ItemIndex); + + static const char* query = + "" + "" + "" + //"" + //" " + //"" + "" + "" + ""; + + if (ServerSSL){ + + wxString ServerCertFilename; + bool MatchingCert = FALSE; + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); + + ServerCertFilename = GetAccountDir(ServerAccount, TRUE); + + if (wxFile::Exists(ServerCertFilename) == TRUE){ + + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1); + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2); + curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8)); + + } + + claconncode = (curl_easy_perform(conn)); + + // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without + // the local certificate in use. + + if (claconncode == CURLE_PEER_FAILED_VERIFICATION){ + + curl_easy_cleanup(conn); + conn = curl_easy_init(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); + + claconncode = (curl_easy_perform(conn)); + + // If claconncode is CURLE_OK then delete the certificate file as that + // is no longer needed. + + if (claconncode == CURLE_OK){ + + // Delete the certificate file. + + wxRemoveFile(ServerCertFilename); + + } + + } + + // Check if it fails with a CURLE_SSL_CACERT then compare + // the certificates as PEM files. + + if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){ + + //curl_easy_cleanup(conn); + //conn = curl_easy_init(); + + CURL *sslerrconn; + sslerrconn = curl_easy_init(); + CURLcode sslerrconncode; + + //claconncode = (curl_easy_perform(conn)); + + wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + + curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8)); + curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1); + + wxString SSLLocalData; + wxString SSLServerData; + + sslerrconncode = (curl_easy_perform(sslerrconn)); + + SSLCertCol = BuildSSLCollection(sslerrconn); + std::map::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0); + std::multimap::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert")); + + wxFFile SSLLocalFile; + +#if wxABI_VERSION < 20900 + SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r")); +#else + SSLLocalFile.Open(ServerCertFilename, wxT("r")); +#endif + + // Load the recovery database for tasks not done. + + if (SSLLocalFile.IsOpened() == TRUE){ + + // Check if we are using wxWidgets version 2.8 or less and + // execute the required command accordingly. + + SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto()); + + + } + + SSLServerData = SSLDataIter->second; + + if (SSLLocalData == SSLServerData){ + + // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER + // and CURLOPT_SSL_VERIFYHOST off. + + curl_easy_cleanup(conn); + conn = curl_easy_init(); + + PageData.clear(); + PageHeader.clear(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); + + claconncode = (curl_easy_perform(conn)); + + MatchingCert = TRUE; + + } + + if (MatchingCert == FALSE){ + + claconncode = CURLE_SSL_CACERT; + return; + + } + + curl_easy_cleanup(sslerrconn); + + } + + + + // Sort out SSL error. + + // When SSL cert error occurs, connect again and fetch certificates. + // Display a message to the user explaining that an invalid + // certificate has been given and let the user decide what + // to do next. + + if (claconncode == CURLE_OK){ + + } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){ + + CURL *sslerrconn; + sslerrconn = curl_easy_init(); + CURLcode sslerrconncode; + + wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + + // Replace conn with sslerrconn! + + curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8)); + curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1); + + sslerrconncode = (curl_easy_perform(sslerrconn)); + + SSLCertCol = BuildSSLCollection(sslerrconn); + SSLCertCol.SuccessCode = 1; + + return; + + } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){ + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %d\n", http_code); + + return; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %d\n", http_code); + + return; + + } + + } else { + + // No SSL. + + wxString EmptyString; + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); + + PageData.Clear(); + PageHeader.Clear(); + + conncode = (curl_easy_perform(conn)); + + if (conncode == CURLE_OK){ + + } else if (conncode == CURLE_HTTP_RETURNED_ERROR){ + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + return; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + return; + + } + + } + + xmlDocPtr xmlCardDAVDoc; + + xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0); + + xmlNodePtr nodeLevel1; + xmlNodePtr nodeLevel2; + xmlNodePtr nodeLevel3; + xmlNodePtr nodeLevel4; + xmlNodePtr nodeLevel5; + xmlNodePtr nodeLevel6; + + std::map xmlDataMap; + + wxString DataFilename; + wxString ETagData; + + std::string xmlStringSafe; + + // Tranverse through the catacombs of the response to get our ETag for the file. + + for (nodeLevel1 = xmlCardDAVDoc->children; + nodeLevel1 != NULL; + nodeLevel1 = nodeLevel1->next) + { + + for (nodeLevel2 = nodeLevel1->children; + nodeLevel2 != NULL; + nodeLevel2 = nodeLevel2->next) + { + + for (nodeLevel3 = nodeLevel2->children; + nodeLevel3 != NULL; + nodeLevel3 = nodeLevel3->next) + { + + bool HREFFound = FALSE; + bool ETagFound = FALSE; + + if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href") + ){ + + // Get the filename. + + for (nodeLevel4 = nodeLevel3->children; + nodeLevel4 != NULL; + nodeLevel4 = nodeLevel4->next) + { + + if (!xmlStrcmp(nodeLevel4->name, (const xmlChar *)"text") || + !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"d:text") || + !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"D:text") + ){ + + DataFilename = wxString::FromUTF8((const char*)nodeLevel4->content); + wxStringTokenizer wSTDFilename(DataFilename, wxT("/")); + + while (wSTDFilename.HasMoreTokens()){ + + DataFilename = wSTDFilename.GetNextToken(); + + } + + HREFFound = TRUE; + + } + + + + } + + } else { + + for (nodeLevel4 = nodeLevel3->children; + nodeLevel4 != NULL; + nodeLevel4 = nodeLevel4->next) + { + + for (nodeLevel5 = nodeLevel4->children; + nodeLevel5 != NULL; + nodeLevel5 = nodeLevel5->next) + { + + if (!xmlStrcmp(nodeLevel5->name, (const xmlChar *)"getetag") || + !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"d:getetag") || + !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"D:getetag") + ){ + + for (nodeLevel6 = nodeLevel5->children; + nodeLevel6 != NULL; + nodeLevel6 = nodeLevel6->next) + { + + // Strip the quotes from the ETag. + + ETagData = wxString::FromUTF8((const char*)nodeLevel6->content); + if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){ + + ETagData.Remove(0, 1); + ETagData.RemoveLast(); + + } + + ETagFound = TRUE; + + } + + } + + } + + } + + } + + if (HREFFound = TRUE && ETagFound == TRUE){ + + // Add to the map data. + + xmlDataMap.insert(std::make_pair(DataFilename, ETagData)); + + } + + // Reset the values. + + HREFFound = FALSE; + ETagFound = FALSE; + + } + + } + + + } + + xmlFreeDoc(xmlCardDAVDoc); + + // Get the first result. + + + for (std::map::iterator iter = xmlDataMap.begin(); + iter != xmlDataMap.end(); ++iter){ + + ETagResult = iter->second; + break; + + } + + if (ETagResult.IsEmpty()){ + + return; + + } + + return; + +} + +wxString CardDAV::ETagValueResult(){ + + return ETagResult; + +} + +void CardDAV::GetServerETagValue(){ + + std::thread ConnectThread(&CardDAV::GetServerETagValueThread, this); + ConnectThread.detach(); + +} + +void CardDAV::SetupData(wxString Method, wxString FilenameLocation, wxString UploadData){ + + ServerMethod = Method; + ServerFilenameLocation = FilenameLocation; + ServerUploadData = UploadData; + + // Check if ServerFilenameLocation has a / at + // the start and if not then append it. + + if (ServerFilenameLocation.Left(1) != wxT("/")){ + + // Not there so insert. + + ServerFilenameLocation = wxT("/") + ServerFilenameLocation; + + } + +} + +void CardDAV::SetupVariables(std::map *actlist, int actindex){ + + ActivityListPtr = actlist; + ItemIndex = actindex; + +} + +wxString CardDAV::GetETagData(){ + + return ETagData; + +} + +void CardDAV::SetUploadMode(bool IncMode){ + + UploadMode = IncMode; + +} + +void CardDAV::SetEditMode(bool EditModeInc){ + + EditMode = EditModeInc; + +} + +ContactListData CardDAV::GetContactList(wxString SyncTokenInc){ + + ContactListData ContactListFinal; + std::map ContactList; + + PageData.Clear(); + PageHeader.Clear(); + + SSLStatus = TRUE; + AuthPassed = TRUE; + AbortConnection = FALSE; + + CURL *conn; + CURLcode conncode; + wxString ServerAddressURL; + wxString ServerAuth; + wxString ServerAddressSSL; + wxString ServerAddressNormal; + + + conn = curl_easy_init(); + + struct CardDAVCURLPasser { + + CardDAV *Data; + bool HeaderMode = TRUE; + + } CardDAVHeader, CardDAVFooter; + + CardDAVHeader.Data = this; + CardDAVHeader.HeaderMode = TRUE; + + CardDAVFooter.Data = this; + CardDAVFooter.HeaderMode = FALSE; + + wxString Data1; + wxString Data2; + + ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + wxT("/"); + ServerAddressSSL = wxT("https://") + ServerAddressURL; + ServerAddressNormal = wxT("http://") + ServerAddressURL; + + ServerAuth = ServerUser + wxT(":") + ServerPass; + + // Load the sync token file (if it exists). + + wxCharBuffer SyncDataBuffer; + wxString SyncData; + + SyncData.Clear(); + + SyncTokenInc.Trim(); + + if (!SyncTokenInc.IsEmpty()){ + + SyncData = wxT("\n"); + SyncData.Append(wxT("\n")); + SyncData.Append(wxT("")); + //SyncData.Trim(); + //SyncData.Append(wxT("data:,00378c55-1f44-44a2-a255-84f6560b5cac_580")); + SyncData.Append(SyncTokenInc); + //SyncData.Trim(); + SyncData.Append(wxT("\n")); + SyncData.Append(wxT("1\n")); + SyncData.Append(wxT("\n")); + SyncData.Append(wxT(" \n")); + SyncData.Append(wxT("\n")); + SyncData.Append(wxT("")); + + SyncDataBuffer = SyncData.ToUTF8(); + + } else { + + SyncData = wxT("\n"); + SyncData.Append(wxT("\n")); + SyncData.Append(wxT("\n")); + SyncData.Append(wxT("1\n")); + SyncData.Append(wxT("\n")); + SyncData.Append(wxT(" \n")); + SyncData.Append(wxT("\n")); + SyncData.Append(wxT("\n")); + + SyncDataBuffer = SyncData.ToUTF8(); + + } + + //static const char* query = SyncData.mb_str(); + + /*char *query = "\n\ + \n\ + data:,00378c55-1f44-44a2-a255-84f6560b5cac_580\n\ + 1\n\ + \n\ + \n\ + \n\ + \n";*/ + const char* query = SyncDataBuffer.data(); + + // Try SSL first. + + std::map::iterator ActIter; + struct UploadDataStruc UploadData; + + ActIter = ActivityListPtr->find(ItemIndex); + + curl_slist *slist = NULL; + + slist = curl_slist_append(slist, "Depth: 1"); + + if (ServerSSL){ + + wxString ServerCertFilename; + bool MatchingCert = FALSE; + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist); + curl_easy_setopt(conn, CURLOPT_CERTINFO, 1); + + ServerCertFilename = GetAccountDir(ServerAccount, TRUE); + + if (wxFile::Exists(ServerCertFilename) == TRUE){ + + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1); + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2); + curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8)); + + } + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); + + claconncode = (curl_easy_perform(conn)); + + // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without + // the local certificate in use. + + if (claconncode == CURLE_PEER_FAILED_VERIFICATION){ + + curl_easy_cleanup(conn); + conn = curl_easy_init(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist); + curl_easy_setopt(conn, CURLOPT_CERTINFO, 1); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); + + claconncode = (curl_easy_perform(conn)); + + // If claconncode is CURLE_OK then delete the certificate file as that + // is no longer needed. + + if (claconncode == CURLE_OK){ + + // Delete the certificate file. + + wxRemoveFile(ServerCertFilename); + + } + + } + + // Check if it fails with a CURLE_SSL_CACERT then compare + // the certificates as PEM files. + + if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){ + + //curl_easy_cleanup(conn); + //conn = curl_easy_init(); + + CURL *sslerrconn; + sslerrconn = curl_easy_init(); + CURLcode sslerrconncode; + + //claconncode = (curl_easy_perform(conn)); + + wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + + curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8)); + curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1); + + wxString SSLLocalData; + wxString SSLServerData; + + sslerrconncode = (curl_easy_perform(sslerrconn)); + + SSLCertCol = BuildSSLCollection(sslerrconn); + std::map::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0); + std::multimap::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert")); + + wxFFile SSLLocalFile; + +#if wxABI_VERSION < 20900 + SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r")); +#else + SSLLocalFile.Open(ServerCertFilename, wxT("r")); +#endif + + // Load the recovery database for tasks not done. + + if (SSLLocalFile.IsOpened() == TRUE){ + + // Check if we are using wxWidgets version 2.8 or less and + // execute the required command accordingly. + + SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto()); + + + } + + SSLServerData = SSLDataIter->second; + + if (SSLLocalData == SSLServerData){ + + // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER + // and CURLOPT_SSL_VERIFYHOST off. + + curl_easy_cleanup(conn); + conn = curl_easy_init(); + + PageHeader.clear(); + PageData.clear(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist); + curl_easy_setopt(conn, CURLOPT_CERTINFO, 1); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0); + curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0); + + claconncode = (curl_easy_perform(conn)); + + MatchingCert = TRUE; + + } + + if (MatchingCert == FALSE){ + + claconncode = CURLE_SSL_CACERT; + return ContactListFinal; + + } + + curl_easy_cleanup(sslerrconn); + + } + + // Sort out SSL error. + + // When SSL cert error occurs, connect again and fetch certificates. + // Display a message to the user explaining that an invalid + // certificate has been given and let the user decide what + // to do next. + + if (claconncode == CURLE_OK){ + + } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){ + + CURL *sslerrconn; + sslerrconn = curl_easy_init(); + CURLcode sslerrconncode; + + wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + + // Replace conn with sslerrconn! + + curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8)); + curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1); + + sslerrconncode = (curl_easy_perform(sslerrconn)); + + SSLCertCol = BuildSSLCollection(sslerrconn); + SSLCertCol.SuccessCode = 1; + + return ContactListFinal; + + } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){ + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %d\n", http_code); + + return ContactListFinal; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %d\n", http_code); + + return ContactListFinal; + + } + + SSLCertCol = BuildSSLCollection(conn); + + } else { + + // No SSL. + + wxString EmptyString; + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT"); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist); + + //UploadData.readptr = &CardDAVDataQuery; + //UploadData.sizeleft = CardDAVDataQuery.Len(); + //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); + + PageData.Clear(); + PageHeader.Clear(); + + claconncode = (curl_easy_perform(conn)); + + if (claconncode == CURLE_OK){ + + + + } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){ + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %l\n", http_code); + + return ContactListFinal; + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(claconncode)); + long http_code = 0; + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code); + fprintf(stderr, "Error code was: %l\n", http_code); + + return ContactListFinal; + + } + + } + + xmlDocPtr xmlCardDAVDoc; + xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0); + + xmlNodePtr nodeLevel1; + xmlNodePtr nodeLevel2; + xmlNodePtr nodeLevel3; + xmlNodePtr nodeLevel4; + xmlNodePtr nodeLevel5; + xmlNodePtr nodeLevel6; + + xmlNodePtr nodeStatusLv1; + xmlNodePtr nodeStatusLv2; + + std::map xmlDataMap; + std::map ServerETagData; + + wxString DataFilename; + wxString DataSyncToken; + int DataFileStatus; + wxString ETagData; + bool SyncTokenFound = FALSE; + + std::string xmlStringSafe; + + // Tranverse through the catacombs of the response to get our ETag for the file and + // the server syncronisation token. + + // Start by getting all the server ETag data. + + for (nodeLevel1 = xmlCardDAVDoc->children; + nodeLevel1 != NULL; + nodeLevel1 = nodeLevel1->next) + { + + for (nodeLevel2 = nodeLevel1->children; + nodeLevel2 != NULL; + nodeLevel2 = nodeLevel2->next) + { + + printf("\t%s:%s\n", nodeLevel2->name, nodeLevel2->content); + + for (nodeLevel3 = nodeLevel2->children; + nodeLevel3 != NULL; + nodeLevel3 = nodeLevel3->next) + { + + DataFileStatus = 0; + bool HREFFound = FALSE; + bool ETagFound = FALSE; + bool HTTPStatus = FALSE; + + printf("\t\t%s:%s\n", nodeLevel3->name, nodeLevel3->content); + + if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href") + ){ + + // Get the filename. + + for (nodeLevel4 = nodeLevel3->children; + nodeLevel4 != NULL; + nodeLevel4 = nodeLevel4->next) + { + + if (!xmlStrcmp(nodeLevel4->name, (const xmlChar *)"text") || + !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"d:text") || + !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"D:text") + ){ + + DataFilename = wxString::FromUTF8((const char*)nodeLevel4->content); + wxStringTokenizer wSTDFilename(DataFilename, wxT("/")); + + while (wSTDFilename.HasMoreTokens()){ + + DataFilename = wSTDFilename.GetNextToken(); + + } + + HREFFound = TRUE; + + } + + + + } + + + } else { + + for (nodeLevel4 = nodeLevel3->children; + nodeLevel4 != NULL; + nodeLevel4 = nodeLevel4->next) + { + + for (nodeStatusLv1 = nodeLevel3->children; + nodeStatusLv1 != NULL; + nodeStatusLv1 = nodeStatusLv1->next) + { + + if (wxString::FromUTF8((const char*)nodeStatusLv1->content) == wxT("HTTP/1.1 404 Not Found")){ + + DataFileStatus = 2; + + HTTPStatus = TRUE; + + } + + if ((!xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"status") || + !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"d:status") || + !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status") && HTTPStatus == FALSE) + ){ + + // Get the filename. + + for (nodeStatusLv2 = nodeStatusLv1->children; + nodeStatusLv2 != NULL; + nodeStatusLv2 = nodeStatusLv2->next) + { + + if (!xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"text") || + !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"d:text") || + !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"D:text") + ){ + + if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 200 OK")){ + + DataFileStatus = 1; + + HTTPStatus = TRUE; + + // This is currently in a WebDAV draft and may hopefully be enabled when this changes. + + //} else if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 201 Created")){ + + // DataFileStatus = 0; + + } + + } + + + + } + + } + + + } + + for (nodeLevel5 = nodeLevel4->children; + nodeLevel5 != NULL; + nodeLevel5 = nodeLevel5->next) + { + + if (!xmlStrcmp(nodeLevel5->name, (const xmlChar *)"getetag") || + !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"d:getetag") || + !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"D:getetag") + ){ + + for (nodeLevel6 = nodeLevel5->children; + nodeLevel6 != NULL; + nodeLevel6 = nodeLevel6->next) + { + + // Strip the quotes from the ETag. + + ETagData = wxString::FromUTF8((const char*)nodeLevel6->content); + if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){ + + ETagData.Remove(0, 1); + ETagData.RemoveLast(); + + } + + ETagFound = TRUE; + + } + + } + + } + + } + + } + + if (HREFFound == TRUE && ETagFound == TRUE && HTTPStatus == TRUE){ + + // Add to the map data. + + FileSyncData SData; + + SData.ETagData = ETagData; + SData.DataFlag = DataFileStatus; + + ContactListFinal.ListData.insert(std::make_pair(DataFilename, SData)); + + } + + // Reset the values. + + HREFFound = FALSE; + ETagFound = FALSE; + HTTPStatus = FALSE; + + } + + if ((!xmlStrcmp(nodeLevel2->name, (const xmlChar *)"sync-token") || + !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"d:sync-token") || + !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"D:sync-token")) && + SyncTokenFound == FALSE + ){ + + for (nodeLevel3 = nodeLevel2->children; + nodeLevel3 != NULL; + nodeLevel3 = nodeLevel3->next) + { + + if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"text") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:text") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:text") + ){ + + DataSyncToken = wxString::FromUTF8((const char*)nodeLevel3->content); + + SyncTokenFound = TRUE; + + } + + } + + } + + } + + } + + for (nodeLevel1 = xmlCardDAVDoc->children; + nodeLevel1 != NULL; + nodeLevel1 = nodeLevel1->next) + { + + for (nodeLevel2 = nodeLevel1->children; + nodeLevel2 != NULL; + nodeLevel2 = nodeLevel2->next) + { + + printf("\t%s:%s\n", nodeLevel2->name, nodeLevel2->content); + + DataFileStatus = 0; + bool HREFFound = FALSE; + bool ETagFound = FALSE; + bool HTTPStatus = FALSE; + + for (nodeLevel3 = nodeLevel2->children; + nodeLevel3 != NULL; + nodeLevel3 = nodeLevel3->next) + { + + printf("\t\t%s:%s\n", nodeLevel3->name, nodeLevel3->content); + + if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href") + ){ + + // Get the filename. + + for (nodeLevel4 = nodeLevel3->children; + nodeLevel4 != NULL; + nodeLevel4 = nodeLevel4->next) + { + + if (!xmlStrcmp(nodeLevel4->name, (const xmlChar *)"text") || + !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"d:text") || + !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"D:text") + ){ + + DataFilename = wxString::FromUTF8((const char*)nodeLevel4->content); + wxStringTokenizer wSTDFilename(DataFilename, wxT("/")); + + while (wSTDFilename.HasMoreTokens()){ + + DataFilename = wSTDFilename.GetNextToken(); + + } + + HREFFound = TRUE; + + } + + + + } + + + } else { + + for (nodeLevel4 = nodeLevel3->children; + nodeLevel4 != NULL; + nodeLevel4 = nodeLevel4->next) + { + + for (nodeStatusLv1 = nodeLevel3->children; + nodeStatusLv1 != NULL; + nodeStatusLv1 = nodeStatusLv1->next) + { + + if (wxString::FromUTF8((const char*)nodeStatusLv1->content) == wxT("HTTP/1.1 404 Not Found")){ + + DataFileStatus = 2; + + HTTPStatus = TRUE; + + } + + if ((!xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"status") || + !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"d:status") || + !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status") && HTTPStatus == FALSE) + ){ + + // Get the filename. + + for (nodeStatusLv2 = nodeStatusLv1->children; + nodeStatusLv2 != NULL; + nodeStatusLv2 = nodeStatusLv2->next) + { + + if (!xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"text") || + !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"d:text") || + !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"D:text") + ){ + + if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 200 OK")){ + + DataFileStatus = 1; + + HTTPStatus = TRUE; + + // This is currently in a WebDAV draft and may hopefully be enabled when this changes. + + //} else if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 201 Created")){ + + // DataFileStatus = 0; + + } + + } + + + + } + + } + + + } + + for (nodeLevel5 = nodeLevel4->children; + nodeLevel5 != NULL; + nodeLevel5 = nodeLevel5->next) + { + + if (!xmlStrcmp(nodeLevel5->name, (const xmlChar *)"getetag") || + !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"d:getetag") || + !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"D:getetag") + ){ + + for (nodeLevel6 = nodeLevel5->children; + nodeLevel6 != NULL; + nodeLevel6 = nodeLevel6->next) + { + + // Strip the quotes from the ETag. + + ETagData = wxString::FromUTF8((const char*)nodeLevel6->content); + if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){ + + ETagData.Remove(0, 1); + ETagData.RemoveLast(); + + } + + ETagFound = TRUE; + + } + + } + + } + + } + + } + + } + + if (HREFFound == TRUE && HTTPStatus == TRUE && DataFileStatus == 2){ + + FileSyncData SData; + + SData.ETagData = wxT(""); + SData.DataFlag = DataFileStatus; + + ContactListFinal.ListData.insert(std::make_pair(DataFilename, SData)); + + } + + if (HREFFound == TRUE && ETagFound == TRUE && HTTPStatus == TRUE){ + + // Add to the map data. + + FileSyncData SData; + + SData.ETagData = ETagData; + SData.DataFlag = DataFileStatus; + + ContactListFinal.ListData.insert(std::make_pair(DataFilename, SData)); + + } + + // Reset the values. + + HREFFound = FALSE; + ETagFound = FALSE; + HTTPStatus = FALSE; + DataFilename.Clear(); + + if ((!xmlStrcmp(nodeLevel2->name, (const xmlChar *)"sync-token") || + !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"d:sync-token") || + !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"D:sync-token")) && + SyncTokenFound == FALSE + ){ + + for (nodeLevel3 = nodeLevel2->children; + nodeLevel3 != NULL; + nodeLevel3 = nodeLevel3->next) + { + + if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"text") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:text") || + !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:text") + ){ + + DataSyncToken = wxString::FromUTF8((const char*)nodeLevel3->content); + + SyncTokenFound = TRUE; + + } + + } + + } + + } + + } + + // Get the sync token. + + if (SyncTokenFound == TRUE){ + + ContactListFinal.SyncToken = DataSyncToken; + + } else { + + } + + SleepFor(2000000000); + + /*timespec n1, n2; + + n1.tv_sec = 0; + n1.tv_nsec = 2000000000L; + + nanosleep(&n1, &n2);*/ + + xmlFreeDoc(xmlCardDAVDoc); + curl_easy_cleanup(conn); + + SyncDataBuffer.reset(); + + // Get the first result. + + return ContactListFinal; + +} + +int CardDAV::GetResultCode(){ + + return (int)claconncode; + +} + +int CardDAV::GetHTTPCode(){ + + return HTTPErrorCode; + +} + +wxString CardDAV::GetErrorBuffer(){ + + wxString ErrorBuffer = wxString::FromUTF8(curlerrbuffer); + + return ErrorBuffer; + +} + +wxString CardDAV::GetDefaultAddressBookURL(){ + + // First: Get the principal UID address. + + PageData.Clear(); + PageHeader.Clear(); + + SSLStatus = TRUE; + AuthPassed = TRUE; + AbortConnection = FALSE; + + CURL *conn; + CURLcode conncode; + wxString ServerAddressURL; + wxString ServerAuth; + wxString ServerAddressSSL; + wxString ServerAddressNormal; + + conn = curl_easy_init(); + + struct curl_slist *connhd = NULL; + struct curl_slist *connhd2 = NULL; + struct curl_slist *connhd3 = NULL; + + connhd = curl_slist_append(connhd, "Depth: 0"); + connhd = curl_slist_append(connhd, "Prefer: return-minimal"); + connhd = curl_slist_append(connhd, "Content-Type: application/xml; charset=utf-8"); + + connhd2 = curl_slist_append(connhd2, "Depth: 0"); + connhd2 = curl_slist_append(connhd2, "Prefer: return-minimal"); + connhd2 = curl_slist_append(connhd2, "Content-Type: application/xml; charset=utf-8"); + + connhd3 = curl_slist_append(connhd3, "Depth: 1"); + connhd3 = curl_slist_append(connhd3, "Prefer: return-minimal"); + connhd3 = curl_slist_append(connhd3, "Content-Type: application/xml; charset=utf-8"); + + struct CardDAVCURLPasser { + + CardDAV *Data; + bool HeaderMode = TRUE; + + } CardDAVHeader, CardDAVFooter; + + CardDAVHeader.Data = this; + CardDAVHeader.HeaderMode = TRUE; + + CardDAVFooter.Data = this; + CardDAVFooter.HeaderMode = FALSE; + + wxString Data1; + wxString Data2; + + wxString ETag; + wxString ETagOriginal; + wxString ETagServer; + + ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/"); + ServerAddressSSL = wxT("https://") + ServerAddressURL; + ServerAddressNormal = wxT("http://") + ServerAddressURL; + + ServerAuth = ServerUser + wxT(":") + ServerPass; + + wxString SAURLPrincipals = ServerAddressURL + wxT("principals/"); + wxString SAURLPrincipalURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort); + wxString SAURLAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort); + wxString FinalPrefix; + + struct UploadDataStruc UploadData; + + // Setup the first query finding out where the principal URL is. + + const char* query = "\n" + "\n" + " " + " \n" + " " + ""; + + // Setup the second query finding out where the address book home URL is. + + const char* query2 = "\n" + "\n" + " \n" + " \n" + " \n" + ""; + + // Setup the third query finding out where the default address book URL is. + + const char* query3 = "\n" + "\n" + " \n" + " \n" + " \n" + ""; + + if (ServerSSL){ + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipals.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + if (UploadMode == TRUE){ + + UploadData.readptr = &ServerUploadData; + UploadData.sizeleft = ServerUploadData.Len(); + curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + } + + conncode = (curl_easy_perform(conn)); + + if (conncode == CURLE_OK){ + + *ServerResult = TRUE; + AuthPassed = TRUE; + SSLStatus = TRUE; + return wxT(""); + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + *ServerResult = FALSE; + + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode); + + return wxT(""); + + } + + } else { + + // No SSL. + + // Do an initial connection (incase of Digest authentication). + + PageData.Clear(); + PageHeader.Clear(); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipals.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND"); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); + curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd); + + conncode = (curl_easy_perform(conn)); + + // If the ETag is different to the non-matching X-XAB-ETAG and X-XAB-ETAG-ORIG, + // then bring up the conflict resolution form. + + if (EditMode == TRUE){ + + } + + if (conncode == CURLE_OK){ + + } else if (conncode == CURLE_HTTP_RETURNED_ERROR){ + + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode); + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n", + GetHTTPCode()); + + return wxT(""); + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + return wxT(""); + + } + + } + + // Process the XML data from the application. + + xmlDocPtr xmlCardDAVDoc; + xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0); + + xmlNodePtr nodeLevel1; + xmlNodePtr nodeLevel2; + xmlNodePtr nodeLevel3; + xmlNodePtr nodeLevel4; + xmlNodePtr nodeLevel5; + xmlNodePtr nodeLevel6; + xmlNodePtr nodeLevel7; + + for (nodeLevel1 = xmlCardDAVDoc->children; + nodeLevel1 != NULL; + nodeLevel1 = nodeLevel1->next) + { + + for (nodeLevel2 = nodeLevel1->children; + nodeLevel2 != NULL; + nodeLevel2 = nodeLevel2->next) + { + + + for (nodeLevel3 = nodeLevel2->children; + nodeLevel3 != NULL; + nodeLevel3 = nodeLevel3->next) + { + + for (nodeLevel4 = nodeLevel3->children; + nodeLevel4 != NULL; + nodeLevel4 = nodeLevel4->next) + { + + for (nodeLevel5 = nodeLevel4->children; + nodeLevel5 != NULL; + nodeLevel5 = nodeLevel5->next) + { + + for (nodeLevel6 = nodeLevel5->children; + nodeLevel6 != NULL; + nodeLevel6 = nodeLevel6->next) + { + + if (!xmlStrcmp(nodeLevel6->name, (const xmlChar *)"href") || + !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"d:href") || + !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"D:href") + ){ + + // Found the part so extract the principal URL address. + + for (nodeLevel7 = nodeLevel6->children; + nodeLevel7 != NULL; + nodeLevel7 = nodeLevel7->next) + { + + SAURLPrincipalURL.Append(wxString::FromUTF8((const char*)nodeLevel7->content)); + + } + + } + + } + + } + + } + + } + + } + + } + + xmlFreeDoc(xmlCardDAVDoc); + PageData.Clear(); + PageHeader.Clear(); + + // Second: Get the addressbook-home-set + + curl_easy_reset(conn); + + if (ServerSSL){ + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + if (UploadMode == TRUE){ + + UploadData.readptr = &ServerUploadData; + UploadData.sizeleft = ServerUploadData.Len(); + curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + } + + conncode = (curl_easy_perform(conn)); + + if (conncode == CURLE_OK){ + + *ServerResult = TRUE; + AuthPassed = TRUE; + SSLStatus = TRUE; + return wxT(""); + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + *ServerResult = FALSE; + + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode); + + return wxT(""); + + } + + } else { + + // No SSL. + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipalURL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND"); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query2); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query2)); + curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd2); + + conncode = (curl_easy_perform(conn)); + + // If the ETag is different to the non-matching X-XAB-ETAG and X-XAB-ETAG-ORIG, + // then bring up the conflict resolution form. + + if (EditMode == TRUE){ + + } + + if (conncode == CURLE_OK){ + + } else if (conncode == CURLE_HTTP_RETURNED_ERROR){ + + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode); + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n", + GetHTTPCode()); + return wxT(""); + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + return wxT(""); + + } + + } + + xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0); + + for (nodeLevel1 = xmlCardDAVDoc->children; + nodeLevel1 != NULL; + nodeLevel1 = nodeLevel1->next) + { + + for (nodeLevel2 = nodeLevel1->children; + nodeLevel2 != NULL; + nodeLevel2 = nodeLevel2->next) + { + + + for (nodeLevel3 = nodeLevel2->children; + nodeLevel3 != NULL; + nodeLevel3 = nodeLevel3->next) + { + + for (nodeLevel4 = nodeLevel3->children; + nodeLevel4 != NULL; + nodeLevel4 = nodeLevel4->next) + { + + for (nodeLevel5 = nodeLevel4->children; + nodeLevel5 != NULL; + nodeLevel5 = nodeLevel5->next) + { + + for (nodeLevel6 = nodeLevel5->children; + nodeLevel6 != NULL; + nodeLevel6 = nodeLevel6->next) + { + + if (!xmlStrcmp(nodeLevel6->name, (const xmlChar *)"href") || + !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"d:href") || + !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"D:href") + ){ + + // Found the part so extract the principal URL address. + + for (nodeLevel7 = nodeLevel6->children; + nodeLevel7 != NULL; + nodeLevel7 = nodeLevel7->next) + { + + SAURLAddressURL.Append(wxString::FromUTF8((const char*)nodeLevel7->content)); + + } + + } + + } + + } + + } + + } + + } + + } + + xmlFreeDoc(xmlCardDAVDoc); + PageData.Clear(); + PageHeader.Clear(); + + // Finally: Get the default-addressbook-URL from the addressbook-home-set address. + + curl_easy_reset(conn); + + if (ServerSSL){ + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + + if (UploadMode == TRUE){ + + UploadData.readptr = &ServerUploadData; + UploadData.sizeleft = ServerUploadData.Len(); + curl_easy_setopt(conn, CURLOPT_UPLOAD, 1); + curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData); + curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc); + + } + + conncode = (curl_easy_perform(conn)); + + if (conncode == CURLE_OK){ + + *ServerResult = TRUE; + AuthPassed = TRUE; + SSLStatus = TRUE; + return wxT(""); + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + *ServerResult = FALSE; + + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode); + + return wxT(""); + + } + + } else { + + // No SSL. + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLAddressURL.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND"); + curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query3); + curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query3)); + curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd3); + + conncode = (curl_easy_perform(conn)); + + // If the ETag is different to the non-matching X-XAB-ETAG and X-XAB-ETAG-ORIG, + // then bring up the conflict resolution form. + + if (EditMode == TRUE){ + + } + + if (conncode == CURLE_OK){ + + } else if (conncode == CURLE_HTTP_RETURNED_ERROR){ + + curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode); + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + + fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n", + GetHTTPCode()); + return wxT(""); + + } else { + + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(conncode)); + return wxT(""); + + } + + } + + xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0); + + for (nodeLevel1 = xmlCardDAVDoc->children; + nodeLevel1 != NULL; + nodeLevel1 = nodeLevel1->next) + { + + for (nodeLevel2 = nodeLevel1->children; + nodeLevel2 != NULL; + nodeLevel2 = nodeLevel2->next) + { + + + for (nodeLevel3 = nodeLevel2->children; + nodeLevel3 != NULL; + nodeLevel3 = nodeLevel3->next) + { + + for (nodeLevel4 = nodeLevel3->children; + nodeLevel4 != NULL; + nodeLevel4 = nodeLevel4->next) + { + + for (nodeLevel5 = nodeLevel4->children; + nodeLevel5 != NULL; + nodeLevel5 = nodeLevel5->next) + { + + for (nodeLevel6 = nodeLevel5->children; + nodeLevel6 != NULL; + nodeLevel6 = nodeLevel6->next) + { + + if (!xmlStrcmp(nodeLevel6->name, (const xmlChar *)"href") || + !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"d:href") || + !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"D:href") + ){ + + // Found the part so extract the principal URL address. + + for (nodeLevel7 = nodeLevel6->children; + nodeLevel7 != NULL; + nodeLevel7 = nodeLevel7->next) + { + + FinalPrefix = wxString::FromUTF8((const char*)nodeLevel7->content); + + } + + } + + } + + } + + } + + } + + } + + } + + xmlFreeDoc(xmlCardDAVDoc); + PageData.Clear(); + PageHeader.Clear(); + + return FinalPrefix; + +} + +SSLCertCollection CardDAV::BuildSSLCollection(CURL *conn){ + + SSLCertCollection SSLCertInfo; + + // Grab the certificate data. + + union { + struct curl_slist *certdata; + struct curl_certinfo *certinfo; + } certptr; + + certptr.certdata = NULL; + + curl_easy_getinfo(conn, CURLINFO_CERTINFO, &certptr.certinfo); + + wxString CertPropName; + wxString CertPropValue; + + for (int i = 0; i < certptr.certinfo->num_of_certs; i++){ + + struct curl_slist *slist; + SSLCertData SSLCertDataInc; + + for (slist = certptr.certinfo->certinfo[i]; slist; slist = slist->next){ + + wxStringTokenizer CertDataInc(wxString::FromUTF8(slist->data), ":"); + + // Get first token as the property name. + + CertPropName = CertDataInc.GetNextToken(); + + // Get remaining tokens as the property value. + + while(CertDataInc.HasMoreTokens()){ + + CertPropValue.Append(CertDataInc.GetNextToken()); + + } + + SSLCertDataInc.CertData.insert(std::make_pair(CertPropName, CertPropValue)); + CertPropName.clear(); + CertPropValue.clear(); + + } + + SSLCertInfo.SSLCollection.insert(std::make_pair(i, SSLCertDataInc)); + + } + + return SSLCertInfo; + +} + +SSLCertCollection CardDAV::GetCertificateData(){ + + // Pass on the collected certificate data. + + return SSLCertCol; + +} + +wxString CardDAV::GetErrorMessage(){ + + return ErrorMessage; + +} \ No newline at end of file diff --git a/source/carddav/carddav.h b/source/carddav/carddav.h new file mode 100644 index 0000000..fd1068a --- /dev/null +++ b/source/carddav/carddav.h @@ -0,0 +1,123 @@ +#include +#include +#include +#include +#include +#include +#include "../vcard/vcard.h" +#include "../frmActivityMgr.h" +#include "../common/sslcertstructs.h" + +#ifndef CALDAV_CALDAV_H +#define CALDAV_CALDAV_H + +struct FileSyncData{ + unsigned int DataFlag:2; + wxString ETagData; +}; + +struct ContactListData{ + wxString SyncToken; + std::map ListData; +}; + +/*struct CertificateData{ + std::multimap CertificateData; + bool CertValid; + int CertError; +}; + +struct CertificateCollection{ + std::map Certificates; + std::map ParentCerticiate; + bool AllCertsValid; + std::map CertErrors; +};*/ + +//size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, FILE *userdata); + +size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, wxString *userdata); +int ProgressFunc(void *clientdata, double TTDown, double NDown, double TTUp, double NUp); + +class CardDAV +{ + public: + CardDAV(); + ~CardDAV(); + bool SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL); + bool SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL, wxString SvrPrefix, wxString SvrAccount); + bool CanDoCardDAV(); + bool CanDoSSL(); + bool SSLVerify(); + bool AbleToLogin(); + bool HasValidResponse(); + wxString GetResponseData(); + bool Connect(); + bool ConnectThread(); + void ProcessData(); + void SetupData(wxString Method, wxString FilenameLocation, wxString UploadData); + void ProcessDataThread(); + void SetUploadMode(bool IncMode); + void Abort(); + bool SetupResultBools(bool *SvrResult, bool *SvrMonitor); + int ProgressFuncProc(void *clientdata, double TTUp, double NUp, double TTDown, double NDown); + void SetupVariables(std::map *actlist, int actindex); + wxString GetETagData(); + void GetServerETagValue(); + void GetServerETagValueThread(); + void GetServerContactData(); + wxString GetPageData(); + void SetEditMode(bool EditModeInc); + ContactListData GetContactList(wxString SyncTokenInc); + void SetServerFilename(wxString Filename); + int GetResultCode(); + static int GetHTTPCode(); + wxString GetErrorBuffer(); + wxString GetDefaultAddressBookURL(); + void GetSSLResults(); + SSLCertCollection GetCertificateData(); + static SSLCertCollection BuildSSLCollection(CURL *conn); + wxString ETagValueResult(); + wxString GetErrorMessage(); + //size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, FILE *userdata); + private: + static wxString ServerAddress; + static int ServerPort; + static wxString ServerUser; + static wxString ServerPass; + static wxString ServerPrefix; + static wxString ServerAccount; + static bool ServerSSL; + static bool *ServerResult; + static bool *ServerMonitor; + static bool SSLStatus; + static bool SSLVerified; + static bool ValidResponse; + static bool AuthPassed; + static bool HasCalDAVSupport; + static bool AbortConnection; + static wxString ServerResponse; + static wxString ServerMethod; + static wxString ServerFilenameLocation; + static wxString ServerUploadData; + static wxString ETagData; + static wxString ETagResult; + static bool UploadMode; + static bool EditMode; + static long ItemIndex; + static std::map *ActivityListPtr; + //frmActivityMgr *ActMgrPtr; + static char curlerrbuffer[CURL_ERROR_SIZE]; + static SSLCertCollection SSLCertCol; + static wxString ErrorMessage; + protected: + static int SSLErrorCode; + static int ConnectionErrorCode; + static wxString PageHeader; + static wxString PageData; + static CURLcode claconncode; + static int HTTPErrorCode; + +}; + +#endif \ No newline at end of file diff --git a/source/common/.directory b/source/common/.directory new file mode 100644 index 0000000..3169f34 --- /dev/null +++ b/source/common/.directory @@ -0,0 +1,4 @@ +[Dolphin] +Timestamp=2013,9,10,19,57,41 +Version=3 +ViewMode=1 diff --git a/source/common/base64.cpp b/source/common/base64.cpp new file mode 100644 index 0000000..2f85449 --- /dev/null +++ b/source/common/base64.cpp @@ -0,0 +1,124 @@ +/* + base64.cpp and base64.h + + Copyright (C) 2004-2008 René Nyffenegger + + This source code is provided 'as-is', without any express or implied + warranty. In no event will the author be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this source code must not be misrepresented; you must not + claim that you wrote the original source code. If you use this source code + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original source code. + + 3. This notice may not be removed or altered from any source distribution. + + René Nyffenegger rene.nyffenegger@adp-gmbh.ch + +*/ + +#include "base64.h" +#include + +static const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + + +static inline bool is_base64(unsigned char c) { + return (isalnum(c) || (c == '+') || (c == '/')); +} + +std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { + std::string ret; + int i = 0; + int j = 0; + unsigned char char_array_3[3]; + unsigned char char_array_4[4]; + + while (in_len--) { + char_array_3[i++] = *(bytes_to_encode++); + if (i == 3) { + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for(i = 0; (i <4) ; i++) + ret += base64_chars[char_array_4[i]]; + i = 0; + } + } + + if (i) + { + for(j = i; j < 3; j++) + char_array_3[j] = '\0'; + + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for (j = 0; (j < i + 1); j++) + ret += base64_chars[char_array_4[j]]; + + while((i++ < 3)) + ret += '='; + + } + + return ret; + +} + +std::string base64_decode(std::string const& encoded_string) { + int in_len = encoded_string.size(); + int i = 0; + int j = 0; + int in_ = 0; + unsigned char char_array_4[4], char_array_3[3]; + std::string ret; + + while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i ==4) { + for (i = 0; i <4; i++) + char_array_4[i] = base64_chars.find(char_array_4[i]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) + ret += char_array_3[i]; + i = 0; + } + } + + if (i) { + for (j = i; j <4; j++) + char_array_4[j] = 0; + + for (j = 0; j <4; j++) + char_array_4[j] = base64_chars.find(char_array_4[j]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; + } + + return ret; +} + diff --git a/source/common/base64.cpp~ b/source/common/base64.cpp~ new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/source/common/base64.cpp~ @@ -0,0 +1 @@ + diff --git a/source/common/base64.h b/source/common/base64.h new file mode 100644 index 0000000..ae2af7e --- /dev/null +++ b/source/common/base64.h @@ -0,0 +1,4 @@ +#include + +std::string base64_encode(unsigned char const* , unsigned int len); +std::string base64_decode(std::string const& s); diff --git a/source/common/base64.h~ b/source/common/base64.h~ new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/source/common/base64.h~ @@ -0,0 +1 @@ + diff --git a/source/common/defaults.cpp b/source/common/defaults.cpp new file mode 100644 index 0000000..e23f9e7 --- /dev/null +++ b/source/common/defaults.cpp @@ -0,0 +1,172 @@ +#include +#include + +void SetupDefaultAddressBook(){ + + // Check if the 'Default.local' directory exists. + + wxString DefaultLocalDir; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + DefaultLocalDir.Clear(); + DefaultLocalDir.Append(wxString::FromUTF8(getenv("APPDATA"))); + DefaultLocalDir.Append(wxT("\\Xestia\\Address Book\\accounts\\")); + DefaultLocalDir.Append(wxT("Default.local")); + +#else + + DefaultLocalDir.Clear(); + DefaultLocalDir.Append(wxString::FromUTF8(getenv("HOME"))); + DefaultLocalDir.Append(wxT("/.xestiaab/accounts/")); + DefaultLocalDir.Append(wxT("Default.local")); + +#endif + + if (wxDirExists(DefaultLocalDir) == FALSE){ + + if (wxMkdir(DefaultLocalDir, 0740) == TRUE){ + + } + + } + +} + +void SetupDefaultSettings(){ + + // Setup default (non account) settings if they don't exist. + + wxString DefaultPrefDir; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + DefaultPrefDir.Clear(); + DefaultPrefDir.Append(wxString::FromUTF8(getenv("APPDATA"))); + DefaultPrefDir.Append(wxT("\\Xestia\\Address Book\\preferences\\")); + +#else + + DefaultPrefDir.Clear(); + DefaultPrefDir.Append(wxString::FromUTF8(getenv("HOME"))); + DefaultPrefDir.Append(wxT("/.xestiaab/preferences/")); + +#endif + + // Create the accounts file if it doesn't exist. + + if (wxFileExists(DefaultPrefDir + wxT("accounts")) == FALSE){ + + wxString AccountsFilename; + wxFFile AccountsFile; + + AccountsFilename = DefaultPrefDir; + AccountsFilename.Append(wxT("accounts")); + +#if wxABI_VERSION < 20900 + AccountsFile.Open(AccountsFilename.c_str(), wxT("w")); +#else + AccountsFile.Open(AccountsFilename, wxT("w")); +#endif + + AccountsFile.Write(wxT("")); + + } + + // Create the preferences file if it doesn't exist. + + if (wxFileExists(DefaultPrefDir + wxT("settings")) == FALSE){ + + wxString PrefsFilename; + wxFFile PrefsFile; + + PrefsFilename = DefaultPrefDir; + PrefsFilename.Append(wxT("settings")); + +#if wxABI_VERSION < 20900 + PrefsFile.Open(PrefsFilename.c_str(), wxT("w")); +#else + PrefsFile.Open(PrefsFilename, wxT("w")); +#endif + + PrefsFile.Write(wxT("HideLocalAddressBooks=false\nSaveWindowPosition=true\n")); + + } + +} + +void SetupDirectories(){ + + // Create the directories if they don't exist. + + wxString DefaultSettingsDir; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + DefaultSettingsDir.Clear(); + DefaultSettingsDir.Append(wxString::FromUTF8(getenv("APPDATA"))); + DefaultSettingsDir.Append(wxT("\\Xestia\\")); + + if (wxDirExists(DefaultSettingsDir) == FALSE){ + + // Create the directory. + + if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){ + + } + + } + + // TODO: APPEND 'Address Book' to the directory. + + DefaultSettingsDir.Append(wxT("\\Address Book\\")); + +#else + + DefaultSettingsDir.Clear(); + DefaultSettingsDir.Append(wxString::FromUTF8(getenv("HOME"))); + DefaultSettingsDir.Append(wxT("/.xestiaab/")); + +#endif + + // Check if the directory exists. + + if (wxDirExists(DefaultSettingsDir) == FALSE){ + + // Create the directory. + + if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){ + + } + + } + + if (wxDirExists(DefaultSettingsDir + wxT("accounts")) == FALSE){ + + if (wxMkdir(DefaultSettingsDir + wxT("accounts"), 0740) == TRUE){ + + } + + } + + if (wxDirExists(DefaultSettingsDir + wxT("preferences")) == FALSE){ + + if (wxMkdir(DefaultSettingsDir + wxT("preferences"), 0740) == TRUE){ + + } + + } + +} \ No newline at end of file diff --git a/source/common/defaults.h b/source/common/defaults.h new file mode 100644 index 0000000..9e04dc0 --- /dev/null +++ b/source/common/defaults.h @@ -0,0 +1,11 @@ +#include +#include + +#ifndef COMMON_DEFAULTS_H +#define COMMON_DEFAULTS_H + +void SetupDefaultAddressBook(); +void SetupDefaultSettings(); +void SetupDirectories(); + +#endif \ No newline at end of file diff --git a/source/common/dirs.cpp b/source/common/dirs.cpp new file mode 100644 index 0000000..0ced7ab --- /dev/null +++ b/source/common/dirs.cpp @@ -0,0 +1,166 @@ +#include + +wxString GetUserDir() +{ + + wxString UserDir; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + UserDir.Clear(); + UserDir.Append(wxString::FromUTF8(getenv("APPDATA"))); + UserDir.Append(wxT("\\Xestia\\Address Book\\")); + +#else + + UserDir.Clear(); + UserDir.Append(wxString::FromUTF8(getenv("HOME"))); + UserDir.Append(wxT("/.xestiaab/")); + +#endif + + return UserDir; + +} + +wxString GetUserPrefDir() +{ + + wxString UserPrefDir; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + UserPrefDir.Clear(); + UserPrefDir.Append(wxString::FromUTF8(getenv("APPDATA"))); + UserPrefDir.Append(wxT("\\Xestia\\Address Book\\preferences\\")); + +#else + + UserPrefDir.Clear(); + UserPrefDir.Append(wxString::FromUTF8(getenv("HOME"))); + UserPrefDir.Append(wxT("/.xestiaab/preferences/")); + +#endif + + return UserPrefDir; + +} + +wxString GetRecoveryDB() +{ + + wxString RecoveryDBFile; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + RecoveryDBFile.Clear(); + RecoveryDBFile.Append(wxString::FromUTF8(getenv("APPDATA"))); + RecoveryDBFile.Append(wxT("\\Xestia\\Address Book\\recovery.db")); + +#else + + RecoveryDBFile.Clear(); + RecoveryDBFile.Append(wxString::FromUTF8(getenv("HOME"))); + RecoveryDBFile.Append(wxT("/.xestiaab/.recovery.db")); + +#endif + + return RecoveryDBFile; + +} + +wxString GetAccountDir(wxString AccName, bool ServerCert) +{ + + wxString AccountDir; + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + AccountDir.Clear(); + AccountDir.Append(wxString::FromUTF8(getenv("APPDATA"))); + AccountDir.Append(wxT("\\Xestia\\Address Book\\accounts\\")); + AccountDir.Append(AccName); + AccountDir.Append(wxT("\\")); + if (ServerCert == TRUE){ + AccountDir.Append(wxT("server.crt")); + } + +#else + + AccountDir.Clear(); + AccountDir.Append(wxString::FromUTF8(getenv("HOME"))); + AccountDir.Append(wxT("/.xestiaab/accounts/")); + AccountDir.Append(AccName); + AccountDir.Append(wxT("/")); + if (ServerCert == TRUE){ + AccountDir.Append(wxT("server.crt")); + } + +#endif + + return AccountDir; + +} + +wxString GetAccountsFile() +{ + + wxString AccountsFile; + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + AccountsFile.Clear(); + AccountsFile.Append(wxString::FromUTF8(getenv("APPDATA"))); + AccountsFile.Append(wxT("\\Xestia\\Address Book\\preferences\\accounts")); +#else + + AccountsFile.Clear(); + AccountsFile.Append(wxString::FromUTF8(getenv("HOME"))); + AccountsFile.Append(wxT("/.xestiaab/preferences/accounts")); + +#endif + + return AccountsFile; + +} + +wxString GetSettingsFile() +{ + + wxString SettingsFile; + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + SettingsFile.Clear(); + SettingsFile.Append(wxString::FromUTF8(getenv("APPDATA"))); + SettingsFile.Append(wxT("\\Xestia\\Address Book\\preferences\\settings")); + +#else + + SettingsFile.Clear(); + SettingsFile.Append(wxString::FromUTF8(getenv("HOME"))); + SettingsFile.Append(wxT("/.xestiaab/preferences/settings")); + +#endif + + return SettingsFile; + +} \ No newline at end of file diff --git a/source/common/dirs.h b/source/common/dirs.h new file mode 100644 index 0000000..779eca9 --- /dev/null +++ b/source/common/dirs.h @@ -0,0 +1,13 @@ +#include + +#ifndef DIRS_H +#define DIRS_H + +wxString GetUserDir(); +wxString GetUserPrefDir(); +wxString GetRecoveryDB(); +wxString GetAccountDir(wxString AccName, bool ServerCert); +wxString GetAccountsFile(); +wxString GetSettingsFile(); + +#endif \ No newline at end of file diff --git a/source/common/etag.cpp b/source/common/etag.cpp new file mode 100644 index 0000000..12777b0 --- /dev/null +++ b/source/common/etag.cpp @@ -0,0 +1,430 @@ +#include "etag.h" +#include "../common/dirs.h" + +ETagDB::~ETagDB(){ + + // Write out the database to file. + + ProcessLock->lock(); + + if (NeedsWrite == TRUE){ + + WriteETagDB(); + + } + + ProcessLock->unlock(); + +} + +void ETagDB::SetupDB(wxString AccountDirInc){ + + AccountDir = AccountDirInc; + LoadETagDB(); + //ProcessLock = ProcessLockInc; + +} + +void ETagDB::AddETag(wxString Filename, wxString ETag, wxString ETagOriginal){ + + // Lock or wait if it is already locked. + + ProcessLock->lock(); + + // Process the ETag addition. + + FilenameETag.insert(std::make_pair(Filename, ETag)); + FilenameETagOriginal.insert(std::make_pair(Filename, ETagOriginal)); + + NeedsWrite = TRUE; + + // Unlock. + + ProcessLock->unlock(); + +} + +void ETagDB::RemoveETag(wxString Filename){ + + // Lock or wait if it is already locked. + + ProcessLock->lock(); + + // Remove the ETag. + + Filename.Trim(); + + FilenameETag.erase(Filename); + FilenameETagOriginal.erase(Filename); + + NeedsWrite = TRUE; + + // Unlock. + + ProcessLock->unlock(); + +} + +void ETagDB::UpdateETag(wxString Filename, wxString ETag){ + + // Lock or wait if it is already locked. + + ProcessLock->lock(); + + // Update the ETag. + + FilenameETag.erase(Filename); + FilenameETag.insert(std::make_pair(Filename, ETag)); + + NeedsWrite = TRUE; + + // Unlock. + + ProcessLock->unlock(); + +} + +void ETagDB::UpdateETag(wxString Filename, wxString ETag, wxString ETagOriginal){ + + // Lock or wait if it is already locked. + + ProcessLock->lock(); + + // Update the ETag. + + FilenameETag.erase(Filename); + FilenameETagOriginal.erase(Filename); + FilenameETag.insert(std::make_pair(Filename, ETag)); + FilenameETagOriginal.insert(std::make_pair(Filename, ETagOriginal)); + + std::map::iterator IterWxS; + IterWxS = FilenameETagOriginal.find(Filename); + NeedsWrite = TRUE; + + // Unlock. + + ProcessLock->unlock(); + +} + +std::map* ETagDB::GetFilenamePointer(){ + + return &FilenameETag; + +} + +wxString ETagDB::GetETag(wxString Filename){ + + // Lock or wait if it is already locked. + + wxString ETagOut; + std::map::iterator IterwxS; + + ProcessLock->lock(); + + // Get the ETag. + + //IterwxS = FilenameETag.find(Filename); + + if (FilenameETag.find(Filename) != FilenameETag.end()){ + + IterwxS = FilenameETag.find(Filename); + + ETagOut = IterwxS->second; + + } + + // Unlock. + + ProcessLock->unlock(); + + return ETagOut; + +} + +wxString ETagDB::GetETagOriginal(wxString Filename){ + + // Lock or wait if it is already locked. + + wxString ETagOrigOut; + std::map::iterator IterwxS; + + ProcessLock->lock(); + + // Get the ETag. + + //IterwxS = FilenameETag.find(Filename); + + if (FilenameETagOriginal.find(Filename) != FilenameETagOriginal.end()){ + + IterwxS = FilenameETagOriginal.find(Filename); + + ETagOrigOut = IterwxS->second; + + } + + // Unlock. + + ProcessLock->unlock(); + + return ETagOrigOut; + +} + +bool ETagDB::WriteETagDB(){ + + // Lock or wait if it is already locked. + + ProcessLock->lock(); + + // Write the ETag database. + + wxString AccountETagDB; + std::map::iterator IterwxS; + int LineSeek = 0; + + + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + AccountETagDB.Clear(); + AccountETagDB = GetAccountDir(AccountDir, FALSE); + AccountETagDB.Append(wxT("\\etag.db")); + +#else + + AccountETagDB.Clear(); + AccountETagDB = GetAccountDir(AccountDir, FALSE); + AccountETagDB.Append(wxT("/etag.db")); + +#endif + + wxTextFile ETagDBFile; + wxString SettingLine; + + if (wxFileExists(AccountETagDB) == FALSE){ + + if (ETagDBFile.Create(AccountETagDB) == FALSE){ + ////ProcessLock.unlock(); + return FALSE; + } + + } else { + + if (ETagDBFile.Open(AccountETagDB) == FALSE){ + ////ProcessLock.unlock(); + return FALSE; + } + + } + + ETagDBFile.Clear(); + + for (std::map::iterator iter = FilenameETag.begin(); + iter != FilenameETag.end(); ++iter){ + + // Get Original ETag as well. + + IterwxS = FilenameETagOriginal.find(iter->first); + + if (iter->first.IsEmpty()){ + continue; + } + + SettingLine = iter->first + wxT("|") + iter->second + wxT("|") + IterwxS->second; + + ETagDBFile.InsertLine(SettingLine, LineSeek); + + LineSeek++; + + } + + ETagDBFile.Write(); + + NeedsWrite = FALSE; + + // Unlock. + + ProcessLock->unlock(); + + return TRUE; + +} + +bool ETagDB::LoadETagDB(){ + + // Lock or wait if it is already locked. + + ProcessLock->lock(); + + // Load the ETag database. + + wxString AccountETagDB; + wxString AccountDirPath; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + AccountDirPath = GetAccountDir(AccountDir, FALSE); + + AccountETagDB = AccountDirPath; + AccountETagDB.Append(wxT("\\etag.db")); + +#else + + AccountDirPath = GetAccountDir(AccountDir, bool FALSE); + + AccountETagDB = AccountDirPath; + AccountETagDB.Append(wxT("/etag.db")); + +#endif + + wxTextFile ETagDBFile; + + if (wxFileExists(AccountETagDB) == FALSE){ + + if (ETagDBFile.Create(AccountETagDB) == FALSE){ + ////ProcessLock.unlock(); + //ProcessLock->unlock(); + return FALSE; + } + + } else { + + if (ETagDBFile.Open(AccountETagDB, wxConvUTF8) == FALSE){ + ////ProcessLock.unlock(); + //ProcessLock->unlock(); + return FALSE; + } + + } + + wxString wxSFilename; + wxString wxSValue; + wxString ETagContactFilename; + + for (wxStringTokenizer ETagDBLine(ETagDBFile.GetFirstLine(), wxT("|")); + !ETagDBFile.Eof(); ETagDBLine.SetString(ETagDBFile.GetNextLine(), wxT("|"), wxTOKEN_DEFAULT) ) + { + + // Split the file into three. + + wxSFilename = ETagDBLine.GetNextToken(); + + // Get the ETag. + + wxSValue = ETagDBLine.GetNextToken(); + FilenameETag.insert(std::make_pair(wxSFilename, wxSValue)); + + // Get the original ETag. + + wxSValue = ETagDBLine.GetNextToken(); + wxSValue.Trim(); + FilenameETagOriginal.insert(std::make_pair(wxSFilename, wxSValue)); + + } + + // Unlock. + + ProcessLock->unlock(); + + return TRUE; + +} + +void ETagDB::DeleteETagDB(){ + + // Lock or wait if it is already locked. + + ProcessLock->lock(); + + wxString AccountETagDB; + + // Delete the ETagDB. + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + AccountETagDB.Clear(); + AccountETagDB = GetAccountDir(AccountDir, FALSE); + AccountETagDB.Append(wxT("\\etag.db")); + + wxRemoveFile(AccountETagDB); + +#else + + AccountETagDB.Clear(); + AccountETagDB = GetAccountDir(AccountDir, FALSE); + AccountETagDB.Append(wxT("/etag.db")); + + wxRemoveFile(AccountETagDB); + +#endif + + // Unlock. + + ProcessLock->unlock(); + +} + +bool ETagDB::CheckETagExists(wxString Filename){ + + if (FilenameETag.find(Filename) == FilenameETag.end()){ + + return FALSE; + + } else { + + return TRUE; + + } + +} + +std::map ETagDB::GetETagData(){ + + // Lock the database. + + ProcessLock->lock(); + + // Go through each of the ETags and process them accordingly. + + std::map DataSet; + + for (std::map::iterator iter = FilenameETag.begin(); + iter != FilenameETag.end(); ++iter){ + + std::map::iterator origiter = FilenameETagOriginal.find(iter->first); + + ETagData etd; + + etd.ETagValue = iter->second; + etd.ETagOrigValue = origiter->second; + + DataSet.insert(std::make_pair(iter->first, etd)); + + } + + // Unlock the database. + + ProcessLock->unlock(); + + return DataSet; + +} + +bool ETagDB::GetWriteStatus(){ + + return NeedsWrite; + +} \ No newline at end of file diff --git a/source/common/etag.h b/source/common/etag.h new file mode 100644 index 0000000..a75df52 --- /dev/null +++ b/source/common/etag.h @@ -0,0 +1,92 @@ +#include +#include +#include +#include +#include +#include +#include + +#ifndef ETAG_H +#define ETAG_H + +struct ETagData{ + + wxString ETagValue; + wxString ETagOrigValue; + int ETagStatus; + +}; + +class ETagDB{ +public: + //ETagDB(wxString AccountDir); + ETagDB() {}; + ~ETagDB(); + + // ETag functions. + + void AddETag(wxString Filename, wxString ETag, wxString ETagOriginal); + void RemoveETag(wxString Filename); + void UpdateETag(wxString Filename, wxString ETag); + void UpdateETag(wxString Filename, wxString ETag, wxString ETagOriginal); + std::map* GetFilenamePointer(); + wxString GetETag(wxString Filename); + wxString GetETagOriginal(wxString Filename); + bool CheckETagExists(wxString Filename); + //boost::mutex ProcessLock; + + // ETagDB functions. + + bool WriteETagDB(); + bool LoadETagDB(); + void DeleteETagDB(); + void SetupDB(wxString AccountDirFilename); + + bool GetWriteStatus(); + std::map GetETagData(); + //void *ProcessLock = new std::mutex; + +private: + std::map FilenameETag; + std::map FilenameETagOriginal; + bool NeedsWrite = FALSE; + bool MarkedDeleted = FALSE; + wxString AccountDir; + std::mutex *ProcessLock = new std::mutex(); +}; + +/* +class ETagDB2{ +public: + ETagDB2() {} ; + ~ETagDB2() {}; + + // ETag functions. + + void AddETag(wxString Filename, wxString ETag, wxString ETagOriginal); + void RemoveETag(wxString Filename); + void UpdateETag(wxString Filename, wxString ETag); + void UpdateETag(wxString Filename, wxString ETag, wxString ETagOriginal); + wxString GetETag(wxString Filename); + wxString GetETagOriginal(wxString Filename); + + // ETagDB functions. + + bool WriteETagDB(); + bool LoadETagDB(); + void DeleteETagDB(); + + bool GetWriteStatus(); +private: + std::map FilenameETag; + std::map FilenameETagOriginal; + bool NeedsWrite = FALSE; + bool MarkedDeleted = FALSE; + /* + std::mutex ProcessLock; + wxString AccountDir; +}; +*/ + + +#endif \ No newline at end of file diff --git a/source/common/events.cpp b/source/common/events.cpp new file mode 100644 index 0000000..6b11b84 --- /dev/null +++ b/source/common/events.cpp @@ -0,0 +1,4 @@ +#include "events.h" + +//const wxEventType ContactConflictCmdEnv = wxNewEventType(); +//const wxEventType MyFooCommandEvent = wxNewEventType(); \ No newline at end of file diff --git a/source/common/events.h b/source/common/events.h new file mode 100644 index 0000000..cacbe39 --- /dev/null +++ b/source/common/events.h @@ -0,0 +1,71 @@ +#include +#include +#include "../vcard/vcard.h" +#include "../frmMain.h" + +#ifndef EVENTS_H +#define EVENTS_H + +/* + +// Could have been DECLARE_EVENT_TYPE( MyFooCommandEvent, -1 ) +// Not needed if you only use the event-type in one .cpp file +DECLARE_EVENT_TYPE(ContactConflictCmdEnv, 7000); + +// A custom event that transports a whole wxString. +class ContactConflictEvent: public wxCommandEvent +{ +public: + ContactConflictEvent( wxEventType commandType = ContactConflictCmdEnv, int id = 0 ) + : wxCommandEvent(commandType, id) { } + + // You *must* copy here the data to be transported + ContactConflictEvent( const ContactConflictEvent &event ) + : wxCommandEvent(event) { this->SetData( event.GetText(), event.GetLocalData(), event.GetServerData() ); } + + // Required for sending with wxPostEvent() + wxEvent* Clone() const { return new ContactConflictEvent(*this); } + + wxString GetText() const { return Filename; } + vCard GetLocalData() const { return LocalData; } + vCard GetServerData() const { return ServerData; } + void SetData( const wxString& text, vCard LocalDataInc, vCard ServerDataInc ) { + Filename = text; + LocalData = LocalDataInc; + ServerData = ServerDataInc; + } + +private: + wxString Filename; + vCard LocalData; + vCard ServerData; +}; + +typedef void (wxEvtHandler::*ContactConflictEventFunction)(ContactConflictEvent &); + +// This #define simplifies the one below, and makes the syntax less +// ugly if you want to use Connect() instead of an event table. +#define ContactConflictEventHandler(func) \ + (wxObjectEventFunction)(wxEventFunction)(wxCommandEventFunction)\\ + wxStaticCastEvent(ContactConflictEventFunction, &func) + +// Define the event table entry. Yes, it really *does* end in a comma. +#define EVT_CONTACTCONFLICT(id, fn) \ + DECLARE_EVENT_TABLE_ENTRY( ContactConflictCmdEnv, id, wxID_ANY, \\ + (wxObjectEventFunction)(wxEventFunction) \\ + (wxCommandEventFunction) wxStaticCastEvent( \\ + ContactConflictEventFunction, &fn ), (wxObject*) NULL ), + +// Optionally, you can do a similar #define for EVT_MYFOO_RANGE. +#define EVT_CONTACTCONFLICT_RANGE(id1,id2, fn) \ + DECLARE_EVENT_TABLE_ENTRY( ContactConflictCmdEnv, id1, id2, \\ + ContactConflictEventHandler(fn), (wxObject*) NULL ), + +// If you want to use the custom event to send more than one sort +// of data, or to more than one place, make it easier by providing +// named IDs in an enumeration. +enum { Foo_DoFirstThing = 1, Foo_DoSecondThing, Foo_DoThirdThing }; + +*/ + +#endif \ No newline at end of file diff --git a/source/common/filename.cpp b/source/common/filename.cpp new file mode 100644 index 0000000..b8cf4f1 --- /dev/null +++ b/source/common/filename.cpp @@ -0,0 +1,28 @@ +#include +#include + +wxString CreateFilenamePath(wxString Path, wxString Filename){ + + wxString FinalFilename; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + FinalFilename.Append(Path); + FinalFilename.Append(wxT("\\")); + FinalFilename.Append(Filename); + +#else + + FinalFilename.Append(Path); + FinalFilename.Append(wxT("/")); + FinalFilename.Append(Filename); + +#endif + + return FinalFilename; + +} \ No newline at end of file diff --git a/source/common/filename.h b/source/common/filename.h new file mode 100644 index 0000000..5afbeb9 --- /dev/null +++ b/source/common/filename.h @@ -0,0 +1,9 @@ +#include +#include + +#ifndef COMMON_FILENAME_H +#define COMMON_FILENAME_H + +wxString CreateFilenamePath(wxString Path, wxString Filename); + +#endif \ No newline at end of file diff --git a/source/common/getcontactinfo.cpp b/source/common/getcontactinfo.cpp new file mode 100644 index 0000000..6c56df3 --- /dev/null +++ b/source/common/getcontactinfo.cpp @@ -0,0 +1,1692 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +#include + +#include "getcontactinfo.h" +#include "base64.h" +#include "textprocessing.h" +#include "../vcard/vcard34conv.h" + +void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj, wxString SID, + wxString OldSID, std::map *MemoryFSList){ + + // Show message to user that the contact information is loading. + + wxString PageData; + + wxFileSystem::AddHandler(new wxMemoryFSHandler); + //wxMemoryFSHandler::AddFile(); + + PageData.append(wxT("")); + PageData.append(wxT("")); + PageData.append(wxT("Page Loading")); + PageData.append(wxT("")); + PageData.append(wxT("")); + PageData.append(wxT("

")); + PageData.append(_("Loading contact information...")); + PageData.append(wxT("

")); + PageData.append(wxT("")); + PageData.append(wxT("")); + + HTMLObj->SetPage(PageData); + + PageData.clear(); + + // Delete the information from the old session. + + if (!OldSID.IsEmpty()){ + + if (MemoryFSList->find(OldSID) == MemoryFSList->end()){ + + + } else { + + std::map::iterator striter; + + for (striter = MemoryFSList->begin(); striter != MemoryFSList->end(); striter++){ + + if (OldSID == striter->second){ + + // Delete the references from the wxMemoryFSHandler + // and the entry from the map. + + wxMemoryFSHandler::RemoveFile(striter->first); + break; + + } + + } + + MemoryFSList->erase(striter); + + } + + } + + // MAke sure new session ID doesn't conflict with existing + // data. If there is a match, generate a new one and check again. + + bool SIDMatch = FALSE; + wxString SIDTemp; + + for (std::map::iterator striter = MemoryFSList->begin(); + striter != MemoryFSList->end(); striter++){ + + SIDTemp = striter->second; + + if (SID == SIDTemp){ + + // Generate a new random number. + + SID = wxString::Format(wxT("%i"), rand() % 32768); + + // Rewind the seek process back to the start. + + striter = MemoryFSList->begin(); + + } + + } + + SIDTemp.clear(); + + // Setup the HTML document. + + PageData.append(wxT("")); + PageData.append(wxT("")); + PageData.append(wxT("Contact Information")); + PageData.append(wxT("")); + PageData.append(wxT("")); + + // Process the data in the vCard object. + + // Name (Display As) + + PageData.append(wxT("")); + PageData.append(wxT("")); + PageData.append(wxT("")); + PageData.append(wxT("")); + PageData.append(wxT("")); + PageData.append(wxT("
")); + PageData.append(wxT("

")); + PageData.append(vCardObj->Get(wxT("FN"))); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + + // Define common variables for ADR. + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + + int intPropertyLen; + int intSplitsFound; + int intSplitSize; + int intPrevValue; + + wxString AddressPOBox; + wxString AddressStreet; + wxString AddressLocality; + wxString AddressRegion; + wxString AddressPostalCode; + wxString AddressCountry; + wxString AddressExtended; + + wxString FinalAddressLine; + bool AddressFirst = TRUE; + + // Define common variables for PHOTO and LOGO. + + std::string PhotoDataBin; + std::string PhotoDataIn; + wxString PhotoSplitData; + wxString PhotoMIMEType; + wxString PhotoEncType; + wxString PhotoEncData; + bool LoadPicture = FALSE; + bool DataDisplay = FALSE; + bool RectData = FALSE; + wxRect PhotoRectPoints; + wxString SIDFilename; + wxString OutData; + wxString DataLines; + + // Picture + + ArrayvCardOutData ContactData = vCardObj->GetByPartial(wxT("PHOTO")); + + if (ContactData.PropCount > 0){ + + // Split the data. + + + + /*std::map SplitPts; + std::map SplitLen; + std::map SplitData; + int intSize = 0; + + SplitPropertyData(&ContactData.PropData[0], + &SplitPts, + &SplitLen, + 0, + &SplitData); + + for (std::map::iterator striter = SplitData.begin(); + striter != SplitData.end(); striter++){ + + raise(SIGABRT); + + }*/ + + // Look for the X-ABCROP-RECTANGLE. + + wxStringTokenizer PhotoSplit(ContactData.PropData[0], wxT(":")); + wxString PhotoPropertyDataString = PhotoSplit.GetNextToken(); + wxStringTokenizer PhotoPropertyData(PhotoPropertyDataString, wxT(";")); + wxString PropertyLineData; + wxString PropertyName; + wxString PropertyValue; + + wxStringTokenizer DataSplit(ContactData.PropValues[0], wxT(";")); + PhotoSplitData = DataSplit.GetNextToken(); + wxStringTokenizer MIMESplit(PhotoSplitData, wxT(":")); + MIMESplit.GetNextToken(); + PhotoMIMEType = MIMESplit.GetNextToken(); + PhotoSplitData = DataSplit.GetNextToken(); + wxStringTokenizer EncSplit(PhotoSplitData, wxT(",")); + PhotoEncType = EncSplit.GetNextToken(); + PhotoEncData = EncSplit.GetNextToken(); + + // Convert the picture data from base64 to binary. + + PhotoDataIn = std::string(PhotoEncData.mb_str()); + PhotoDataBin = base64_decode(PhotoDataIn); + wxMemoryInputStream istream(PhotoDataBin.c_str(), (size_t)PhotoDataBin.size()); + wxImage photo; + + if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){ + + // Photo failed to load so do nothing. + + LoadPicture = FALSE; + + } else { + + while (PhotoPropertyData.HasMoreTokens()){ + + PropertyLineData = PhotoPropertyData.GetNextToken(); + + wxStringTokenizer PhotoPropPair(PropertyLineData, wxT("=")); + wxString PhotoPropName = PhotoPropPair.GetNextToken(); + wxString PhotoPropValue = PhotoPropPair.GetNextToken(); + + if (PhotoPropName == wxT("X-ABCROP-RECTANGLE")){ + + wxStringTokenizer PhotoRectData(PhotoPropValue, wxT("&")); + + PhotoRectData.GetNextToken(); + + //PhotoRectPoints.SetX(wxAtoi(PhotoRectData.GetNextToken())); + //PhotoRectPoints.SetY(wxAtoi(PhotoRectData.GetNextToken()) - 100); + + int PointXBase = wxAtoi(PhotoRectData.GetNextToken()); + int PointYBase = wxAtoi(PhotoRectData.GetNextToken()); + int PointWBase = wxAtoi(PhotoRectData.GetNextToken()); + int PointHBase = wxAtoi(PhotoRectData.GetNextToken()); + + int PointX = PointXBase; + int PointY = PointYBase; + int PointW = PointWBase; + int PointH = PointHBase; + + // Top Right Method + + if (PointYBase > PointHBase){ + + PointX = photo.GetWidth() - PointXBase - 140; + PointY = photo.GetHeight() - PointYBase - 140; + PointW = PointWBase; + PointH = PointHBase; + + } else if (PointXBase > PointWBase){ + + PointX = photo.GetWidth() - PointXBase; + PointY = PointYBase - 50; + PointW = PointWBase; + PointH = PointHBase; + + } else { + + } + + /*int PointX = PointXBase; + int PointY = PointYBase; + int PointW = PointWBase; + int PointH = PointHBase;*/ + + // Bottom Left Method + + /*int PointX = wxAtoi(PhotoRectData.GetNextToken()); + int PointY = photo.GetHeight() - wxAtoi(PhotoRectData.GetNextToken()) - 340; + int PointW = wxAtoi(PhotoRectData.GetNextToken()); + int PointH = wxAtoi(PhotoRectData.GetNextToken());*/ + + // Bottom Right Method + + /*int PointXRemain = photo.GetWidth() - PointX - 140; + int PointYRemain = photo.GetHeight() - PointY - 140;*/ + + PhotoRectPoints.SetX(PointX); + PhotoRectPoints.SetY(PointY); + PhotoRectPoints.SetWidth(PointW); + PhotoRectPoints.SetHeight(PointH); + RectData = TRUE; + + } + + } + + LoadPicture = TRUE; + + // Resize the picture to 125x125. + + // Add to the wxMemnoryFSHandler. + + SIDFilename = SID + wxT("-photo"); + + if (RectData == TRUE){ + + wxImage rectphoto = photo.GetSubImage(PhotoRectPoints); + rectphoto = rectphoto.Scale(75, 75, wxIMAGE_QUALITY_HIGH); + wxMemoryFSHandler::AddFile(SIDFilename, rectphoto, wxBITMAP_TYPE_PNG); + + } else { + + photo = photo.Scale(50, 50, wxIMAGE_QUALITY_HIGH); + wxMemoryFSHandler::AddFile(SIDFilename, photo, wxBITMAP_TYPE_PNG); + + } + + // Add the filename to the MemoryFSList map. + + MemoryFSList->insert(std::make_pair(SIDFilename, SID)); + + } + + } + + if (LoadPicture == TRUE){ + + PageData.append(wxT("")); + + } + + LoadPicture = FALSE; + + // Logo + + ContactData = vCardObj->GetByPartial(wxT("LOGO")); + + if (ContactData.PropCount > 0){ + + // Split the data. + + wxStringTokenizer DataSplit(ContactData.PropValues[0], wxT(";")); + PhotoSplitData = DataSplit.GetNextToken(); + wxStringTokenizer MIMESplit(PhotoSplitData, wxT(":")); + MIMESplit.GetNextToken(); + PhotoMIMEType = MIMESplit.GetNextToken(); + PhotoSplitData = DataSplit.GetNextToken(); + wxStringTokenizer EncSplit(PhotoSplitData, wxT(",")); + PhotoEncType = EncSplit.GetNextToken(); + PhotoEncData = EncSplit.GetNextToken(); + + // Convert the picture data from base64 to binary. + + PhotoDataIn = std::string(PhotoEncData.mb_str()); + PhotoDataBin = base64_decode(PhotoDataIn); + wxMemoryInputStream istream(PhotoDataBin.c_str(), (size_t)PhotoDataBin.size()); + wxImage photo; + + if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){ + + // Photo failed to load so do nothing. + + LoadPicture = FALSE; + + } else { + + LoadPicture = TRUE; + + photo = photo.Scale(50, 50, wxIMAGE_QUALITY_HIGH); + + // Resize the picture to 125x125. + + // Add to the wxMemnoryFSHandler. + + SIDFilename = SID + wxT("-logo"); + + wxMemoryFSHandler::AddFile(SIDFilename, photo, wxBITMAP_TYPE_PNG); + + // Add the filename to the MemoryFSList map. + + MemoryFSList->insert(std::make_pair(SIDFilename, SID)); + + } + + } + + if (LoadPicture == TRUE){ + + PageData.append(wxT("")); + + } + + PageData.append(wxT("
")); + + // Process LOGO, PHOTO, SOUND, KEY, VND-* and X-* + // lines and display icons for each accordingly. + + ContactData = vCardObj->GetByPartial(wxT("PHOTO")); + + bool AddBreak = FALSE; + + if (ContactData.PropCount > 1){ + + PageData.append(wxT("\""));")); + AddBreak = TRUE; + + } + + ContactData = vCardObj->GetByPartial(wxT("LOGO")); + + if (ContactData.PropCount > 1){ + + PageData.append(wxT("\""));")); + AddBreak = TRUE; + + } + + ContactData = vCardObj->GetByPartial(wxT("SOUND")); + + if (ContactData.PropCount >= 1){ + + PageData.append(wxT("\""));")); + AddBreak = TRUE; + + } + + ContactData = vCardObj->GetByPartial(wxT("KEY")); + + if (ContactData.PropCount >= 1){ + + PageData.append(wxT("\""));")); + AddBreak = TRUE; + + } + + ContactData = vCardObj->GetByPartial(wxT("VND-")); + + if (ContactData.PropCount >= 1){ + + PageData.append(wxT("\""));")); + AddBreak = TRUE; + + } + + ContactData = vCardObj->GetByPartial(wxT("X-")); + + if (ContactData.PropCount >= 1){ + + PageData.append(wxT("\""));")); + AddBreak = TRUE; + + } + + if (AddBreak == TRUE){ + + PageData.append(wxT("

")); + + } + + bool MultiLogoIcon = FALSE; + bool MultiPhotoIcon = FALSE; + bool SoundIcon = FALSE; + bool KeyIcon = FALSE; + bool VendorIcon = FALSE; + bool XTokenIcon = FALSE; + + // Process Birthday + + ContactData = vCardObj->GetByPartial(wxT("BDAY")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString BDayLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + // Grab the first birthday only. + + BDayLine = ContactData.PropValues[i]; + + BDayLine.Trim(); + CaptureString(&BDayLine, FALSE); + ConvertToHTML(&BDayLine); + + DataLines.append(BDayLine); + + break; + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("")); + PageData.append(_("Birthday:")); + PageData.append(wxT(" ")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Process Anniversary + + ContactData = vCardObj->GetByPartial(wxT("ANNIVERSARY")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString AnniLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + // Grab the first anniversary only. + + AnniLine = ContactData.PropValues[i]; + + AnniLine.Trim(); + CaptureString(&AnniLine, FALSE); + ConvertToHTML(&AnniLine); + + DataLines.append(AnniLine); + + break; + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("")); + PageData.append(_("Anniversary:")); + PageData.append(wxT(" ")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Nickname + + ContactData = vCardObj->GetByPartial(wxT("NICKNAME")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString NicknameLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + NicknameLine = ContactData.PropValues[i]; + + NicknameLine.Trim(); + CaptureString(&NicknameLine, FALSE); + ConvertToHTML(&NicknameLine); + + DataLines.append(wxT("")); + DataLines.append(_("Nickname:")); + DataLines.append(wxT(" ")); + DataLines.append(NicknameLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Nicknames")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Address + + ContactData = vCardObj->GetByPartial(wxT("ADR")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString AddressLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + AddressLine = ContactData.PropValues[i]; + + intPropertyLen = AddressLine.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + AddressPOBox.clear(); + AddressStreet.clear(); + AddressLocality.clear(); + AddressRegion.clear(); + AddressPostalCode.clear(); + AddressCountry.clear(); + AddressExtended.clear(); + FinalAddressLine.clear(); + AddressFirst = TRUE; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (AddressLine.Mid(i, 1) == wxT(";") && AddressLine.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 6){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } else { + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + intSplitSize = 0; + + } + + } + + // Split the data into several parts. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + if (intiter->first == 1){ + + // Deal with PO Box. + + SLiter = SplitLength.find(1); + + //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE)); + AddressPOBox = AddressLine.Mid(0, SLiter->second); + intPrevValue = intiter->second; + + } else if (intiter->first == 2){ + + // Deal with extended address. + + SLiter = SplitLength.find(2); + + AddressExtended = AddressLine.Mid(intPrevValue, SLiter->second); + //txtForename->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + } else if (intiter->first == 3){ + + // Deal with street address. + + SLiter = SplitLength.find(3); + + AddressStreet = AddressLine.Mid(intPrevValue, SLiter->second); + //txtOtherNames->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + } else if (intiter->first == 4){ + + // Deal with locality + + SLiter = SplitLength.find(4); + + AddressLocality = AddressLine.Mid(intPrevValue, SLiter->second); + //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, wxSTRING_MAXLEN), TRUE)); + + } else if (intiter->first == 5){ + + // Deal with region. + + SLiter = SplitLength.find(5); + + AddressRegion = AddressLine.Mid(intPrevValue, SLiter->second); + //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, wxSTRING_MAXLEN), TRUE)); + + } else if (intiter->first == 6){ + + // Deal with post code. + + SLiter = SplitLength.find(6); + + AddressPostalCode = AddressLine.Mid(intPrevValue, SLiter->second); + //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + // Deal with country. + + AddressCountry = AddressLine.Mid(intPrevValue); + //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, wxSTRING_MAXLEN), TRUE)); + + } + + } + + if (!AddressStreet.IsEmpty()){ + + AddressStreet.Trim(); + ConvertToHTML(&AddressStreet); + + FinalAddressLine.append(AddressStreet); + AddressFirst = FALSE; + + } + + if (!AddressLocality.IsEmpty()){ + + AddressLocality.Trim(); + ConvertToHTML(&AddressLocality); + + if (AddressFirst == FALSE){ + + FinalAddressLine.append(wxT(",
")); + FinalAddressLine.append(AddressLocality); + + } else { + + FinalAddressLine.append(AddressLocality); + AddressFirst = FALSE; + + } + + } + + if (!AddressRegion.IsEmpty()){ + + AddressRegion.Trim(); + ConvertToHTML(&AddressRegion); + + if (AddressFirst == FALSE){ + + FinalAddressLine.append(wxT(",
")); + FinalAddressLine.append(AddressRegion); + + } else { + + FinalAddressLine.append(AddressRegion); + AddressFirst = FALSE; + + } + + } + + if (!AddressPostalCode.IsEmpty()){ + + AddressPostalCode.Trim(); + ConvertToHTML(&AddressPostalCode); + + if (AddressFirst == FALSE){ + + FinalAddressLine.append(wxT(",
")); + FinalAddressLine.append(AddressPostalCode); + + } else { + + FinalAddressLine.append(AddressPostalCode); + AddressFirst = FALSE; + + } + + } + + if (!AddressCountry.IsEmpty()){ + + AddressCountry.Trim(); + ConvertToHTML(&AddressCountry); + + if (AddressFirst == FALSE){ + + FinalAddressLine.append(wxT(",
")); + FinalAddressLine.append(AddressCountry); + + } else { + + FinalAddressLine.append(AddressCountry); + AddressFirst = FALSE; + + } + + } + + CaptureString(&FinalAddressLine, FALSE); + + DataLines.append(wxT("")); + DataLines.append(_("Address:")); + DataLines.append(wxT(" ")); + DataLines.append(FinalAddressLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Addresses")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Email + + ContactData = vCardObj->GetByPartial(wxT("EMAIL")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString EmailLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + EmailLine = ContactData.PropValues[i]; + + EmailLine.Trim(); + CaptureString(&EmailLine, FALSE); + ConvertToHTML(&EmailLine); + + DataLines.append(wxT("")); + DataLines.append(_("E-mail Address:")); + DataLines.append(wxT(" ")); + DataLines.append(EmailLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Email Addresses")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Telephone + + ContactData = vCardObj->GetByPartial(wxT("TEL")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString TelLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + TelLine = ContactData.PropValues[i]; + + wxStringTokenizer TelSplit(TelLine, wxT(":")); + + TelLine = TelSplit.GetNextToken(); + + if (TelSplit.HasMoreTokens()){ + + TelLine = TelSplit.GetNextToken(); + + } + + TelLine.Trim(); + CaptureString(&TelLine, FALSE); + ConvertToHTML(&TelLine); + + DataLines.append(wxT("")); + DataLines.append(_("Telephone:")); + DataLines.append(wxT(" ")); + DataLines.append(TelLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Telephones")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Instant Messaging + + ContactData = vCardObj->GetByPartial(wxT("IMPP")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString IMLine; + wxString IMTypeFriendly; + wxString IMType; + + for (int i = 0; i < ContactData.PropCount; i++){ + + IMLine = ContactData.PropValues[i]; + + wxStringTokenizer IMSplit(IMLine, wxT(":")); + + IMType = IMSplit.GetNextToken(); + IMLine = IMSplit.GetNextToken(); + + // Process skype, gg, icq, yahoo etc into + // something meaningful. + + if (IMType == wxT("aim")){ + + // AIM + + IMTypeFriendly = _("AIM"); + + } else if (IMType == wxT("xmpp")){ + + // XMPP + + IMTypeFriendly = _("XMPP"); + + } else if (IMType == wxT("icq")){ + + // ICQ + + IMTypeFriendly = _("ICQ"); + + } else if (IMType == wxT("skype")){ + + // Skype + + IMTypeFriendly = _("Skype"); + + } else if (IMType == wxT("gg")){ + + // Gadu-Gadu + + IMTypeFriendly = _("Gadu-Gadu"); + + } else if (IMType == wxT("yahoo")){ + + // Yahoo + + IMTypeFriendly = _("Yahoo"); + + } else { + + // Other. Use IM type that was split. + + IMTypeFriendly = IMType; + + } + + IMLine.Trim(); + CaptureString(&IMLine, FALSE); + ConvertToHTML(&IMLine); + + DataLines.append(wxT("")); + DataLines.append(_("IM Address")); + DataLines.append(_(" (")); + DataLines.append(IMTypeFriendly); + DataLines.append(_("):")); + DataLines.append(wxT(" ")); + DataLines.append(IMLine); + DataLines.append(wxT("")); + + IMTypeFriendly.clear(); + IMType.clear(); + IMLine.clear(); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Instant Messaging Addresses")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // URL + + ContactData = vCardObj->GetByPartial(wxT("URL")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString URLLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + URLLine = ContactData.PropValues[i]; + + URLLine.Trim(); + CaptureString(&URLLine, FALSE); + ConvertToHTML(&URLLine); + + DataLines.append(wxT("")); + DataLines.append(_("Website:")); + DataLines.append(wxT(" ")); + DataLines.append(URLLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Website Addresses")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Languages + + ContactData = vCardObj->GetByPartial(wxT("LANG")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString NicknameLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + NicknameLine = ContactData.PropValues[i]; + + NicknameLine.Trim(); + CaptureString(&NicknameLine, FALSE); + ConvertToHTML(&NicknameLine); + + DataLines.append(wxT("")); + DataLines.append(_("Language:")); + DataLines.append(wxT(" ")); + DataLines.append(NicknameLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Languages")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Timezones + + ContactData = vCardObj->GetByPartial(wxT("TZ")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString NicknameLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + NicknameLine = ContactData.PropValues[i]; + + NicknameLine.Trim(); + CaptureString(&NicknameLine, FALSE); + ConvertToHTML(&NicknameLine); + + DataLines.append(wxT("")); + DataLines.append(_("Timezone:")); + DataLines.append(wxT(" ")); + DataLines.append(NicknameLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Timezones")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Geopositioning + + ContactData = vCardObj->GetByPartial(wxT("GEO")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString GeoLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + GeoLine = ContactData.PropValues[i]; + + wxStringTokenizer GeoSplit(GeoLine, wxT(":")); + + GeoLine = GeoSplit.GetNextToken(); + + if (GeoSplit.HasMoreTokens()){ + + GeoLine = GeoSplit.GetNextToken(); + + } + + GeoLine.Trim(); + CaptureString(&GeoLine, FALSE); + ConvertToHTML(&GeoLine); + + DataLines.append(wxT("")); + DataLines.append(_("Geoposition:")); + DataLines.append(wxT(" ")); + DataLines.append(GeoLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Geopositioning")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Titles + + ContactData = vCardObj->GetByPartial(wxT("TITLE")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString TitleLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + TitleLine = ContactData.PropValues[i]; + + TitleLine.Trim(); + CaptureString(&TitleLine, FALSE); + ConvertToHTML(&TitleLine); + + DataLines.append(wxT("")); + DataLines.append(_("Title:")); + DataLines.append(wxT(" ")); + DataLines.append(TitleLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Titles")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Roles + + ContactData = vCardObj->GetByPartial(wxT("ROLE")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString RoleLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + RoleLine = ContactData.PropValues[i]; + + RoleLine.Trim(); + CaptureString(&RoleLine, FALSE); + ConvertToHTML(&RoleLine); + + DataLines.append(wxT("")); + DataLines.append(_("Role:")); + DataLines.append(wxT(" ")); + DataLines.append(RoleLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Roles")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Organisations + + ContactData = vCardObj->GetByPartial(wxT("ORG")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString OrgLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + OrgLine = ContactData.PropValues[i]; + + OrgLine.Trim(); + CaptureString(&OrgLine, FALSE); + ConvertToHTML(&OrgLine); + + DataLines.append(wxT("")); + DataLines.append(_("Organisation:")); + DataLines.append(wxT(" ")); + DataLines.append(OrgLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Organisations")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Categories + + ContactData = vCardObj->GetByPartial(wxT("CATEGORIES")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString CatLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + CatLine = ContactData.PropValues[i]; + + CatLine.Trim(); + CaptureString(&CatLine, FALSE); + ConvertToHTML(&CatLine); + + DataLines.append(wxT("")); + DataLines.append(_("Category:")); + DataLines.append(wxT(" ")); + DataLines.append(CatLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Categories")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Groups + + + + // Calendar Addresses + + ContactData = vCardObj->GetByPartial(wxT("CALURI")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString CalURILine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + CalURILine = ContactData.PropValues[i]; + + CalURILine.Trim(); + CaptureString(&CalURILine, FALSE); + ConvertToHTML(&CalURILine); + + DataLines.append(wxT("")); + DataLines.append(_("Calendar Address:")); + DataLines.append(wxT(" ")); + DataLines.append(CalURILine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Calendar Addresses")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Calendar Request Addresses + + ContactData = vCardObj->GetByPartial(wxT("CALADRURI")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString CalAdrURILine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + CalAdrURILine = ContactData.PropValues[i]; + + CalAdrURILine.Trim(); + CaptureString(&CalAdrURILine, FALSE); + ConvertToHTML(&CalAdrURILine); + + DataLines.append(wxT("")); + DataLines.append(_("Calendar Request Address:")); + DataLines.append(wxT(" ")); + DataLines.append(CalAdrURILine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Calendar Request Addresses")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Free/Busy Addresses + + ContactData = vCardObj->GetByPartial(wxT("FBURL")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString FBURLLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + FBURLLine = ContactData.PropValues[i]; + + FBURLLine.Trim(); + CaptureString(&FBURLLine, FALSE); + ConvertToHTML(&FBURLLine); + + DataLines.append(wxT("")); + DataLines.append(_("Free/Busy Address:")); + DataLines.append(wxT(" ")); + DataLines.append(FBURLLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + DataLines.Trim(); + PageData.append(wxT("

")); + PageData.append(_("Free/Busy Addresses")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Notes + + ContactData = vCardObj->GetByPartial(wxT("NOTE")); + + DataDisplay = FALSE; + DataLines.clear(); + + if (ContactData.PropCount > 0){ + + wxString NoteLine; + + for (int i = 0; i < ContactData.PropCount; i++){ + + NoteLine = ContactData.PropValues[i]; + + NoteLine.Trim(); + CaptureString(&NoteLine, FALSE); + ConvertToHTML(&NoteLine); + + DataLines.append(wxT("")); + DataLines.append(_("Note:")); + DataLines.append(wxT(" ")); + DataLines.append(NoteLine); + DataLines.append(wxT("")); + + } + + DataDisplay = TRUE; + + } + + if (DataDisplay == TRUE){ + + PageData.append(wxT("

")); + PageData.append(_("Notes")); + PageData.append(wxT("

")); + PageData.append(wxT("
")); + PageData.append(wxT("")); + PageData.append(DataLines); + PageData.append(wxT("
")); + + } + + // Display the HTML document on the screen. + + PageData.append(wxT("")); + PageData.append(wxT("")); + + HTMLObj->SetPage(PageData); + +} + +void SplitPropertyData(wxString *PropertyLine, + std::map *SplitPoints, + std::map *SplitLength, + int intSize, + std::map *SplitData){ + + wxString DataStr; + wxStringTokenizer PropertyElement; + wxString PropertyName; + wxString PropertyValue; + int intPropertyLen = PropertyLine->Len(); + int intSplitsFound = 0; + int intSplitSize = 0; + int intSplitSeek = (intSize - 1); + + for (int i = intSize; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (PropertyLine->Mid(i, 1) == wxT(";") && + PropertyLine->Mid((i - 1), 1) != wxT("\\")){ + + if (intSplitsFound == 0){ + + DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize)); + SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize))); + + } else { + + DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize - 1)); + SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1))); + + intSplitsFound++; + intSplitSeek = (i + 1); + intSplitSize = 0; + + if (!DataStr.IsEmpty()){ + + PropertyElement.SetString(DataStr, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + SplitData->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + DataStr.clear(); + PropertyName.clear(); + PropertyValue.clear(); + + } + + } + + if (intSplitsFound == 0){ + + DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize)); + + SplitPoints->insert(std::make_pair(intSplitsFound, (8 + 1))); + SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize)); + + } else { + + DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize - 1)); + + SplitPoints->insert(std::make_pair(intSplitsFound, (intSplitSeek + 1))); + SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize)); + + } + + if (!DataStr.IsEmpty()){ + + PropertyElement.SetString(DataStr, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + SplitData->insert(std::make_pair(PropertyName, PropertyValue)); + + } + +} \ No newline at end of file diff --git a/source/common/getcontactinfo.cpp~ b/source/common/getcontactinfo.cpp~ new file mode 100644 index 0000000..2764df7 --- /dev/null +++ b/source/common/getcontactinfo.cpp~ @@ -0,0 +1,81 @@ +#include +#include "getcontactinfo.h" +#include + +void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj){ + + wxString strPageHeader; + wxString strPageFooter; + wxString strPageData; + wxString strFinal; + wxString strvCardData; + + strPageHeader = wxT("\n\t"); + strPageFooter = wxT("\n\t\n"); + + // Get the full name of the contact. + + strvCardData = vCardObj->Get(wxT("FN")); + + strPageData = wxT("

") + strvCardData + wxT("

"); + strPageData.Append(wxT("

")); + + // Get nickname. + + strvCardData = vCardObj->Get(wxT("NICKNAME")); + + if (!strvCardData.IsEmpty()){ + + strPageData.Append(wxT("Nickname: ")); + strPageData.Append(strvCardData); + strPageData.Append(wxT("

")); + + } + + strvCardData = vCardObj->Get(wxT("TITLE")); + + if (!strvCardData.IsEmpty()){ + + strPageData.Append(wxT("Title: ")); + strPageData.Append(strvCardData); + strPageData.Append(wxT("

")); + + } + + strvCardData = vCardObj->Get(wxT("ROLE")); + + if (!strvCardData.IsEmpty()){ + + strPageData.Append(wxT("Role: ")); + strPageData.Append(strvCardData); + strPageData.Append(wxT("

")); + + } + + strvCardData = vCardObj->Get(wxT("GENDER")); + + if (!strvCardData.IsEmpty()){ + + strPageData.Append(wxT("Gender: ")); + + if (strvCardData == wxT("M")){ + strPageData.Append(wxT("Male")); + } else if (strvCardData == wxT("F")){ + strPageData.Append(wxT("Female")); + } else if (strvCardData == wxT("O")){ + strPageData.Append(wxT("Other")); + } else if (strvCardData == wxT("N")){ + strPageData.Append(wxT("None/Not Applicable")); + } else if (strvCardData == wxT("U")){ + strPageData.Append(wxT("Unknown")); + } + + strPageData.Append(wxT("

")); + + } + + strFinal = strPageHeader + strPageData + strPageFooter; + + HTMLObj->SetPage(strFinal); + +} \ No newline at end of file diff --git a/source/common/getcontactinfo.h b/source/common/getcontactinfo.h new file mode 100644 index 0000000..303ebba --- /dev/null +++ b/source/common/getcontactinfo.h @@ -0,0 +1,19 @@ +#include +#include +#include +#include +#include "../vcard/vcard.h" + +#ifndef GETCONTACTINFO_H +#define GETCONTACTINFO_H + +void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj, wxString SID, + wxString OldSID, std::map *MemoryFSList); +void ProcessIMPPType(wxString *PageData, wxString *IMPPType, bool PreferredContact); +void SplitPropertyData(wxString *PropertyLine, std::map *SplitPoints, std::map *SplitLength, + int intSize, std::map *SplitData); + +WX_DECLARE_STRING_HASH_MAP(int, vCardOrderInt); +WX_DECLARE_STRING_HASH_MAP(wxString, vCardOrderStr); + +#endif \ No newline at end of file diff --git a/source/common/getcontactinfo.h~ b/source/common/getcontactinfo.h~ new file mode 100644 index 0000000..b073e0c --- /dev/null +++ b/source/common/getcontactinfo.h~ @@ -0,0 +1,11 @@ +#include +#include +#include +#include "../vcard/vcard.h" + +#ifndef GETCONTACTINFO_H +#define GETCONTACTINFO_H + +void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj); + +#endif \ No newline at end of file diff --git a/source/common/mime.cpp b/source/common/mime.cpp new file mode 100644 index 0000000..4dc720d --- /dev/null +++ b/source/common/mime.cpp @@ -0,0 +1,45 @@ +#include + +wxString GetMIME(wxString FilenameInc){ + + wxString MIMEResult; + +#ifdef __WIN32__ + +#include + + /*char *; + unsigned long Buffersize; + FindMimeFromData(NULL, NULL, , , NULL, FMFD_DEFAULT, , 0);*/ + +#else + +#include + + const char *MIMEType; + magic_t MagicCookie = magic_open(MAGIC_MIME); + magic_setflags(MagicCookie, MAGIC_MIME_TYPE); + + if (!MagicCookie){ + + wxMessageBox(_("An error occured with the support library for getting the picture/audio type."), _("Error opening picture/audio file"), wxICON_ERROR); + return; + + } + + if (magic_load(MagicCookie, NULL) != 0) { + + wxMessageBox(_("An error occured whilst determining the picture/audio type."), _("Error opening picture/audio file"), wxICON_ERROR); + return; + + } + + MIMEType = magic_file(MagicCookie, FilenameInc.mb_str()); + MIMEResult = wxString::FromUTF8(MIMEType); + magic_close(MagicCookie); + +#endif + + return MIMEResult; + +} \ No newline at end of file diff --git a/source/common/mime.h b/source/common/mime.h new file mode 100644 index 0000000..60481d5 --- /dev/null +++ b/source/common/mime.h @@ -0,0 +1,8 @@ +#include + +#ifndef MIME_H +#define MIME_H + +wxString GetMIME(wxString FilenameInc); + +#endif \ No newline at end of file diff --git a/source/common/preferences.cpp b/source/common/preferences.cpp new file mode 100644 index 0000000..218b7b0 --- /dev/null +++ b/source/common/preferences.cpp @@ -0,0 +1,374 @@ +#include +#include +#include +#include +#include + +#include "preferences.h" + +using namespace std; + +void SavePreferences(); +void LoadPreferences(); + +XABPreferences::XABPreferences(wxString PreferencesFilename){ + + //fstream preffile; + wxString fullprefpath; + + int accountnum = 0; + + bool accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid, + accountsslvalid, accountusernamevalid, accountpasswordvalid, + accountdirprefixvalid, accountdirvalid, accountrefreshvalid = FALSE; + + bool preaccountstage = FALSE; + bool isvalidaccount = FALSE; + bool isvalidsection = FALSE; + wxString accountname; + wxString accountaddress; + wxString accounttype; + long accountport = 8080; + long accountrefresh; + bool accountssl; + wxString accountusername; + wxString accountpassword; + wxString accountdirprefix; + wxString accountdir; + + wxString firstchar; + string s; + + wxString segmentname; + wxString segmentvalue; + + // Load the settings. + + fullprefpath.Append(PreferencesFilename); + fullprefpath.Append(wxT("settings")); + + wxFileConfig *settingfile = new wxFileConfig("", "", fullprefpath); + + wxString ValueInc; + settingfile->Read(wxT("SaveWindowPosition"), &ValueInc); + + if (ValueInc == wxT("true")){ + + SaveWindowPos = TRUE; + wxRect WindowPosition; + + long PosX, PosY, PosH, PosW = 0; + + bool PosXValid, PosYValid, PosHValid, PosWValid = FALSE; + + PosXValid = settingfile->Read(wxT("WindowPositionX"), &PosX); + PosYValid = settingfile->Read(wxT("WindowPositionY"), &PosY); + PosHValid = settingfile->Read(wxT("WindowPositionHeight"), &PosH); + PosWValid = settingfile->Read(wxT("WindowPositionWidth"), &PosW); + + if (PosXValid == TRUE && PosYValid == TRUE && PosHValid == TRUE && PosWValid == TRUE){ + + WindowPosition.SetX(PosX); + WindowPosition.SetY(PosY); + WindowPosition.SetHeight(PosH); + WindowPosition.SetWidth(PosW); + + } else { + + WindowPosition.SetX(-1); + WindowPosition.SetY(-1); + WindowPosition.SetHeight(500); + WindowPosition.SetWidth(300); + + } + + SetMainWindowData(WindowPosition); + + } + + settingfile->Read(wxT("HideLocalAddressBooks"), &ValueInc); + + if (ValueInc == wxT("true")){ + HideLocalABs = TRUE; + } + + delete settingfile; + settingfile = NULL; + + // Load the accounts. + + fullprefpath.Clear(); + fullprefpath.Append(PreferencesFilename); + fullprefpath.Append(wxT("accounts")); + + wxFileConfig *cfgfile = new wxFileConfig("AddressBook", "Xestia", fullprefpath); + + wxString EntryName, EntryValue; + wxString AccAdr, AccUsr, AccPass, AccPrefix, AccDir; + wxString AccSSLInc; + bool AccSSL = FALSE; + int AccRef, AccPort = 0; + long itemindex = 0; + long subitemindex = 0; + bool ContinueAcc = TRUE; + bool ContinueProc = TRUE; + + ContinueAcc = cfgfile->GetFirstGroup(accountname, itemindex); + + while (ContinueAcc){ + + cfgfile->SetPath(accountname); + //ContinueProc = cfgfile->GetFirstEntry(EntryName, subitemindex); + cfgfile->Read(wxT("type"), &EntryValue); + + if (EntryValue == wxT("Local")){ + + // Get the account directory. + + cfgfile->Read(wxT("accountdir"), &AccDir); + + if (AccDir.Len() > 4){ + + accountdirvalid = TRUE; + + } else { + + accountdirvalid = FALSE; + + } + + if (accountdirvalid == TRUE){ + + accounts.AddAccount(accountname, wxT("Local"), wxT(""), 0, + 0, wxT(""), wxT(""), + wxT(""), AccDir, 0); + + } + + } else if (EntryValue == wxT("CardDAV")){ + + cfgfile->Read(wxT("accountdir"), &AccDir); + accountaddressvalid = cfgfile->Read(wxT("address"), &AccAdr); + accountportvalid = cfgfile->Read(wxT("port"), &AccPort); + accountsslvalid = cfgfile->Read(wxT("ssl"), &AccSSLInc); + if (AccSSLInc == wxT("true")){ + AccSSL = TRUE; + } + accountusernamevalid = cfgfile->Read(wxT("username"), &AccUsr); + accountpasswordvalid = cfgfile->Read(wxT("password"), &AccPass); + accountdirprefixvalid = cfgfile->Read(wxT("prefix"), &AccPrefix); + accountrefreshvalid = cfgfile->Read(wxT("refresh"), &AccRef); + + if (AccDir.Len() > 4){ + + accountdirvalid = TRUE; + + } + + // Make sure it is not bigger than 65535 or less than 1. + // If so, default to port 8008. + + if (accountport < 1 || accountport > 65535){ + accountport = 8008; + accountportvalid = TRUE; + } + + accounts.AddAccount(accountname, wxT("CardDAV"), AccAdr, AccPort, + AccSSL, AccUsr, AccPass, + AccPrefix, AccDir, AccRef); + + } + + // Clear up for the next account. + + accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid, + accountsslvalid, accountusernamevalid, accountpasswordvalid, + accountdirprefixvalid, accountdirvalid, accountrefreshvalid, accountssl, + isvalidaccount, isvalidsection = FALSE; + AccAdr.Clear(); + //AccPort.Clear(); + AccDir.Clear(); + AccUsr.Clear(); + AccPass.Clear(); + AccPrefix.Clear(); + accountname.Clear(); + accountaddress.Clear(); + accounttype.Clear(); + accountport = 0; + accountrefresh = 0; + accountusername.Clear(); + accountpassword.Clear(); + accountdirprefix.Clear(); + preaccountstage = TRUE; + + cfgfile->SetPath(wxT("/")); + ContinueAcc = cfgfile->GetNextGroup(accountname, itemindex); + } + +} + +XABPreferences::~XABPreferences(){ + +} + +bool XABPreferences::GetBoolData(wxString SettingName){ + + if (SettingName == wxT("SaveWindowPosition")) { return SaveWindowPos; } + else if (SettingName == wxT("HideLocalAddressBooks")) { return HideLocalABs; } + + return FALSE; + +} + +wxRect XABPreferences::GetMainWindowData(){ + + return MainWindowData; + +} + +void XABPreferences::SetMainWindowData(wxRect WindowData){ + + MainWindowData = WindowData; + +} + +// XABPrefAccounts + +XABPrefAccounts::XABPrefAccounts(){ + AccountsCount = 0; +} + +int XABPrefAccounts::AddAccount(wxString NewAccName, + wxString NewAccType, + wxString NewAccAddress, + int NewAccPort, + int NewAccSSL, + wxString NewAccUser, + wxString NewAccPass, + wxString NewAccDirPrefix, + wxString NewAccDir, + long NewAccRefresh +){ + + AccountName.Add(NewAccName, 1); + AccountType.Add(NewAccType, 1); + AccountAddress.Add(NewAccAddress, 1); + AccountPort.Add(NewAccPort, 1); + AccountSSL.Add(NewAccSSL, 1); + AccountUsername.Add(NewAccUser, 1); + AccountPassword.Add(NewAccPass, 1); + DirectoryPrefix.Add(NewAccDirPrefix, 1); + AccountDirectory.Add(NewAccDir, 1); + AccountRefresh.Add(NewAccRefresh, 1); + + AccountsCount++; + + return 0; + +} + +int XABPrefAccounts::GetCount(){ + + return AccountsCount; + +} + +wxString XABPrefAccounts::GetAccountName(int AccountNum){ + + if (AccountNum > AccountsCount){ + return wxT(""); + } + + return AccountName[AccountNum]; + +} + +wxString XABPrefAccounts::GetAccountType(int AccountNum){ + + if (AccountNum > AccountsCount){ + return wxT(""); + } + + return AccountType[AccountNum]; + +} + +wxString XABPrefAccounts::GetAccountAddress(int AccountNum){ + + if (AccountNum > AccountsCount){ + return wxT(""); + } + + return AccountAddress[AccountNum]; + +} + +int XABPrefAccounts::GetAccountPort(int AccountNum){ + + if (AccountNum > AccountsCount){ + return 0; + } + + return AccountPort[AccountNum]; + +} + +bool XABPrefAccounts::GetAccountSSL(int AccountNum){ + + if (AccountNum > AccountsCount){ + return wxT(""); + } + + return AccountSSL[AccountNum]; + +} + +wxString XABPrefAccounts::GetAccountUsername(int AccountNum){ + + if (AccountNum > AccountsCount){ + return wxT(""); + } + + return AccountUsername[AccountNum]; + +} + +wxString XABPrefAccounts::GetAccountPassword(int AccountNum){ + + if (AccountNum > AccountsCount){ + return wxT(""); + } + + return AccountPassword[AccountNum]; + +} + +wxString XABPrefAccounts::GetAccountDirectory(int AccountNum){ + + if (AccountNum > AccountsCount){ + return wxT(""); + } + + return AccountDirectory[AccountNum]; + +} + +wxString XABPrefAccounts::GetAccountDirPrefix(int AccountNum){ + + if (AccountNum > AccountsCount){ + return wxT(""); + } + + return DirectoryPrefix[AccountNum]; + +} + +long XABPrefAccounts::GetAccountRefresh(int AccountNum){ + + if (AccountNum > AccountsCount){ + return 0; + } + + return AccountRefresh[AccountNum]; + +} \ No newline at end of file diff --git a/source/common/preferences.h b/source/common/preferences.h new file mode 100644 index 0000000..a56c0e0 --- /dev/null +++ b/source/common/preferences.h @@ -0,0 +1,105 @@ +#include +#include + +#ifndef PREFERENCES_H +#define PREFERENCES_H + +void SavePreferences(); +void LoadPreferences(); + +class XABPrefThemes +{ +private: + +public: + wxArrayString ThemeName; + wxArrayString ThemeData; +}; + +class XABPrefAccounts +{ +private: + wxArrayString AccountName; + wxArrayString AccountType; + wxArrayString AccountAddress; + wxArrayInt AccountPort; + wxArrayInt AccountSSL; + wxArrayString AccountUsername; + wxArrayString AccountPassword; + wxArrayString DirectoryPrefix; + wxArrayString AccountDirectory; + wxArrayLong AccountRefresh; + int AccountsCount; +public: + XABPrefAccounts(); + + int GetCount(); + wxString GetAccountName(int AccountNum); + wxString GetAccountType(int AccountNum); + wxString GetAccountAddress(int AccountNum); + int GetAccountPort(int AcconutNum); + bool GetAccountSSL(int AccountNum); + wxString GetAccountUsername(int AccountNum); + wxString GetAccountPassword(int AccountNum); + wxString GetAccountDirectory(int AccountNum); + wxString GetAccountDirPrefix(int AccountNum); + long GetAccountRefresh(int AccountNum); + int AddAccount(wxString NewAccName, + wxString NewAccType, + wxString NewAccAddress, + int NewAccPort, + int NewAccSSL, + wxString NewAccUser, + wxString NewAccPass, + wxString NewAccDirPrefix, + wxString NewAccDir, + long NewAccRefresh + ); +}; + +//XABPreferences should emulate what is in the Preferences window. +//Including others which aren't in the window such as main window +//position and size. + +class XABPreferences +{ +private: + + // General Tab + bool SaveWindowPos = FALSE; + wxRect MainWindowData; + bool HideLocalABs = FALSE; + + // Themes tab + bool EnableThemes = FALSE; + + // Accounts tab + + // General things. + wxString Filename; + +public: + XABPreferences(wxString PreferencesFilename); + ~XABPreferences(); + + XABPrefAccounts accounts; + XABPrefThemes themes; + + int WritePreferences(); + int ReadPreferences(); + + bool GetBoolData(wxString SettingName); + bool SetBoolData(wxString SettingName, bool SettingValue); + wxRect GetMainWindowData(); + void SetMainWindowData(wxRect WindowData); + + //int AddAccount(wxString Name); + + int GetThemeCount(); + wxString GetThemeData(wxString ThemeName); + + int ErrorFlag; + +}; + +#endif diff --git a/source/common/preferences.h~ b/source/common/preferences.h~ new file mode 100644 index 0000000..515f34d --- /dev/null +++ b/source/common/preferences.h~ @@ -0,0 +1,99 @@ +#include +#include + +#ifndef PREFERENCES_H +#define PREFERENCES_H + +void SavePreferences(); +void LoadPreferences(); + +class XABPrefThemes +{ +private: + +public: + wxArrayString ThemeName; + wxArrayString ThemeData; +}; + +class XABPrefAccounts +{ +private: + wxArrayString AccountName; + wxArrayString AccountType; + wxArrayString AccountAddress; + wxArrayInt AccountPort; + wxArrayInt AccountSSL; + wxArrayString AccountUsername; + wxArrayString AccountPassword; + wxArrayString DirectoryPrefix; + wxArrayString AccountDirectory; + int AccountsCount; +public: + XABPrefAccounts(); + + int GetCount(); + wxString GetAccountName(int AccountNum); + wxString GetAccountType(int AccountNum); + wxString GetAccountAddress(int AccountNum); + int GetAccountPort(int AcconutNum); + bool GetAccountSSL(int AccountNum); + wxString GetAccountUsername(int AccountNum); + wxString GetAccountPassword(int AccountNum); + wxString GetAccountDirectory(int AccountNum); + wxString GetAccountDirPrefix(int AccountNum); + int AddAccount(wxString NewAccName, + wxString NewAccType, + wxString NewAccAddress, + int NewAccPort, + int NewAccSSL, + wxString NewAccUser, + wxString NewAccPass, + wxString NewAccDirPrefix, + wxString NewAccDir + ); +}; + +//XABPreferences should emulate what is in the Preferences window. +//Including others which aren't in the window such as main window +//position and size. + +class XABPreferences +{ +private: + + // General Tab + bool savewindowpos; + bool hidelocalabs; + + // Themes tab + bool enablethemes; + + // Accounts tab + + // General things. + wxString Filename; + +public: + XABPreferences(wxString PreferencesFilename); + ~XABPreferences(); + + XABPrefAccounts accounts; + XABPrefThemes themes; + + int WritePreferences(); + int ReadPreferences(); + + bool GetBoolData(wxString SettingName); + bool SetBoolData(wxString SettingName, bool SettingValue); + + //int AddAccount(wxString Name); + + int GetThemeCount(); + wxString GetThemeData(wxString ThemeName); + + int errorflag; + +}; + +#endif diff --git a/source/common/sslcertstructs.h b/source/common/sslcertstructs.h new file mode 100644 index 0000000..53fdf9e --- /dev/null +++ b/source/common/sslcertstructs.h @@ -0,0 +1,22 @@ +#include + +#ifndef __COMMON_SSLCERTSTRUCTS_H__ +#define __COMMON_SSLCERTSTRUCTS_H__ + + +struct SSLCertData{ + + std::multimap CertData; + +}; + +struct SSLCertCollection{ + + int SuccessCode = 0; + + //std::map SSLCollection; + std::map SSLCollection; + +}; + +#endif \ No newline at end of file diff --git a/source/common/svrblist.cpp b/source/common/svrblist.cpp new file mode 100644 index 0000000..3649a4b --- /dev/null +++ b/source/common/svrblist.cpp @@ -0,0 +1,22 @@ +#include +#include + +bool CheckBlacklist(wxString ServerAddress){ + + wxString ServerBlacklist = "google.com"; + wxString BListHostname; + + wxStringTokenizer ServerBlacklistTkz(ServerBlacklist, wxT("|")); + + while(ServerBlacklistTkz.HasMoreTokens()){ + + BListHostname = ServerBlacklistTkz.GetNextToken(); + if (BListHostname == ServerAddress){ + return TRUE; + } + + } + + return FALSE; + +} \ No newline at end of file diff --git a/source/common/svrblist.h b/source/common/svrblist.h new file mode 100644 index 0000000..ba0423e --- /dev/null +++ b/source/common/svrblist.h @@ -0,0 +1,8 @@ +#include + +#ifndef COMMON_SVRBLIST_H +#define COMMON_SVRBLIST_H + +bool CheckBlacklist(wxString ServerAddress); + +#endif \ No newline at end of file diff --git a/source/common/textprocessing.cpp b/source/common/textprocessing.cpp new file mode 100644 index 0000000..ba4f7d9 --- /dev/null +++ b/source/common/textprocessing.cpp @@ -0,0 +1,105 @@ +#include +#include +#include +#include +#include +#include "textprocessing.h" + +void EscapeString(wxString *ReceivedString, bool StripQuotes) +{ + + ReceivedString->Replace(wxT("\\"), wxT("\\\\"), TRUE); + ReceivedString->Replace(wxT(","), wxT("\\,"), TRUE); + ReceivedString->Replace(wxT(";"), wxT("\\;"), TRUE); + ReceivedString->Replace(wxT("\r\n"), wxT("\\n"), TRUE); + ReceivedString->Replace(wxT("\n"), wxT("\\n"), TRUE); + + if (StripQuotes == TRUE){ + + ReceivedString->Replace(wxT("\""), wxT(""), TRUE); + + } + +} + +void GetEscapeString(wxTextCtrl *TextCtrl, wxString *ProcessString, bool StripQuotes) +{ + + *ProcessString = TextCtrl->GetValue(); + EscapeString(ProcessString, StripQuotes); + +} + +void GetEscapeString(wxComboBox *ComboCtrl, wxString *ProcessString, bool StripQuotes) +{ + + *ProcessString = ComboCtrl->GetValue(); + EscapeString(ProcessString, StripQuotes); + +} + +void GetEscapeString(wxChoice *ChoiceCtrl, wxString *ProcessString, bool StripQuotes) +{ + + *ProcessString = ChoiceCtrl->GetString(ChoiceCtrl->GetSelection()); + EscapeString(ProcessString, StripQuotes); + +} + +void CaptureString(wxString *ProcessString, bool StripQuotes) +{ + + ProcessString->Replace(wxT("\\n"), wxT("\n"), TRUE); + ProcessString->Replace(wxT("\\;"), wxT(";"), TRUE); + ProcessString->Replace(wxT("\\,"), wxT(","), TRUE); + ProcessString->Replace(wxT("\\\\"), wxT("\\"), TRUE); + + if (StripQuotes == TRUE){ + + ProcessString->Replace(wxT("\""), wxT(""), TRUE); + + } + +} + +void ConvertToHTML(wxString *ProcessString) +{ + + ProcessString->Replace(wxT("&"), wxT("&"), TRUE); + ProcessString->Replace(wxT("<"), wxT("<"), TRUE); + ProcessString->Replace(wxT(">"), wxT(">"), TRUE); + ProcessString->Replace(wxT("\n"), wxT("
"), TRUE); + +} + +void DeleteMapDataProcess(int IndexNum, std::map* MapData){ + MapData->erase(IndexNum); +} + +void DeleteMapDataProcess(int IndexNum, std::map* MapData){ + MapData->erase(IndexNum); +} + +void DeleteMapDataProcess(int IndexNum, std::map* MapData){ + MapData->erase(IndexNum); +} + +void DeleteMapDataProcess(int IndexNum, std::map* MapData){ + MapData->erase(IndexNum); +} + +/* +template +void DeleteMapData(ArgMap* ArgMapPtr, Args*... ArgsList){ + + //DeleteMapDataProcess(ArgMapPtr); + + DeleteMapData(ArgsList...); + +} +*/ +/* +void test(int* x) { + +} +*/ \ No newline at end of file diff --git a/source/common/textprocessing.h b/source/common/textprocessing.h new file mode 100644 index 0000000..eecc2c1 --- /dev/null +++ b/source/common/textprocessing.h @@ -0,0 +1,114 @@ +#include +#include +#include + +#ifndef TEXTPROCESSING_H +#define TEXTPROCESSING_H + +void EscapeString(wxString *ReceivedString, bool StripQuotes); +void GetEscapeString(wxTextCtrl *TextCtrl, wxString *ProcessString, bool StripQuotes); +void GetEscapeString(wxComboBox *ComboCtrl, wxString *ProcessString, bool StripQuotes); +void GetEscapeString(wxChoice *ChoiceCtrl, wxString *ProcessString, bool StripQuotes); +void CaptureString(wxString *ProcessString, bool StripQuotes); +void ConvertToHTML(wxString *ProcessString); + +void DeleteMapDataProcess(int IndexNum, std::map* MapData); +void DeleteMapDataProcess(int IndexNum, std::map* MapData); +void DeleteMapDataProcess(int IndexNum, std::map* MapData); +void DeleteMapDataProcess(int IndexNum, std::map* MapData); + +//void DeleteMapDataB() {}; + +//void DeleteMapData() {}; + + +/* +template +void DeleteMapData(ArgMap* ArgMapPtr, Args*... ArgsList){ + +} +*/ + + + +/* +template +void test(const char* s, T t) { + while (*s) { + if (*s == '%' && *(++s) != '%') { + if (*s == '*') { + //throw std::runtime_error("Not enough parameters!"); + } else { + std::cout << t; + test(++s); + } + return; + } + std::cout << *s++; + } + //throw std::logic_error("Too many arguments!"); +} + + + +template +void test(const char* s, T t, U u, Args... args) { + while (*s) { + if (*s == '%' && *(++s) != '%') { + if (*s == '*') { + int width = 0; +// width = t; // Uncommenting this would cause a failure if the parameters aren't all int's. + bitcopy(&width, &t); + std::cout << std::setw(width) << u; + test(s+2, args...); + } else { + std::cout << t; + test(++s, u, args...); + } + return; + } + std::cout << *s++; + } + //throw std::logic_error("Too many arguments!"); +} +*/ +/* + + +template +void DeleteMapData(int IndexNum, Args*... args) { + + //DeleteMapDataProcess(IndexNum, t); + + intSeekSelectedData = IndexNum; + DeleteMapDataB(args...); + + //throw std::logic_error("Too many arguments!"); +} + +*/ + +//void DeleteMapDataB() { }; + +template +void DeleteMapDataB(MapData* mapdata, Args*... args) { + + DeleteMapDataB(args...); + +} + +template +void DeleteMapData(int IndexNum, Args*... args) { + + //int intSeekSelectedData = 0; + + //DeleteMapDataProcess(IndexNum, Moo); + + //intSeekSelectedData = IndexNum; + DeleteMapDataB(args...); + +} + +//void DeleteMapData(ArgMap* ArgMapPtr, Args*... ArgsList); + +#endif diff --git a/source/common/timers.cpp b/source/common/timers.cpp new file mode 100644 index 0000000..02bc920 --- /dev/null +++ b/source/common/timers.cpp @@ -0,0 +1,596 @@ +#include "../frmActivityMgr.h" +#include "../frmContact.h" +#include "../frmMain.h" +#include +#include +#include +#include +#include +#include "../bitmaps.h" +#include "../enums.h" +#include "../common/preferences.h" +#include "../common/etag.h" +#include "../common/dirs.h" + +void wxActTimer::Notify(){ + + frmMain *frmMainPtrProc = static_cast(frmMainPtr); + + wxCommandEvent shuffleevent(ACTMGR_SHUFFLE); + + if (intActivityProgress == 0){ + + wxMemoryInputStream istream(misc_activity1_png, sizeof(misc_activity1_png)); + wxImage misc_activity1_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity1_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 1){ + + wxMemoryInputStream istream(misc_activity2_png, sizeof(misc_activity2_png)); + wxImage misc_activity2_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity2_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 2){ + + wxMemoryInputStream istream(misc_activity3_png, sizeof(misc_activity3_png)); + wxImage misc_activity3_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity3_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 3){ + + wxMemoryInputStream istream(misc_activity4_png, sizeof(misc_activity4_png)); + wxImage misc_activity4_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity4_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 4){ + + wxMemoryInputStream istream(misc_activity5_png, sizeof(misc_activity5_png)); + wxImage misc_activity5_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity5_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 5){ + + wxMemoryInputStream istream(misc_activity6_png, sizeof(misc_activity6_png)); + wxImage misc_activity6_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity6_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 6){ + + wxMemoryInputStream istream(misc_activity7_png, sizeof(misc_activity7_png)); + wxImage misc_activity7_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity7_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 7){ + + wxMemoryInputStream istream(misc_activity8_png, sizeof(misc_activity8_png)); + wxImage misc_activity8_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity8_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 8){ + + wxMemoryInputStream istream(misc_activity9_png, sizeof(misc_activity9_png)); + wxImage misc_activity9_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity9_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 9){ + + wxMemoryInputStream istream(misc_activity10_png, sizeof(misc_activity10_png)); + wxImage misc_activity10_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity10_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 10){ + + wxMemoryInputStream istream(misc_activity11_png, sizeof(misc_activity11_png)); + wxImage misc_activity11_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity11_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress++; + + } else if (intActivityProgress == 11){ + + wxMemoryInputStream istream(misc_activity12_png, sizeof(misc_activity12_png)); + wxImage misc_activity12_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(misc_activity12_pngi, -1); + bmpActivity->SetBitmap(activityiconbmp); + + intActivityProgress = 0; + + } + + wxPostEvent(frmMainPtrProc, shuffleevent); + +} + +void wxActTimer::SetBitmap(wxStaticBitmap *bitmap) +{ + + bmpActivity = bitmap; + +} + +void wxActTimer::SetSleepBitmap(wxBitmap *SleepBitmap) +{ + + SleepBitmapPtr = SleepBitmap; + +} + +void wxActTimer::StopAnimation() +{ + + // Stop the icon animation. + + frmMain *frmMainPtrProc = static_cast(frmMainPtr); + + wxCommandEvent actstop(ACTMGR_STOP); + wxPostEvent(frmMainPtrProc, actstop); + //frmMainPtrProc->ActivityIconStop(); + + this->Stop(); + bmpActivity->SetBitmap(*SleepBitmapPtr); +} + +void wxActTimer::StartAnimation() +{ + + frmMain *frmMainPtrProc = static_cast(frmMainPtr); + wxCommandEvent actstart(ACTMGR_START); + wxPostEvent(frmMainPtrProc, actstart); + //frmMainPtrProc->ActivityIconStart(); + + this->ResetBitmap(); + this->Start(50, FALSE); +} + +void wxActTimer::ResetBitmap() +{ + + intActivityProgress = 0; + +} + +void wxActTimer::SetupPointer(void *frmMainPtrIn) +{ + + frmMainPtr = frmMainPtrIn; + +} + +void wxActProcessTimer::Notify() +{ + + // Pause the timer whilst processing to avoid problems. + + this->Stop(); + + // Process Tasks. + + frmActivityMgr *ActMgrPtrProc = static_cast(ActMgrPtr); + ActMgrPtrProc->ProcessTasks(); + +} + +void wxActProcessTimer::SetupPointers(void *ActMgr){ + + ActMgrPtr = ActMgr; + +} + +void wxActListProcTimer::Notify(){ + + // Setup Label and get task data (update SetupPointers subroutine). + + this->Stop(); + + for (std::map::iterator iter = ActListPtr->begin(); + iter != ActListPtr->end(); ++iter){ + + // Check for any queued tasks and start one. + + if (iter->second > 4){ + continue; + } + + + // 0 = Queued. + // 1 = Processing. + // 2 = Failed. + // 3 = Stopped. + // 4 = Completed. + // 5 = Failed (UI Updated). + // 6 = Stopped (UI Updated). + // 7 = (Reserved) (UI Updated). + // 8 = Completed. (UI Updated). + + std::map::iterator LongIter = ActListUIPtr->find(iter->first); + std::map::iterator DetailIter = ActListDetailPtr->find(iter->first); + + if (iter->second == 1){ + + lstActivityPtr->SetItem(LongIter->second, 2, _("Processing...")); + if (ActListDetailPtr->find(iter->first) != ActListDetailPtr->end()){ + lblDetailsPtr->SetLabel(_("Adding Contact '") + DetailIter->second + _("'...")); + } + //CardDAVIter->second. + + } else if (iter->second == 2){ + + lstActivityPtr->SetItem(LongIter->second, 2, _("Failed")); + iter->second = 5; + + } else if (iter->second == 3){ + + lstActivityPtr->SetItem(LongIter->second, 2, _("Stopped")); + iter->second = 6; + + } else if (iter->second == 4){ + + lstActivityPtr->SetItem(LongIter->second, 2, _("Completed")); + iter->second = 8; + + } + + // Insert a finish date. + + wxDateTime adt; + adt = adt.Now(); + + ActListFinDTPtr->insert(std::make_pair(iter->first, adt)); + + } + + if (ClearupProcessed == TRUE){ + + // Clear up processed items. + + // Delete the processed items. + + ClearupProcessed = FALSE; + + } + + if (*TasksActivePtr == FALSE){ + + ActTimerPtr->StopAnimation(); + lblDetailsPtr->SetLabel(_("No activity.")); + + } else { + + this->Start(); + + } + +} + +void wxActListProcTimer::SetupPointers(std::map *ActList, std::map *ActListUI, + std::map *ActListDetail, bool *TasksActive, + wxListCtrl *lstActivity, wxStaticText *lblDetails, wxGauge *GauProgress, + void *ActMgr, wxActTimer *ActTimer, wxActProcessTimer *ActProcessTimer, + std::map *ActListFinDT){ + + ActListPtr = ActList; + ActListUIPtr = ActListUI; + ActListDetailPtr = ActListDetail; + TasksActivePtr = TasksActive; + lstActivityPtr = lstActivity; + lblDetailsPtr = lblDetails; + GauProgressPtr = GauProgress; + ActMgrPtr = ActMgr; + ActTimerPtr = ActTimer; + ActProcessTimerPtr = ActProcessTimer; + ActListFinDTPtr = ActListFinDT; + +} + +void wxActListProcTimer::EnableClearup(){ + + ClearupProcessed = TRUE; + +} + +void wxETagProcessTimer::Notify(){ + + // Check each ETagDB and see if writing to file is required. + + //ETagDB* ETagDBPtr; + //ETagDB ETagDBCopy; + + std::map::iterator ETagIter; + + for (ETagIter = ETagDBList.begin(); + ETagIter != ETagDBList.end(); ++ETagIter){ + + if (ETagIter->second.GetWriteStatus() == TRUE){ + + ETagIter->second.WriteETagDB(); + + } + + } + + +} + +void wxETagProcessTimer::ReloadAccounts(){ + + // Get the account preferences file and setup each database accordingly. + + ReloadLock.lock(); + + // Stop the timer. + + this->Stop(); + ETagDBList.clear(); + + wxString PrefFilename = GetUserPrefDir(); + + XABPreferences PrefData(PrefFilename); + + wxString AccountName; + wxString AccountDir; + wxString AccountAddress; + wxString AccountUsername; + wxString AccountPassword; + wxString AccountPrefix; + wxString AccountType; + + // Look for the account and get the friendly name for the account. + + for (int i = 0; i < PrefData.accounts.GetCount(); i++){ + + AccountDir = PrefData.accounts.GetAccountDirectory(i); + AccountType = PrefData.accounts.GetAccountType(i); + + if (AccountType == wxT("Local") || AccountType == wxT("local")){ + continue; + } + + AccountDir.Trim(); + AccountDir.Append(wxT(".carddav")); + + ETagDB AccountDB; + AccountDB.SetupDB(AccountDir); + + ETagDBList.insert(std::make_pair(AccountDir, AccountDB)); + + AccountDir.clear(); + + } + + //raise(SIGABRT); + + /*for (int i = 0; i < PrefData.accounts.GetCount(); i++){ + + AccountDir = PrefData.accounts.GetAccountDirectory(i); + + AccountDir.Trim(); + AccountDir.Append(wxT(".carddav")); + + //AccountPrefix = PrefData.accounts.GetAccountDirPrefix(i); + + //ETagDB NewETagDB (AccountDir); + + ETagDB AccountDB; + AccountDB.SetupDB(AccountDir); + + //ETagDBList.insert(std::make_pair(AccountDir, Moo)); + + //std::pair Moo2; + + //ETagDB2 Meep; + + //ETagDBListv3.insert(std::make_pair(0,Meep)); + + //ETagDBListv2.insert(std::make_pair(0, Moo)); + + //ETagDBList.insert(Moo2); + + ETagDBList.insert(std::make_pair(AccountDir, AccountDB)); + + //Moo55.insert(std::make_pair(wxT("Meep"), wxT("Meep"))); + + //ETagDBList[AccountDir] = new ETagDB (AccountDir); + + }*/ + + //ETagDB Test (AccountDir); + + //ETagDBList.insert(std::make_pair(AccountDir, Test)); + + ReloadLock.unlock(); + this->Start(15000); + +} + +ETagDB* wxETagProcessTimer::GetPointer(wxString AccountName){ + + ETagDB *ETagDBPtr = NULL; + + std::map::iterator ETagIter; + + ETagIter = ETagDBList.find(AccountName); + + if (ETagIter != ETagDBList.end()){ + + ETagDBPtr = &ETagIter->second; + + } + + return ETagDBPtr; + +} + +void wxContactFileMonitorTimer::Notify(){ + + if (Filename.IsEmpty()){ + + return; + + } + + wxFileName FileCheck(Filename); + wxDateTime CurrentDateTime; + + CurrentDateTime = FileCheck.GetModificationTime(); + + if (FileDateTime != CurrentDateTime){ + + // The dates & times of the file are different. + // Send an event to notify the user of this change. + + wxCommandEvent dateevent(wxEVT_COMMAND_BUTTON_CLICKED); + wxPostEvent(frmCEPtr, dateevent); + + } + +} + +void wxContactFileMonitorTimer::SetFilename(wxString FilenameInc){ + + Filename = FilenameInc; + + wxFileName FileCheck(Filename); + FileDateTime = FileCheck.GetModificationTime(); + +} + +void wxContactFileMonitorTimer::SetupPointers(frmContactEditor *frmCEPtrInc){ + + frmCEPtr = frmCEPtrInc; + +} + +void wxContactFileMonitorTimer::UpdateTimestamp(){ + + wxFileName FileCheck(Filename); + FileDateTime = FileCheck.GetModificationTime(); + +} + +void wxContactWindowMonitor::Notify(){ + + // Look through the list of windows and see if any have + // closed. IF they have closed then delete and free the + // memory (also delete from the map). + + /*for(std::map::iterator iter = ContactWindowListPtr->begin(); + iter != ContactWindowListPtr->end(); iter++){ + + frmContact *ContactPtr = (frmContact*)iter->second; + + // Check if open. + + if ( + + // Delete the form. + + // Delete the data from the map. + + }*/ + +} + +void wxContactWindowMonitor::SetupPointers(std::map *ContactWindowListPtrInc){ + + ContactWindowListPtr = ContactWindowListPtrInc; + +} + +void wxAccountSyncTimer::Notify(){ + + frmActivityMgr *ActMgrPtrProc = static_cast(frmActMgrPtr); + + // Disable the timer. (Don't go updating unless needed). + + this->Stop(); + + if (ActMgrPtrProc->GetTaskStatus(intTaskID) < 2){ + + this->Start(); + return; + + } + + // Add task to the activity manager. + + intTaskID = ActMgrPtrProc->AddTask(3, wxT(""), AccName, + wxT(""), wxT(""), wxT(""), wxT("")); + + // Go to sleep and wait for the task to be completed. + + // Enable the timer as we are now finished syncronising. + + this->Start(); + +} + +void wxAccountSyncTimer::SetupData(wxString AccNameInc, + wxString AccNameFullInc){ + + // Set the account name. + + AccName = AccNameInc; + AccNameFull = AccNameFullInc; + +} + +void wxAccountSyncTimer::SetupPointers(void *frmMainPtrInc, + void *frmActMgrPtrInc, ETagDB *ETagDBPtrInc){ + + // Set the pointers. + + frmMainPtr = frmMainPtrInc; + frmActMgrPtr = frmActMgrPtrInc; + ETagDBPtr = ETagDBPtrInc; + +} + +void SleepFor(unsigned long longSleepNanoSecs){ + +#ifdef __WIN32__ + ::Sleep((longSleepNanoSecs / 1000000)); +#elif __HAIKU__ + +#else + + timespec n1, n2; + + n1.tv_sec = 0; + n1.tv_nsec = longSleepNanoSecs; + + nanosleep(&n1, &n2); + +#endif + +} \ No newline at end of file diff --git a/source/common/timers.h b/source/common/timers.h new file mode 100644 index 0000000..1478948 --- /dev/null +++ b/source/common/timers.h @@ -0,0 +1,154 @@ +#include +#include +#include +#include +#include "../frmActivityMgr.h" +#include "../contacteditor/frmContactEditor.h" +#include "etag.h" + +#ifndef TIMERS_H +#define TIMERS_H + +struct ETagDB; +struct frmContactEditor; + +class wxActTimer : public wxTimer +{ + private: + int intActivityProgress = 0; + wxStaticBitmap *bmpActivity; + wxBitmap *SleepBitmapPtr; + void *frmMainPtr; + public: + wxActTimer():wxTimer() + { + } + void Notify(); + void SetBitmap(wxStaticBitmap *ActMgr); + void ResetBitmap(); + void StartAnimation(); + void StopAnimation(); + void SetSleepBitmap(wxBitmap *SleepBitmap); + void SetupPointer(void *frmMainPtrIn); + +}; + +class wxActProcessTimer : public wxTimer +{ + + private: + int intActivityProgress = 0; + wxStaticBitmap *bmpActivity; + void *ActMgrPtr; + public: + wxActProcessTimer():wxTimer() + { + } + void Notify(); + void SetupPointers(void *ActMgr); + +}; + +class wxActListProcTimer : public wxTimer +{ + + private: + std::map *ActListPtr; + std::map *ActListUIPtr; + std::map *ActListDetailPtr; + wxListCtrl *lstActivityPtr; + wxStaticText *lblDetailsPtr; + bool *TasksActivePtr; + wxGauge *GauProgressPtr; + void *ActMgrPtr; + int intActivityTotal = 0; + int intActivityCompleted = 0; + wxActTimer *ActTimerPtr; + wxActProcessTimer *ActProcessTimerPtr; + std::map *ActListFinDTPtr; + bool ClearupProcessed = FALSE; + public: + wxActListProcTimer():wxTimer() + { + } + void Notify(); + void SetupPointers(std::map *ActList, std::map *ActListUI, + std::map *ActListDetail, bool *TasksActive, + wxListCtrl *lstActivity, wxStaticText *lblDetails, wxGauge *GauProgress, + void *ActMgr, wxActTimer *ActTimer, wxActProcessTimer *ActProcessTimer, + std::map *ActListFinDT); + void EnableClearup(); + +}; + +class wxETagProcessTimer : public wxTimer +{ + private: + int intActivityProgress = 0; + std::map ETagDBList; + //std::map ETagDBListv3; + std::mutex ReloadLock; + public: + wxETagProcessTimer():wxTimer() + { + ReloadAccounts(); + } + void Notify(); + ETagDB* GetPointer(wxString Filename); + void ReloadAccounts(); + //void SetupPointers(frmActivityMgr *ActMgr); + +}; + +class wxContactFileMonitorTimer : public wxTimer +{ + private: + bool FileStatus = FALSE; + wxString Filename; + frmContactEditor *frmCEPtr; + wxDateTime FileDateTime; + public: + wxContactFileMonitorTimer():wxTimer() + { + } + void Notify(); + void SetFilename(wxString FilenameInc); + void SetupPointers(frmContactEditor *frmCEPtrInc); + void UpdateTimestamp(); +}; + +class wxContactWindowMonitor : public wxTimer +{ + private: + std::map *ContactWindowListPtr; + public: + wxContactWindowMonitor():wxTimer() + { + } + void Notify(); + void SetupPointers(std::map *ContactWindowListPtrInc); +}; + +class wxAccountSyncTimer : public wxTimer +{ + private: + wxString AccName; + wxString AccNameFull; + void *frmMainPtr; + void *frmActMgrPtr; + ETagDB *ETagDBPtr; + int intTaskID; + public: + wxAccountSyncTimer():wxTimer() + { + } + void Notify(); + void SetupData(wxString AccNameInc, wxString AccNameFull); + void SetupPointers(void *frmMainPtrInc, + void *frmACtMgrPtr, ETagDB *ETagDBPtrInc); + +}; + +void SleepFor(unsigned long longSleepNanoSecs); + +#endif \ No newline at end of file diff --git a/source/common/uuid.cpp b/source/common/uuid.cpp new file mode 100644 index 0000000..104035e --- /dev/null +++ b/source/common/uuid.cpp @@ -0,0 +1,48 @@ +#include + +wxString GenerateUUID() +{ + +#if defined(__WIN32__) + UUID UUIDData; + UuidCreate(&UUIDData); + wchar_t* UUIDStr = 0; + UuidToString(&UUIDData, (RPC_WSTR*)&UUIDStr); + wxString Result(UUIDStr); +#elif defined(__HAIKU__) + +#else + +#include + + uuid_t *uuid; + uuid_create(&uuid); + char *strdata; + + //strdata = ; + + strdata = NULL; + + uuid_make(uuid, UUID_MAKE_V4); + uuid_export(uuid, UUID_FMT_STR, &strdata, NULL); + uuid_destroy(uuid); + + wxString Result = wxString::FromUTF8(strdata); + + delete strdata; + strdata = NULL; + +#endif + + return Result; + +} + +bool CheckUUID(wxString UUIDInc) +{ + + bool Result = FALSE; + + return Result; + +} \ No newline at end of file diff --git a/source/common/uuid.h b/source/common/uuid.h new file mode 100644 index 0000000..312e8e8 --- /dev/null +++ b/source/common/uuid.h @@ -0,0 +1,9 @@ +#include + +#ifndef COMMON_UUID_H +#define COMMON_UUID_H + +wxString GenerateUUID(); +bool CheckUUID(wxString UUIDInc); + +#endif \ No newline at end of file diff --git a/source/config.log b/source/config.log new file mode 100644 index 0000000..60454ff --- /dev/null +++ b/source/config.log @@ -0,0 +1,582 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Xestia Address Book configure 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = Mai.LasLindas +uname -m = x86_64 +uname -r = 3.7.10-1.1-desktop +uname -s = Linux +uname -v = #1 SMP PREEMPT Thu Feb 28 15:06:29 UTC 2013 (82d3f21) + +/usr/bin/uname -p = x86_64 +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/bin/X11 +PATH: /usr/X11R6/bin +PATH: /usr/games +PATH: /opt/kde3/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2028: loading site script /usr/share/site/x86_64-unknown-linux-gnu +| #!/bin/sh +| # Site script for configure. It is resourced via $CONFIG_SITE environment varaible. +| +| # If user did not specify libdir, guess the correct target: +| # Use lib64 for 64 bit bi-arch targets, keep the default for the rest. +| if test "$libdir" = '${exec_prefix}/lib' ; then +| +| ac_config_site_64bit_host=NONE +| +| case "$host" in +| "" ) +| # User did not specify host target. +| # The native platform x86_64 is a bi-arch platform. +| # Try to detect cross-compilation to inferior architecture. +| +| # We are trying to guess 32-bit target compilation. It's not as easy as +| # it sounds, as there is possible several intermediate combinations. +| ac_config_site_cross_to_32bit_host=NONE +| +| # User defined -m32 in CFLAGS or CXXFLAGS: +| # (It's sufficient for 32-bit, but alone may cause mis-behavior of some checks.) +| case "$CFLAGS" in +| *-m32*) +| ac_config_site_cross_to_32bit_host=YES +| ;; +| esac +| case "$CXXFLAGS" in +| *-m32*) +| ac_config_site_cross_to_32bit_host=YES +| ;; +| esac +| +| # Running with linux32: +| # (Changes detected platform, but not the toolchain target.) +| case "`/bin/uname -i`" in +| x86_64 | ppc64 | s390x ) +| ;; +| * ) +| ac_config_site_cross_to_32bit_host=YES +| ;; +| esac +| +| if test "x$ac_config_site_cross_to_32bit_host" = xNONE; then +| ac_config_site_64bit_host=YES +| fi +| +| ;; +| *x86_64* | *ppc64* | *s390x* ) +| ac_config_site_64bit_host=YES +| ;; +| esac +| +| if test "x$ac_config_site_64bit_host" = xYES; then +| libdir='${exec_prefix}/lib64' +| fi +| fi +| +| # If user did not specify libexecdir, set the correct target: +| # Nor FHS nor openSUSE allow prefix/libexec. Let's default to prefix/lib. +| +| if test "$libexecdir" = '${exec_prefix}/libexec' ; then +| libexecdir='${exec_prefix}/lib' +| fi +| +| # Continue with the standard behavior of configure defined in AC_SITE_LOAD: +| if test "x$prefix" != xNONE; then +| ac_site_file1=$prefix/share/config.site +| ac_site_file2=$prefix/etc/config.site +| else +| ac_site_file1=$ac_default_prefix/share/config.site +| ac_site_file2=$ac_default_prefix/etc/config.site +| fi +| for ac_site_file in "$ac_site_file1" "$ac_site_file2" +| do +| test "x$ac_site_file" = xNONE && continue +| if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then +| { $as_echo "/usr/share/site/x86_64-unknown-linux-gnu:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +| $as_echo "/usr/share/site/x86_64-unknown-linux-gnu: loading site script $ac_site_file" >&6;} +| sed 's/^/| /' "$ac_site_file" >&5 +| . "$ac_site_file" \ +| || { { $as_echo "/usr/share/site/x86_64-unknown-linux-gnu:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +| $as_echo "/usr/share/site/x86_64-unknown-linux-gnu: error: in \`$ac_pwd':" >&2;} +| as_fn_error $? "failed to load site script $ac_site_file +| See \`config.log' for more details" "$LINENO" 5; } +| fi +| done +configure:2186: checking for g++ +configure:2202: found /usr/bin/g++ +configure:2213: result: g++ +configure:2240: checking for C++ compiler version +configure:2249: g++ --version >&5 +g++ (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012] +Copyright (C) 2012 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:2260: $? = 0 +configure:2249: g++ -v >&5 +Using built-in specs. +COLLECT_GCC=g++ +COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.7/lto-wrapper +Target: x86_64-suse-linux +Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7 --enable-ssp --disable-libssp --disable-libitm --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.7 --enable-linux-futex --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux +Thread model: posix +gcc version 4.7.2 20130108 [gcc-4_7-branch revision 195012] (SUSE Linux) +configure:2260: $? = 0 +configure:2249: g++ -V >&5 +g++: error: unrecognized command line option '-V' +g++: fatal error: no input files +compilation terminated. +configure:2260: $? = 1 +configure:2249: g++ -qversion >&5 +g++: error: unrecognized command line option '-qversion' +g++: fatal error: no input files +compilation terminated. +configure:2260: $? = 1 +configure:2280: checking whether the C++ compiler works +configure:2302: g++ conftest.cpp >&5 +configure:2306: $? = 0 +configure:2354: result: yes +configure:2357: checking for C++ compiler default output file name +configure:2359: result: a.out +configure:2365: checking for suffix of executables +configure:2372: g++ -o conftest conftest.cpp >&5 +configure:2376: $? = 0 +configure:2398: result: +configure:2420: checking whether we are cross compiling +configure:2428: g++ -o conftest conftest.cpp >&5 +configure:2432: $? = 0 +configure:2439: ./conftest +configure:2443: $? = 0 +configure:2458: result: no +configure:2463: checking for suffix of object files +configure:2485: g++ -c conftest.cpp >&5 +configure:2489: $? = 0 +configure:2510: result: o +configure:2514: checking whether we are using the GNU C++ compiler +configure:2533: g++ -c conftest.cpp >&5 +configure:2533: $? = 0 +configure:2542: result: yes +configure:2551: checking whether g++ accepts -g +configure:2571: g++ -c -g conftest.cpp >&5 +configure:2571: $? = 0 +configure:2612: result: yes +configure:2683: checking for gcc +configure:2699: found /usr/bin/gcc +configure:2710: result: gcc +configure:2939: checking for C compiler version +configure:2948: gcc --version >&5 +gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012] +Copyright (C) 2012 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:2959: $? = 0 +configure:2948: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.7/lto-wrapper +Target: x86_64-suse-linux +Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7 --enable-ssp --disable-libssp --disable-libitm --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.7 --enable-linux-futex --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux +Thread model: posix +gcc version 4.7.2 20130108 [gcc-4_7-branch revision 195012] (SUSE Linux) +configure:2959: $? = 0 +configure:2948: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:2959: $? = 1 +configure:2948: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion' +gcc: fatal error: no input files +compilation terminated. +configure:2959: $? = 1 +configure:2963: checking whether we are using the GNU C compiler +configure:2982: gcc -c conftest.c >&5 +configure:2982: $? = 0 +configure:2991: result: yes +configure:3000: checking whether gcc accepts -g +configure:3020: gcc -c -g conftest.c >&5 +configure:3020: $? = 0 +configure:3061: result: yes +configure:3078: checking for gcc option to accept ISO C89 +configure:3142: gcc -c -g -O2 conftest.c >&5 +configure:3142: $? = 0 +configure:3155: result: none needed +configure:3180: checking how to run the C preprocessor +configure:3211: gcc -E conftest.c +configure:3211: $? = 0 +configure:3225: gcc -E conftest.c +conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory +compilation terminated. +configure:3225: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Xestia Address Book" +| #define PACKAGE_TARNAME "xestia-address-book" +| #define PACKAGE_VERSION "1.0" +| #define PACKAGE_STRING "Xestia Address Book 1.0" +| #define PACKAGE_BUGREPORT "bugs@xestia.co.uk" +| #define PACKAGE_URL "" +| /* end confdefs.h. */ +| #include +configure:3250: result: gcc -E +configure:3270: gcc -E conftest.c +configure:3270: $? = 0 +configure:3284: gcc -E conftest.c +conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory +compilation terminated. +configure:3284: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Xestia Address Book" +| #define PACKAGE_TARNAME "xestia-address-book" +| #define PACKAGE_VERSION "1.0" +| #define PACKAGE_STRING "Xestia Address Book 1.0" +| #define PACKAGE_BUGREPORT "bugs@xestia.co.uk" +| #define PACKAGE_URL "" +| /* end confdefs.h. */ +| #include +configure:3377: checking for wx-config +configure:3396: found /usr/bin/wx-config +configure:3409: result: /usr/bin/wx-config +configure:3424: checking for wxWidgets version >= 2.8.0 +configure:3471: result: yes (version 2.8.12) +configure:3475: checking for wxWidgets static library +configure:3479: result: no +configure:3597: checking for main in -lboost_filesystem +configure:3616: gcc -o conftest -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c -lboost_filesystem -L/usr/lib64/wx-2.8-stl -pthread -Wl,-rpath,/usr/lib64/wx-2.8-stl -L/usr/lib64 -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 >&5 +configure:3616: $? = 0 +configure:3625: result: yes +configure:3644: checking for main in -lboost_system +configure:3663: gcc -o conftest -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c -lboost_system -lboost_filesystem -L/usr/lib64/wx-2.8-stl -pthread -Wl,-rpath,/usr/lib64/wx-2.8-stl -L/usr/lib64 -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 >&5 +configure:3663: $? = 0 +configure:3672: result: yes +configure:3694: checking for grep that handles long lines and -e +configure:3752: result: /usr/bin/grep +configure:3757: checking for egrep +configure:3819: result: /usr/bin/grep -E +configure:3824: checking for ANSI C header files +configure:3844: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3844: $? = 0 +configure:3917: gcc -o conftest -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c -lboost_system -lboost_filesystem -L/usr/lib64/wx-2.8-stl -pthread -Wl,-rpath,/usr/lib64/wx-2.8-stl -L/usr/lib64 -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 >&5 +configure:3917: $? = 0 +configure:3917: ./conftest +configure:3917: $? = 0 +configure:3928: result: yes +configure:3941: checking for sys/types.h +configure:3941: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3941: $? = 0 +configure:3941: result: yes +configure:3941: checking for sys/stat.h +configure:3941: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3941: $? = 0 +configure:3941: result: yes +configure:3941: checking for stdlib.h +configure:3941: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3941: $? = 0 +configure:3941: result: yes +configure:3941: checking for string.h +configure:3941: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3941: $? = 0 +configure:3941: result: yes +configure:3941: checking for memory.h +configure:3941: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3941: $? = 0 +configure:3941: result: yes +configure:3941: checking for strings.h +configure:3941: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3941: $? = 0 +configure:3941: result: yes +configure:3941: checking for inttypes.h +configure:3941: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3941: $? = 0 +configure:3941: result: yes +configure:3941: checking for stdint.h +configure:3941: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3941: $? = 0 +configure:3941: result: yes +configure:3941: checking for unistd.h +configure:3941: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:3941: $? = 0 +configure:3941: result: yes +configure:3956: checking for stdlib.h +configure:3956: result: yes +configure:3956: checking for string.h +configure:3956: result: yes +configure:3968: checking for stdbool.h that conforms to C99 +configure:4035: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:4035: $? = 0 +configure:4042: result: yes +configure:4044: checking for _Bool +configure:4044: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:4044: $? = 0 +configure:4044: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +conftest.c: In function 'main': +conftest.c:59:20: error: expected expression before ')' token +configure:4044: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Xestia Address Book" +| #define PACKAGE_TARNAME "xestia-address-book" +| #define PACKAGE_VERSION "1.0" +| #define PACKAGE_STRING "Xestia Address Book 1.0" +| #define PACKAGE_BUGREPORT "bugs@xestia.co.uk" +| #define PACKAGE_URL "" +| #define HAVE_LIBBOOST_FILESYSTEM 1 +| #define HAVE_LIBBOOST_SYSTEM 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((_Bool))) +| return 0; +| ; +| return 0; +| } +configure:4044: result: yes +configure:4060: checking for inline +configure:4076: gcc -c -g -O2 -pthread -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5 +configure:4076: $? = 0 +configure:4084: result: inline +configure:4257: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by Xestia Address Book config.status 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on Mai.LasLindas + +config.status:753: creating Makefile + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_c_compiler_gnu=yes +ac_cv_c_inline=inline +ac_cv_cxx_compiler_gnu=yes +ac_cv_env_CCC_set= +ac_cv_env_CCC_value= +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_CXXFLAGS_set= +ac_cv_env_CXXFLAGS_value= +ac_cv_env_CXX_set= +ac_cv_env_CXX_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_header_inttypes_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_stdbool_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_lib_boost_filesystem_main=yes +ac_cv_lib_boost_system_main=yes +ac_cv_objext=o +ac_cv_path_EGREP='/usr/bin/grep -E' +ac_cv_path_GREP=/usr/bin/grep +ac_cv_path_WX_CONFIG_PATH=/usr/bin/wx-config +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_CXX=g++ +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_cxx_g=yes +ac_cv_type__Bool=yes + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +CC='gcc' +CFLAGS='-g -O2 -pthread' +CPP='gcc -E' +CPPFLAGS=' -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__' +CXX='g++' +CXXFLAGS='-g -O2 ' +DEFS='-DPACKAGE_NAME=\"Xestia\ Address\ Book\" -DPACKAGE_TARNAME=\"xestia-address-book\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"Xestia\ Address\ Book\ 1.0\" -DPACKAGE_BUGREPORT=\"bugs@xestia.co.uk\" -DPACKAGE_URL=\"\" -DHAVE_LIBBOOST_FILESYSTEM=1 -DHAVE_LIBBOOST_SYSTEM=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/usr/bin/grep -E' +EXEEXT='' +GREP='/usr/bin/grep' +LDFLAGS='' +LIBOBJS='' +LIBS='-lboost_system -lboost_filesystem -L/usr/lib64/wx-2.8-stl -pthread -Wl,-rpath,/usr/lib64/wx-2.8-stl -L/usr/lib64 -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 ' +LTLIBOBJS='' +OBJEXT='o' +PACKAGE_BUGREPORT='bugs@xestia.co.uk' +PACKAGE_NAME='Xestia Address Book' +PACKAGE_STRING='Xestia Address Book 1.0' +PACKAGE_TARNAME='xestia-address-book' +PACKAGE_URL='' +PACKAGE_VERSION='1.0' +PATH_SEPARATOR=':' +SHELL='/bin/sh' +WX_CFLAGS='-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread' +WX_CFLAGS_ONLY='-pthread' +WX_CONFIG_PATH='/usr/bin/wx-config' +WX_CPPFLAGS='-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__' +WX_CXXFLAGS='-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread' +WX_CXXFLAGS_ONLY='' +WX_LIBS='-L/usr/lib64/wx-2.8-stl -pthread -Wl,-rpath,/usr/lib64/wx-2.8-stl -L/usr/lib64 -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 ' +WX_LIBS_STATIC='' +WX_RESCOMP='' +WX_VERSION='2.8.12' +ac_ct_CC='gcc' +ac_ct_CXX='g++' +bindir='${exec_prefix}/bin' +build_alias='' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host_alias='' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +libdir='${exec_prefix}/lib64' +libexecdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "Xestia Address Book" +#define PACKAGE_TARNAME "xestia-address-book" +#define PACKAGE_VERSION "1.0" +#define PACKAGE_STRING "Xestia Address Book 1.0" +#define PACKAGE_BUGREPORT "bugs@xestia.co.uk" +#define PACKAGE_URL "" +#define HAVE_LIBBOOST_FILESYSTEM 1 +#define HAVE_LIBBOOST_SYSTEM 1 +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE__BOOL 1 +#define HAVE_STDBOOL_H 1 + +configure: exit 0 diff --git a/source/config.status b/source/config.status new file mode 100644 index 0000000..abb08f6 --- /dev/null +++ b/source/config.status @@ -0,0 +1,920 @@ +#! /bin/sh +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Xestia Address Book $as_me 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +ac_cs_config="" +ac_cs_version="\ +Xestia Address Book config.status 1.0 +configured by ./configure, generated by GNU Autoconf 2.68, + with options \"$ac_cs_config\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/kirinji/Development/XestiaAddressBook/source' +srcdir='.' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X '/bin/sh' './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6 + CONFIG_SHELL='/bin/sh' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["EGREP"]="/usr/bin/grep -E" +S["GREP"]="/usr/bin/grep" +S["WX_RESCOMP"]="" +S["WX_VERSION"]="2.8.12" +S["WX_LIBS_STATIC"]="" +S["WX_LIBS"]="-L/usr/lib64/wx-2.8-stl -pthread -Wl,-rpath,/usr/lib64/wx-2.8-stl -L/usr/lib64 -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk"\ +"2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lw"\ +"x_baseu-2.8 " +S["WX_CXXFLAGS_ONLY"]="" +S["WX_CFLAGS_ONLY"]="-pthread" +S["WX_CXXFLAGS"]="-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread" +S["WX_CFLAGS"]="-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread" +S["WX_CPPFLAGS"]="-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__" +S["WX_CONFIG_PATH"]="/usr/bin/wx-config" +S["CPP"]="gcc -E" +S["ac_ct_CC"]="gcc" +S["CFLAGS"]="-g -O2 -pthread" +S["CC"]="gcc" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CXX"]="g++" +S["CPPFLAGS"]=" -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__" +S["LDFLAGS"]="" +S["CXXFLAGS"]="-g -O2 " +S["CXX"]="g++" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lboost_system -lboost_filesystem -L/usr/lib64/wx-2.8-stl -pthread -Wl,-rpath,/usr/lib64/wx-2.8-stl -L/usr/lib64 -Wl,-rpath,/usr/lib64/wx-2.8-s"\ +"tl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_b"\ +"aseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 " +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DPACKAGE_NAME=\\\"Xestia\\ Address\\ Book\\\" -DPACKAGE_TARNAME=\\\"xestia-address-book\\\" -DPACKAGE_VERSION=\\\"1.0\\\" -DPACKAGE_STRING=\\\"Xestia\\ Address\\ Boo"\ +"k\\ 1.0\\\" -DPACKAGE_BUGREPORT=\\\"bugs@xestia.co.uk\\\" -DPACKAGE_URL=\\\"\\\" -DHAVE_LIBBOOST_FILESYSTEM=1 -DHAVE_LIBBOOST_SYSTEM=1 -DSTDC_HEADERS=1 -DHAVE_"\ +"SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DH"\ +"AVE_UNISTD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib64" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/lib" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="bugs@xestia.co.uk" +S["PACKAGE_STRING"]="Xestia Address Book 1.0" +S["PACKAGE_VERSION"]="1.0" +S["PACKAGE_TARNAME"]="xestia-address-book" +S["PACKAGE_NAME"]="Xestia Address Book" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/sh" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 diff --git a/source/configure b/source/configure new file mode 100644 index 0000000..4a81733 --- /dev/null +++ b/source/configure @@ -0,0 +1,5273 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.68 for Xestia Address Book 1.0. +# +# Report bugs to . +# +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software +# Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + # Preserve -v and -x to the replacement shell. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; + esac + exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@xestia.co.uk +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Xestia Address Book' +PACKAGE_TARNAME='xestia-address-book' +PACKAGE_VERSION='1.0' +PACKAGE_STRING='Xestia Address Book 1.0' +PACKAGE_BUGREPORT='bugs@xestia.co.uk' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIBOBJS +EGREP +GREP +WX_RESCOMP +WX_VERSION +WX_LIBS_STATIC +WX_LIBS +WX_CXXFLAGS_ONLY +WX_CFLAGS_ONLY +WX_CXXFLAGS +WX_CFLAGS +WX_CPPFLAGS +WX_CONFIG_PATH +CPP +ac_ct_CC +CFLAGS +CC +OBJEXT +EXEEXT +ac_ct_CXX +CPPFLAGS +LDFLAGS +CXXFLAGS +CXX +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_wxdir +with_wx_config +with_wx_prefix +with_wx_exec_prefix +' + ac_precious_vars='build_alias +host_alias +target_alias +CXX +CXXFLAGS +LDFLAGS +LIBS +CPPFLAGS +CCC +CC +CFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used" >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Xestia Address Book 1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root + [DATAROOTDIR/doc/xestia-address-book] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Xestia Address Book 1.0:";; + esac + cat <<\_ACEOF + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-wxdir=PATH Use uninstalled version of wxWidgets in PATH + --with-wx-config=CONFIG wx-config script to use (optional) + --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional) + --with-wx-exec-prefix=PREFIX + Exec prefix where wxWidgets is installed (optional) + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CC C compiler command + CFLAGS C compiler flags + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Xestia Address Book configure 1.0 +generated by GNU Autoconf 2.68 + +Copyright (C) 2010 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## -------------------------------- ## +## Report this to bugs@xestia.co.uk ## +## -------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Xestia Address Book $as_me 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +#AC_CONFIG_SRCDIR([version.h]) +#AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 +$as_echo_n "checking whether the C++ compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C++ compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 +$as_echo_n "checking for C++ compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C++ compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Checks for libraries. + + + +# Check whether --with-wxdir was given. +if test "${with_wxdir+set}" = set; then : + withval=$with_wxdir; wx_config_name="$withval/wx-config" + wx_config_args="--inplace" +fi + + +# Check whether --with-wx-config was given. +if test "${with_wx_config+set}" = set; then : + withval=$with_wx_config; wx_config_name="$withval" +fi + + +# Check whether --with-wx-prefix was given. +if test "${with_wx_prefix+set}" = set; then : + withval=$with_wx_prefix; wx_config_prefix="$withval" +else + wx_config_prefix="" +fi + + +# Check whether --with-wx-exec-prefix was given. +if test "${with_wx_exec_prefix+set}" = set; then : + withval=$with_wx_exec_prefix; wx_config_exec_prefix="$withval" +else + wx_config_exec_prefix="" +fi + + +reqwx=2.8.0 + + if test x${WX_CONFIG_NAME+set} != xset ; then + WX_CONFIG_NAME=wx-config + fi + + if test "x$wx_config_name" != x ; then + WX_CONFIG_NAME="$wx_config_name" + fi + + if test x$wx_config_exec_prefix != x ; then + wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix" + WX_LOOKUP_PATH="$wx_config_exec_prefix/bin" + fi + if test x$wx_config_prefix != x ; then + wx_config_args="$wx_config_args --prefix=$wx_config_prefix" + WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin" + fi + if test "$cross_compiling" = "yes"; then + wx_config_args="$wx_config_args --host=$host_alias" + fi + + if test -x "$WX_CONFIG_NAME" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wx-config" >&5 +$as_echo_n "checking for wx-config... " >&6; } + WX_CONFIG_PATH="$WX_CONFIG_NAME" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5 +$as_echo "$WX_CONFIG_PATH" >&6; } + else + # Extract the first word of "$WX_CONFIG_NAME", so it can be a program name with args. +set dummy $WX_CONFIG_NAME; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_WX_CONFIG_PATH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $WX_CONFIG_PATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_WX_CONFIG_PATH="$WX_CONFIG_PATH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy=""$WX_LOOKUP_PATH:$PATH"" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_WX_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_WX_CONFIG_PATH" && ac_cv_path_WX_CONFIG_PATH="no" + ;; +esac +fi +WX_CONFIG_PATH=$ac_cv_path_WX_CONFIG_PATH +if test -n "$WX_CONFIG_PATH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5 +$as_echo "$WX_CONFIG_PATH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi + + if test "$WX_CONFIG_PATH" != "no" ; then + WX_VERSION="" + + min_wx_version=$reqwx + if test -z "" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version" >&5 +$as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version ()" >&5 +$as_echo_n "checking for wxWidgets version >= $min_wx_version ()... " >&6; } + fi + + WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args " + + WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null` + wx_config_major_version=`echo $WX_VERSION | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + wx_config_minor_version=`echo $WX_VERSION | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + wx_config_micro_version=`echo $WX_VERSION | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + + wx_requested_major_version=`echo $min_wx_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + wx_requested_minor_version=`echo $min_wx_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + wx_requested_micro_version=`echo $min_wx_version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + + + wx_ver_ok="" + if test "x$WX_VERSION" != x ; then + if test $wx_config_major_version -gt $wx_requested_major_version; then + wx_ver_ok=yes + else + if test $wx_config_major_version -eq $wx_requested_major_version; then + if test $wx_config_minor_version -gt $wx_requested_minor_version; then + wx_ver_ok=yes + else + if test $wx_config_minor_version -eq $wx_requested_minor_version; then + if test $wx_config_micro_version -ge $wx_requested_micro_version; then + wx_ver_ok=yes + fi + fi + fi + fi + fi + fi + + + if test -n "$wx_ver_ok"; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5 +$as_echo "yes (version $WX_VERSION)" >&6; } + WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs` + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5 +$as_echo_n "checking for wxWidgets static library... " >&6; } + WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null` + if test "x$WX_LIBS_STATIC" = "x"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + + wx_has_cppflags="" + if test $wx_config_major_version -gt 2; then + wx_has_cppflags=yes + else + if test $wx_config_major_version -eq 2; then + if test $wx_config_minor_version -gt 2; then + wx_has_cppflags=yes + else + if test $wx_config_minor_version -eq 2; then + if test $wx_config_micro_version -ge 6; then + wx_has_cppflags=yes + fi + fi + fi + fi + fi + + wx_has_rescomp="" + if test $wx_config_major_version -gt 2; then + wx_has_rescomp=yes + else + if test $wx_config_major_version -eq 2; then + if test $wx_config_minor_version -ge 7; then + wx_has_rescomp=yes + fi + fi + fi + if test "x$wx_has_rescomp" = x ; then + WX_RESCOMP= + else + WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp` + fi + + if test "x$wx_has_cppflags" = x ; then + WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags` + WX_CPPFLAGS=$WX_CFLAGS + WX_CXXFLAGS=$WX_CFLAGS + + WX_CFLAGS_ONLY=$WX_CFLAGS + WX_CXXFLAGS_ONLY=$WX_CFLAGS + else + WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags` + WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags` + WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags` + + WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"` + WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"` + fi + + wxWin=1 + + else + + if test "x$WX_VERSION" = x; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (version $WX_VERSION is not new enough)" >&5 +$as_echo "no (version $WX_VERSION is not new enough)" >&6; } + fi + + WX_CFLAGS="" + WX_CPPFLAGS="" + WX_CXXFLAGS="" + WX_LIBS="" + WX_LIBS_STATIC="" + WX_RESCOMP="" + : + + fi + else + + WX_CFLAGS="" + WX_CPPFLAGS="" + WX_CXXFLAGS="" + WX_LIBS="" + WX_LIBS_STATIC="" + WX_RESCOMP="" + + : + + fi + + + + + + + + + + + +if test "$wxWin" != 1; then + as_fn_error $? " +wxWidgets must be installed on your system. + +Please check that wx-config is in path, the directory where wxWidgets libraries +are installed (returned by 'wx-config --libs' or 'wx-config --static --libs' +command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version +is $reqwx or above. + " "$LINENO" 5 +fi + +CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" +CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" +CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" +LIBS="$LIBS $WX_LIBS" + +# FIXME: Replace `main' with a function in `-lboost_filesystem': + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_filesystem" >&5 +$as_echo_n "checking for main in -lboost_filesystem... " >&6; } +if ${ac_cv_lib_boost_filesystem_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lboost_filesystem $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_boost_filesystem_main=yes +else + ac_cv_lib_boost_filesystem_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_filesystem_main" >&5 +$as_echo "$ac_cv_lib_boost_filesystem_main" >&6; } +if test "x$ac_cv_lib_boost_filesystem_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBBOOST_FILESYSTEM 1 +_ACEOF + + LIBS="-lboost_filesystem $LIBS" + +else + + echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + +fi + +# FIXME: Replace `main' with a function in `-lboost_system': +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_system" >&5 +$as_echo_n "checking for main in -lboost_system... " >&6; } +if ${ac_cv_lib_boost_system_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lboost_system $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_boost_system_main=yes +else + ac_cv_lib_boost_system_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_system_main" >&5 +$as_echo "$ac_cv_lib_boost_system_main" >&6; } +if test "x$ac_cv_lib_boost_system_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBBOOST_SYSTEM 1 +_ACEOF + + LIBS="-lboost_system $LIBS" + +else + + echo "Error! Boost System Library (libboost_system) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + +fi + +#AC_CHECK_PROG([WXCONFIG], [wx-config]) + +# Checks for header files. + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in stdlib.h string.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Checks for typedefs, structures, and compiler characteristics. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 +$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } +if ${ac_cv_header_stdbool_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef bool + "error: bool is not defined" +#endif +#ifndef false + "error: false is not defined" +#endif +#if false + "error: false is not 0" +#endif +#ifndef true + "error: true is not defined" +#endif +#if true != 1 + "error: true is not 1" +#endif +#ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" +#endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + /* See body of main program for 'e'. */ + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; + +int +main () +{ + + bool e = &s; + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdbool_h=yes +else + ac_cv_header_stdbool_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 +$as_echo "$ac_cv_header_stdbool_h" >&6; } +ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" +if test "x$ac_cv_type__Bool" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE__BOOL 1 +_ACEOF + + +fi + +if test $ac_cv_header_stdbool_h = yes; then + +$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +# Checks for library functions. + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Xestia Address Book $as_me 1.0, which was +generated by GNU Autoconf 2.68. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Xestia Address Book config.status 1.0 +configured by $0, generated by GNU Autoconf 2.68, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/source/configure.ac b/source/configure.ac new file mode 100644 index 0000000..e16c523 --- /dev/null +++ b/source/configure.ac @@ -0,0 +1,61 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ([2.68]) +AC_INIT([Xestia Address Book], [1.0], [bugs@xestia.co.uk]) +#AC_CONFIG_SRCDIR([version.h]) +#AC_CONFIG_HEADERS([config.h]) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_CC +AC_PROG_CPP + +# Checks for libraries. + +AM_OPTIONS_WXCONFIG +reqwx=2.8.0 +AM_PATH_WXCONFIG($reqwx, wxWin=1) +if test "$wxWin" != 1; then + AC_MSG_ERROR([ +wxWidgets must be installed on your system. + +Please check that wx-config is in path, the directory where wxWidgets libraries +are installed (returned by 'wx-config --libs' or 'wx-config --static --libs' +command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version +is $reqwx or above. + ]) +fi + +CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" +CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" +CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" +LIBS="$LIBS $WX_LIBS" + +# FIXME: Replace `main' with a function in `-lboost_filesystem': +AC_CHECK_LIB([boost_filesystem], [main], [], [ + echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + ]) +# FIXME: Replace `main' with a function in `-lboost_system': +AC_CHECK_LIB([boost_system], [main], [], [ + echo "Error! Boost System Library (libboost_system) is not installed! +Please check that this library is installed property before +running configure again." + exit -1 + ]) +#AC_CHECK_PROG([WXCONFIG], [wx-config]) + +# Checks for header files. +AC_CHECK_HEADERS([stdlib.h string.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_HEADER_STDBOOL +AC_C_INLINE + +# Checks for library functions. + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/source/contacteditor/frmContactEditor-Load.cpp b/source/contacteditor/frmContactEditor-Load.cpp new file mode 100644 index 0000000..183e632 --- /dev/null +++ b/source/contacteditor/frmContactEditor-Load.cpp @@ -0,0 +1,7356 @@ +#include + +#include +#include +#include +#include + +#include "frmContactEditor.h" + +#include "../enums.h" +#include "../version.h" +#include "../vcard/vcard.h" +#include "../common/textprocessing.h" +#include "../common/dirs.h" + +bool frmContactEditor::LoadContact(wxString Filename){ + + // Load the contact into the contact editor. + + wxFFile ContactFile; + wxString wxSContactString; + wxString ContactLine; + vCard ContactData; + XABViewMode XVMData = MainPtr->GetViewMode(); + + wxSContactFilename = Filename; + + // Check if we are using wxWidgets version 2.8 or less and + // execute the required command accordingly. + +#if wxABI_VERSION < 20900 + ContactFile.Open(Filename.c_str(), wxT("r")); +#else + ContactFile.Open(Filename, wxT("r")); +#endif + + if (ContactFile.IsOpened() == FALSE){ + + return FALSE; + + } + + ContactFile.ReadAll(&wxSContactString, wxConvAuto()); + + // Split the lines. + + std::map ContactFileLines; + std::map::iterator striter; + + wxStringTokenizer wSTContactFileLines(wxSContactString, wxT("\r\n")); + + int ContactLineSeek = 0; + + while (wSTContactFileLines.HasMoreTokens() == TRUE){ + + ContactLine = wSTContactFileLines.GetNextToken(); + ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLine)); + ContactLineSeek++; + + } + + // Get the line. + + bool QuoteMode = FALSE; + bool PropertyFind = TRUE; + bool HasExtraNicknames = FALSE; + bool IgnoreGender = FALSE; + bool ExtraLineSeek = TRUE; + bool BirthdayProcessed = FALSE; + bool AnniversaryProcessed = FALSE; + bool FNProcessed = FALSE; + bool GenderProcessed = FALSE; + bool NameProcessed = FALSE; + bool UIDProcessed = FALSE; + bool KindProcessed = FALSE; + bool ETagFound = FALSE; + bool ETagOrigFound = FALSE; + int intExtraNickname = 0; + wxString wxSProperty; + wxString wxSPropertySeg1; + wxString wxSPropertySeg2; + wxString wxSPropertyNextLine; + int ContactLineLen = 0; + int QuoteBreakPoint = 0; + int FNCount = 0; + int NameCount = 0; + int NicknameCount = 0; + int ADRCount = 0; + int EmailCount = 0; + int IMPPCount = 0; + int TelCount = 0; + int LangCount = 0; + int TZCount = 0; + int GeoCount = 0; + int URLCount = 0; + int RelatedCount = 0; + int TitleCount = 0; + int RoleCount = 0; + int OrgCount = 0; + int NoteCount = 0; + int CategoryCount = 0; + int GroupCount = 0; + int PhotoCount = 0; + int LogoCount = 0; + int SoundCount = 0; + int CalAdrCount = 0; + int CalReqAdrCount = 0; + int FreeBusyCount = 0; + int KeyCount = 0; + int VendorCount = 0; + int XTokenCount = 0; + //int intValueSeek = 1; + + for (std::map::iterator iter = ContactFileLines.begin(); + iter != ContactFileLines.end(); ++iter){ + + // Find the colon which splits the start bit from the data part. + + ContactLine = iter->second; + + while (ExtraLineSeek == TRUE){ + + // Check if there is extra data on the next line + // (indicated by space or tab at the start) and add data. + + iter++; + + if (iter == ContactFileLines.end()){ + + iter--; + break; + + } + + wxSPropertyNextLine = iter->second; + + + if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ + + wxSPropertyNextLine.Remove(0, 1); + //wxSPropertyNextLine.Trim(FALSE); + //ContactLine.Trim(); + ContactLine.Append(wxSPropertyNextLine); + + } else { + + iter--; + ExtraLineSeek = FALSE; + + } + + } + + ContactLineLen = ContactLine.Len(); + + // Make sure we are not in quotation mode. + // Make sure colon does not have \ or \\ before it. + + for (int i = 0; i <= ContactLineLen; i++){ + + if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){ + + PropertyFind = FALSE; + + } else if (PropertyFind == TRUE){ + + wxSProperty.Append(ContactLine.Mid(i, 1)); + + } + + if (ContactLine.Mid(i, 1) == wxT("\"")){ + + if (QuoteMode == TRUE){ + + QuoteMode = FALSE; + + } else { + + QuoteMode = TRUE; + + } + + } + + if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){ + + QuoteBreakPoint = i; + break; + + } + + } + + // Split that line at the point into two variables (ignore the colon). + + wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint); + wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1)); + + // Add the data into the contact editor depending on what it is. + + if (wxSProperty == wxT("KIND") && KindProcessed == FALSE){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + if (wxSPropertySeg2 == wxT("individual")){ + + cmbType->SetSelection(1); + + } else if (wxSPropertySeg2 == wxT("group")){ + + cmbType->SetSelection(2); + IsGroup = TRUE; + + } else if (wxSPropertySeg2 == wxT("org")){ + + cmbType->SetSelection(3); + + } else if (wxSPropertySeg2 == wxT("location")){ + + cmbType->SetSelection(4); + + } else { + + cmbType->SetSelection(0); + + } + + wxCommandEvent nullevent; + + UpdateMembersTab(nullevent); + + } else if (wxSProperty == wxT("MEMBER")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 8; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + // Go through the list of contacts for the account and find the matching UID. + // If contact with UID doesn't match then say (unknown contact). + + wxString AccountDirFinal = GetAccountDir(wxSContactAccount, FALSE); + + //wxString vcardfilenamewxs; + wxString vCardFilename; + wxString vCardFilenameFull; + wxString vCardDataString; + //wxStringTokenizer vcardfileline; + wxString lwxs; + wxString setname, setvalue; + //vCardNames = new std::map>; + std::multimap> vCardNamesAsc; + std::multimap> vCardNamesDsc; + int ContactIndex = 0; + + wxDir vcardaccdir(AccountDirFinal); + + bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES); + while(ProcFiles){ + + if (vCardFilename.Right(4) == wxT(".vcf") || + vCardFilename.Right(4) == wxT(".VCF") || + vCardFilename.Right(5) == wxT(".vcard") || + vCardFilename.Right(5) == wxT(".VCARD")){ + + vCard Person; + + vCardFilenameFull.Append(AccountDirFinal); + vCardFilenameFull.Append(wxT("/")); + vCardFilenameFull.Append(vCardFilename); + + Person.LoadFile(vCardFilenameFull); + + if (wxSPropertySeg2.Left(9) == wxT("urn:uuid:")){ + + wxString NewPropValue; + NewPropValue = wxSPropertySeg2.Mid(9, wxString::npos); + wxSPropertySeg2 = NewPropValue; + + } + + if (Person.MeetBaseSpecification()){ + + wxString KindStatus = Person.Get(wxT("KIND")); + + if (KindStatus == wxT("group")){ + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + vCardDataString.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + continue; + + } + + wxString PersonName = Person.Get(wxT("N")); + wxString PersonUID = Person.Get(wxT("UID")); + wxString PersonFilename = vCardFilenameFull; + + if (PersonUID != wxSPropertySeg2){ + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + vCardDataString.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + continue; + + } + + //ContactsNames.insert(std::make_pair(PersonName, ContactIndex)); + //ContactsUIDs.insert(std::make_pair(ContactIndex, PersonUID)); + + if (XVMData.SortMode == 1){ + + // Split the name into sections. + + vCardDataString = Person.Get(wxT("N")); + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname; + + } else if (XVMData.SortMode == 2){ + + // Split the name into sections. + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename; + + } else if (XVMData.SortMode == 3){ + + // Check and make sure that the top most nickname is used. + + vCardDataString = Person.Get(wxT("NICKNAME")); + + if (vCardDataString.IsEmpty()){ + + vCardDataString = wxT("(no nickname)"); + + } + + } else if (XVMData.SortMode == 4){ + + vCardDataString = Person.Get(wxT("FN")); + + } + + if (XVMData.AscendingMode == TRUE){ + vCardNamesAsc.insert(std::make_pair(vCardDataString, PersonUID)); + } else { + vCardNamesDsc.insert(std::make_pair(vCardDataString, PersonUID)); + } + + } else { + + } + + + + } + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + vCardDataString.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + + } + + if (XVMData.AscendingMode == TRUE){ + + for (std::map::iterator iter = vCardNamesAsc.begin(); + iter != vCardNamesAsc.end(); ++iter){ + + wxListItem ItemData; + + ItemData.SetId(0); + ItemData.SetText(iter->first); + + lboGroups->InsertItem(ItemData); + + GroupsList.insert(std::make_pair(intValueSeek, iter->second)); + + } + + + } else { + + for (std::map::iterator iter = vCardNamesDsc.begin(); + iter != vCardNamesDsc.end(); ++iter){ + + wxListItem ItemData; + + ItemData.SetId(0); + ItemData.SetText(iter->first); + + lboGroups->InsertItem(ItemData); + + GroupsList.insert(std::make_pair(intValueSeek, iter->second)); + + } + + } + + GroupCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("FN")){ + + /* + + NameDisplayAs = wxSPropertySeg2; + cmbDisplayAs->SetValue(ContactData.Convert(wxSPropertySeg2, TRUE)); + + */ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 4; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 3; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + FullNamesList.insert(std::make_pair(intValueSeek, wxT(""))); + FullNamesListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + FullNamesListPID.insert(std::make_pair(intValueSeek, wxT(""))); + FullNamesListPref.insert(std::make_pair(intValueSeek, 0)); + FullNamesListType.insert(std::make_pair(intValueSeek, wxT(""))); + FullNamesListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + FullNamesListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + intPrevValue = 3; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName == wxT("ALTID")){ + + FullNamesListAltID.erase(intValueSeek); FullNamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PID")){ + + FullNamesListPID.erase(intValueSeek); FullNamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intPref > 0 && intPref < 101){ + + FullNamesListPref.erase(intValueSeek); FullNamesListPref.insert(std::make_pair(intValueSeek, intPref)); + + } + + } else if (PropertyName == wxT("LANG")){ + + FullNamesListLanguage.erase(intValueSeek); FullNamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Split the address. + + //std::map::iterator SLiter; + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(":") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 1){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } + + intSplitSize = 0; + + } + + } + + // Add the data to the General/Home/Work address variables. + + /* + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(IMPPType); + + */ + + //ProcessCaptureStrings(wxsPropertySeg2); + + ProcessCaptureStrings(&wxSPropertySeg2); + + FullNamesList.erase(intValueSeek); + FullNamesListType.erase(intValueSeek); + FullNamesListTokens.erase(intValueSeek); + FullNamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + FullNamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + if (intType == 0){ + + FullNamesListType.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + FullNamesListType.insert(std::make_pair(intValueSeek, wxT("home"))); + + } else if (intType == 2){ + + FullNamesListType.insert(std::make_pair(intValueSeek, wxT("work"))); + + } + + if (FNProcessed == FALSE){ + + NameDisplayAs = wxSPropertySeg2; + cmbDisplayAs->SetValue(ContactData.Convert(wxSPropertySeg2, TRUE)); + FNProcessed = TRUE; + + } + + /*if (intType == 0){ + + ListCtrlIndex = lboIM->InsertItem(coldata); + + lboIM->SetItem(ListCtrlIndex, 1, IMPPAddress); + + if (intPref > 0 && intPref < 101){ + + lboIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralIMList.erase(intValueSeek); + GeneralIMListType.erase(intValueSeek); + GeneralIMListTokens.erase(intValueSeek); + GeneralIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralIMListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeIM->InsertItem(coldata); + + lboHomeIM->SetItem(ListCtrlIndex, 1, IMPPAddress); + + if (intPref > 0 && intPref < 101){ + + lboHomeIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + HomeIMList.erase(intValueSeek); + HomeIMListType.erase(intValueSeek); + HomeIMListTokens.erase(intValueSeek); + HomeIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeIMListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessIM->InsertItem(coldata); + + lboBusinessIM->SetItem(ListCtrlIndex, 1, IMPPAddress); + + if (intPref > 0 && intPref < 101){ + + lboBusinessIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessIMList.erase(intValueSeek); + BusinessIMListType.erase(intValueSeek); + BusinessIMListTokens.erase(intValueSeek); + BusinessIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessIMListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + }*/ + + FNCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("N") && NameProcessed == FALSE){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 3; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + // Look for type before continuing. + + intPrevValue = 2; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + } + + intPrevValue = 2; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName == wxT("ALTID")){ + + NameAltID = PropertyValue; + + } else if (PropertyName == wxT("LANG")){ + + NameLanguage = PropertyValue; + + } else if (PropertyName == wxT("SORT-AS")){ + + NameDisplayAs = PropertyValue; + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty()){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitSeek = 0; + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(";") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 4){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } else { + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + intSplitSize = 0; + + } + + } + + // Split the data into several parts. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + if (intiter->first == 1){ + + // Deal with family name. + + SLiter = SplitLength.find(1); + + txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE)); + + intPrevValue = intiter->second; + NameSurname = wxSPropertySeg2.Mid(0, SLiter->second); + + } else if (intiter->first == 2){ + + // Deal with given names. + + SLiter = SplitLength.find(2); + + txtForename->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + NameForename = wxSPropertySeg2.Mid(intPrevValue, SLiter->second); + + } else if (intiter->first == 3){ + + // Deal with additional names. + + SLiter = SplitLength.find(3); + + txtOtherNames->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + NameOtherNames = wxSPropertySeg2.Mid(intPrevValue, SLiter->second); + + } else if (intiter->first == 4){ + + // Deal with honorifix prefixes and suffixes. + + SLiter = SplitLength.find(4); + + txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + NameTitle = wxSPropertySeg2.Mid(intPrevValue, SLiter->second); + + txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE)); + NameSuffix = wxSPropertySeg2.Mid(intPrevValue); + + } + + } + + NameTokens = PropertyTokens; + NameProcessed = TRUE; + + } else if (wxSProperty == wxT("NICKNAME")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 10; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 9; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralNicknamesList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNicknamesListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNicknamesListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNicknamesListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralNicknamesListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNicknamesListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeNicknamesList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeNicknamesListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeNicknamesListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeNicknamesListPref.insert(std::make_pair(intValueSeek, 0)); + HomeNicknamesListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + HomeNicknamesListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessNicknamesList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessNicknamesListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessNicknamesListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessNicknamesListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessNicknamesListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessNicknamesListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 9; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + ProcessCaptureStrings(&PropertyValue); + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralNicknamesListAltID.erase(intValueSeek); GeneralNicknamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeNicknamesListAltID.erase(intValueSeek); HomeNicknamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessNicknamesListAltID.erase(intValueSeek); BusinessNicknamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralNicknamesListPID.erase(intValueSeek); GeneralNicknamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeNicknamesListPID.erase(intValueSeek); HomeNicknamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessNicknamesListPID.erase(intValueSeek); BusinessNicknamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ GeneralNicknamesListPref.erase(intValueSeek); GeneralNicknamesListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeNicknamesListPref.erase(intValueSeek); HomeNicknamesListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessNicknamesListPref.erase(intValueSeek); BusinessNicknamesListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else if (PropertyName == wxT("LANGUAGE")){ + + if (intType == 0){ GeneralNicknamesListLanguage.erase(intValueSeek); GeneralNicknamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeNicknamesListLanguage.erase(intValueSeek); HomeNicknamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessNicknamesListLanguage.erase(intValueSeek); BusinessNicknamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + if (intType == 0){ + + ListCtrlIndex = lboNicknames->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboNicknames->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralNicknamesList.erase(intValueSeek); + GeneralNicknamesListType.erase(intValueSeek); + GeneralNicknamesListTokens.erase(intValueSeek); + GeneralNicknamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralNicknamesListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNicknamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeNicknames->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeNicknames->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + HomeNicknamesList.erase(intValueSeek); + HomeNicknamesListType.erase(intValueSeek); + HomeNicknamesListTokens.erase(intValueSeek); + HomeNicknamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeNicknamesListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeNicknamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessNicknames->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessNicknames->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessNicknamesList.erase(intValueSeek); + BusinessNicknamesListType.erase(intValueSeek); + BusinessNicknamesListTokens.erase(intValueSeek); + BusinessNicknamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessNicknamesListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessNicknamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + NicknameCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("GENDER") && GenderProcessed == FALSE){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE;; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 8; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 7; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty()){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + wxStringTokenizer GenderDetails (wxSPropertySeg2, wxT(";")); + + wxString GenderComponent; + wxString GenderIdentity; + + if (GenderDetails.CountTokens() >= 2){ + + GenderComponent = GenderDetails.GetNextToken(); + GenderIdentity = GenderDetails.GetString(); + + ProcessCaptureStrings(&GenderIdentity); + + txtGenderDescription->SetValue(ContactData.Convert(GenderIdentity, TRUE)); + + } else { + + GenderComponent = GenderDetails.GetNextToken(); + + } + + if (GenderComponent == wxT("M")){ + + // Gender is Male. + + cmbGender->SetSelection(1); + + } else if (GenderComponent == wxT("F")){ + + // Gender is Female. + + cmbGender->SetSelection(2); + + } else if (GenderComponent == wxT("O")){ + + // Gender is Other. + + cmbGender->SetSelection(3); + + } else if (GenderComponent == wxT("N")){ + + // Gender is None/Not Applicable. + + cmbGender->SetSelection(4); + + } else if (GenderComponent == wxT("U")){ + + // Gender is Unknown. + + cmbGender->SetSelection(5); + + } + + GenderTokens = PropertyTokens; + GenderProcessed = TRUE; + + } else if (wxSProperty == wxT("BDAY") && BirthdayProcessed == FALSE){ + + // Process date. Preserve the remainder in the string. + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool BirthdayText = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 5; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("VALUE") && PropertyValue == wxT("text") && BirthdayText == FALSE){ + + ProcessCaptureStrings(&wxSPropertySeg2); + txtBirthday->SetValue(wxSPropertySeg2); + Birthday = wxSPropertySeg2; + BirthdayText = TRUE; + + } + + } + + // Setup blank lines for later on. + + intPrevValue = 5; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + ProcessCaptureStrings(&PropertyValue); + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + if (PropertyName == wxT("ALTID")){ + + BirthdayAltID = PropertyValue; + + } else if (PropertyName == wxT("CALSCALE")){ + + BirthdayCalScale = PropertyValue; + + } else if (PropertyName != wxT("VALUE")) { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty()){ + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + // Add the data to the variables and form. + + if (BirthdayText == FALSE){ + + Birthday = wxSPropertySeg2; + int DateYear = 0; + wxDateTime::Month DateMonth; + unsigned int DateDay; + + wxString wxSData; + + if (Birthday.Mid(0, 2) == wxT("--")){ + + // Skip year. + + } else { + + DateYear = wxAtoi(Birthday.Mid(0,4)); + + } + + DateMonth = (wxDateTime::Month)(wxAtoi(Birthday.Mid(4,2)) - 1); + DateDay = wxAtoi(Birthday.Mid(6,2)); + + wxDateTime BDayDate(DateDay,DateMonth,DateYear); + + /*BDayDate.SetDay(DateDay); + BDayDate.SetMonth(wxDateTime::Month::Jan); + BDayDate.SetYear(DateYear);*/ + + dapBirthday->SetValue(BDayDate); + + } + + BirthdayTokens = PropertyTokens; + + BirthdayProcessed = TRUE; + + } else if (wxSProperty == wxT("ANNIVERSARY") && AnniversaryProcessed == FALSE){ + + // Process date. Preserve the remainder in the string. + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool AnniversaryText = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 13; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 12; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("VALUE") && PropertyValue == wxT("text") && AnniversaryText == FALSE){ + + ProcessCaptureStrings(&wxSPropertySeg2); + txtAnniversary->SetValue(wxSPropertySeg2); + Anniversary = wxSPropertySeg2; + AnniversaryText = TRUE; + + } + + } + + // Setup blank lines for later on. + + intPrevValue = 12; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + AnniversaryAltID = PropertyValue; + + } else if (PropertyName == wxT("CALSCALE")){ + + AnniversaryCalScale = PropertyValue; + + } else if (PropertyName != wxT("VALUE")) { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty()){ + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + // Add the data to the variables and form. + + if (AnniversaryText == FALSE){ + + Anniversary = wxSPropertySeg2; + int DateYear = 0; + wxDateTime::Month DateMonth; + int DateDay; + + wxString wxSData; + + if (Anniversary.Mid(0, 2) == wxT("--")){ + + // Skip year. + + } else { + + DateYear = wxAtoi(Anniversary.Mid(0,4)); + + } + + DateMonth = (wxDateTime::Month)(wxAtoi(Anniversary.Mid(4,2)) - 1); + DateDay = wxAtoi(Anniversary.Mid(6,2)); + + wxDateTime ADayDate(DateDay,DateMonth,DateYear); + + dapAnniversary->SetValue(ADayDate); + + } + + AnniversaryTokens = PropertyTokens; + + AnniversaryProcessed = TRUE; + + } else if (wxSProperty == wxT("TZ")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 4; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 3; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralTZList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTZListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTZListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTZListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralTZListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTZListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeTZList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTZListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTZListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTZListPref.insert(std::make_pair(intValueSeek, 0)); + HomeTZListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTZListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessTZList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTZListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTZListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTZListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessTZListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTZListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 3; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + // Process properties. + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralTZListAltID.erase(intValueSeek); GeneralTZListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeTZListAltID.erase(intValueSeek); HomeTZListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessTZListAltID.erase(intValueSeek); BusinessTZListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralTZListPID.erase(intValueSeek); GeneralTZListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeTZListPID.erase(intValueSeek); HomeTZListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessTZListPID.erase(intValueSeek); BusinessTZListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("MEDIATYPE")){ + + if (intType == 0){ GeneralTZListMediatype.erase(intValueSeek); GeneralTZListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeTZListMediatype.erase(intValueSeek); HomeTZListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessTZListMediatype.erase(intValueSeek); BusinessTZListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intPref > 0 && intPref < 101){ + + if (intType == 0){ GeneralTZListPref.erase(intValueSeek); GeneralTZListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeTZListPref.erase(intValueSeek); HomeTZListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessTZListPref.erase(intValueSeek); BusinessTZListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Split the address. + + //std::map::iterator SLiter; + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(";") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 6){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } else { + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + intSplitSize = 0; + + } + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + if (intType == 0){ + + ListCtrlIndex = lboTimezones->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralTZList.erase(intValueSeek); + GeneralTZListType.erase(intValueSeek); + GeneralTZListTokens.erase(intValueSeek); + GeneralTZList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralTZListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTZListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeTimezones->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + HomeTZList.erase(intValueSeek); + HomeTZListType.erase(intValueSeek); + HomeTZListTokens.erase(intValueSeek); + HomeTZList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeTZListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeTZListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessTimezones->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessTZList.erase(intValueSeek); + BusinessTZListType.erase(intValueSeek); + BusinessTZListTokens.erase(intValueSeek); + BusinessTZList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessTZListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessTZListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + TZCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("ADR")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString AddressLabel; + wxString AddressLang; + wxString AddressAltID; + wxString AddressPID; + wxString AddressTokens; + wxString AddressGeo; + wxString AddressTimezone; + wxString AddressType; + wxString AddressMediatype; + wxString AddressPOBox; + wxString AddressExtended; + wxString AddressStreet; + wxString AddressLocality; + wxString AddressCity; + wxString AddressRegion; + wxString AddressPostalCode; + wxString AddressCountry; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 4; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralAddressList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListTown.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListCounty.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListPostCode.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListCountry.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListLabel.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListLang.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListGeo.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListTimezone.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralAddressListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeAddressList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListTown.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListCounty.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListPostCode.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListCountry.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListLabel.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListLang.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListGeo.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListTimezone.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + HomeAddressListPref.insert(std::make_pair(intValueSeek, 0)); + HomeAddressListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessAddressList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListTown.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListCounty.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListPostCode.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListCountry.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListLabel.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListLang.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListGeo.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListTimezone.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessAddressListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessAddressListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 4; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + ProcessCaptureStrings(&PropertyValue); + + // Process properties. + + if (PropertyName == wxT("LABEL")){ + + if (intType == 0){ GeneralAddressListLabel.erase(intValueSeek); GeneralAddressListLabel.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeAddressListLabel.erase(intValueSeek); HomeAddressListLabel.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessAddressListLabel.erase(intValueSeek); BusinessAddressListLabel.insert(std::make_pair(intValueSeek, PropertyValue));} + + } else if (PropertyName == wxT("LANGUAGE")){ + + if (intType == 0){ GeneralAddressListLang.erase(intValueSeek); GeneralAddressListLang.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeAddressListLang.erase(intValueSeek); HomeAddressListLang.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessAddressListLang.erase(intValueSeek); BusinessAddressListLang.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralAddressListAltID.erase(intValueSeek); GeneralAddressListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeAddressListAltID.erase(intValueSeek); HomeAddressListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessAddressListAltID.erase(intValueSeek); BusinessAddressListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralAddressListPID.erase(intValueSeek); GeneralAddressListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeAddressListPID.erase(intValueSeek); HomeAddressListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessAddressListPID.erase(intValueSeek); BusinessAddressListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("GEO")){ + + if (intType == 0){ GeneralAddressListGeo.erase(intValueSeek); GeneralAddressListGeo.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeAddressListGeo.erase(intValueSeek); HomeAddressListGeo.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessAddressListGeo.erase(intValueSeek); BusinessAddressListGeo.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("TZ")){ + + if (intType == 0){ GeneralAddressListTimezone.erase(intValueSeek); GeneralAddressListTimezone.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeAddressListTimezone.erase(intValueSeek); HomeAddressListTimezone.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessAddressListTimezone.erase(intValueSeek); BusinessAddressListTimezone.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("MEDIATYPE")){ + + if (intType == 0){ GeneralAddressListMediatype.erase(intValueSeek); GeneralAddressListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeAddressListMediatype.erase(intValueSeek); HomeAddressListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessAddressListMediatype.erase(intValueSeek); BusinessAddressListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intPref > 0 && intPref < 101){ + + if (intType == 0){ GeneralAddressListPref.erase(intValueSeek); GeneralAddressListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeAddressListPref.erase(intValueSeek); HomeAddressListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessAddressListPref.erase(intValueSeek); BusinessAddressListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } + + } else { + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Split the address. + + //std::map::iterator SLiter; + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(";") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 6){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } else { + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + intSplitSize = 0; + + } + + } + + // Split the data into several parts. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + if (intiter->first == 1){ + + // Deal with PO Box. + + SLiter = SplitLength.find(1); + + //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE)); + AddressPOBox = wxSPropertySeg2.Mid(0, SLiter->second); + intPrevValue = intiter->second; + + } else if (intiter->first == 2){ + + // Deal with extended address. + + SLiter = SplitLength.find(2); + + AddressExtended = wxSPropertySeg2.Mid(intPrevValue, SLiter->second); + //txtForename->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + } else if (intiter->first == 3){ + + // Deal with street address. + + SLiter = SplitLength.find(3); + + AddressStreet = wxSPropertySeg2.Mid(intPrevValue, SLiter->second); + //txtOtherNames->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + } else if (intiter->first == 4){ + + // Deal with locality + + SLiter = SplitLength.find(4); + + AddressLocality = wxSPropertySeg2.Mid(intPrevValue, SLiter->second); + //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE)); + + } else if (intiter->first == 5){ + + // Deal with region. + + SLiter = SplitLength.find(5); + + AddressRegion = wxSPropertySeg2.Mid(intPrevValue, SLiter->second); + //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE)); + + } else if (intiter->first == 6){ + + // Deal with post code. + + SLiter = SplitLength.find(6); + + AddressPostalCode = wxSPropertySeg2.Mid(intPrevValue, SLiter->second); + //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE)); + intPrevValue = intiter->second; + + // Deal with country. + + AddressCountry = wxSPropertySeg2.Mid(intPrevValue); + //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE)); + + } + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&AddressStreet, &AddressLocality, &AddressRegion, &AddressPostalCode, &AddressCountry); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(AddressStreet); + + if (intType == 0){ + + ListCtrlIndex = lboAddresses->InsertItem(coldata); + lboAddresses->SetItem(ListCtrlIndex, 1, AddressLocality); + lboAddresses->SetItem(ListCtrlIndex, 2, AddressRegion); + lboAddresses->SetItem(ListCtrlIndex, 3, AddressPostalCode); + + if (intPref > 0 && intPref < 101){ + + lboAddresses->SetItem(ListCtrlIndex, 4, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralAddressList.erase(intValueSeek); + GeneralAddressListTown.erase(intValueSeek); + GeneralAddressListCounty.erase(intValueSeek); + GeneralAddressListPostCode.erase(intValueSeek); + GeneralAddressListCountry.erase(intValueSeek); + GeneralAddressListType.erase(intValueSeek); + GeneralAddressListTokens.erase(intValueSeek); + GeneralAddressList.insert(std::make_pair(intValueSeek, AddressStreet)); + GeneralAddressListTown.insert(std::make_pair(intValueSeek, AddressLocality)); + GeneralAddressListCounty.insert(std::make_pair(intValueSeek, AddressRegion)); + GeneralAddressListPostCode.insert(std::make_pair(intValueSeek, AddressPostalCode)); + GeneralAddressListCountry.insert(std::make_pair(intValueSeek, AddressCountry)); + GeneralAddressListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralAddressListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeAddresses->InsertItem(coldata); + lboHomeAddresses->SetItem(ListCtrlIndex, 1, AddressLocality); + lboHomeAddresses->SetItem(ListCtrlIndex, 2, AddressRegion); + lboHomeAddresses->SetItem(ListCtrlIndex, 3, AddressPostalCode); + + if (intPref > 0 && intPref < 101){ + + lboHomeAddresses->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + HomeAddressList.erase(intValueSeek); + HomeAddressListTown.erase(intValueSeek); + HomeAddressListCounty.erase(intValueSeek); + HomeAddressListPostCode.erase(intValueSeek); + HomeAddressListCountry.erase(intValueSeek); + HomeAddressListType.erase(intValueSeek); + HomeAddressListTokens.erase(intValueSeek); + HomeAddressList.insert(std::make_pair(intValueSeek, AddressStreet)); + HomeAddressListTown.insert(std::make_pair(intValueSeek, AddressLocality)); + HomeAddressListCounty.insert(std::make_pair(intValueSeek, AddressRegion)); + HomeAddressListPostCode.insert(std::make_pair(intValueSeek, AddressPostalCode)); + HomeAddressListCountry.insert(std::make_pair(intValueSeek, AddressCountry)); + HomeAddressListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeAddressListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessAddresses->InsertItem(coldata); + lboBusinessAddresses->SetItem(ListCtrlIndex, 1, AddressLocality); + lboBusinessAddresses->SetItem(ListCtrlIndex, 2, AddressRegion); + lboBusinessAddresses->SetItem(ListCtrlIndex, 3, AddressPostalCode); + + if (intPref > 0 && intPref < 101){ + + lboBusinessAddresses->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessAddressList.erase(intValueSeek); + BusinessAddressListTown.erase(intValueSeek); + BusinessAddressListCounty.erase(intValueSeek); + BusinessAddressListPostCode.erase(intValueSeek); + BusinessAddressListCountry.erase(intValueSeek); + BusinessAddressListType.erase(intValueSeek); + BusinessAddressListTokens.erase(intValueSeek); + BusinessAddressList.insert(std::make_pair(intValueSeek, AddressStreet)); + BusinessAddressListTown.insert(std::make_pair(intValueSeek, AddressLocality)); + BusinessAddressListCounty.insert(std::make_pair(intValueSeek, AddressRegion)); + BusinessAddressListPostCode.insert(std::make_pair(intValueSeek, AddressPostalCode)); + BusinessAddressListCountry.insert(std::make_pair(intValueSeek, AddressCountry)); + BusinessAddressListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessAddressListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + ADRCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("EMAIL")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator SPoint; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString AddressLabel; + wxString AddressLang; + wxString AddressAltID; + wxString AddressPID; + wxString AddressTokens; + wxString AddressGeo; + wxString AddressTimezone; + wxString AddressType; + wxString AddressMediatype; + wxString AddressPOBox; + wxString AddressExtended; + wxString AddressStreet; + wxString AddressLocality; + wxString AddressCity; + wxString AddressRegion; + wxString AddressPostalCode; + wxString AddressCountry; + bool AfterFirstProperty = FALSE; + bool FirstToken = TRUE; + int intSplitSeek = 0; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitPoint = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 6; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralEmailList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralEmailListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralEmailListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralEmailListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralEmailListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeEmailList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeEmailListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeEmailListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeEmailListPref.insert(std::make_pair(intValueSeek, 0)); + HomeEmailListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessEmailList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessEmailListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessEmailListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessEmailListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessEmailListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 6; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + ProcessCaptureStrings(&PropertyValue); + + // Process properties. + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralEmailListAltID.erase(intValueSeek); GeneralEmailListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeEmailListAltID.erase(intValueSeek); HomeEmailListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessEmailListAltID.erase(intValueSeek); BusinessEmailListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralEmailListPID.erase(intValueSeek); GeneralEmailListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeEmailListPID.erase(intValueSeek); HomeEmailListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessEmailListPID.erase(intValueSeek); BusinessEmailListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intPref > 0 && intPref < 101){ + + if (intType == 0){ GeneralEmailListPref.erase(intValueSeek); GeneralEmailListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeEmailListPref.erase(intValueSeek); HomeEmailListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessEmailListPref.erase(intValueSeek); BusinessEmailListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + //std::map::iterator SLiter; + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + // Add the data to the General/Home/Work email variables. + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + if (intType == 0){ + + + + ListCtrlIndex = lboEmails->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboEmails->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralEmailList.erase(intValueSeek); + GeneralEmailListType.erase(intValueSeek); + GeneralEmailListTokens.erase(intValueSeek); + GeneralEmailList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralEmailListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralEmailListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeEmails->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeEmails->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + HomeEmailList.erase(intValueSeek); + HomeEmailListType.erase(intValueSeek); + HomeEmailListTokens.erase(intValueSeek); + HomeEmailList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeEmailListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeEmailListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessEmail->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessEmail->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessEmailList.erase(intValueSeek); + BusinessEmailListType.erase(intValueSeek); + BusinessEmailListTokens.erase(intValueSeek); + BusinessEmailList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessEmailListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessEmailListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + EmailCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("IMPP")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator SPoint; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString IMPPType; + wxString IMPPAddress; + bool AfterFirstProperty = FALSE; + bool FirstToken = TRUE; + int intSplitSeek = 0; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitPoint = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 5; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralIMList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralIMListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralIMListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralIMListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralIMListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralIMListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeIMList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeIMListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeIMListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeIMListPref.insert(std::make_pair(intValueSeek, 0)); + HomeIMListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + HomeIMListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessIMList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessIMListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessIMListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessIMListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessIMListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessIMListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 5; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralIMListAltID.erase(intValueSeek); GeneralIMListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeIMListAltID.erase(intValueSeek); HomeIMListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessIMListAltID.erase(intValueSeek); BusinessIMListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralIMListPID.erase(intValueSeek); GeneralIMListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeIMListPID.erase(intValueSeek); HomeIMListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessIMListPID.erase(intValueSeek); BusinessIMListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intPref > 0 && intPref < 101){ + + if (intType == 0){ GeneralIMListPref.erase(intValueSeek); GeneralIMListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeIMListPref.erase(intValueSeek); HomeIMListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessIMListPref.erase(intValueSeek); BusinessIMListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } + + } else if (PropertyName == wxT("MEDIATYPE")){ + + if (intType == 0){ GeneralIMListMediatype.erase(intValueSeek); GeneralIMListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeIMListMediatype.erase(intValueSeek); HomeIMListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessIMListMediatype.erase(intValueSeek); BusinessIMListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Split the address. + + //std::map::iterator SLiter; + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(":") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 1){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } + + intSplitSize = 0; + + } + + } + + // Split the data into several parts. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + if (intiter->first == 1){ + + // Deal with PO Box. + + SLiter = SplitLength.find(1); + + //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE)); + IMPPType = wxSPropertySeg2.Mid(0, SLiter->second); + intPrevValue = intiter->second; + + IMPPAddress = wxSPropertySeg2.Mid(intPrevValue); + + } + + } + + // Check what IM type it is. + + if (IMPPType == wxT("aim")){ + + IMPPType = wxT("AIM"); + + } else if (IMPPType == wxT("gg")){ + + IMPPType = wxT("Gadu-Gadu"); + + } else if (IMPPType == wxT("icq")){ + + IMPPType = wxT("ICQ"); + + } else if (IMPPType == wxT("skype")){ + + IMPPType = wxT("Skype"); + + } else if (IMPPType == wxT("xmpp")){ + + IMPPType = wxT("XMPP"); + + } else if (IMPPType == wxT("yahoo")){ + + IMPPType = wxT("Yahoo"); + + } else { + + // Do nothing. + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(IMPPType); + + if (intType == 0){ + + ListCtrlIndex = lboIM->InsertItem(coldata); + + lboIM->SetItem(ListCtrlIndex, 1, IMPPAddress); + + if (intPref > 0 && intPref < 101){ + + lboIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralIMList.erase(intValueSeek); + GeneralIMListType.erase(intValueSeek); + GeneralIMListTokens.erase(intValueSeek); + GeneralIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralIMListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeIM->InsertItem(coldata); + + lboHomeIM->SetItem(ListCtrlIndex, 1, IMPPAddress); + + if (intPref > 0 && intPref < 101){ + + lboHomeIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + HomeIMList.erase(intValueSeek); + HomeIMListType.erase(intValueSeek); + HomeIMListTokens.erase(intValueSeek); + HomeIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeIMListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessIM->InsertItem(coldata); + + lboBusinessIM->SetItem(ListCtrlIndex, 1, IMPPAddress); + + if (intPref > 0 && intPref < 101){ + + lboBusinessIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessIMList.erase(intValueSeek); + BusinessIMListType.erase(intValueSeek); + BusinessIMListTokens.erase(intValueSeek); + BusinessIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessIMListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + IMPPCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("TEL")){ + + // Check TEL and make sure it is functioning properly. + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map TypeSplitPoints; + std::map TypeSplitLength; + std::map::iterator SLiter; + std::map::iterator SPoint; + std::map::iterator TSLiter; + std::map::iterator TSPoint; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString TelType; + wxString TelNumber; + wxString TelTypeUI; + wxString TelTypeDetail; + bool AfterFirstProperty = FALSE; + bool FirstToken = TRUE; + int intSplitSeek = 0; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitPoint = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 4; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + // Process each value in type and translate each + // part. + + // Strip out the quotes if they are there. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + TelTypeDetail = PropertyValue; + + intSplitSize = 0; + intSplitsFound = 0; + intSplitPoint = 0; + + for (int i = 0; i <= intPropertyValueLen; i++){ + + intSplitSize++; + + if (PropertyValue.Mid(i, 1) == wxT(",") && PropertyValue.Mid((i - 1), 1) != wxT("\\")){ + + if (intSplitsFound == 0){ + + TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint)); + TypeSplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } else { + + TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint)); + TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize)); + + } + + intSplitsFound++; + i++; + intSplitPoint = i; + intSplitSize = 0; + + } + + } + + TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint)); + TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize)); + + int intTypeSeek = 0; + + for (std::map::iterator typeiter = TypeSplitPoints.begin(); + typeiter != TypeSplitPoints.end(); ++typeiter){ + + wxString TypePropertyName; + + TSLiter = TypeSplitLength.find(typeiter->first); + + TypePropertyName = PropertyValue.Mid(typeiter->second, TSLiter->second); + + if (intTypeSeek == 0){ + + + } else { + + TelTypeUI.Append(wxT(",")); + + } + + if (TypePropertyName == wxT("home")){ + + intType = 1; + + } else if (TypePropertyName == wxT("work")){ + + intType = 2; + + } + + + if (TypePropertyName == wxT("text")){ + + TelTypeUI.Append(_("text")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("voice")){ + + TelTypeUI.Append(_("voice")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("fax")){ + + TelTypeUI.Append(_("fax")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("cell")){ + + TelTypeUI.Append(_("mobile")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("video")){ + + TelTypeUI.Append(_("video")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("pager")){ + + TelTypeUI.Append(_("pager")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("textphone")){ + + TelTypeUI.Append(_("textphone")); + intTypeSeek++; + + } + + } + + } + + + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralTelephoneList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTelephoneListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTelephoneListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTelephoneListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralTelephoneListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeTelephoneList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTelephoneListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTelephoneListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTelephoneListPref.insert(std::make_pair(intValueSeek, 0)); + HomeTelephoneListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessTelephoneList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTelephoneListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTelephoneListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTelephoneListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessTelephoneListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 4; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + // Process properties. + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralTelephoneListAltID.erase(intValueSeek); GeneralTelephoneListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeTelephoneListAltID.erase(intValueSeek); HomeTelephoneListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessTelephoneListAltID.erase(intValueSeek); BusinessTelephoneListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralTelephoneListPID.erase(intValueSeek); GeneralTelephoneListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeTelephoneListPID.erase(intValueSeek); HomeTelephoneListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessTelephoneListPID.erase(intValueSeek); BusinessTelephoneListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intPref > 0 && intPref < 101){ + + if (intType == 0){ GeneralTelephoneListPref.erase(intValueSeek); GeneralTelephoneListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeTelephoneListPref.erase(intValueSeek); HomeTelephoneListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessTelephoneListPref.erase(intValueSeek); BusinessTelephoneListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Split the address. + + //std::map::iterator SLiter; + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(":") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 1){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } + + intSplitSize = 0; + + } + + } + + // Split the data into several parts. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + if (intiter->first == 1){ + + // Deal with PO Box. + + SLiter = SplitLength.find(1); + + //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE)); + TelType = wxSPropertySeg2.Mid(0, SLiter->second); + intPrevValue = intiter->second; + + TelNumber = wxSPropertySeg2.Mid(intPrevValue); + + } + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&PropertyValue); + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(TelNumber); + + if (intType == 0){ + + ListCtrlIndex = lboTelephone->InsertItem(coldata); + + lboTelephone->SetItem(ListCtrlIndex, 1, TelTypeUI); + + if (intPref > 0 && intPref < 101){ + + lboTelephone->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralTelephoneList.erase(intValueSeek); + GeneralTelephoneListType.erase(intValueSeek); + GeneralTelephoneListTokens.erase(intValueSeek); + GeneralTelephoneList.insert(std::make_pair(intValueSeek, TelNumber)); + GeneralTelephoneListType.insert(std::make_pair(intValueSeek, TelTypeDetail)); + GeneralTelephoneListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeTelephone->InsertItem(coldata); + + lboHomeTelephone->SetItem(ListCtrlIndex, 1, TelTypeUI); + + if (intPref > 0 && intPref < 101){ + + lboHomeTelephone->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + HomeTelephoneList.erase(intValueSeek); + HomeTelephoneListType.erase(intValueSeek); + HomeTelephoneListTokens.erase(intValueSeek); + HomeTelephoneList.insert(std::make_pair(intValueSeek, TelNumber)); + HomeTelephoneListType.insert(std::make_pair(intValueSeek, TelTypeDetail)); + HomeTelephoneListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessTelephone->InsertItem(coldata); + + lboBusinessTelephone->SetItem(ListCtrlIndex, 1, TelTypeUI); + + if (intPref > 0 && intPref < 101){ + + lboBusinessTelephone->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessTelephoneList.erase(intValueSeek); + BusinessTelephoneListType.erase(intValueSeek); + BusinessTelephoneListTokens.erase(intValueSeek); + BusinessTelephoneList.insert(std::make_pair(intValueSeek, TelNumber)); + BusinessTelephoneListType.insert(std::make_pair(intValueSeek, TelTypeDetail)); + BusinessTelephoneListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + TelCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("LANG")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 5; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralLanguageList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralLanguageListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralLanguageListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralLanguageListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralLanguageListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeLanguageList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeLanguageListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeLanguageListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeLanguageListPref.insert(std::make_pair(intValueSeek, 0)); + HomeLanguageListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessLanguageList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessLanguageListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessLanguageListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessLanguageListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessLanguageListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 5; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralLanguageListAltID.erase(intValueSeek); GeneralLanguageListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeLanguageListAltID.erase(intValueSeek); HomeLanguageListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessLanguageListAltID.erase(intValueSeek); BusinessLanguageListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralLanguageListPID.erase(intValueSeek); GeneralLanguageListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeLanguageListPID.erase(intValueSeek); HomeLanguageListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessLanguageListPID.erase(intValueSeek); BusinessLanguageListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ GeneralLanguageListPref.erase(intValueSeek); GeneralLanguageListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeLanguageListPref.erase(intValueSeek); HomeLanguageListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessLanguageListPref.erase(intValueSeek); BusinessLanguageListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + if (intType == 0){ + + ListCtrlIndex = lboLanguages->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboLanguages->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralLanguageList.erase(intValueSeek); + GeneralLanguageListType.erase(intValueSeek); + GeneralLanguageListTokens.erase(intValueSeek); + GeneralLanguageList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralLanguageListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralLanguageListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeLanguages->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeLanguages->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + HomeLanguageList.erase(intValueSeek); + HomeLanguageListType.erase(intValueSeek); + HomeLanguageListTokens.erase(intValueSeek); + HomeLanguageList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeLanguageListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeLanguageListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessLanguages->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessLanguages->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessLanguageList.erase(intValueSeek); + BusinessLanguageListType.erase(intValueSeek); + BusinessLanguageListTokens.erase(intValueSeek); + BusinessLanguageList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessLanguageListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessLanguageListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + LangCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("GEO")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString GeoType; + wxString GeoData; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 4; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralGeographyList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralGeographyListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralGeographyListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralGeographyListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralGeographyListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeGeographyList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeGeographyListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeGeographyListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeGeographyListPref.insert(std::make_pair(intValueSeek, 0)); + HomeGeographyListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessGeographyList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessGeographyListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessGeographyListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessGeographyListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessGeographyListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 4; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralGeographyListAltID.erase(intValueSeek); GeneralGeographyListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeGeographyListAltID.erase(intValueSeek); HomeGeographyListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessGeographyListAltID.erase(intValueSeek); BusinessGeographyListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralGeographyListPID.erase(intValueSeek); GeneralGeographyListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeGeographyListPID.erase(intValueSeek); HomeGeographyListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessGeographyListPID.erase(intValueSeek); BusinessGeographyListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("MEDIATYPE")){ + + if (intType == 0){ GeneralGeographyListMediatype.erase(intValueSeek); GeneralGeographyListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeGeographyListMediatype.erase(intValueSeek); HomeGeographyListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessGeographyListMediatype.erase(intValueSeek); BusinessGeographyListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intPref > 0 && intPref < 101){ + + if (intType == 0){ GeneralGeographyListPref.erase(intValueSeek); GeneralGeographyListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeGeographyListPref.erase(intValueSeek); HomeGeographyListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessGeographyListPref.erase(intValueSeek); BusinessGeographyListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Split the address. + + //std::map::iterator SLiter; + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(":") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 1){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } + + intSplitSize = 0; + + } + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + if (intiter->first == 1){ + + // Deal with PO Box. + + SLiter = SplitLength.find(1); + + //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE)); + GeoType = wxSPropertySeg2.Mid(0, SLiter->second); + intPrevValue = intiter->second; + + GeoData = wxSPropertySeg2.Mid(intPrevValue); + + } + + } + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + + + if (intType == 0){ + + /* + + ListCtrlIndex = lboTimezones->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + */ + /* + txtGeopositioning->SetValue(GeoData); + */ + + GeneralGeographyList.erase(intValueSeek); + GeneralGeographyListType.erase(intValueSeek); + GeneralGeographyListTokens.erase(intValueSeek); + GeneralGeographyList.insert(std::make_pair(intValueSeek, GeoData)); + GeneralGeographyListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralGeographyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + CaptureString(&GeoData, FALSE); + coldata.SetText(GeoData); + ListCtrlIndex = lboGeoposition->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboGeoposition->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + } else if (intType == 1){ + + /* + + ListCtrlIndex = lboHomeTimezones->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + */ + + /* + txtHomeGeopositioning->SetValue(GeoData); + */ + + HomeGeographyList.erase(intValueSeek); + HomeGeographyListType.erase(intValueSeek); + HomeGeographyListTokens.erase(intValueSeek); + HomeGeographyList.insert(std::make_pair(intValueSeek, GeoData)); + HomeGeographyListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeGeographyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + CaptureString(&GeoData, FALSE); + coldata.SetText(GeoData); + ListCtrlIndex = lboHomeGeoposition->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeGeoposition->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessGeoposition->InsertItem(coldata); + + /* + + ListCtrlIndex = lboBusinessTimezones->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + */ + + /* + txtBusinessGeopositioning->SetValue(GeoData); + */ + + BusinessGeographyList.erase(intValueSeek); + BusinessGeographyListType.erase(intValueSeek); + BusinessGeographyListTokens.erase(intValueSeek); + BusinessGeographyList.insert(std::make_pair(intValueSeek, GeoData)); + BusinessGeographyListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessGeographyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + CaptureString(&GeoData, FALSE); + coldata.SetText(GeoData); + ListCtrlIndex = lboBusinessGeoposition->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessGeoposition->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + } + + GeoCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("RELATED")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString RelatedType; + wxString RelatedTypeOriginal; + wxString RelatedName; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 9; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 8; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process these. + + RelatedTypeOriginal = PropertyValue; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("contact")){ + + RelatedType = _("Contact"); + + } else if (PropertyValue == wxT("acquaintance")){ + + RelatedType = _("Acquaintance"); + + } else if (PropertyValue == wxT("friend")){ + + RelatedType = _("Friend"); + + } else if (PropertyValue == wxT("met")){ + + RelatedType = _("Met"); + + } else if (PropertyValue == wxT("co-worker")){ + + RelatedType = _("Co-worker"); + + } else if (PropertyValue == wxT("colleague")){ + + RelatedType = _("Colleague"); + + } else if (PropertyValue == wxT("co-resident")){ + + RelatedType = _("Co-resident"); + + } else if (PropertyValue == wxT("neighbor")){ + + RelatedType = _("Neighbour"); + + } else if (PropertyValue == wxT("child")){ + + RelatedType = _("Child"); + + } else if (PropertyValue == wxT("parent")){ + + RelatedType = _("Parent"); + + } else if (PropertyValue == wxT("sibling")){ + + RelatedType = _("Sibling"); + + } else if (PropertyValue == wxT("spouse")){ + + RelatedType = _("Spouse"); + + } else if (PropertyValue == wxT("kin")){ + + RelatedType = _("Kin"); + + } else if (PropertyValue == wxT("muse")){ + + RelatedType = _("Muse"); + + } else if (PropertyValue == wxT("crush")){ + + RelatedType = _("Crush"); + + } else if (PropertyValue == wxT("date")){ + + RelatedType = _("Date"); + + } else if (PropertyValue == wxT("sweetheart")){ + + RelatedType = _("Sweetheart"); + + } else if (PropertyValue == wxT("me")){ + + RelatedType = _("Me"); + + } else if (PropertyValue == wxT("agent")){ + + RelatedType = _("Agent"); + + } else if (PropertyValue == wxT("emergency")){ + + RelatedType = _("Emergency"); + + } else { + + RelatedType = PropertyValue; + + } + + } + + } + + intPrevValue = 8; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + GeneralRelatedListAltID.erase(intValueSeek); + GeneralRelatedListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PID")){ + + GeneralRelatedListPID.erase(intValueSeek); + GeneralRelatedListPID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intPref > 0 && intPref < 101){ + + GeneralRelatedListPref.erase(intValueSeek); + GeneralRelatedListPref.insert(std::make_pair(intValueSeek, intPref)); + + + } + + } else if (PropertyName == wxT("LANGUAGE")){ + + GeneralRelatedListLanguage.erase(intValueSeek); + GeneralRelatedListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Split the address. + + //std::map::iterator SLiter; + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + // Add the data to the General/Home/Work address variables. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(RelatedType); + + ProcessCaptureStrings(&wxSPropertySeg2); + + ListCtrlIndex = lboRelated->InsertItem(coldata); + + lboRelated->SetItem(ListCtrlIndex, 1, wxSPropertySeg2); + + if (intPref > 0 && intPref < 101){ + + lboRelated->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralRelatedList.erase(intValueSeek); + GeneralRelatedListRelType.erase(intValueSeek); + GeneralRelatedListType.erase(intValueSeek); + GeneralRelatedListTokens.erase(intValueSeek); + GeneralRelatedList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralRelatedListRelType.insert(std::make_pair(intValueSeek, RelatedTypeOriginal)); + GeneralRelatedListType.insert(std::make_pair(intValueSeek, RelatedTypeOriginal)); + GeneralRelatedListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + RelatedCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("URL")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 4; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralWebsiteList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralWebsiteListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralWebsiteListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralWebsiteListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralWebsiteListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeWebsiteList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeWebsiteListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeWebsiteListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeWebsiteListPref.insert(std::make_pair(intValueSeek, 0)); + HomeWebsiteListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessWebsiteList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessWebsiteListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessWebsiteListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessWebsiteListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessWebsiteListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 4; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralWebsiteListAltID.erase(intValueSeek); GeneralWebsiteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeWebsiteListAltID.erase(intValueSeek); HomeWebsiteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessWebsiteListAltID.erase(intValueSeek); BusinessWebsiteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralWebsiteListPID.erase(intValueSeek); GeneralWebsiteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeWebsiteListPID.erase(intValueSeek); HomeWebsiteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessWebsiteListPID.erase(intValueSeek); BusinessWebsiteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ GeneralWebsiteListPref.erase(intValueSeek); GeneralWebsiteListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeWebsiteListPref.erase(intValueSeek); HomeWebsiteListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessWebsiteListPref.erase(intValueSeek); BusinessWebsiteListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else if (PropertyName == wxT("MEDIATYPE")){ + + if (intType == 0){ GeneralWebsiteListMediatype.erase(intValueSeek); GeneralWebsiteListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeWebsiteListMediatype.erase(intValueSeek); HomeWebsiteListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessWebsiteListMediatype.erase(intValueSeek); BusinessWebsiteListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + if (intType == 0){ + + ListCtrlIndex = lboWebsites->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboWebsites->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralWebsiteList.erase(intValueSeek); + GeneralWebsiteListType.erase(intValueSeek); + GeneralWebsiteListTokens.erase(intValueSeek); + GeneralWebsiteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralWebsiteListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralWebsiteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeWebsites->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeWebsites->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + HomeWebsiteList.erase(intValueSeek); + HomeWebsiteListType.erase(intValueSeek); + HomeWebsiteListTokens.erase(intValueSeek); + HomeWebsiteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeWebsiteListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeWebsiteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessWebsites->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessWebsites->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessWebsiteList.erase(intValueSeek); + BusinessWebsiteListType.erase(intValueSeek); + BusinessWebsiteListTokens.erase(intValueSeek); + BusinessWebsiteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessWebsiteListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessWebsiteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + URLCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("TITLE")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 6; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralTitleList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTitleListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTitleListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTitleListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralTitleListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTitleListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeTitleList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTitleListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTitleListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTitleListPref.insert(std::make_pair(intValueSeek, 0)); + HomeTitleListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + HomeTitleListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessTitleList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTitleListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTitleListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTitleListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessTitleListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessTitleListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 6; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralTitleListAltID.erase(intValueSeek); GeneralTitleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeTitleListAltID.erase(intValueSeek); HomeTitleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessTitleListAltID.erase(intValueSeek); BusinessTitleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralTitleListPID.erase(intValueSeek); GeneralTitleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeTitleListPID.erase(intValueSeek); HomeTitleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessTitleListPID.erase(intValueSeek); BusinessTitleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ GeneralTitleListPref.erase(intValueSeek); GeneralTitleListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeTitleListPref.erase(intValueSeek); HomeTitleListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessTitleListPref.erase(intValueSeek); BusinessTitleListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else if (PropertyName == wxT("LANGUAGE")){ + + if (intType == 0){ GeneralTitleListLanguage.erase(intValueSeek); GeneralTitleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeTitleListLanguage.erase(intValueSeek); HomeTitleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessTitleListLanguage.erase(intValueSeek); BusinessTitleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + if (intType == 0){ + + ListCtrlIndex = lboTitles->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboTitles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralTitleList.erase(intValueSeek); + GeneralTitleListType.erase(intValueSeek); + GeneralTitleListTokens.erase(intValueSeek); + GeneralTitleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralTitleListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralTitleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeTitles->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeTitles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + HomeTitleList.erase(intValueSeek); + HomeTitleListType.erase(intValueSeek); + HomeTitleListTokens.erase(intValueSeek); + HomeTitleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeTitleListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeTitleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessTitles->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessTitles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessTitleList.erase(intValueSeek); + BusinessTitleListType.erase(intValueSeek); + BusinessTitleListTokens.erase(intValueSeek); + BusinessTitleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessTitleListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessTitleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + TitleCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("ROLE")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 5; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralRoleList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralRoleListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralRoleListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralRoleListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralRoleListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralRoleListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeRoleList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeRoleListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeRoleListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeRoleListPref.insert(std::make_pair(intValueSeek, 0)); + HomeRoleListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + HomeRoleListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessRoleList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessRoleListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessRoleListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessRoleListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessRoleListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessRoleListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 5; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralRoleListAltID.erase(intValueSeek); GeneralRoleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeRoleListAltID.erase(intValueSeek); HomeRoleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessRoleListAltID.erase(intValueSeek); BusinessRoleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralRoleListPID.erase(intValueSeek); GeneralRoleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeRoleListPID.erase(intValueSeek); HomeRoleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessRoleListPID.erase(intValueSeek); BusinessRoleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ GeneralRoleListPref.erase(intValueSeek); GeneralRoleListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeRoleListPref.erase(intValueSeek); HomeRoleListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessRoleListPref.erase(intValueSeek); BusinessRoleListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else if (PropertyName == wxT("LANGUAGE")){ + + if (intType == 0){ GeneralRoleListLanguage.erase(intValueSeek); GeneralRoleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeRoleListLanguage.erase(intValueSeek); HomeRoleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessRoleListLanguage.erase(intValueSeek); BusinessRoleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + if (intType == 0){ + + ListCtrlIndex = lboRoles->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboRoles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralRoleList.erase(intValueSeek); + GeneralRoleListType.erase(intValueSeek); + GeneralRoleListTokens.erase(intValueSeek); + GeneralRoleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralRoleListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralRoleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeRoles->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeRoles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + HomeRoleList.erase(intValueSeek); + HomeRoleListType.erase(intValueSeek); + HomeRoleListTokens.erase(intValueSeek); + HomeRoleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeRoleListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeRoleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessRoles->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessRoles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessRoleList.erase(intValueSeek); + BusinessRoleListType.erase(intValueSeek); + BusinessRoleListTokens.erase(intValueSeek); + BusinessRoleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessRoleListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessRoleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + RoleCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("ORG")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 4; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralOrganisationsList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralOrganisationsListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralOrganisationsListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralOrganisationsListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralOrganisationsListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralOrganisationsListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralOrganisationsListSortAs.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeOrganisationsList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeOrganisationsListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeOrganisationsListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeOrganisationsListPref.insert(std::make_pair(intValueSeek, 0)); + HomeOrganisationsListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + HomeOrganisationsListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + HomeOrganisationsListSortAs.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessOrganisationsList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessOrganisationsListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessOrganisationsListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessOrganisationsListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessOrganisationsListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessOrganisationsListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessOrganisationsListSortAs.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 4; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralOrganisationsListAltID.erase(intValueSeek); GeneralOrganisationsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeOrganisationsListAltID.erase(intValueSeek); HomeOrganisationsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessOrganisationsListAltID.erase(intValueSeek); BusinessOrganisationsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralOrganisationsListPID.erase(intValueSeek); GeneralOrganisationsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeOrganisationsListPID.erase(intValueSeek); HomeOrganisationsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessOrganisationsListPID.erase(intValueSeek); BusinessOrganisationsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ GeneralOrganisationsListPref.erase(intValueSeek); GeneralOrganisationsListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeOrganisationsListPref.erase(intValueSeek); HomeOrganisationsListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessOrganisationsListPref.erase(intValueSeek); BusinessOrganisationsListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else if (PropertyName == wxT("LANGUAGE")){ + + if (intType == 0){ GeneralOrganisationsListLanguage.erase(intValueSeek); GeneralOrganisationsListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeOrganisationsListLanguage.erase(intValueSeek); HomeOrganisationsListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessOrganisationsListLanguage.erase(intValueSeek); BusinessOrganisationsListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("SORT-AS")){ + + if (intType == 0){ GeneralOrganisationsListSortAs.erase(intValueSeek); GeneralOrganisationsListSortAs.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeOrganisationsListSortAs.erase(intValueSeek); HomeOrganisationsListSortAs.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessOrganisationsListSortAs.erase(intValueSeek); BusinessOrganisationsListSortAs.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + wxListItem coldata; + + ProcessCaptureStrings(&wxSPropertySeg2); + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + if (intType == 0){ + + ListCtrlIndex = lboOrganisations->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboOrganisations->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + GeneralOrganisationsList.erase(intValueSeek); + GeneralOrganisationsListType.erase(intValueSeek); + GeneralOrganisationsListTokens.erase(intValueSeek); + GeneralOrganisationsList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralOrganisationsListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralOrganisationsListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 1){ + + ListCtrlIndex = lboHomeOrganisations->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeOrganisations->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + HomeOrganisationsList.erase(intValueSeek); + HomeOrganisationsListType.erase(intValueSeek); + HomeOrganisationsListTokens.erase(intValueSeek); + HomeOrganisationsList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeOrganisationsListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeOrganisationsListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } else if (intType == 2){ + + ListCtrlIndex = lboBusinessOrganisations->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessOrganisations->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + BusinessOrganisationsList.erase(intValueSeek); + BusinessOrganisationsListType.erase(intValueSeek); + BusinessOrganisationsListTokens.erase(intValueSeek); + BusinessOrganisationsList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessOrganisationsListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessOrganisationsListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + } + + OrgCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("NOTE")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 5; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + if (intType == 0){ + + GeneralNoteList.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNoteListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNoteListPID.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNoteListPref.insert(std::make_pair(intValueSeek, 0)); + GeneralNoteListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNoteListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + HomeNoteList.insert(std::make_pair(intValueSeek, wxT(""))); + HomeNoteListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeNoteListPID.insert(std::make_pair(intValueSeek, wxT(""))); + HomeNoteListPref.insert(std::make_pair(intValueSeek, 0)); + HomeNoteListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + HomeNoteListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 2){ + + BusinessNoteList.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessNoteListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessNoteListPID.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessNoteListPref.insert(std::make_pair(intValueSeek, 0)); + BusinessNoteListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + BusinessNoteListLanguage.insert(std::make_pair(intValueSeek, wxT(""))); + + } + + intPrevValue = 5; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ GeneralNoteListAltID.erase(intValueSeek); GeneralNoteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeNoteListAltID.erase(intValueSeek); HomeNoteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessNoteListAltID.erase(intValueSeek); BusinessNoteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ GeneralNoteListPID.erase(intValueSeek); GeneralNoteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeNoteListPID.erase(intValueSeek); HomeNoteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessNoteListPID.erase(intValueSeek); BusinessNoteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ GeneralNoteListPref.erase(intValueSeek); GeneralNoteListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ HomeNoteListPref.erase(intValueSeek); HomeNoteListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ BusinessNoteListPref.erase(intValueSeek); BusinessNoteListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else if (PropertyName == wxT("LANGUAGE")){ + + if (intType == 0){ GeneralNoteListLanguage.erase(intValueSeek); GeneralNoteListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ HomeNoteListLanguage.erase(intValueSeek); HomeNoteListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ BusinessNoteListLanguage.erase(intValueSeek); BusinessNoteListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + ProcessCaptureStrings(&wxSPropertySeg2); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + + if (intType == 0){ + + GeneralNoteList.erase(intValueSeek); + GeneralNoteListType.erase(intValueSeek); + GeneralNoteListTokens.erase(intValueSeek); + GeneralNoteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + GeneralNoteListType.insert(std::make_pair(intValueSeek, wxT(""))); + GeneralNoteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + //CaptureString(&wxSPropertySeg2, FALSE); + + coldata.SetText(wxSPropertySeg2); + + ListCtrlIndex = lboNotes->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboNotes->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + } else if (intType == 1){ + + HomeNoteList.erase(intValueSeek); + HomeNoteListType.erase(intValueSeek); + HomeNoteListTokens.erase(intValueSeek); + HomeNoteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + HomeNoteListType.insert(std::make_pair(intValueSeek, wxT("home"))); + HomeNoteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + CaptureString(&wxSPropertySeg2, FALSE); + + coldata.SetText(wxSPropertySeg2); + + ListCtrlIndex = lboHomeNotes->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboHomeNotes->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + } else if (intType == 2){ + + BusinessNoteList.erase(intValueSeek); + BusinessNoteListType.erase(intValueSeek); + BusinessNoteListTokens.erase(intValueSeek); + BusinessNoteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + BusinessNoteListType.insert(std::make_pair(intValueSeek, wxT("work"))); + BusinessNoteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + CaptureString(&wxSPropertySeg2, FALSE); + + coldata.SetText(wxSPropertySeg2); + + ListCtrlIndex = lboBusinessNotes->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboBusinessNotes->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + } + + NoteCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("CATEGORIES")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyType; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 12; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 11; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + PropertyType = wxT("work"); + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + PropertyType = wxT("home"); + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + CategoriesList.insert(std::make_pair(intValueSeek, wxT(""))); + CategoriesListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + CategoriesListPID.insert(std::make_pair(intValueSeek, wxT(""))); + CategoriesListPref.insert(std::make_pair(intValueSeek, 0)); + CategoriesListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + intPrevValue = 11; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ CategoriesListAltID.erase(intValueSeek); CategoriesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ CategoriesListAltID.erase(intValueSeek); CategoriesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ CategoriesListAltID.erase(intValueSeek); CategoriesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ CategoriesListPID.erase(intValueSeek); CategoriesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ CategoriesListPID.erase(intValueSeek); CategoriesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ CategoriesListPID.erase(intValueSeek); CategoriesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ CategoriesListPref.erase(intValueSeek); CategoriesListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ CategoriesListPref.erase(intValueSeek); CategoriesListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ CategoriesListPref.erase(intValueSeek); CategoriesListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Deal with multiple categories. + + SplitPoints.clear(); + SplitLength.clear(); + intSplitSize = 0; + intSplitsFound = 0; + intSplitSeek = 0; + intPrevValue = 0; + intPropertyLen = wxSPropertySeg2.Len(); + + for (int i = 0; i <= intPropertyLen; i++){ + + if (intSplitSize == 0 && wxSPropertySeg2.Mid(i, 1) == wxT(" ")){ + + continue; + + } + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(",") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){ + + if (AfterFirstToken == TRUE){ + + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + SplitLength.insert(std::make_pair(intSplitsFound, intSplitSize)); + + } else { + + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + AfterFirstToken = TRUE; + + } + + intSplitsFound++; + intSplitSeek = i; + intSplitSize = 0; + + } + + } + + SplitPoints.insert(std::make_pair(intSplitsFound, (intSplitSeek + 1))); + SplitLength.insert(std::make_pair(intSplitsFound, intSplitSize)); + + intPrevValue = 0; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg2.Mid(intPrevValue, (SLiter->second + 1)); + + intPrevValue = intiter->second; + + // Process properties. + + /* + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + */ + + // Add the data to the General/Home/Work address variables. + + // Trim any whitespace from the start and end. + + PropertyData = PropertyData.Trim(FALSE); + PropertyData = PropertyData.Trim(TRUE); + + ProcessCaptureStrings(&PropertyData); + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(PropertyData); + + ListCtrlIndex = lboCategories->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboCategories->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + CategoriesList.erase(intValueSeek); + CategoriesListType.erase(intValueSeek); + CategoriesListTokens.erase(intValueSeek); + CategoriesList.insert(std::make_pair(intValueSeek, PropertyData)); + CategoriesListType.insert(std::make_pair(intValueSeek, PropertyType)); + CategoriesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + CategoryCount++; + intValueSeek++; + + } + + } else if (wxSProperty == wxT("PHOTO")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 6; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + PicturesList.insert(std::make_pair(intValueSeek, "")); + PicturesListType.insert(std::make_pair(intValueSeek, wxT(""))); + PicturesListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + PicturesListPID.insert(std::make_pair(intValueSeek, wxT(""))); + PicturesListPref.insert(std::make_pair(intValueSeek, 0)); + PicturesListPicEncType.insert(std::make_pair(intValueSeek, wxT(""))); + PicturesListPictureType.insert(std::make_pair(intValueSeek, wxT(""))); + PicturesListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + PicturesListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + + intPrevValue = 6; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ PicturesListAltID.erase(intValueSeek); PicturesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ PicturesListAltID.erase(intValueSeek); PicturesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ PicturesListAltID.erase(intValueSeek); PicturesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ PicturesListPID.erase(intValueSeek); PicturesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ PicturesListPID.erase(intValueSeek); PicturesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ PicturesListPID.erase(intValueSeek); PicturesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ PicturesListPref.erase(intValueSeek); PicturesListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ PicturesListPref.erase(intValueSeek); PicturesListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ PicturesListPref.erase(intValueSeek); PicturesListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else if (PropertyName == wxT("MEDIATYPE")){ + + if (intType == 0){ PicturesListMediatype.erase(intValueSeek); PicturesListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ PicturesListMediatype.erase(intValueSeek); PicturesListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ PicturesListMediatype.erase(intValueSeek); PicturesListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + ProcessCaptureStrings(&wxSPropertySeg2); + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(";")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 6){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } else { + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + intSplitSize = 0; + + } + + } + + wxString wxSPhotoURI; + wxString wxSPhotoMIME; + wxString wxSPhotoEncoding; + wxString wxSPhotoData; + std::string base64enc; + + if (intSplitsFound = 0){ + + } else { + + std::map::iterator striter; + + striter = SplitLength.find(1); + + wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":")); + + while (wSTDataType.HasMoreTokens() == TRUE){ + + wxSPhotoURI = wSTDataType.GetNextToken(); + wxSPhotoMIME = wSTDataType.GetNextToken(); + break; + + } + + wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 1)), wxT(",")); + + while (wSTDataInfo.HasMoreTokens() == TRUE){ + + wxSPhotoEncoding = wSTDataInfo.GetNextToken(); + wxSPhotoData = wSTDataInfo.GetNextToken(); + base64enc = wxSPhotoData.mb_str(); + break; + + } + + } + + // Add the data to the General/Home/Work address variables. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(_("Picture")); + + ListCtrlIndex = lboPictures->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboPictures->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + PicturesList.erase(intValueSeek); + PicturesListType.erase(intValueSeek); + PicturesListTokens.erase(intValueSeek); + PicturesListPictureType.erase(intValueSeek); + PicturesListPicEncType.erase(intValueSeek); + PicturesList.insert(std::make_pair(intValueSeek, base64enc)); + PicturesListPictureType.insert(std::make_pair(intValueSeek, wxSPhotoMIME)); + PicturesListPicEncType.insert(std::make_pair(intValueSeek, wxSPhotoEncoding)); + + if (intType == 0){ + + PicturesListType.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + PicturesListType.insert(std::make_pair(intValueSeek, wxT("home"))); + lboLogos->SetItem(ListCtrlIndex, 1, _("Home")); + + } else if (intType == 2){ + + PicturesListType.insert(std::make_pair(intValueSeek, wxT("work"))); + lboLogos->SetItem(ListCtrlIndex, 1, _("Work")); + + } + + PicturesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + PhotoCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("LOGO")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 5; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + LogosList.insert(std::make_pair(intValueSeek, "")); + LogosListType.insert(std::make_pair(intValueSeek, wxT(""))); + LogosListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + LogosListPID.insert(std::make_pair(intValueSeek, wxT(""))); + LogosListPref.insert(std::make_pair(intValueSeek, 0)); + LogosListPicEncType.insert(std::make_pair(intValueSeek, wxT(""))); + LogosListPictureType.insert(std::make_pair(intValueSeek, wxT(""))); + LogosListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + LogosListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + + intPrevValue = 5; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ LogosListAltID.erase(intValueSeek); LogosListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ LogosListAltID.erase(intValueSeek); LogosListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ LogosListAltID.erase(intValueSeek); LogosListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ LogosListPID.erase(intValueSeek); LogosListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ LogosListPID.erase(intValueSeek); LogosListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ LogosListPID.erase(intValueSeek); LogosListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ LogosListPref.erase(intValueSeek); LogosListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ LogosListPref.erase(intValueSeek); LogosListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ LogosListPref.erase(intValueSeek); LogosListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else if (PropertyName == wxT("MEDIATYPE")){ + + if (intType == 0){ LogosListMediatype.erase(intValueSeek); LogosListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ LogosListMediatype.erase(intValueSeek); LogosListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ LogosListMediatype.erase(intValueSeek); LogosListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + wxString wxSPhotoURI; + wxString wxSPhotoMIME; + wxString wxSPhotoEncoding; + wxString wxSPhotoData; + std::string base64enc; + + ProcessCaptureStrings(&wxSPropertySeg2); + + if (intSplitsFound = 0){ + + } else { + + std::map::iterator striter; + + striter = SplitLength.find(1); + + wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":")); + + while (wSTDataType.HasMoreTokens() == TRUE){ + + wxSPhotoURI = wSTDataType.GetNextToken(); + wxSPhotoMIME = wSTDataType.GetNextToken(); + break; + + } + + wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 1)), wxT(",")); + + while (wSTDataInfo.HasMoreTokens() == TRUE){ + + wxSPhotoEncoding = wSTDataInfo.GetNextToken(); + wxSPhotoData = wSTDataInfo.GetNextToken(); + base64enc = wxSPhotoData.mb_str(); + break; + + } + + } + + // Add the data to the General/Home/Work address variables. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(_("Picture")); + + ListCtrlIndex = lboLogos->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboLogos->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + LogosList.erase(intValueSeek); + LogosListType.erase(intValueSeek); + LogosListTokens.erase(intValueSeek); + LogosListPictureType.erase(intValueSeek); + LogosListPicEncType.erase(intValueSeek); + LogosList.insert(std::make_pair(intValueSeek, base64enc)); + LogosListPictureType.insert(std::make_pair(intValueSeek, wxSPhotoMIME)); + LogosListPicEncType.insert(std::make_pair(intValueSeek, wxSPhotoEncoding)); + + if (intType == 0){ + + LogosListType.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + LogosListType.insert(std::make_pair(intValueSeek, wxT("home"))); + lboLogos->SetItem(ListCtrlIndex, 1, _("Home")); + + } else if (intType == 2){ + + LogosListType.insert(std::make_pair(intValueSeek, wxT("work"))); + lboLogos->SetItem(ListCtrlIndex, 1, _("Work")); + + } + + LogosListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + LogoCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("SOUND")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 6; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + SoundsList.insert(std::make_pair(intValueSeek, "")); + SoundsListType.insert(std::make_pair(intValueSeek, wxT(""))); + SoundsListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + SoundsListPID.insert(std::make_pair(intValueSeek, wxT(""))); + SoundsListPref.insert(std::make_pair(intValueSeek, 0)); + SoundsListAudioEncType.insert(std::make_pair(intValueSeek, wxT(""))); + SoundsListAudioType.insert(std::make_pair(intValueSeek, wxT(""))); + SoundsListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + SoundsListMediatype.insert(std::make_pair(intValueSeek, wxT(""))); + + intPrevValue = 6; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ALTID")){ + + if (intType == 0){ SoundsListAltID.erase(intValueSeek); SoundsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ SoundsListAltID.erase(intValueSeek); SoundsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ SoundsListAltID.erase(intValueSeek); SoundsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PID")){ + + if (intType == 0){ SoundsListPID.erase(intValueSeek); SoundsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ SoundsListPID.erase(intValueSeek); SoundsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ SoundsListPID.erase(intValueSeek); SoundsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + if (intType == 0){ SoundsListPref.erase(intValueSeek); SoundsListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 1){ SoundsListPref.erase(intValueSeek); SoundsListPref.insert(std::make_pair(intValueSeek, intPref)); } + else if (intType == 2){ SoundsListPref.erase(intValueSeek); SoundsListPref.insert(std::make_pair(intValueSeek, intPref)); } + + } else if (PropertyName == wxT("MEDIATYPE")){ + + if (intType == 0){ SoundsListMediatype.erase(intValueSeek); SoundsListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 1){ SoundsListMediatype.erase(intValueSeek); SoundsListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + else if (intType == 2){ SoundsListMediatype.erase(intValueSeek); SoundsListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); } + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + ProcessCaptureStrings(&wxSPropertySeg2); + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(";")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 6){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } else { + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + intSplitSize = 0; + + } + + } + + wxString wxSSoundURI; + wxString wxSSoundMIME; + wxString wxSSoundEncoding; + wxString wxSSoundData; + std::string base64enc; + + if (intSplitsFound = 0){ + + } else { + + std::map::iterator striter; + + striter = SplitLength.find(1); + + wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":")); + + while (wSTDataType.HasMoreTokens() == TRUE){ + + wxSSoundURI = wSTDataType.GetNextToken(); + wxSSoundMIME = wSTDataType.GetNextToken(); + break; + + } + + wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 1)), wxT(",")); + + while (wSTDataInfo.HasMoreTokens() == TRUE){ + + wxSSoundEncoding = wSTDataInfo.GetNextToken(); + wxSSoundData = wSTDataInfo.GetNextToken(); + base64enc = wxSSoundData.mb_str(); + break; + + } + + } + + // Add the data to the General/Home/Work address variables. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(_("Sound")); + + ListCtrlIndex = lboSounds->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboSounds->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + SoundsList.erase(intValueSeek); + SoundsListType.erase(intValueSeek); + SoundsListTokens.erase(intValueSeek); + SoundsListAudioType.erase(intValueSeek); + SoundsListAudioEncType.erase(intValueSeek); + SoundsList.insert(std::make_pair(intValueSeek, base64enc)); + SoundsListAudioType.insert(std::make_pair(intValueSeek, wxSSoundMIME)); + SoundsListAudioEncType.insert(std::make_pair(intValueSeek, wxSSoundEncoding)); + + if (intType == 0){ + + SoundsListType.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + SoundsListType.insert(std::make_pair(intValueSeek, wxT("home"))); + lboLogos->SetItem(ListCtrlIndex, 1, _("Home")); + + } else if (intType == 2){ + + SoundsListType.insert(std::make_pair(intValueSeek, wxT("work"))); + lboLogos->SetItem(ListCtrlIndex, 1, _("Work")); + + } + + SoundsListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + SoundCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("CALURI")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 8; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 7; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + CalendarList.insert(std::make_pair(intValueSeek, wxT(""))); + CalendarListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + CalendarListPID.insert(std::make_pair(intValueSeek, wxT(""))); + CalendarListPref.insert(std::make_pair(intValueSeek, 0)); + CalendarListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + intPrevValue = 6; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + if (PropertyName == wxT("ALTID")){ + + CalendarListAltID.erase(intValueSeek); CalendarListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PID")){ + + CalendarListPID.erase(intValueSeek); CalendarListPID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + CalendarListPref.erase(intValueSeek); CalendarListPref.insert(std::make_pair(intValueSeek, intPref)); + + } else if (PropertyName == wxT("MEDIATYPE")){ + + CalendarListMediatype.erase(intValueSeek); CalendarListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + ListCtrlIndex = lboCalendarAddresses->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboCalendarAddresses->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + CaptureString(&wxSPropertySeg2, FALSE); + + CalendarList.erase(intValueSeek); + CalendarListType.erase(intValueSeek); + CalendarListTokens.erase(intValueSeek); + CalendarList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + + if (intType == 0){ + + CalendarListType.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + CalendarListType.insert(std::make_pair(intValueSeek, wxT("home"))); + lboCalendarAddresses->SetItem(ListCtrlIndex, 1, _("Home"), intPref); + + } else if (intType == 2){ + + CalendarListType.insert(std::make_pair(intValueSeek, wxT("work"))); + lboCalendarAddresses->SetItem(ListCtrlIndex, 1, _("Work"), intPref); + + } + + CalendarListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + CalAdrCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("CALADRURI")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 11; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 10; + + // Look for type before continuing. + + + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + CalendarRequestList.insert(std::make_pair(intValueSeek, wxT(""))); + CalendarRequestListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + CalendarRequestListPID.insert(std::make_pair(intValueSeek, wxT(""))); + CalendarRequestListPref.insert(std::make_pair(intValueSeek, 0)); + CalendarRequestListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + intPrevValue = 10; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + if (PropertyName == wxT("ALTID")){ + + CalendarRequestListAltID.erase(intValueSeek); CalendarRequestListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PID")){ + + CalendarRequestListPID.erase(intValueSeek); CalendarRequestListPID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + CalendarRequestListPref.erase(intValueSeek); CalendarRequestListPref.insert(std::make_pair(intValueSeek, intPref)); + + } else if (PropertyName == wxT("MEDIATYPE")){ + + CalendarRequestListMediatype.erase(intValueSeek); CalendarRequestListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + ListCtrlIndex = lboCalendarRequestAddress->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboCalendarRequestAddress->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + CaptureString(&wxSPropertySeg2, FALSE); + + CalendarRequestList.erase(intValueSeek); + CalendarRequestListType.erase(intValueSeek); + CalendarRequestListTokens.erase(intValueSeek); + CalendarRequestList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + + if (intType == 0){ + + CalendarRequestListType.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + CalendarRequestListType.insert(std::make_pair(intValueSeek, wxT("home"))); + lboCalendarRequestAddress->SetItem(ListCtrlIndex, 1, _("Home"), intPref); + + } else if (intType == 2){ + + CalendarRequestListType.insert(std::make_pair(intValueSeek, wxT("work"))); + lboCalendarRequestAddress->SetItem(ListCtrlIndex, 1, _("Work"), intPref); + + } + + CalendarRequestListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + CalReqAdrCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("FBURL")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 6; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + FreeBusyList.insert(std::make_pair(intValueSeek, wxT(""))); + FreeBusyListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + FreeBusyListPID.insert(std::make_pair(intValueSeek, wxT(""))); + FreeBusyListPref.insert(std::make_pair(intValueSeek, 0)); + FreeBusyListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + intPrevValue = 6; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + if (PropertyName == wxT("ALTID")){ + + FreeBusyListAltID.erase(intValueSeek); FreeBusyListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PID")){ + + FreeBusyListPID.erase(intValueSeek); FreeBusyListPID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + FreeBusyListPref.erase(intValueSeek); FreeBusyListPref.insert(std::make_pair(intValueSeek, intPref)); + + } else if (PropertyName == wxT("MEDIATYPE")){ + + FreeBusyListMediatype.erase(intValueSeek); FreeBusyListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg2); + + ListCtrlIndex = lboFreeBusyAddresses->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboFreeBusyAddresses->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref)); + + } + + CaptureString(&wxSPropertySeg2, FALSE); + + FreeBusyList.erase(intValueSeek); + FreeBusyListType.erase(intValueSeek); + FreeBusyListTokens.erase(intValueSeek); + FreeBusyList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + + if (intType == 0){ + + FreeBusyListType.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType == 1){ + + FreeBusyListType.insert(std::make_pair(intValueSeek, wxT("home"))); + lboFreeBusyAddresses->SetItem(ListCtrlIndex, 1, _("Home"), intPref); + + } else if (intType == 2){ + + FreeBusyListType.insert(std::make_pair(intValueSeek, wxT("work"))); + lboFreeBusyAddresses->SetItem(ListCtrlIndex, 1, _("Work"), intPref); + + } + + FreeBusyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + FreeBusyCount++; + intValueSeek++; + } else if (wxSProperty == wxT("KEY")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + long ListCtrlIndex; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 4; + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + if (PropertyValue == wxT("work")){ + + intType = 2; + + } else if (PropertyValue == wxT("home")){ + + intType = 1; + + } else { + + intType = 0; + + } + + } + + } + + // Setup blank lines for later on. + + KeyList.insert(std::make_pair(intValueSeek, wxT(""))); + KeyListAltID.insert(std::make_pair(intValueSeek, wxT(""))); + KeyListPID.insert(std::make_pair(intValueSeek, wxT(""))); + KeyListPref.insert(std::make_pair(intValueSeek, 0)); + KeyListKeyType.insert(std::make_pair(intValueSeek, FALSE)); + KeyListDataType.insert(std::make_pair(intValueSeek, wxT(""))); + KeyListDataEncType.insert(std::make_pair(intValueSeek, wxT(""))); + KeyListTokens.insert(std::make_pair(intValueSeek, wxT(""))); + + intPrevValue = 4; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + // Process properties. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + if (PropertyName == wxT("ALTID")){ + + KeyListAltID.erase(intValueSeek); KeyListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PID")){ + + KeyListPID.erase(intValueSeek); KeyListPID.insert(std::make_pair(intValueSeek, PropertyValue)); + + } else if (PropertyName == wxT("PREF")){ + + intPref = wxAtoi(PropertyValue); + + KeyListPref.erase(intValueSeek); KeyListPref.insert(std::make_pair(intValueSeek, intPref)); + + } else { + + // Something else we don't know about so append + // to the tokens variable. + + if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){ + + if (FirstToken == TRUE){ + + PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue); + FirstToken = FALSE; + + } else { + + PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue); + + } + + } + + } + + } + + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + intPrevValue = 0; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(";") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 6){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } else { + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + intSplitSize = 0; + + } + + } + + wxString wxSKeyURI; + wxString wxSKeyMIME; + wxString wxSKeyEncoding; + wxString wxSKeyData; + std::string base64enc; + + if (intSplitsFound = 0){ + + } else { + + std::map::iterator striter; + + striter = SplitLength.find(1); + + wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":")); + + while (wSTDataType.HasMoreTokens() == TRUE){ + + wxSKeyURI = wSTDataType.GetNextToken(); + wxSKeyMIME = wSTDataType.GetNextToken(); + break; + + } + + if (wxSKeyURI == wxT("data")){ + + wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 2)), wxT(",")); + + while (wSTDataInfo.HasMoreTokens() == TRUE){ + + wxSKeyEncoding = wSTDataInfo.GetNextToken(); + wxSKeyData = wSTDataInfo.GetNextToken(); + break; + + } + + } + + } + + // Add the data to the General/Home/Work address variables. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + + if (wxSKeyURI == wxT("data")){ + + if (wxSKeyMIME == wxT("application/pgp-keys")){ + + coldata.SetText(_("PGP Key")); + + } else { + + coldata.SetText(_("Key")); + + } + + KeyListDataEncType.erase(intValueSeek); + KeyListKeyType.erase(intValueSeek); + KeyListDataEncType.insert(std::make_pair(intValueSeek, wxSKeyEncoding)); + KeyListKeyType.insert(std::make_pair(intValueSeek, TRUE)); + + KeyList.erase(intValueSeek); + KeyList.insert(std::make_pair(intValueSeek, wxSKeyData)); + + } else { + + coldata.SetText(wxSPropertySeg2); + + KeyList.erase(intValueSeek); + KeyList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + + } + + ListCtrlIndex = lboKeys->InsertItem(coldata); + + if (intPref > 0 && intPref < 101){ + + lboKeys->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref)); + + } + + + KeyListType.erase(intValueSeek); + KeyListTokens.erase(intValueSeek); + KeyListDataType.erase(intValueSeek); + + KeyListDataType.insert(std::make_pair(intValueSeek, wxSKeyMIME)); + + if (intType = 0){ + + KeyListType.insert(std::make_pair(intValueSeek, wxT(""))); + + } else if (intType = 1){ + + KeyListType.insert(std::make_pair(intValueSeek, wxT("home"))); + + } else if (intType = 2){ + + KeyListType.insert(std::make_pair(intValueSeek, wxT("work"))); + + } + + KeyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens)); + + KeyCount++; + intValueSeek++; + + } else if (wxSProperty == wxT("UID") && UIDProcessed == FALSE){ + + UIDToken = wxSPropertySeg2; + UIDProcessed = TRUE; + + } else if (wxSProperty.Mid(0, 3) == wxT("VND")){ + + // Split the Vendor three ways. + + wxStringTokenizer wSTVendorDetails(wxSPropertySeg1, wxT("-")); + + wxString wxSVNDID; + wxString wxSVNDPropName; + long ListCtrlIndex; + + while (wSTVendorDetails.HasMoreTokens() == TRUE){ + + wSTVendorDetails.GetNextToken(); + wxSVNDID = wSTVendorDetails.GetNextToken(); + wxSVNDPropName = wSTVendorDetails.GetNextToken(); + break; + + } + + if (!wxSVNDID.IsEmpty() && !wxSVNDPropName.IsEmpty()){ + + // Setup the values for later processing. + + VendorList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + VendorListPEN.insert(std::make_pair(intValueSeek, wxSVNDID)); + VendorListElement.insert(std::make_pair(intValueSeek, wxSVNDPropName)); + + // Add the data to the vendor variables. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSVNDID + wxT("-") + wxSVNDPropName); + + ListCtrlIndex = lboVendorNamespace->InsertItem(coldata); + + VendorList.erase(intValueSeek); + VendorListPEN.erase(intValueSeek); + VendorListElement.erase(intValueSeek); + + VendorList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + VendorListPEN.insert(std::make_pair(intValueSeek, wxSVNDID)); + VendorListElement.insert(std::make_pair(intValueSeek, wxSVNDPropName)); + + VendorCount++; + intValueSeek++; + + } + + } else if (wxSProperty.Mid(0, 2) == wxT("X-")){ + + long ListCtrlIndex; + + XTokenList.insert(std::make_pair(intValueSeek, wxSPropertySeg2)); + XTokenListTokens.insert(std::make_pair(intValueSeek, wxSPropertySeg1.Mid(2))); + + // Add to the form. + + wxListItem coldata; + + coldata.SetId(intValueSeek); + coldata.SetData(intValueSeek); + coldata.SetText(wxSPropertySeg1.Mid(2)); + + ListCtrlIndex = lboXToken->InsertItem(coldata); + + XTokenCount++; + intValueSeek++; + + + } + + // Reset the variables. + + QuoteMode = FALSE; + PropertyFind = TRUE; + ExtraLineSeek = TRUE; + ContactLineLen = 0; + QuoteBreakPoint = 0; + ContactLine.Clear(); + wxSProperty.Clear(); + + } + + FMTimer.SetFilename(Filename); + FMTimer.Start(10000, FALSE); + + EditMode = TRUE; + + return TRUE; +} + +void frmContactEditor::SplitValues(wxString *PropertyLine, + std::map *SplitPoints, + std::map *SplitLength, + int intSize){ + + int intPropertyLen = PropertyLine->Len(); + int intSplitsFound = 0; + int intSplitSize = 0; + int intSplitSeek = 0; + + for (int i = intSize; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (PropertyLine->Mid(i, 1) == wxT(";") && + PropertyLine->Mid((i - 1), 1) != wxT("\\")){ + + if (intSplitsFound == 0){ + + SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize))); + + } else { + + SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1))); + + intSplitsFound++; + intSplitSeek = i; + intSplitSize = 0; + + } + + } + + if (intSplitsFound == 0){ + + SplitPoints->insert(std::make_pair(intSplitsFound, (8 + 1))); + SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize)); + + } else { + + SplitPoints->insert(std::make_pair(intSplitsFound, (intSplitSeek + 1))); + SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize)); + + } + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditor.cpp b/source/contacteditor/frmContactEditor.cpp new file mode 100644 index 0000000..db50acb --- /dev/null +++ b/source/contacteditor/frmContactEditor.cpp @@ -0,0 +1,7740 @@ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include "frmContactEditor.h" +#include "frmContactEditorNickname.h" +#include "frmContactEditorAddress.h" +#include "frmContactEditorEmail.h" +#include "frmContactEditorIM.h" +#include "frmContactEditorTelephone.h" +#include "frmContactEditorLanguages.h" +#include "frmContactEditorTimezones.h" +#include "frmContactEditorRelated.h" +#include "frmContactEditorWebsites.h" +#include "frmContactEditorTitles.h" +#include "frmContactEditorRoles.h" +#include "frmContactEditorGeoposition.h" +#include "frmContactEditorGroups.h" + +#include "frmContactEditorOrganisations.h" +#include "frmContactEditorNotes.h" +#include "frmContactEditorCategory.h" +#include "frmContactEditorSound.h" +#include "frmContactEditorPicture.h" +#include "frmContactEditorCalAdr.h" +#include "frmContactEditorKey.h" +#include "frmContactEditorVendor.h" +#include "frmContactEditorXToken.h" +#include "../frmMain.h" + +#include "../enums.h" +#include "../version.h" +#include "../vcard/vcard.h" +#include "../vcard/vcard34conv.h" +#include "../bitmaps.h" +#include "../common/base64.h" +#include "../common/textprocessing.h" +#include "../common/preferences.h" +#include "../common/uuid.h" +#include "../common/dirs.h" + +#define CE_NICKNAME wxT("Nickname") +#define CE_ADDRESS wxT("Address") +#define CE_EMAIL wxT("Email") +#define CE_IM wxT("IM") +#define CE_TELEPHONE wxT("Telephone") +#define CE_LANG wxT("Languages") +#define CE_TZ wxT("Timezone") +#define CE_RELATED wxT("Related") +#define CE_WEBSITE wxT("Websites") +#define CE_TITLE wxT("Titles") +#define CE_GEOPOSITION wxT("Geoposition") +#define CE_ROLE wxT("Roles") +#define CE_ORG wxT("Organisations") +#define CE_NOTE wxT("Notes") +#define CE_CATEGORIES wxT("Categories") +#define CE_GROUPS wxT("Groups") +#define CE_PICTURES wxT("Pictures") +#define CE_SOUNDS wxT("Sounds") +#define CE_CALENDAR wxT("Calendar") +#define CE_KEY wxT("Key") +#define CE_TOKEN wxT("Token") + +// TODO: Investigate problems with SFML & PulseAudio - CPU usage problems when +// not being used. + +// Replace intResult with intValueSeek. + +BEGIN_EVENT_TABLE(frmContactEditor, wxFrame) + EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, frmContactEditor::ContactFileChanged) +END_EVENT_TABLE() + +frmContactEditor::frmContactEditor( wxWindow* parent ) +: +frmContactEditorADT( parent ) +{ + boolContactModified = FALSE; + wxDateTime NoDate; + dapAnniversary->SetValue(NoDate); + dapBirthday->SetValue(NoDate); + tabMembers->Hide(); + + // Setup the buttons. + + wxMemoryInputStream istream(buttons_play_png, sizeof(buttons_play_png)); + wxImage button_play_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap playiconbmp(button_play_pngi, -1); + btnPlay->SetBitmapLabel(playiconbmp); + + wxMemoryInputStream istream2(buttons_stop_png, sizeof(buttons_stop_png)); + wxImage button_stop_pngi(istream2, wxBITMAP_TYPE_PNG); + wxBitmap stopiconbmp(button_stop_pngi, -1); + btnStop->SetBitmapLabel(stopiconbmp); + btnStop->Disable(); + FMTimer.SetupPointers(this); + //wxIcon contacticon; + //contacticon.CopyFromBitmap(contacticonbmp); + +} + +void frmContactEditor::AddGeneralNickname( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this ); + frameCENickname->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralNicknamesList); + frameCENickname->SetupPointers(&GeneralNicknamesList, + &GeneralNicknamesListAltID, + &GeneralNicknamesListPID, + &GeneralNicknamesListType, + &GeneralNicknamesListLanguage, + &GeneralNicknamesListTokens, + &GeneralNicknamesListPref, + lboNicknames, + (intValueSeek)); + frameCENickname->ShowModal(); + delete frameCENickname; + frameCENickname = NULL; +} + +void frmContactEditor::ModifyGeneralNickname( wxCommandEvent& event ) +{ + + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboNicknames, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this ); + frameCENickname->SetupPointers(&GeneralNicknamesList, + &GeneralNicknamesListAltID, + &GeneralNicknamesListPID, + &GeneralNicknamesListType, + &GeneralNicknamesListLanguage, + &GeneralNicknamesListTokens, + &GeneralNicknamesListPref, + lboNicknames, + intSelectedData); + frameCENickname->SetEditorMode(TRUE, CE_GENERAL); + frameCENickname->ShowModal(); + delete frameCENickname; + frameCENickname = NULL; + +} + +void frmContactEditor::DeleteGeneralNickname( wxCommandEvent& event ) +{ + + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboNicknames, + &longSelected, + &intSelectedData)){ + return; + } + + lboNicknames->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, + &GeneralNicknamesList, + &GeneralNicknamesListLanguage, + &GeneralNicknamesListAltID, + &GeneralNicknamesListPID, + &GeneralNicknamesListTokens, + &GeneralNicknamesListType, + &GeneralNicknamesListPref); + +} + +void frmContactEditor::AddGeneralAddress( wxCommandEvent& event ) +{ + + int intResult = 0; + + frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this ); + frameCEAddress->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralAddressList); + frameCEAddress->SetupPointers(&GeneralAddressList, + &GeneralAddressListTown, + &GeneralAddressListCounty, + &GeneralAddressListPostCode, + &GeneralAddressListCountry, + &GeneralAddressListLabel, + &GeneralAddressListLang, + &GeneralAddressListAltID, + &GeneralAddressListPID, + &GeneralAddressListTokens, + &GeneralAddressListGeo, + &GeneralAddressListTimezone, + &GeneralAddressListType, + &GeneralAddressListMediatype, + &GeneralAddressListPref, + lboAddresses, + (intValueSeek)); + frameCEAddress->ShowModal(); + delete frameCEAddress; + frameCEAddress = NULL; +} + +void frmContactEditor::ModifyGeneralAddress( wxCommandEvent& event ) +{ + + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + if (longSelected == -1){ + return; + } + + frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this ); + frameCEAddress->SetupPointers(&GeneralAddressList, + &GeneralAddressListTown, + &GeneralAddressListCounty, + &GeneralAddressListPostCode, + &GeneralAddressListCountry, + &GeneralAddressListLabel, + &GeneralAddressListLang, + &GeneralAddressListAltID, + &GeneralAddressListPID, + &GeneralAddressListTokens, + &GeneralAddressListGeo, + &GeneralAddressListTimezone, + &GeneralAddressListType, + &GeneralAddressListMediatype, + &GeneralAddressListPref, + lboAddresses, + intSelectedData); + frameCEAddress->SetEditorMode(TRUE, CE_GENERAL); + frameCEAddress->ShowModal(); + delete frameCEAddress; + frameCEAddress = NULL; + +} + +void frmContactEditor::DeleteGeneralAddress( wxCommandEvent& event ) +{ + + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + lboAddresses->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralAddressList, + &GeneralAddressListTown, &GeneralAddressListCounty, + &GeneralAddressListPostCode, &GeneralAddressListCountry, + &GeneralAddressList, &GeneralAddressListLabel, + &GeneralAddressListLang, &GeneralAddressListAltID, + &GeneralAddressListPID, &GeneralAddressListTokens, + &GeneralAddressListGeo, &GeneralAddressListTimezone, + &GeneralAddressListType, &GeneralAddressListMediatype, + &GeneralAddressListPref); + +} + +void frmContactEditor::AddGeneralEmail( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this ); + frameCEEmail->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralAddressList); + frameCEEmail->SetupPointers(&GeneralEmailList, + &GeneralEmailListAltID, + &GeneralEmailListPID, + &GeneralEmailListType, + &GeneralEmailListTokens, + &GeneralEmailListPref, + lboEmails, + (intValueSeek)); + frameCEEmail->ShowModal(); + delete frameCEEmail; + frameCEEmail = NULL; +} + +void frmContactEditor::ModifyGeneralEmail( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboEmails, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this ); + frameCEEmail->SetupPointers(&GeneralEmailList, + &GeneralEmailListAltID, + &GeneralEmailListPID, + &GeneralEmailListType, + &GeneralEmailListTokens, + &GeneralEmailListPref, + lboEmails, + intSelectedData); + frameCEEmail->SetEditorMode(TRUE, CE_GENERAL); + frameCEEmail->ShowModal(); + delete frameCEEmail; + frameCEEmail = NULL; +} + +void frmContactEditor::DeleteGeneralEmail( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboEmails, + &longSelected, + &intSelectedData)){ + return; + } + + lboEmails->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralEmailList, + &GeneralEmailListAltID, &GeneralEmailListPID, + &GeneralEmailListType, &GeneralEmailListTokens, + &GeneralEmailListPref); + +} + +void frmContactEditor::AddGeneralIM( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this ); + frameCEIM->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralIMList); + frameCEIM->SetupPointers(&GeneralIMList, + &GeneralIMListAltID, + &GeneralIMListPID, + &GeneralIMListType, + &GeneralIMListTokens, + &GeneralIMListMediatype, + &GeneralIMListPref, + lboIM, + (intValueSeek)); + frameCEIM->ShowModal(); + delete frameCEIM; + frameCEIM = NULL; +} + +void frmContactEditor::ModifyGeneralIM( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboIM, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this ); + frameCEIM->SetupPointers(&GeneralIMList, + &GeneralIMListAltID, + &GeneralIMListPID, + &GeneralIMListType, + &GeneralIMListTokens, + &GeneralIMListMediatype, + &GeneralIMListPref, + lboIM, + intSelectedData); + frameCEIM->SetEditorMode(TRUE, CE_GENERAL); + frameCEIM->ShowModal(); + delete frameCEIM; + frameCEIM = NULL; +} + +void frmContactEditor::DeleteGeneralIM( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboIM, + &longSelected, + &intSelectedData)){ + return; + } + + lboIM->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralIMList, + &GeneralIMListAltID, &GeneralIMListPID, + &GeneralIMListType, &GeneralIMListTokens, + &GeneralIMListMediatype, &GeneralIMListPref); + +} + +void frmContactEditor::AddGeneralTelephone( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this ); + frameCETel->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralTelephoneList); + frameCETel->SetupPointers(&GeneralTelephoneList, + &GeneralTelephoneListAltID, + &GeneralTelephoneListPID, + &GeneralTelephoneListType, + &GeneralTelephoneListTokens, + &GeneralTelephoneListPref, + lboTelephone, + (intValueSeek)); + frameCETel->ShowModal(); + delete frameCETel; + frameCETel = NULL; +} + +void frmContactEditor::ModifyGeneralTelephone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboTelephone, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this ); + frameCETel->SetupPointers(&GeneralTelephoneList, + &GeneralTelephoneListAltID, + &GeneralTelephoneListPID, + &GeneralTelephoneListType, + &GeneralTelephoneListTokens, + &GeneralTelephoneListPref, + lboTelephone, + intSelectedData); + frameCETel->SetEditorMode(TRUE, CE_GENERAL); + frameCETel->ShowModal(); + delete frameCETel; + frameCETel = NULL; +} + +void frmContactEditor::DeleteGeneralTelephone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboTelephone, + &longSelected, + &intSelectedData)){ + return; + } + + lboTelephone->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralTelephoneList, + &GeneralTelephoneListAltID, &GeneralTelephoneListPID, + &GeneralTelephoneListType, &GeneralTelephoneListTokens, + &GeneralTelephoneListPref); + +} + +void frmContactEditor::AddGeneralLanguages( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this ); + frameCELang->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralLanguageList); + frameCELang->SetupPointers(&GeneralLanguageList, + &GeneralLanguageListAltID, + &GeneralLanguageListPID, + &GeneralLanguageListType, + &GeneralLanguageListTokens, + &GeneralLanguageListPref, + lboLanguages, + (intValueSeek)); + frameCELang->ShowModal(); + delete frameCELang; + frameCELang = NULL; +} + +void frmContactEditor::ModifyGeneralLanguages( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboLanguages, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this ); + frameCELang->SetupPointers(&GeneralLanguageList, + &GeneralLanguageListAltID, + &GeneralLanguageListPID, + &GeneralLanguageListType, + &GeneralLanguageListTokens, + &GeneralLanguageListPref, + lboLanguages, + intSelectedData); + frameCELang->SetEditorMode(TRUE, CE_GENERAL); + frameCELang->ShowModal(); + delete frameCELang; + frameCELang = NULL; +} + +void frmContactEditor::DeleteGeneralLanguage( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboLanguages, + &longSelected, + &intSelectedData)){ + return; + } + + lboLanguages->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralLanguageList, + &GeneralLanguageListAltID, &GeneralLanguageListPID, + &GeneralLanguageListType, &GeneralLanguageListTokens, + &GeneralLanguageListPref); + +} + +void frmContactEditor::AddGeneralTimezone( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this ); + frameCETZ->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralTZList); + frameCETZ->SetupPointers(&GeneralTZList, + &GeneralTZListAltID, + &GeneralTZListPID, + &GeneralTZListType, + &GeneralTZListTokens, + &GeneralTZListMediatype, + &GeneralTZListPref, + lboTimezones, + (intValueSeek)); + frameCETZ->ShowModal(); + delete frameCETZ; + frameCETZ = NULL; +} + +void frmContactEditor::ModifyGeneralTimezone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboTimezones, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this ); + frameCETZ->SetupPointers(&GeneralTZList, + &GeneralTZListAltID, + &GeneralTZListPID, + &GeneralTZListType, + &GeneralTZListTokens, + &GeneralTZListMediatype, + &GeneralTZListPref, + lboTimezones, + intSelectedData); + frameCETZ->SetEditorMode(TRUE, CE_GENERAL); + frameCETZ->ShowModal(); + delete frameCETZ; + frameCETZ = NULL; +} + +void frmContactEditor::DeleteGeneralTimezone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboTimezones, + &longSelected, + &intSelectedData)){ + return; + } + + lboTimezones->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralTZList, + &GeneralTZListAltID, &GeneralTZListPID, + &GeneralTZListType, &GeneralTZListTokens, + &GeneralTZListMediatype, &GeneralTZListPref); + +} + +void frmContactEditor::AddGeneralGeoposition( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this ); + frameCEGeo->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralGeographyList); + frameCEGeo->SetupPointers(&GeneralGeographyList, + &GeneralGeographyListAltID, + &GeneralGeographyListPID, + &GeneralGeographyListType, + &GeneralGeographyListTokens, + &GeneralGeographyListMediatype, + &GeneralGeographyListPref, + lboGeoposition, + (intValueSeek)); + frameCEGeo->ShowModal(); + delete frameCEGeo; + frameCEGeo = NULL; +} + +void frmContactEditor::ModifyGeneralGeoposition( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboGeoposition, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this ); + frameCEGeo->SetupPointers(&GeneralGeographyList, + &GeneralGeographyListAltID, + &GeneralGeographyListPID, + &GeneralGeographyListType, + &GeneralGeographyListTokens, + &GeneralGeographyListMediatype, + &GeneralGeographyListPref, + lboGeoposition, + intSelectedData); + frameCEGeo->SetEditorMode(TRUE, CE_GENERAL); + frameCEGeo->ShowModal(); + delete frameCEGeo; + frameCEGeo = NULL; +} + +void frmContactEditor::DeleteGeneralGeoposition( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboGeoposition, + &longSelected, + &intSelectedData)){ + return; + } + + lboGeoposition->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralGeographyList, + &GeneralGeographyListAltID, &GeneralGeographyListPID, + &GeneralGeographyListType, &GeneralGeographyListTokens, + &GeneralGeographyListMediatype, &GeneralGeographyListPref); + +} + +void frmContactEditor::AddGeneralRelated( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorRelated *frameCERel = new frmContactEditorRelated ( this ); + frameCERel->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralRelatedList); + frameCERel->SetupPointers(&GeneralRelatedList, + &GeneralRelatedListRelType, + &GeneralRelatedListAltID, + &GeneralRelatedListPID, + &GeneralRelatedListType, + &GeneralRelatedListTokens, + &GeneralRelatedListPref, + lboRelated, + (intValueSeek)); + frameCERel->ShowModal(); + delete frameCERel; + frameCERel = NULL; +} + +void frmContactEditor::ModifyGeneralRelated( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboRelated, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorRelated *frameCERel = new frmContactEditorRelated ( this ); + frameCERel->SetupPointers(&GeneralRelatedList, + &GeneralRelatedListRelType, + &GeneralRelatedListAltID, + &GeneralRelatedListPID, + &GeneralRelatedListType, + &GeneralRelatedListTokens, + &GeneralRelatedListPref, + lboRelated, + intSelectedData); + frameCERel->SetEditorMode(TRUE, CE_GENERAL); + frameCERel->ShowModal(); + delete frameCERel; + frameCERel = NULL; +} + +void frmContactEditor::DeleteGeneralRelated( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboRelated, + &longSelected, + &intSelectedData)){ + return; + } + + lboRelated->DeleteItem(longSelected); + + GeneralRelatedList.erase(intSelectedData); + GeneralRelatedListRelType.erase(intSelectedData); + GeneralRelatedListAltID.erase(intSelectedData); + GeneralRelatedListPID.erase(intSelectedData); + GeneralRelatedListType.erase(intSelectedData); + GeneralRelatedListTokens.erase(intSelectedData); + GeneralRelatedListPref.erase(intSelectedData); +} + +void frmContactEditor::AddGeneralWebsite( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this ); + frameCEWeb->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralWebsiteList); + frameCEWeb->SetupPointers(&GeneralWebsiteList, + &GeneralWebsiteListAltID, + &GeneralWebsiteListPID, + &GeneralWebsiteListType, + &GeneralWebsiteListTokens, + &GeneralWebsiteListMediatype, + &GeneralWebsiteListPref, + lboWebsites, + (intValueSeek)); + frameCEWeb->ShowModal(); + delete frameCEWeb; + frameCEWeb = NULL; +} + +void frmContactEditor::ModifyGeneralWebsite( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboWebsites, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this ); + frameCEWeb->SetupPointers(&GeneralWebsiteList, + &GeneralWebsiteListAltID, + &GeneralWebsiteListPID, + &GeneralWebsiteListType, + &GeneralWebsiteListTokens, + &GeneralWebsiteListMediatype, + &GeneralWebsiteListPref, + lboWebsites, + intSelectedData); + frameCEWeb->SetEditorMode(TRUE, CE_GENERAL); + frameCEWeb->ShowModal(); + delete frameCEWeb; + frameCEWeb = NULL; +} + +void frmContactEditor::DeleteGeneralWebsite( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboWebsites, + &longSelected, + &intSelectedData)){ + return; + } + + lboWebsites->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralWebsiteList, + &GeneralWebsiteListAltID, &GeneralWebsiteListPID, + &GeneralWebsiteListType, &GeneralWebsiteListTokens, + &GeneralWebsiteListMediatype, &GeneralWebsiteListPref); + +} + +void frmContactEditor::AddGeneralTitle( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this ); + frameCETitle->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralTitleList); + frameCETitle->SetupPointers(&GeneralTitleList, + &GeneralTitleListLanguage, + &GeneralTitleListAltID, + &GeneralTitleListPID, + &GeneralTitleListType, + &GeneralTitleListTokens, + &GeneralTitleListPref, + lboTitles, + (intValueSeek)); + frameCETitle->ShowModal(); + delete frameCETitle; + frameCETitle = NULL; +} + +void frmContactEditor::ModifyGeneralTitle( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboTitles, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this ); + frameCETitle->SetupPointers(&GeneralTitleList, + &GeneralTitleListLanguage, + &GeneralTitleListAltID, + &GeneralTitleListPID, + &GeneralTitleListType, + &GeneralTitleListTokens, + &GeneralTitleListPref, + lboTitles, + intSelectedData); + frameCETitle->SetEditorMode(TRUE, CE_GENERAL); + frameCETitle->ShowModal(); + delete frameCETitle; + frameCETitle = NULL; +} + +void frmContactEditor::DeleteGeneralTitle( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboTitles, + &longSelected, + &intSelectedData)){ + return; + } + + lboTitles->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralTitleList, + &GeneralTitleListLanguage, &GeneralTitleListAltID, + &GeneralTitleListPID, &GeneralTitleListType, + &GeneralTitleListTokens, &GeneralTitleListPref); + +} + +void frmContactEditor::AddGeneralRole( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this ); + frameCERole->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralRoleList); + frameCERole->SetupPointers(&GeneralRoleList, + &GeneralRoleListLanguage, + &GeneralRoleListAltID, + &GeneralRoleListPID, + &GeneralRoleListType, + &GeneralRoleListTokens, + &GeneralRoleListPref, + lboRoles, + (intValueSeek)); + frameCERole->ShowModal(); + delete frameCERole; + frameCERole = NULL; +} + +void frmContactEditor::ModifyGeneralRole( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboRoles, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this ); + frameCERole->SetupPointers(&GeneralRoleList, + &GeneralRoleListLanguage, + &GeneralRoleListAltID, + &GeneralRoleListPID, + &GeneralRoleListType, + &GeneralRoleListTokens, + &GeneralRoleListPref, + lboRoles, + intSelectedData); + frameCERole->SetEditorMode(TRUE, CE_GENERAL); + frameCERole->ShowModal(); + delete frameCERole; + frameCERole = NULL; +} + +void frmContactEditor::DeleteGeneralRole( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboRoles, + &longSelected, + &intSelectedData)){ + return; + } + + lboRoles->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralRoleList, + &GeneralRoleListLanguage, &GeneralRoleListAltID, + &GeneralRoleListPID, &GeneralRoleListType, + &GeneralRoleListTokens, &GeneralRoleListPref); + +} + +void frmContactEditor::AddGeneralOrganisation( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this ); + frameCEOrg->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralOrganisationsList); + frameCEOrg->SetupPointers(&GeneralOrganisationsList, + &GeneralOrganisationsListLanguage, + &GeneralOrganisationsListSortAs, + &GeneralOrganisationsListAltID, + &GeneralOrganisationsListPID, + &GeneralOrganisationsListType, + &GeneralOrganisationsListTokens, + &GeneralOrganisationsListPref, + lboOrganisations, + (intValueSeek)); + frameCEOrg->ShowModal(); + delete frameCEOrg; + frameCEOrg = NULL; +} + +void frmContactEditor::ModifyGeneralOrganisation( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboOrganisations, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this ); + frameCEOrg->SetupPointers(&GeneralOrganisationsList, + &GeneralOrganisationsListLanguage, + &GeneralOrganisationsListSortAs, + &GeneralOrganisationsListAltID, + &GeneralOrganisationsListPID, + &GeneralOrganisationsListType, + &GeneralOrganisationsListTokens, + &GeneralOrganisationsListPref, + lboOrganisations, + intSelectedData); + frameCEOrg->SetEditorMode(TRUE, CE_GENERAL); + frameCEOrg->ShowModal(); + delete frameCEOrg; + frameCEOrg = NULL; +} + +void frmContactEditor::DeleteGeneralOrganisation( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboOrganisations, + &longSelected, + &intSelectedData)){ + return; + } + + lboOrganisations->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralOrganisationsList, + &GeneralOrganisationsListLanguage, &GeneralOrganisationsListSortAs, + &GeneralOrganisationsListAltID, &GeneralOrganisationsListPID, + &GeneralOrganisationsListType, &GeneralOrganisationsListTokens, + &GeneralOrganisationsListPref); + +} + +void frmContactEditor::AddGeneralNote( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this ); + frameCENote->SetEditorMode(FALSE, CE_GENERAL); + intResult = GetLastInt(&GeneralNoteList); + frameCENote->SetupPointers(&GeneralNoteList, + &GeneralNoteListLanguage, + &GeneralNoteListAltID, + &GeneralNoteListPID, + &GeneralNoteListType, + &GeneralNoteListTokens, + &GeneralNoteListPref, + lboNotes, + (intValueSeek)); + frameCENote->ShowModal(); + delete frameCENote; + frameCENote = NULL; +} + +void frmContactEditor::ModifyGeneralNote( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboNotes, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this ); + frameCENote->SetupPointers(&GeneralNoteList, + &GeneralNoteListLanguage, + &GeneralNoteListAltID, + &GeneralNoteListPID, + &GeneralNoteListType, + &GeneralNoteListTokens, + &GeneralNoteListPref, + lboNotes, + intSelectedData); + frameCENote->SetEditorMode(TRUE, CE_GENERAL); + frameCENote->ShowModal(); + delete frameCENote; + frameCENote = NULL; +} + +void frmContactEditor::DeleteGeneralNote( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboNotes, + &longSelected, + &intSelectedData)){ + return; + } + + lboNotes->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GeneralNoteList, + &GeneralNoteListLanguage, &GeneralNoteListAltID, + &GeneralNoteListPID, &GeneralNoteListType, + &GeneralNoteListTokens, &GeneralNoteListPref); + +} + +void frmContactEditor::AddHomeNickname( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this ); + frameCENickname->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeNicknamesList); + frameCENickname->SetupPointers(&HomeNicknamesList, + &HomeNicknamesListAltID, + &HomeNicknamesListPID, + &HomeNicknamesListType, + &HomeNicknamesListLanguage, + &HomeNicknamesListTokens, + &HomeNicknamesListPref, + lboHomeNicknames, + (intValueSeek)); + frameCENickname->ShowModal(); + delete frameCENickname; + frameCENickname = NULL; +} + +void frmContactEditor::ModifyHomeNickname( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeNicknames, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this ); + frameCENickname->SetupPointers(&HomeNicknamesList, + &HomeNicknamesListAltID, + &HomeNicknamesListPID, + &HomeNicknamesListType, + &HomeNicknamesListLanguage, + &HomeNicknamesListTokens, + &HomeNicknamesListPref, + lboHomeNicknames, + intSelectedData); + frameCENickname->SetEditorMode(TRUE, CE_HOME); + frameCENickname->ShowModal(); + delete frameCENickname; + frameCENickname = NULL; +} + +void frmContactEditor::DeleteHomeNickname( wxCommandEvent& event ) +{ + + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeNicknames, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeNicknames->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, + &HomeNicknamesList, + &HomeNicknamesListLanguage, + &HomeNicknamesListAltID, + &HomeNicknamesListPID, + &HomeNicknamesListTokens, + &HomeNicknamesListType, + &HomeNicknamesListPref); + +} + +void frmContactEditor::AddHomeAddress( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this ); + frameCEAddress->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeAddressList); + frameCEAddress->SetupPointers(&HomeAddressList, + &HomeAddressListTown, + &HomeAddressListCounty, + &HomeAddressListPostCode, + &HomeAddressListCountry, + &HomeAddressListLabel, + &HomeAddressListLang, + &HomeAddressListAltID, + &HomeAddressListPID, + &HomeAddressListTokens, + &HomeAddressListGeo, + &HomeAddressListTimezone, + &HomeAddressListType, + &HomeAddressListMediatype, + &HomeAddressListPref, + lboHomeAddresses, + (intValueSeek)); + frameCEAddress->ShowModal(); + delete frameCEAddress; + frameCEAddress = NULL; +} + +void frmContactEditor::ModifyHomeAddress( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this ); + frameCEAddress->SetupPointers(&HomeAddressList, + &HomeAddressListTown, + &HomeAddressListCounty, + &HomeAddressListPostCode, + &HomeAddressListCountry, + &HomeAddressListLabel, + &HomeAddressListLang, + &HomeAddressListAltID, + &HomeAddressListPID, + &HomeAddressListTokens, + &HomeAddressListGeo, + &HomeAddressListTimezone, + &HomeAddressListType, + &HomeAddressListMediatype, + &HomeAddressListPref, + lboHomeAddresses, + intSelectedData); + frameCEAddress->SetEditorMode(TRUE, CE_HOME); + frameCEAddress->ShowModal(); + delete frameCEAddress; + frameCEAddress = NULL; +} + +void frmContactEditor::DeleteHomeAddress( wxCommandEvent& event ) +{ + + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeAddresses->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeAddressList, + &HomeAddressListTown, &HomeAddressListCounty, + &HomeAddressListPostCode, &HomeAddressListCountry, + &HomeAddressList, &HomeAddressListLabel, + &HomeAddressListLang, &HomeAddressListAltID, + &HomeAddressListPID, &HomeAddressListTokens, + &HomeAddressListGeo, &HomeAddressListTimezone, + &HomeAddressListType, &HomeAddressListMediatype, + &HomeAddressListPref); + +} + +void frmContactEditor::AddHomeEmail( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this ); + frameCEEmail->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeAddressList); + frameCEEmail->SetupPointers(&HomeEmailList, + &HomeEmailListAltID, + &HomeEmailListPID, + &HomeEmailListType, + &HomeEmailListTokens, + &HomeEmailListPref, + lboHomeEmails, + (intValueSeek)); + frameCEEmail->ShowModal(); + delete frameCEEmail; + frameCEEmail = NULL; +} + +void frmContactEditor::ModifyHomeEmail( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeEmails, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this ); + frameCEEmail->SetupPointers(&HomeEmailList, + &HomeEmailListAltID, + &HomeEmailListPID, + &HomeEmailListType, + &HomeEmailListTokens, + &HomeEmailListPref, + lboHomeEmails, + intSelectedData); + frameCEEmail->SetEditorMode(TRUE, CE_HOME); + frameCEEmail->ShowModal(); + delete frameCEEmail; + frameCEEmail = NULL; +} + + +void frmContactEditor::DeleteHomeEmail( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeEmails, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeEmails->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeEmailList, + &HomeEmailListAltID, &HomeEmailListPID, + &HomeEmailListType, &HomeEmailListTokens, + &HomeEmailListPref); +} + + +void frmContactEditor::AddHomeIM( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this ); + frameCEIM->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeIMList); + frameCEIM->SetupPointers(&HomeIMList, + &HomeIMListAltID, + &HomeIMListPID, + &HomeIMListType, + &HomeIMListTokens, + &HomeIMListMediatype, + &HomeIMListPref, + lboHomeIM, + (intValueSeek)); + frameCEIM->ShowModal(); + delete frameCEIM; + frameCEIM = NULL; +} + +void frmContactEditor::ModifyHomeIM( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeIM, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this ); + frameCEIM->SetupPointers(&HomeIMList, + &HomeIMListAltID, + &HomeIMListPID, + &HomeIMListType, + &HomeIMListTokens, + &HomeIMListMediatype, + &HomeIMListPref, + lboHomeIM, + intSelectedData); + frameCEIM->SetEditorMode(TRUE, CE_HOME); + frameCEIM->ShowModal(); + delete frameCEIM; + frameCEIM = NULL; +} + +void frmContactEditor::DeleteHomeIM( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeIM, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeIM->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeIMList, + &HomeIMListAltID, &HomeIMListPID, + &HomeIMListType, &HomeIMListTokens, + &HomeIMListMediatype, &HomeIMListPref); + +} + +void frmContactEditor::AddHomeTelephone( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this ); + frameCETel->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeTelephoneList); + frameCETel->SetupPointers(&HomeTelephoneList, + &HomeTelephoneListAltID, + &HomeTelephoneListPID, + &HomeTelephoneListType, + &HomeTelephoneListTokens, + &HomeTelephoneListPref, + lboHomeTelephone, + (intValueSeek)); + frameCETel->ShowModal(); + delete frameCETel; + frameCETel = NULL; +} + +void frmContactEditor::ModifyHomeTelephone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeTelephone, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this ); + frameCETel->SetupPointers(&HomeTelephoneList, + &HomeTelephoneListAltID, + &HomeTelephoneListPID, + &HomeTelephoneListType, + &HomeTelephoneListTokens, + &HomeTelephoneListPref, + lboHomeTelephone, + intSelectedData); + frameCETel->SetEditorMode(TRUE, CE_HOME); + frameCETel->ShowModal(); + delete frameCETel; + frameCETel = NULL; +} + +void frmContactEditor::DeleteHomeTelephone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeTelephone, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeTelephone->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeTelephoneList, + &HomeTelephoneListAltID, &HomeTelephoneListPID, + &HomeTelephoneListType, &HomeTelephoneListTokens, + &HomeTelephoneListPref); + +} + +void frmContactEditor::AddHomeLanguage( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this ); + frameCELang->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeLanguageList); + frameCELang->SetupPointers(&HomeLanguageList, + &HomeLanguageListAltID, + &HomeLanguageListPID, + &HomeLanguageListType, + &HomeLanguageListTokens, + &HomeLanguageListPref, + lboHomeLanguages, + (intValueSeek)); + frameCELang->ShowModal(); + delete frameCELang; + frameCELang = NULL; +} + +void frmContactEditor::ModifyHomeLanguage( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeLanguages, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this ); + frameCELang->SetupPointers(&HomeLanguageList, + &HomeLanguageListAltID, + &HomeLanguageListPID, + &HomeLanguageListType, + &HomeLanguageListTokens, + &HomeLanguageListPref, + lboHomeLanguages, + intSelectedData); + frameCELang->SetEditorMode(TRUE, CE_HOME); + frameCELang->ShowModal(); + delete frameCELang; + frameCELang = NULL; +} + +void frmContactEditor::DeleteHomeLanguage( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeLanguages, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeLanguages->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeLanguageList, + &HomeLanguageListAltID, &HomeLanguageListPID, + &HomeLanguageListType, &HomeLanguageListTokens, + &HomeLanguageListPref); + +} + +void frmContactEditor::AddHomeTimezone( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this ); + frameCETZ->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeTZList); + frameCETZ->SetupPointers(&HomeTZList, + &HomeTZListAltID, + &HomeTZListPID, + &HomeTZListType, + &HomeTZListTokens, + &HomeTZListMediatype, + &HomeTZListPref, + lboHomeTimezones, + (intValueSeek)); + frameCETZ->ShowModal(); + delete frameCETZ; + frameCETZ = NULL; +} + +void frmContactEditor::ModifyHomeTimezone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeTimezones, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this ); + frameCETZ->SetupPointers(&HomeTZList, + &HomeTZListAltID, + &HomeTZListPID, + &HomeTZListType, + &HomeTZListTokens, + &HomeTZListMediatype, + &HomeTZListPref, + lboHomeTimezones, + intSelectedData); + frameCETZ->SetEditorMode(TRUE, CE_HOME); + frameCETZ->ShowModal(); + delete frameCETZ; + frameCETZ = NULL; +} + +void frmContactEditor::DeleteHomeTimezone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeTimezones, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeTimezones->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeTZList, + &HomeTZListAltID, &HomeTZListPID, + &HomeTZListType, &HomeTZListTokens, + &HomeTZListMediatype, &HomeTZListPref); + +} + +void frmContactEditor::AddHomeGeoposition( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this ); + frameCEGeo->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeGeographyList); + frameCEGeo->SetupPointers(&HomeGeographyList, + &HomeGeographyListAltID, + &HomeGeographyListPID, + &HomeGeographyListType, + &HomeGeographyListTokens, + &HomeGeographyListMediatype, + &HomeGeographyListPref, + lboHomeGeoposition, + (intValueSeek)); + frameCEGeo->ShowModal(); + delete frameCEGeo; + frameCEGeo = NULL; +} + +void frmContactEditor::ModifyHomeGeoposition( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeGeoposition, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this ); + frameCEGeo->SetupPointers(&HomeGeographyList, + &HomeGeographyListAltID, + &HomeGeographyListPID, + &HomeGeographyListType, + &HomeGeographyListTokens, + &HomeGeographyListMediatype, + &HomeGeographyListPref, + lboHomeGeoposition, + intSelectedData); + frameCEGeo->SetEditorMode(TRUE, CE_HOME); + frameCEGeo->ShowModal(); + delete frameCEGeo; + frameCEGeo = NULL; +} + +void frmContactEditor::DeleteHomeGeoposition( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeGeoposition, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeGeoposition->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeGeographyList, + &HomeGeographyListAltID, &HomeGeographyListPID, + &HomeGeographyListType, &HomeGeographyListTokens, + &HomeGeographyListMediatype, &HomeGeographyListPref); + +} + +void frmContactEditor::AddHomeWebsite( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this ); + frameCEWeb->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeWebsiteList); + frameCEWeb->SetupPointers(&HomeWebsiteList, + &HomeWebsiteListAltID, + &HomeWebsiteListPID, + &HomeWebsiteListType, + &HomeWebsiteListTokens, + &HomeWebsiteListMediatype, + &HomeWebsiteListPref, + lboHomeWebsites, + (intValueSeek)); + frameCEWeb->ShowModal(); + delete frameCEWeb; + frameCEWeb = NULL; +} + +void frmContactEditor::ModifyHomeWebsite( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeWebsites, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this ); + frameCEWeb->SetupPointers(&HomeWebsiteList, + &HomeWebsiteListAltID, + &HomeWebsiteListPID, + &HomeWebsiteListType, + &HomeWebsiteListTokens, + &HomeWebsiteListMediatype, + &HomeWebsiteListPref, + lboHomeWebsites, + intSelectedData); + frameCEWeb->SetEditorMode(TRUE, CE_HOME); + frameCEWeb->ShowModal(); + delete frameCEWeb; + frameCEWeb = NULL; +} + +void frmContactEditor::DeleteHomeWebsite( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeWebsites, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeWebsites->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeWebsiteList, + &HomeWebsiteListAltID, &HomeWebsiteListPID, + &HomeWebsiteListType, &HomeWebsiteListTokens, + &HomeWebsiteListMediatype, &HomeWebsiteListPref); + +} + +void frmContactEditor::AddHomeTitle( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this ); + frameCETitle->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeTitleList); + frameCETitle->SetupPointers(&HomeTitleList, + &HomeTitleListLanguage, + &HomeTitleListAltID, + &HomeTitleListPID, + &HomeTitleListType, + &HomeTitleListTokens, + &HomeTitleListPref, + lboHomeTitles, + (intValueSeek)); + frameCETitle->ShowModal(); + delete frameCETitle; + frameCETitle = NULL; +} + +void frmContactEditor::ModifyHomeTitle( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeTitles, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this ); + frameCETitle->SetupPointers(&HomeTitleList, + &HomeTitleListLanguage, + &HomeTitleListAltID, + &HomeTitleListPID, + &HomeTitleListType, + &HomeTitleListTokens, + &HomeTitleListPref, + lboHomeTitles, + intSelectedData); + frameCETitle->SetEditorMode(TRUE, CE_HOME); + frameCETitle->ShowModal(); + delete frameCETitle; + frameCETitle = NULL; +} + +void frmContactEditor::DeleteHomeTitle( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeTitles, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeTitles->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeTitleList, + &HomeTitleListLanguage, &HomeTitleListAltID, + &HomeTitleListPID, &HomeTitleListType, + &HomeTitleListTokens, &HomeTitleListPref); + +} + +void frmContactEditor::AddHomeRole( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this ); + frameCERole->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeRoleList); + frameCERole->SetupPointers(&HomeRoleList, + &HomeRoleListLanguage, + &HomeRoleListAltID, + &HomeRoleListPID, + &HomeRoleListType, + &HomeRoleListTokens, + &HomeRoleListPref, + lboHomeRoles, + (intValueSeek)); + frameCERole->ShowModal(); + delete frameCERole; + frameCERole = NULL; +} + +void frmContactEditor::ModifyHomeRole( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeRoles, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this ); + frameCERole->SetupPointers(&HomeRoleList, + &HomeRoleListLanguage, + &HomeRoleListAltID, + &HomeRoleListPID, + &HomeRoleListType, + &HomeRoleListTokens, + &HomeRoleListPref, + lboHomeRoles, + intSelectedData); + frameCERole->SetEditorMode(TRUE, CE_HOME); + frameCERole->ShowModal(); + delete frameCERole; + frameCERole = NULL; +} + +void frmContactEditor::DeleteHomeRole( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeRoles, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeRoles->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeRoleList, + &HomeRoleListLanguage, &HomeRoleListAltID, + &HomeRoleListPID, &HomeRoleListType, + &HomeRoleListTokens, &HomeRoleListPref); + +} + +void frmContactEditor::AddHomeOrganisation( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this ); + frameCEOrg->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeOrganisationsList); + frameCEOrg->SetupPointers(&HomeOrganisationsList, + &HomeOrganisationsListLanguage, + &HomeOrganisationsListSortAs, + &HomeOrganisationsListAltID, + &HomeOrganisationsListPID, + &HomeOrganisationsListType, + &HomeOrganisationsListTokens, + &HomeOrganisationsListPref, + lboHomeOrganisations, + (intValueSeek)); + frameCEOrg->ShowModal(); + delete frameCEOrg; + frameCEOrg = NULL; +} + +void frmContactEditor::ModifyHomeOrganisation( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeOrganisations, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this ); + frameCEOrg->SetupPointers(&HomeOrganisationsList, + &HomeOrganisationsListLanguage, + &HomeOrganisationsListSortAs, + &HomeOrganisationsListAltID, + &HomeOrganisationsListPID, + &HomeOrganisationsListType, + &HomeOrganisationsListTokens, + &HomeOrganisationsListPref, + lboHomeOrganisations, + intSelectedData); + frameCEOrg->SetEditorMode(TRUE, CE_HOME); + frameCEOrg->ShowModal(); + delete frameCEOrg; + frameCEOrg = NULL; +} + +void frmContactEditor::DeleteHomeOrganisation( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeOrganisations, + &longSelected, + &intSelectedData)){ + return; + } + + lboHomeOrganisations->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeOrganisationsList, + &HomeOrganisationsListLanguage, &HomeOrganisationsListSortAs, + &HomeOrganisationsListAltID, &HomeOrganisationsListPID, + &HomeOrganisationsListType, &HomeOrganisationsListTokens, + &HomeOrganisationsListPref); + +} + +void frmContactEditor::AddHomeNote( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this ); + frameCENote->SetEditorMode(FALSE, CE_HOME); + intResult = GetLastInt(&HomeNoteList); + frameCENote->SetupPointers(&HomeNoteList, + &HomeNoteListLanguage, + &HomeNoteListAltID, + &HomeNoteListPID, + &HomeNoteListType, + &HomeNoteListTokens, + &HomeNoteListPref, + lboHomeNotes, + (intValueSeek)); + frameCENote->ShowModal(); + delete frameCENote; + frameCENote = NULL; +} + +void frmContactEditor::ModifyHomeNote( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeNotes, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this ); + frameCENote->SetupPointers(&HomeNoteList, + &HomeNoteListLanguage, + &HomeNoteListAltID, + &HomeNoteListPID, + &HomeNoteListType, + &HomeNoteListTokens, + &HomeNoteListPref, + lboHomeNotes, + intSelectedData); + frameCENote->SetEditorMode(TRUE, CE_HOME); + frameCENote->ShowModal(); + delete frameCENote; + frameCENote = NULL; +} + +void frmContactEditor::DeleteHomeNote( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboHomeNotes, + &longSelected, + &intSelectedData)){ + return; + } + + lboNotes->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &HomeNoteList, + &HomeNoteListLanguage, &HomeNoteListAltID, + &HomeNoteListPID, &HomeNoteListType, + &HomeNoteListTokens, &HomeNoteListPref); + +} + +void frmContactEditor::AddBusinessNickname( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this ); + frameCENickname->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessNicknamesList); + frameCENickname->SetupPointers(&BusinessNicknamesList, + &BusinessNicknamesListAltID, + &BusinessNicknamesListPID, + &BusinessNicknamesListType, + &BusinessNicknamesListLanguage, + &BusinessNicknamesListTokens, + &BusinessNicknamesListPref, + lboBusinessNicknames, + (intValueSeek)); + frameCENickname->ShowModal(); + delete frameCENickname; + frameCENickname = NULL; +} + +void frmContactEditor::ModifyBusinessNickname( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessNicknames, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this ); + frameCENickname->SetupPointers(&BusinessNicknamesList, + &BusinessNicknamesListAltID, + &BusinessNicknamesListPID, + &BusinessNicknamesListType, + &BusinessNicknamesListLanguage, + &BusinessNicknamesListTokens, + &BusinessNicknamesListPref, + lboBusinessNicknames, + intSelectedData); + frameCENickname->SetEditorMode(TRUE, CE_WORK); + frameCENickname->ShowModal(); + delete frameCENickname; + frameCENickname = NULL; +} + +void frmContactEditor::DeleteBusinessNickname( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessNicknames, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessNicknames->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, + &BusinessNicknamesList, + &BusinessNicknamesListLanguage, + &BusinessNicknamesListAltID, + &BusinessNicknamesListPID, + &BusinessNicknamesListTokens, + &BusinessNicknamesListType, + &BusinessNicknamesListPref); +} + +void frmContactEditor::AddBusinessAddress( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this ); + frameCEAddress->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessAddressList); + frameCEAddress->SetupPointers(&BusinessAddressList, + &BusinessAddressListTown, + &BusinessAddressListCounty, + &BusinessAddressListPostCode, + &BusinessAddressListCountry, + &BusinessAddressListLabel, + &BusinessAddressListLang, + &BusinessAddressListAltID, + &BusinessAddressListPID, + &BusinessAddressListTokens, + &BusinessAddressListGeo, + &BusinessAddressListTimezone, + &BusinessAddressListType, + &BusinessAddressListMediatype, + &BusinessAddressListPref, + lboBusinessAddresses, + (intValueSeek)); + frameCEAddress->ShowModal(); + delete frameCEAddress; + frameCEAddress = NULL; +} + +void frmContactEditor::ModifyBusinessAddress( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this ); + frameCEAddress->SetupPointers(&BusinessAddressList, + &BusinessAddressListTown, + &BusinessAddressListCounty, + &BusinessAddressListPostCode, + &BusinessAddressListCountry, + &BusinessAddressListLabel, + &BusinessAddressListLang, + &BusinessAddressListAltID, + &BusinessAddressListPID, + &BusinessAddressListTokens, + &BusinessAddressListGeo, + &BusinessAddressListTimezone, + &BusinessAddressListType, + &BusinessAddressListMediatype, + &BusinessAddressListPref, + lboBusinessAddresses, + intSelectedData); + frameCEAddress->SetEditorMode(TRUE, CE_WORK); + frameCEAddress->ShowModal(); + delete frameCEAddress; + frameCEAddress = NULL; +} + +void frmContactEditor::DeleteBusinessAddress( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessAddresses->DeleteItem(longSelected); + DeleteMapData(intSelectedData, &BusinessAddressList, + &BusinessAddressListTown, &BusinessAddressListCounty, + &BusinessAddressListPostCode, &BusinessAddressListCountry, + &BusinessAddressList, &BusinessAddressListLabel, + &BusinessAddressListLang, &BusinessAddressListAltID, + &BusinessAddressListPID, &BusinessAddressListTokens, + &BusinessAddressListGeo, &BusinessAddressListTimezone, + &BusinessAddressListType, &BusinessAddressListMediatype, + &BusinessAddressListPref); + +} + +void frmContactEditor::AddBusinessEmail( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this ); + frameCEEmail->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessAddressList); + frameCEEmail->SetupPointers(&BusinessEmailList, + &BusinessEmailListAltID, + &BusinessEmailListPID, + &BusinessEmailListType, + &BusinessEmailListTokens, + &BusinessEmailListPref, + lboBusinessEmail, + (intValueSeek)); + frameCEEmail->ShowModal(); + delete frameCEEmail; + frameCEEmail = NULL; +} + +void frmContactEditor::ModifyBusinessEmail( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessEmail, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this ); + frameCEEmail->SetupPointers(&BusinessEmailList, + &BusinessEmailListAltID, + &BusinessEmailListPID, + &BusinessEmailListType, + &BusinessEmailListTokens, + &BusinessEmailListPref, + lboBusinessEmail, + intSelectedData); + frameCEEmail->SetEditorMode(TRUE, CE_WORK); + frameCEEmail->ShowModal(); + delete frameCEEmail; + frameCEEmail = NULL; +} + +void frmContactEditor::DeleteBusinessEmail( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessEmail, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessEmail->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessEmailList, + &BusinessEmailListAltID, &BusinessEmailListPID, + &BusinessEmailListType, &BusinessEmailListTokens, + &BusinessEmailListPref); + +} + +void frmContactEditor::AddBusinessIM( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this ); + frameCEIM->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessIMList); + frameCEIM->SetupPointers(&BusinessIMList, + &BusinessIMListAltID, + &BusinessIMListPID, + &BusinessIMListType, + &BusinessIMListTokens, + &BusinessIMListMediatype, + &BusinessIMListPref, + lboBusinessIM, + (intValueSeek)); + frameCEIM->ShowModal(); + delete frameCEIM; + frameCEIM = NULL; +} + +void frmContactEditor::ModifyBusinessIM( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessIM, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this ); + frameCEIM->SetupPointers(&BusinessIMList, + &BusinessIMListAltID, + &BusinessIMListPID, + &BusinessIMListType, + &BusinessIMListTokens, + &BusinessIMListMediatype, + &BusinessIMListPref, + lboBusinessIM, + intSelectedData); + frameCEIM->SetEditorMode(TRUE, CE_WORK); + frameCEIM->ShowModal(); + delete frameCEIM; + frameCEIM = NULL; +} + +void frmContactEditor::DeleteBusinessIM( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessIM, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessIM->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessIMList, + &BusinessIMListAltID, &BusinessIMListPID, + &BusinessIMListType, &BusinessIMListTokens, + &BusinessIMListMediatype, &BusinessIMListPref); + +} + +void frmContactEditor::AddBusinessTelephone( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this ); + frameCETel->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessTelephoneList); + frameCETel->SetupPointers(&BusinessTelephoneList, + &BusinessTelephoneListAltID, + &BusinessTelephoneListPID, + &BusinessTelephoneListType, + &BusinessTelephoneListTokens, + &BusinessTelephoneListPref, + lboBusinessTelephone, + (intValueSeek)); + frameCETel->ShowModal(); + delete frameCETel; + frameCETel = NULL; +} + +void frmContactEditor::ModifyBusinessTelephone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessTelephone, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this ); + frameCETel->SetupPointers(&BusinessTelephoneList, + &BusinessTelephoneListAltID, + &BusinessTelephoneListPID, + &BusinessTelephoneListType, + &BusinessTelephoneListTokens, + &BusinessTelephoneListPref, + lboBusinessTelephone, + intSelectedData); + frameCETel->SetEditorMode(TRUE, CE_WORK); + frameCETel->ShowModal(); + delete frameCETel; + frameCETel = NULL; +} + +void frmContactEditor::DeleteBusinessTelephone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessTelephone, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessTelephone->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessTelephoneList, + &BusinessTelephoneListAltID, &BusinessTelephoneListPID, + &BusinessTelephoneListType, &BusinessTelephoneListTokens, + &BusinessTelephoneListPref); + +} + +void frmContactEditor::AddBusinessLanguage( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this ); + frameCELang->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessLanguageList); + frameCELang->SetupPointers(&BusinessLanguageList, + &BusinessLanguageListAltID, + &BusinessLanguageListPID, + &BusinessLanguageListType, + &BusinessLanguageListTokens, + &BusinessLanguageListPref, + lboBusinessLanguages, + (intValueSeek)); + frameCELang->ShowModal(); + delete frameCELang; + frameCELang = NULL; +} + +void frmContactEditor::ModifyBusinessLanguage( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessLanguages, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this ); + frameCELang->SetupPointers(&BusinessLanguageList, + &BusinessLanguageListAltID, + &BusinessLanguageListPID, + &BusinessLanguageListType, + &BusinessLanguageListTokens, + &BusinessLanguageListPref, + lboBusinessLanguages, + intSelectedData); + frameCELang->SetEditorMode(TRUE, CE_WORK); + frameCELang->ShowModal(); + delete frameCELang; + frameCELang = NULL; +} + +void frmContactEditor::DeleteBusinessLanguage( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessLanguages, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessLanguages->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessLanguageList, + &BusinessLanguageListAltID, &BusinessLanguageListPID, + &BusinessLanguageListType, &BusinessLanguageListTokens, + &BusinessLanguageListPref); + +} + +void frmContactEditor::AddBusinessTimezone( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this ); + frameCETZ->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessTZList); + frameCETZ->SetupPointers(&BusinessTZList, + &BusinessTZListAltID, + &BusinessTZListPID, + &BusinessTZListType, + &BusinessTZListTokens, + &BusinessTZListMediatype, + &BusinessTZListPref, + lboBusinessTimezones, + (intValueSeek)); + frameCETZ->ShowModal(); + delete frameCETZ; + frameCETZ = NULL; +} + +void frmContactEditor::ModifyBusinessTimezone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessTimezones, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this ); + frameCETZ->SetupPointers(&BusinessTZList, + &BusinessTZListAltID, + &BusinessTZListPID, + &BusinessTZListType, + &BusinessTZListTokens, + &BusinessTZListMediatype, + &BusinessTZListPref, + lboBusinessTimezones, + intSelectedData); + frameCETZ->SetEditorMode(TRUE, CE_WORK); + frameCETZ->ShowModal(); + delete frameCETZ; + frameCETZ = NULL; +} + +void frmContactEditor::DeleteBusinessTimezone( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessTimezones, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessTimezones->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessTZList, + &BusinessTZListAltID, &BusinessTZListPID, + &BusinessTZListType, &BusinessTZListTokens, + &BusinessTZListMediatype, &BusinessTZListPref); + +} + +void frmContactEditor::AddBusinessGeoposition( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this ); + frameCEGeo->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessGeographyList); + frameCEGeo->SetupPointers(&BusinessGeographyList, + &BusinessGeographyListAltID, + &BusinessGeographyListPID, + &BusinessGeographyListType, + &BusinessGeographyListTokens, + &BusinessGeographyListMediatype, + &BusinessGeographyListPref, + lboBusinessGeoposition, + (intValueSeek)); + frameCEGeo->ShowModal(); + delete frameCEGeo; + frameCEGeo = NULL; +} + +void frmContactEditor::ModifyBusinessGeoposition( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessGeoposition, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this ); + frameCEGeo->SetupPointers(&BusinessGeographyList, + &BusinessGeographyListAltID, + &BusinessGeographyListPID, + &BusinessGeographyListType, + &BusinessGeographyListTokens, + &BusinessGeographyListMediatype, + &BusinessGeographyListPref, + lboBusinessGeoposition, + intSelectedData); + frameCEGeo->SetEditorMode(TRUE, CE_WORK); + frameCEGeo->ShowModal(); + delete frameCEGeo; + frameCEGeo = NULL; +} + +void frmContactEditor::DeleteBusinessGeoposition( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessGeoposition, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessGeoposition->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessGeographyList, + &BusinessGeographyListAltID, &BusinessGeographyListPID, + &BusinessGeographyListType, &BusinessGeographyListTokens, + &BusinessGeographyListMediatype, &BusinessGeographyListPref); + +} + +void frmContactEditor::AddBusinessWebsite( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this ); + frameCEWeb->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessWebsiteList); + frameCEWeb->SetupPointers(&BusinessWebsiteList, + &BusinessWebsiteListAltID, + &BusinessWebsiteListPID, + &BusinessWebsiteListType, + &BusinessWebsiteListTokens, + &BusinessWebsiteListMediatype, + &BusinessWebsiteListPref, + lboBusinessWebsites, + (intValueSeek)); + frameCEWeb->ShowModal(); + delete frameCEWeb; + frameCEWeb = NULL; +} + +void frmContactEditor::ModifyBusinessWebsite( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessWebsites, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this ); + frameCEWeb->SetupPointers(&BusinessWebsiteList, + &BusinessWebsiteListAltID, + &BusinessWebsiteListPID, + &BusinessWebsiteListType, + &BusinessWebsiteListTokens, + &BusinessWebsiteListMediatype, + &BusinessWebsiteListPref, + lboBusinessWebsites, + intSelectedData); + frameCEWeb->SetEditorMode(TRUE, CE_WORK); + frameCEWeb->ShowModal(); + delete frameCEWeb; + frameCEWeb = NULL; +} + +void frmContactEditor::DeleteBusinessWebsite( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessWebsites, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessWebsites->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessWebsiteList, + &BusinessWebsiteListAltID, &BusinessWebsiteListPID, + &BusinessWebsiteListType, &BusinessWebsiteListTokens, + &BusinessWebsiteListMediatype, &BusinessWebsiteListPref); + +} + +void frmContactEditor::AddBusinessTitle( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this ); + frameCETitle->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessTitleList); + frameCETitle->SetupPointers(&BusinessTitleList, + &BusinessTitleListLanguage, + &BusinessTitleListAltID, + &BusinessTitleListPID, + &BusinessTitleListType, + &BusinessTitleListTokens, + &BusinessTitleListPref, + lboBusinessTitles, + (intValueSeek)); + frameCETitle->ShowModal(); + delete frameCETitle; + frameCETitle = NULL; +} + +void frmContactEditor::ModifyBusinessTitle( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessTitles, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this ); + frameCETitle->SetupPointers(&BusinessTitleList, + &BusinessTitleListLanguage, + &BusinessTitleListAltID, + &BusinessTitleListPID, + &BusinessTitleListType, + &BusinessTitleListTokens, + &BusinessTitleListPref, + lboBusinessTitles, + intSelectedData); + frameCETitle->SetEditorMode(TRUE, CE_WORK); + frameCETitle->ShowModal(); + delete frameCETitle; + frameCETitle = NULL; +} + +void frmContactEditor::DeleteBusinessTitle( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessTitles, + &longSelected, + &intSelectedData)){ + return; + } + + lboTitles->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessTitleList, + &BusinessTitleListLanguage, &BusinessTitleListAltID, + &BusinessTitleListPID, &BusinessTitleListType, + &BusinessTitleListTokens, &BusinessTitleListPref); + +} + +void frmContactEditor::AddBusinessRole( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this ); + frameCERole->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessRoleList); + frameCERole->SetupPointers(&BusinessRoleList, + &BusinessRoleListLanguage, + &BusinessRoleListAltID, + &BusinessRoleListPID, + &BusinessRoleListType, + &BusinessRoleListTokens, + &BusinessRoleListPref, + lboBusinessRoles, + (intValueSeek)); + frameCERole->ShowModal(); + delete frameCERole; + frameCERole = NULL; +} + +void frmContactEditor::ModifyBusinessRole( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessRoles, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this ); + frameCERole->SetupPointers(&BusinessRoleList, + &BusinessRoleListLanguage, + &BusinessRoleListAltID, + &BusinessRoleListPID, + &BusinessRoleListType, + &BusinessRoleListTokens, + &BusinessRoleListPref, + lboBusinessRoles, + intSelectedData); + frameCERole->SetEditorMode(TRUE, CE_WORK); + frameCERole->ShowModal(); + delete frameCERole; + frameCERole = NULL; +} + +void frmContactEditor::DeleteBusinessRole( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessRoles, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessRoles->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessRoleList, + &BusinessRoleListLanguage, &BusinessRoleListAltID, + &BusinessRoleListPID, &BusinessRoleListType, + &BusinessRoleListTokens, &BusinessRoleListPref); + +} + +void frmContactEditor::AddBusinessOrganisation( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this ); + frameCEOrg->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&GeneralOrganisationsList); + frameCEOrg->SetupPointers(&GeneralOrganisationsList, + &BusinessOrganisationsListLanguage, + &BusinessOrganisationsListSortAs, + &BusinessOrganisationsListAltID, + &BusinessOrganisationsListPID, + &BusinessOrganisationsListType, + &BusinessOrganisationsListTokens, + &BusinessOrganisationsListPref, + lboBusinessOrganisations, + (intValueSeek)); + frameCEOrg->ShowModal(); + delete frameCEOrg; + frameCEOrg = NULL; +} + +void frmContactEditor::ModifyBusinessOrganisation( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessOrganisations, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this ); + frameCEOrg->SetupPointers(&BusinessOrganisationsList, + &BusinessOrganisationsListLanguage, + &BusinessOrganisationsListSortAs, + &BusinessOrganisationsListAltID, + &BusinessOrganisationsListPID, + &BusinessOrganisationsListType, + &BusinessOrganisationsListTokens, + &BusinessOrganisationsListPref, + lboBusinessOrganisations, + intSelectedData); + frameCEOrg->SetEditorMode(TRUE, CE_WORK); + frameCEOrg->ShowModal(); + delete frameCEOrg; + frameCEOrg = NULL; +} + +void frmContactEditor::DeleteBusinessOrganisation( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessOrganisations, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessOrganisations->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessOrganisationsList, + &BusinessOrganisationsListLanguage, &BusinessOrganisationsListSortAs, + &BusinessOrganisationsListAltID, &BusinessOrganisationsListPID, + &BusinessOrganisationsListType, &BusinessOrganisationsListTokens, + &BusinessOrganisationsListPref); + +} + +void frmContactEditor::AddBusinessNote( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this ); + frameCENote->SetEditorMode(FALSE, CE_WORK); + intResult = GetLastInt(&BusinessNoteList); + frameCENote->SetupPointers(&BusinessNoteList, + &BusinessNoteListLanguage, + &BusinessNoteListAltID, + &BusinessNoteListPID, + &BusinessNoteListType, + &BusinessNoteListTokens, + &BusinessNoteListPref, + lboBusinessNotes, + (intValueSeek)); + frameCENote->ShowModal(); + delete frameCENote; + frameCENote = NULL; +} + +void frmContactEditor::ModifyBusinessNote( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessNotes, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this ); + frameCENote->SetupPointers(&BusinessNoteList, + &BusinessNoteListLanguage, + &BusinessNoteListAltID, + &BusinessNoteListPID, + &BusinessNoteListType, + &BusinessNoteListTokens, + &BusinessNoteListPref, + lboBusinessNotes, + intSelectedData); + frameCENote->SetEditorMode(TRUE, CE_WORK); + frameCENote->ShowModal(); + delete frameCENote; + frameCENote = NULL; +} + +void frmContactEditor::DeleteBusinessNote( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboBusinessNotes, + &longSelected, + &intSelectedData)){ + return; + } + + lboBusinessNotes->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &BusinessNoteList, + &BusinessNoteListLanguage, &BusinessNoteListAltID, + &BusinessNoteListPID, &BusinessNoteListType, + &BusinessNoteListTokens, &BusinessNoteListPref); + +} + +void frmContactEditor::AddCategory( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorCategory *frameCECategory = new frmContactEditorCategory ( this ); + frameCECategory->SetEditorMode(FALSE); + intResult = GetLastInt(&CategoriesList); + frameCECategory->SetupPointers(&CategoriesList, + &CategoriesListAltID, + &CategoriesListPID, + &CategoriesListType, + &CategoriesListTokens, + &CategoriesListPref, + lboCategories, + (intValueSeek)); + frameCECategory->ShowModal(); + delete frameCECategory; + frameCECategory = NULL; +} + +void frmContactEditor::ModifyCategory( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboCategories, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorCategory *frameCECategory = new frmContactEditorCategory ( this ); + frameCECategory->SetupPointers(&CategoriesList, + &CategoriesListAltID, + &CategoriesListPID, + &CategoriesListType, + &CategoriesListTokens, + &CategoriesListPref, + lboCategories, + intSelectedData); + frameCECategory->SetEditorMode(TRUE); + frameCECategory->ShowModal(); + delete frameCECategory; + frameCECategory = NULL; +} + +void frmContactEditor::DeleteCategory( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboCategories, + &longSelected, + &intSelectedData)){ + return; + } + + lboCategories->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &CategoriesList, + &CategoriesListAltID, &CategoriesListPID, + &CategoriesListType, &CategoriesListTokens, + &CategoriesListPref); + +} + +void frmContactEditor::AddGroup( wxCommandEvent& event ) +{ + + int intResult = 0; + + XABViewMode XVMData = MainPtr->GetViewMode(); + + frmContactEditorGroup *frameCEGroup = new frmContactEditorGroup ( this ); + frameCEGroup->SetEditorMode(FALSE, XVMData); + intResult = GetLastInt(&GroupsList); + frameCEGroup->SetupPointers(&GroupsList, + lboGroups, + wxSContactAccount, + intValueSeek); + frameCEGroup->ShowModal(); + delete frameCEGroup; + frameCEGroup = NULL; + +} + +void frmContactEditor::ModifyGroup( wxCommandEvent& event ) +{ + + return; + +} + +void frmContactEditor::DeleteGroup( wxCommandEvent& event ) +{ + + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboGroups, + &longSelected, + &intSelectedData)){ + return; + } + + lboGroups->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &GroupsList); + +} + +void frmContactEditor::AddPicture( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorPicture *frameCEPicture = new frmContactEditorPicture ( this ); + frameCEPicture->SetEditorMode(FALSE); + intResult = GetLastInt(&PicturesList); + frameCEPicture->SetupPointers(&PicturesList, + &PicturesListAltID, + &PicturesListPID, + &PicturesListType, + &PicturesListPicEncType, + &PicturesListPictureType, + &PicturesListTokens, + &PicturesListMediatype, + &PicturesListPref, + lboPictures, + (intValueSeek)); + frameCEPicture->ShowModal(); + delete frameCEPicture; + frameCEPicture = NULL; +} + +void frmContactEditor::ModifyPicture( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboPictures, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorPicture *frameCEPicture = new frmContactEditorPicture ( this ); + frameCEPicture->SetupPointers(&PicturesList, + &PicturesListAltID, + &PicturesListPID, + &PicturesListType, + &PicturesListPicEncType, + &PicturesListPictureType, + &PicturesListTokens, + &PicturesListMediatype, + &PicturesListPref, + lboPictures, + intSelectedData); + frameCEPicture->SetEditorMode(TRUE); + frameCEPicture->ShowModal(); + delete frameCEPicture; + frameCEPicture = NULL; + +} + +void frmContactEditor::DeletePicture( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboPictures, + &longSelected, + &intSelectedData)){ + return; + } + + lboPictures->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, + &PicturesList, &PicturesListAltID, &PicturesListPID, &PicturesListType, + &PicturesListPicEncType, &PicturesListPictureType, &PicturesListTokens, + &PicturesListMediatype, &PicturesListPref); + + wxMemoryInputStream istream(misc_emptyimage_png, sizeof(misc_emptyimage_png)); + wxImage misc_emptyimage_png(istream, wxBITMAP_TYPE_PNG); + PictureImage = (wxBitmap)misc_emptyimage_png; + + imgPicture->SetBitmap(PictureImage); +} + +void frmContactEditor::LoadPicture( wxListEvent& event ) +{ + + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboPictures, + &longSelected, + &intSelectedData)){ + return; + } + + std::string base64dec; + + std::map::iterator initier; + + initier = PicturesList.find(intSelectedData); + + base64dec = base64_decode(initier->second); + + + wxMemoryInputStream istream(base64dec.c_str(), (size_t)base64dec.size()); + wxImage photo; + //wxMemoryInputStream istream(base64dec, (size_t)base64dec.size()); + + if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){ + + return; + + } + + + PictureImage = (wxBitmap)photo; + imgPicture->SetBitmap(PictureImage); + +} + +void frmContactEditor::LoadLogo( wxListEvent& event ) +{ + + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboLogos, + &longSelected, + &intSelectedData)){ + return; + } + + std::string base64dec; + + std::map::iterator initier; + + initier = LogosList.find(intSelectedData); + + base64dec = base64_decode(initier->second); + + + wxMemoryInputStream istream(base64dec.c_str(), (size_t)base64dec.size()); + wxImage photo; + //wxMemoryInputStream istream(base64dec, (size_t)base64dec.size()); + + if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){ + + return; + + } + + + LogoImage = (wxBitmap)photo; + imgLogo->SetBitmap(LogoImage); + +} + +void frmContactEditor::AddLogo( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorPicture *frameCELogo = new frmContactEditorPicture ( this ); + frameCELogo->SetEditorMode(FALSE); + intResult = GetLastInt(&LogosList); + frameCELogo->SetupPointers(&LogosList, + &LogosListAltID, + &LogosListPID, + &LogosListType, + &LogosListPicEncType, + &LogosListPictureType, + &LogosListTokens, + &LogosListMediatype, + &LogosListPref, + lboLogos, + (intValueSeek)); + frameCELogo->ShowModal(); + delete frameCELogo; + frameCELogo = NULL; +} + +void frmContactEditor::ModifyLogo( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboLogos, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorPicture *frameCELogo = new frmContactEditorPicture ( this ); + frameCELogo->SetupPointers(&LogosList, + &LogosListAltID, + &LogosListPID, + &LogosListType, + &LogosListPicEncType, + &LogosListPictureType, + &LogosListTokens, + &LogosListMediatype, + &LogosListPref, + lboLogos, + intSelectedData); + frameCELogo->SetEditorMode(TRUE); + frameCELogo->ShowModal(); + delete frameCELogo; + frameCELogo = NULL; +} + +void frmContactEditor::DeleteLogo( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboLogos, + &longSelected, + &intSelectedData)){ + return; + } + + lboLogos->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, + &LogosList, &LogosListAltID, &LogosListPID, &LogosListType, + &LogosListPicEncType, &LogosListPictureType, &LogosListTokens, + &LogosListMediatype, &LogosListPref); + + wxMemoryInputStream istream(misc_emptyimage_png, sizeof(misc_emptyimage_png)); + wxImage misc_emptyimage_png(istream, wxBITMAP_TYPE_PNG); + LogoImage = (wxBitmap)misc_emptyimage_png; + + imgLogo->SetBitmap(LogoImage); +} + +void frmContactEditor::AddSound( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorSound *frameCESound = new frmContactEditorSound ( this ); + frameCESound->SetEditorMode(FALSE); + intResult = GetLastInt(&SoundsList); + frameCESound->SetupPointers(&SoundsList, + &SoundsListAltID, + &SoundsListPID, + &SoundsListType, + &SoundsListAudioType, + &SoundsListAudioEncType, + &SoundsListTokens, + &SoundsListMediatype, + &SoundsListPref, + lboSounds, + (intValueSeek)); + frameCESound->ShowModal(); + delete frameCESound; + frameCESound = NULL; +} + +void frmContactEditor::ModifySound( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboSounds, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorSound *frameCESound = new frmContactEditorSound ( this ); + frameCESound->SetupPointers(&SoundsList, + &SoundsListAltID, + &SoundsListPID, + &SoundsListType, + &SoundsListAudioType, + &SoundsListAudioEncType, + &SoundsListTokens, + &SoundsListMediatype, + &SoundsListPref, + lboSounds, + intSelectedData); + frameCESound->SetEditorMode(TRUE); + frameCESound->ShowModal(); + delete frameCESound; + frameCESound = NULL; +} + +void frmContactEditor::DeleteSound( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboSounds, + &longSelected, + &intSelectedData)){ + return; + } + + lboSounds->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &SoundsList, &SoundsListAltID, + &SoundsListPID, &SoundsListType, &SoundsListAudioType, + &SoundsListAudioEncType, &SoundsListTokens, &SoundsListMediatype, + &SoundsListPref); + +} + +void frmContactEditor::PlaySoundDetach() +{ + + if (!AudioStreamPlayback.openFromMemory(base64dec.c_str(), base64declen)){ + + // Can't load file. We must flee... + // Also show an error message too. + + wxMessageBox(_("This file is in an audio format that is unsupported or is not an audio file."), _("Error opening audio file"), wxICON_ERROR); + + return; + + } + + btnStop->Enable(); + + //AudioStreamPlayback.setbuffer(AudioBuffer); + AudioStreamPlayback.play(); + + /*timespec n1, n2; + + n1.tv_sec = 0; + n1.tv_nsec = 100000000L;*/ + + //while (TimeA != TimeB){ + while (AudioStreamPlayback.getStatus() == sf::SoundSource::Playing){ + + // We poll this every 100ms in order to conserve CPU usage. + + SleepFor(100000000); + + } + + btnStop->Disable(); + +} + +void frmContactEditor::PlaySound( wxCommandEvent& event ) +{ + + //sf::Music *AudioPlayback = new sf::Music; + //AudioStream *AudioStreamPlayback = new AudioStream; + //sf::SoundBuffer *AudioBuffer = new sf::SoundBuffer; + + //sf::Sound *AudioPlayback = new sf::Sound; + + //delete(AudioPlayback); + + //delete(AudioPlayback); + //delete(AudioStreamPlayback); + //delete(AudioBuffer); + + //AudioPlayback = NULL; + //AudioStreamPlayback = NULL; + //AudioBuffer = NULL; + + //return; + + long longSelected = -1; + int intSelectedData = 0; + + // Check if sound is still being played and if it is, stop it. + + if (AudioStreamPlayback.getStatus() == sf::SoundSource::Playing){ + + AudioStreamPlayback.stop(); + + } + + if (!GetSelectedItem(lboSounds, + &longSelected, + &intSelectedData)){ + return; + } + + std::map::iterator initier; + + initier = SoundsList.find(intSelectedData); + + base64dec = base64_decode(initier->second); + base64declen = base64dec.size(); + + std::thread AudioPlaybackThread(&frmContactEditor::PlaySoundDetach, this); + AudioPlaybackThread.detach(); + + return; + +} + +void frmContactEditor::StopSound( wxCommandEvent& event ) +{ + + if (AudioStreamPlayback.getStatus() == sf::SoundSource::Playing){ + + AudioStreamPlayback.stop(); + + } + + btnStop->Disable(); + + return; + +} + +void frmContactEditor::AddCalendarAddress( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this ); + frameCECalAdr->SetEditorMode(FALSE); + intResult = GetLastInt(&CalendarList); + frameCECalAdr->SetupPointers(&CalendarList, + &CalendarListAltID, + &CalendarListPID, + &CalendarListType, + &CalendarListTokens, + &CalendarListPref, + lboCalendarAddresses, + (intValueSeek)); + frameCECalAdr->ShowModal(); + delete frameCECalAdr; + frameCECalAdr = NULL; +} + +void frmContactEditor::ModifyCalendarAddress( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboCalendarAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this ); + frameCECalAdr->SetupPointers(&CalendarList, + &CalendarListAltID, + &CalendarListPID, + &CalendarListType, + &CalendarListTokens, + &CalendarListPref, + lboCalendarAddresses, + intSelectedData); + frameCECalAdr->SetEditorMode(TRUE); + frameCECalAdr->ShowModal(); + delete frameCECalAdr; + frameCECalAdr = NULL; +} + +void frmContactEditor::DeleteCalendarAddress( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboCalendarAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + lboCalendarAddresses->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &CalendarList, &CalendarListAltID, + &CalendarListPID, &CalendarListType, &CalendarListTokens, + &CalendarListPref); + +} + +void frmContactEditor::AddCalendarRequest( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this ); + frameCECalAdr->SetEditorMode(FALSE); + intResult = GetLastInt(&CalendarRequestList); + frameCECalAdr->SetupPointers(&CalendarRequestList, + &CalendarRequestListAltID, + &CalendarRequestListPID, + &CalendarRequestListType, + &CalendarRequestListTokens, + &CalendarRequestListPref, + lboCalendarRequestAddress, + (intValueSeek)); + frameCECalAdr->ShowModal(); + delete frameCECalAdr; + frameCECalAdr = NULL; +} + +void frmContactEditor::ModifyCalendarRequest( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboCalendarRequestAddress, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this ); + frameCECalAdr->SetupPointers(&CalendarList, + &CalendarRequestListAltID, + &CalendarRequestListPID, + &CalendarRequestListType, + &CalendarRequestListTokens, + &CalendarRequestListPref, + lboCalendarRequestAddress, + intSelectedData); + frameCECalAdr->SetEditorMode(TRUE); + frameCECalAdr->ShowModal(); + delete frameCECalAdr; + frameCECalAdr = NULL; +} + +void frmContactEditor::DeleteCalendarRequest( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboCalendarRequestAddress, + &longSelected, + &intSelectedData)){ + return; + } + + lboCalendarRequestAddress->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &CalendarRequestList, + &CalendarRequestListAltID, &CalendarRequestListPID, + &CalendarRequestListType, &CalendarRequestListTokens, + &CalendarRequestListPref); +} + +void frmContactEditor::AddFreeBusy( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this ); + frameCECalAdr->SetEditorMode(FALSE); + intResult = GetLastInt(&FreeBusyList); + frameCECalAdr->SetupPointers(&FreeBusyList, + &FreeBusyListAltID, + &FreeBusyListPID, + &FreeBusyListType, + &FreeBusyListTokens, + &FreeBusyListPref, + lboFreeBusyAddresses, + (intValueSeek)); + frameCECalAdr->ShowModal(); + delete frameCECalAdr; + frameCECalAdr = NULL; +} + +void frmContactEditor::ModifyFreeBusy( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboFreeBusyAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this ); + frameCECalAdr->SetupPointers(&FreeBusyList, + &FreeBusyListAltID, + &FreeBusyListPID, + &FreeBusyListType, + &FreeBusyListTokens, + &FreeBusyListPref, + lboFreeBusyAddresses, + intSelectedData); + frameCECalAdr->SetEditorMode(TRUE); + frameCECalAdr->ShowModal(); + delete frameCECalAdr; + frameCECalAdr = NULL; +} + +void frmContactEditor::DeleteFreeBusy( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboFreeBusyAddresses, + &longSelected, + &intSelectedData)){ + return; + } + + lboFreeBusyAddresses->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &FreeBusyList, &FreeBusyListAltID, + &FreeBusyListPID, &FreeBusyListType, &FreeBusyListTokens, + &FreeBusyListPref); + +} + +void frmContactEditor::AddKey( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorKey *frameCEKey = new frmContactEditorKey ( this ); + frameCEKey->SetEditorMode(FALSE); + intResult = GetLastInt(&KeyList); + frameCEKey->SetupPointers(&KeyList, + &KeyListAltID, + &KeyListPID, + &KeyListKeyType, + &KeyListDataType, + &KeyListType, + &KeyListTokens, + &KeyListPref, + lboKeys, + (intValueSeek)); + frameCEKey->ShowModal(); + delete frameCEKey; + frameCEKey = NULL; +} + +void frmContactEditor::ModifyKey( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboKeys, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorKey *frameCEKey = new frmContactEditorKey ( this ); + frameCEKey->SetupPointers(&KeyList, + &KeyListAltID, + &KeyListPID, + &KeyListKeyType, + &KeyListDataType, + &KeyListType, + &KeyListTokens, + &KeyListPref, + lboKeys, + intSelectedData); + frameCEKey->SetEditorMode(TRUE); + frameCEKey->ShowModal(); + delete frameCEKey; + frameCEKey = NULL; +} + +void frmContactEditor::DeleteKey( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboKeys, + &longSelected, + &intSelectedData)){ + return; + } + + lboKeys->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &KeyList, &KeyListAltID, + &KeyListPID, &KeyListKeyType, &KeyListDataType, &KeyListType, + &KeyListTokens, &KeyListPref); + +} + +void frmContactEditor::AddVendorNamespace( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorVendor *frameCEVen = new frmContactEditorVendor ( this ); + frameCEVen->SetEditorMode(FALSE); + intResult = GetLastInt(&VendorList); + frameCEVen->SetupPointers(&VendorList, + &VendorListPEN, + &VendorListElement, + lboVendorNamespace, + (intValueSeek)); + frameCEVen->ShowModal(); + delete frameCEVen; + frameCEVen = NULL; +} + +void frmContactEditor::ModifyVendorNamespace( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboVendorNamespace, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorVendor *frameCEVen = new frmContactEditorVendor ( this ); + frameCEVen->SetupPointers(&VendorList, + &VendorListPEN, + &VendorListElement, + lboVendorNamespace, + intSelectedData); + frameCEVen->SetEditorMode(TRUE); + frameCEVen->ShowModal(); + delete frameCEVen; + frameCEVen = NULL; +} + +void frmContactEditor::DeleteVendorNamespace( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboVendorNamespace, + &longSelected, + &intSelectedData)){ + return; + } + + lboVendorNamespace->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &VendorList, &VendorListPEN, + &VendorListElement); + +} + +void frmContactEditor::AddXToken( wxCommandEvent& event ) +{ + int intResult = 0; + + frmContactEditorXToken *frameCEXT = new frmContactEditorXToken ( this ); + frameCEXT->SetEditorMode(FALSE); + intResult = GetLastInt(&XTokenList); + frameCEXT->SetupPointers(&XTokenList, + &XTokenListTokens, + lboXToken, + (intValueSeek)); + frameCEXT->ShowModal(); + delete frameCEXT; + frameCEXT = NULL; +} + +void frmContactEditor::ModifyXToken( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboXToken, + &longSelected, + &intSelectedData)){ + return; + } + + frmContactEditorXToken *frameCEXT = new frmContactEditorXToken ( this ); + frameCEXT->SetupPointers(&XTokenList, + &XTokenListTokens, + lboXToken, + intSelectedData); + frameCEXT->SetEditorMode(TRUE); + frameCEXT->ShowModal(); + delete frameCEXT; + frameCEXT = NULL; +} + +void frmContactEditor::DeleteXToken( wxCommandEvent& event ) +{ + long longSelected = -1; + int intSelectedData = 0; + + if (!GetSelectedItem(lboXToken, + &longSelected, + &intSelectedData)){ + return; + } + + lboXToken->DeleteItem(longSelected); + + DeleteMapData(intSelectedData, &XTokenList, &XTokenListTokens); + +} + +void frmContactEditor::SaveContact( wxCommandEvent& event ) +{ + + // Check if Display As combo box has a value in it. + // Do not go any further if there is no value. + + wxString cmbDisplayAsValue = cmbDisplayAs->GetValue(); + + if (cmbDisplayAsValue.IsEmpty()){ + + wxMessageBox(_("Display As value cannot be left blank."), _("Display As value empty"), wxICON_ERROR); + return; + + } + + // Save the updated contact data. + + vCard ContactData; + wxString FilenameFinal; + bool ReplaceContact = FALSE; + + if (cmbType->GetCurrentSelection() == 1 || + cmbType->GetCurrentSelection() == 3 || + cmbType->GetCurrentSelection() == 4){ + + if (IsGroup == TRUE){ + + // Mark contact for replacing. + + ReplaceContact = TRUE; + + } + + } else if (cmbType->GetCurrentSelection() == 2){ + + if (IsGroup == TRUE){ + + // Mark contact for replacing. + + ReplaceContact = TRUE; + + } + + } + + if (ReplaceContact == TRUE){ + + wxString wxDelSplitFilename; + wxString wxDelFinalFilename; + wxString wxSDelDataURL; + wxStringTokenizer wSTDelFilename(wxSContactFilename, wxT("/")); + while(wSTDelFilename.HasMoreTokens()){ + + wxDelSplitFilename = wSTDelFilename.GetNextToken(); + + } + + wxSDelDataURL = wxDelSplitFilename; + + // Delete the contact from the server as it will be useless in certain + // address book clients. + + ActMgrPtr->AddTask(2, cmbDisplayAs->GetValue(), wxSContactAccount, wxSDelDataURL, wxDelSplitFilename, wxSContactFilename, wxT("")); + + // Clear the filename so the trigger to recreate the UID is done. + + wxSContactFilename.Clear(); + EditMode = FALSE; + + } + + if (wxSContactFilename.IsEmpty()){ + + // Generate a random UUID. + + UIDToken = GenerateUUID(); + UIDToken = UIDToken.MakeUpper(); + + // Setup the filename. + + FilenameFinal = GetAccountDir(wxSContactAccount, FALSE); + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + FilenameFinal = GetAccountDir(wxSContactAccount, FALSE); + FilenameFinal.Append(UIDToken); + FilenameFinal.Append(wxT(".vcf")); + wxSContactFilename = FilenameFinal; + +#else + + FilenameFinal = GetAccountDir(wxSContactAccount, FALSE); + FilenameFinal.Append(UIDToken); + FilenameFinal.Append(wxT(".vcf")); + wxSContactFilename = FilenameFinal; + +#endif + + } else { + + if (UIDToken.IsEmpty()){ + + // UID Token is empty. (Shouldn't be). + // Generate a new UID Token. + + /*boost::uuids::uuid ContactUUID = boost::uuids::random_generator()(); + std::string sstContactUUID = boost::uuids::to_string(ContactUUID); + wxString strContactUUID(sstContactUUID.c_str(), wxConvUTF8); + UIDToken = strContactUUID;*/ + UIDToken = GenerateUUID(); + UIDToken = UIDToken.MakeUpper(); + + } + FilenameFinal = wxSContactFilename; + + } + + // Setup the data and write it into the account folder. + + // Begin preperations to write the contact to a file. + + bool boolValue = FALSE; + bool boolValue2 = FALSE; + bool FNFirst = TRUE; + bool NNGeneralFirst = TRUE; + bool NNHomeFirst = TRUE; + bool NNWorkFirst = TRUE; + int intFNCount = 0; + std::map::iterator intiter; + std::map::iterator striter; + + ContactData.Add(wxT("BEGIN"), wxT("VCARD"), FALSE); + ContactData.Add(wxT("VERSION"), wxT("4.0"), FALSE); + + // Setup the version string. + + strValue.Append(wxT("-//Xestia//Address Book Version ")); + strValue.Append(wxT(XSDAB_VERSION)); + strValue.Append(wxT("//KW")); + + ContactData.Add(wxT("PRODID"), strValue, FALSE); + + // Setup the name. + + strValue.Clear(); + + // Setup the name field. + + strValue = txtSurname->GetValue() + wxT(";") + + txtForename->GetValue() + wxT(";") + + txtOtherNames->GetValue() + wxT(";") + + txtTitle->GetValue() + wxT(";") + + txtSuffix->GetValue(); + + strValue2 = ContactData.Convert(cmbDisplayAs->GetValue(), FALSE); + strValue2.Trim(); + + if (NameTokens.IsEmpty()){ + ContactData.Add(wxT("N;SORT-AS=\"") + strValue2 + wxT("\""), strValue, FALSE); + } else { + ContactData.Add(wxT("N;SORT-AS=\"") + strValue2 + wxT("\";") + NameTokens, strValue, FALSE); + } + + if (cmbType->GetCurrentSelection() == 1){ + + ContactData.AddRaw(wxT("KIND"), wxT("individual")); + + } else if (cmbType->GetCurrentSelection() == 2){ + + ContactData.AddRaw(wxT("KIND"), wxT("group")); + + // Go through each of the members and write them out. + + for (std::map::iterator itemiter = GroupsList.begin(); + itemiter != GroupsList.end(); ++itemiter){ + + ContactData.Add(wxT("MEMBER:urn:uuid"), itemiter->second, FALSE); + + } + + } else if (cmbType->GetCurrentSelection() == 3){ + + ContactData.AddRaw(wxT("KIND"), wxT("org")); + + } else if (cmbType->GetCurrentSelection() == 4){ + + ContactData.AddRaw(wxT("KIND"), wxT("location")); + + } + + + // Setup the nicknames (General, Home & Business). + + strValue.Clear(); + strValue2.Clear(); + strValue3.Clear(); + + boolValue = FALSE; + boolValue2 = FALSE; + intValue2 = 0; + intValue = 0; + + // Setup the gender. + + if (cmbGender->GetCurrentSelection() != 0){ + + switch(cmbGender->GetCurrentSelection()){ + + case 1: + + strValue = wxT("M"); + break; + + case 2: + + strValue = wxT("F"); + break; + + case 3: + + strValue = wxT("O"); + break; + + case 4: + + strValue = wxT("N"); + break; + + case 5: + + strValue = wxT("U"); + break; + + } + + } + + if (!txtGenderDescription->IsEmpty()){ + + strValue2 = txtGenderDescription->GetValue(); + + } + + if (!strValue.IsEmpty() || !strValue2.IsEmpty()){ + + EscapeString(&strValue2, FALSE); + + if (!GenderTokens.IsEmpty()){ + + if (!strValue2.IsEmpty()){ + + ContactData.AddRaw(wxT("GENDER;") + GenderTokens, strValue + wxT(";") + strValue2); + + } else { + + ContactData.AddRaw(wxT("GENDER;") + GenderTokens, strValue); + + } + + } else { + + if (!strValue2.IsEmpty()){ + + ContactData.AddRaw(wxT("GENDER"), strValue + wxT(";") + strValue2); + + } else { + + ContactData.AddRaw(wxT("GENDER"), strValue); + + } + + } + + } + + strValue.Clear(); + strValue2.Clear(); + strValue3.Clear(); + + boolValue = FALSE; + boolValue2 = FALSE; + intValue2 = 0; + intValue = 0; + + // Process Label. + + strValue3 = BirthdayAltID; + + if (!strValue3.IsEmpty()){ + + strValue3.Trim(); + strValue3.Trim(); + boolValue2 = TRUE; + strValue2.Append(wxT("ALTID=\"") + strValue3 + wxT("\"")); + + boolValue = TRUE; + + } + + //strValue3 = ContactData.Convert(GeneralAddressList, FALSE); + //strValue2 = + + // Process Language. + + strValue3 = BirthdayCalScale; + + if (!strValue3.IsEmpty()){ + + strValue3.Trim(); + strValue3.Trim(); + + if (boolValue2 == TRUE){ + + strValue2.Append(wxT(";")); + + } else { + + boolValue2 = TRUE; + + } + + strValue2.Append(wxT("CALSCALE=") + strValue3); + + boolValue = TRUE; + + } + + // Process Tokens. + + strValue2 = BirthdayTokens; + + // Get the birthday and write it. + + ResetSaveProcessData(); + + if (!txtBirthday->IsEmpty()){ + + strValue = txtBirthday->GetValue(); + + if (!strValue.IsEmpty() || !strValue2.IsEmpty()){ + + if (!strValue2.IsEmpty()){ + + EscapeString(&strValue2, FALSE); + EscapeString(&strValue, FALSE); + + ContactData.AddRaw(wxT("BDAY;VALUE=text;") + strValue2 + wxT(";"), strValue); + + } else { + + EscapeString(&strValue, FALSE); + + ContactData.AddRaw(wxT("BDAY;VALUE=text"), strValue); + + } + + } + + } else { + + // Deal with date. + + // Get Day, Month & Year. + + wxDateTime BirthdayDate; + wxDateTime::Month BirthdayMonth; + int BirthdayDay; + int BirthdayYear; + wxString DataBeforeT; + wxString DataAfterT; + wxString FinalBirthdayString; + bool ProcessDataAfterT = FALSE; + + BirthdayDate = dapBirthday->GetValue(); + + if (BirthdayDate.IsValid()){ + + BirthdayDay = BirthdayDate.GetDay(); + BirthdayMonth = BirthdayDate.GetMonth(); + BirthdayYear = BirthdayDate.GetYear(); + + // Look for T and replace data before this. + + wxStringTokenizer wSTDate(Birthday, wxT("T")); + + while (wSTDate.HasMoreTokens()){ + + if (ProcessDataAfterT == FALSE){ + + DataBeforeT = wSTDate.GetNextToken(); + ProcessDataAfterT = TRUE; + + } else { + + DataAfterT = wSTDate.GetNextToken(); + break; + + } + + } + + // If there is not T then replace altogether. + + wxString FinalBirthdayDay; + wxString FinalBirthdayMonth; + wxString FinalBirthdayYear; + + if (BirthdayDay < 10){ + + FinalBirthdayDay = wxT("0") + wxString::Format(wxT("%i"), BirthdayDay); + + } else { + + FinalBirthdayDay = wxString::Format(wxT("%i"), BirthdayDay); + + } + + if (((int)BirthdayMonth + 1) < 10){ + + FinalBirthdayMonth = wxT("0") + wxString::Format(wxT("%i"), ((int)BirthdayMonth + 1)); + + } else { + + FinalBirthdayMonth = wxString::Format(wxT("%i"), ((int)BirthdayMonth + 1)); + + } + + if (BirthdayYear == 0){ + + FinalBirthdayYear = wxT("--"); + + } else { + + FinalBirthdayYear = wxString::Format(wxT("%i"), BirthdayYear); + + } + + if (!DataAfterT.IsEmpty()){ + + FinalBirthdayString = FinalBirthdayYear + FinalBirthdayMonth + FinalBirthdayDay + wxT("T") + DataAfterT; + + } else { + + FinalBirthdayString = FinalBirthdayYear + FinalBirthdayMonth + FinalBirthdayDay; + + } + + if (!FinalBirthdayString.IsEmpty() || !strValue2.IsEmpty()){ + + if (!strValue2.IsEmpty()){ + + EscapeString(&strValue2, FALSE); + EscapeString(&strValue, FALSE); + + ContactData.AddRaw(wxT("BDAY") + strValue2 + wxT(";"), FinalBirthdayString); + + } else { + + EscapeString(&strValue, FALSE); + + ContactData.AddRaw(wxT("BDAY"), FinalBirthdayString); + + } + + } + + } + + } + + ResetSaveProcessData(); + + // Process Label. + + strValue3 = AnniversaryAltID; + + if (!strValue3.IsEmpty()){ + + strValue3.Trim(); + strValue3.Trim(); + boolValue2 = TRUE; + strValue2.Append(wxT("ALTID=\"") + strValue3 + wxT("\"")); + + boolValue = TRUE; + + } + + //strValue3 = ContactData.Convert(GeneralAddressList, FALSE); + //strValue2 = + + // Process Language. + + strValue3 = AnniversaryCalScale; + + if (!strValue3.IsEmpty()){ + + strValue3.Trim(); + strValue3.Trim(); + + if (boolValue2 == TRUE){ + + strValue2.Append(wxT(";")); + + } else { + + boolValue2 = TRUE; + + } + + strValue2.Append(wxT("CALSCALE=") + strValue3); + + boolValue = TRUE; + + } + + // Process Tokens. + + strValue2 = AnniversaryTokens; + + // Deal with ANNIVERSARY. + + if (!txtAnniversary->IsEmpty()){ + + strValue = txtAnniversary->GetValue(); + + if (!strValue.IsEmpty() || !strValue2.IsEmpty()){ + + if (!strValue2.IsEmpty()){ + + EscapeString(&strValue2, FALSE); + EscapeString(&strValue, FALSE); + + ContactData.AddRaw(wxT("ANNIVERSARY;VALUE=text;") + strValue2 + wxT(";"), strValue); + + } else { + + EscapeString(&strValue, FALSE); + + ContactData.AddRaw(wxT("ANNIVERSARY;VALUE=text"), strValue); + + } + + } + + } else { + + // Look for T and replace data before this. + + // Get Day, Month & Year. + + wxDateTime AnniversaryDate; + wxDateTime::Month AnniversaryMonth; + int AnniversaryDay; + int AnniversaryYear; + wxString DataBeforeT; + wxString DataAfterT; + wxString FinalAnniversaryString; + bool ProcessDataAfterT = FALSE; + + AnniversaryDate = dapAnniversary->GetValue(); + + if (AnniversaryDate.IsValid()){ + + AnniversaryDay = AnniversaryDate.GetDay(); + AnniversaryMonth = AnniversaryDate.GetMonth(); + AnniversaryYear = AnniversaryDate.GetYear(); + + // Look for T and replace data before this. + + wxStringTokenizer wSTDate(Anniversary, wxT("T")); + + while (wSTDate.HasMoreTokens()){ + + if (ProcessDataAfterT == FALSE){ + + DataBeforeT = wSTDate.GetNextToken(); + ProcessDataAfterT = TRUE; + + } else { + + DataAfterT = wSTDate.GetNextToken(); + break; + + } + + } + + // If there is not T then replace altogether. + + wxString FinalAnniversaryDay; + wxString FinalAnniversaryMonth; + wxString FinalAnniversaryYear; + + if (AnniversaryDay < 10){ + + FinalAnniversaryDay = wxT("0") + wxString::Format(wxT("%i"), AnniversaryDay); + + } else { + + FinalAnniversaryDay = wxString::Format(wxT("%i"), AnniversaryDay); + + } + + if (((int)AnniversaryMonth + 1) < 10){ + + FinalAnniversaryMonth = wxT("0") + wxString::Format(wxT("%i"), ((int)AnniversaryMonth + 1)); + + } else { + + FinalAnniversaryMonth = wxString::Format(wxT("%i"), ((int)AnniversaryMonth + 1)); + + } + + if (AnniversaryYear == 0){ + + FinalAnniversaryYear = wxT("--"); + + } else { + + FinalAnniversaryYear = wxString::Format(wxT("%i"), AnniversaryYear); + + } + + if (!DataAfterT.IsEmpty()){ + + FinalAnniversaryString = FinalAnniversaryYear + FinalAnniversaryMonth + FinalAnniversaryDay + wxT("T") + DataAfterT; + + } else { + + FinalAnniversaryString = FinalAnniversaryYear + FinalAnniversaryMonth + FinalAnniversaryDay; + + } + + if (!FinalAnniversaryString.IsEmpty() || !strValue2.IsEmpty()){ + + if (!strValue2.IsEmpty()){ + + EscapeString(&strValue2, FALSE); + EscapeString(&strValue, FALSE); + + ContactData.AddRaw(wxT("ANNIVERSARY") + strValue2 + wxT(";"), FinalAnniversaryString); + + } else { + + EscapeString(&strValue, FALSE); + + ContactData.AddRaw(wxT("ANNIVERSARY"), FinalAnniversaryString); + + } + + } + + } + + } + + // Setup the addresses (General, Home, Business). + + //intValue = GeneralAddressList.size(); + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralAddressList.begin(); + iter != GeneralAddressList.end(); ++iter){ + + int intSeekValue = iter->first; + + wxString strAddressString; + wxString strAddressFinalValue; + std::map::iterator iterValue; + + strAddressString.Append(wxT(";;")); + + // Get Address + + iterValue = GeneralAddressList.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + strAddressString.Append(strAddressFinalValue + wxT(";")); + strAddressFinalValue.Clear(); + + // Get Town + + iterValue = GeneralAddressListTown.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + strAddressString.Append(strAddressFinalValue + wxT(";")); + strAddressFinalValue.Clear(); + + // Get County + + iterValue = GeneralAddressListCounty.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + strAddressString.Append(strAddressFinalValue + wxT(";")); + strAddressFinalValue.Clear(); + + // Get Post Code + + iterValue = GeneralAddressListPostCode.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + strAddressString.Append(strAddressFinalValue + wxT(";")); + strAddressFinalValue.Clear(); + + // Get Country + + iterValue = GeneralAddressListCountry.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + strAddressString.Append(strAddressFinalValue); + strAddressFinalValue.Clear(); + + ProcessSaveData(wxT("ADR"), &strValue2, &boolValue2, &boolValue, + &iter, &strAddressString, &ContactData, + wxT("LABEL"), &GeneralAddressListLabel, + wxT("LANGUAGE"), &GeneralAddressListLang, + wxT("ALTID"), &GeneralAddressListAltID, + wxT("PID"), &GeneralAddressListPID, + wxT("GEO"), &GeneralAddressListGeo, + wxT("TZ"), &GeneralAddressListTimezone, + wxT("MEDIATYPE"), &GeneralAddressListMediatype, + wxT("PREF"), &GeneralAddressListPref, + wxT(""), &GeneralAddressListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeAddressList.begin(); + iter != HomeAddressList.end(); ++iter){ + + int intSeekValue = iter->first; + + wxString strAddressString; + wxString strAddressFinalValue; + std::map::iterator iterValue; + + strAddressString.Append(wxT(";;")); + + // Get Address + + iterValue = HomeAddressList.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue + wxT(";")); + + // Get Town + + iterValue = HomeAddressListTown.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue + wxT(";")); + + // Get County + + iterValue = HomeAddressListCounty.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue + wxT(";")); + + // Get Post Code + + iterValue = HomeAddressListPostCode.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue + wxT(";")); + + // Get Country + + iterValue = HomeAddressListCountry.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue); + + ProcessSaveData(wxT("ADR;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &strAddressString, &ContactData, + wxT("LABEL"), &HomeAddressListLabel, + wxT("LANGUAGE"), &HomeAddressListLang, + wxT("ALTID"), &HomeAddressListAltID, + wxT("PID"), &HomeAddressListPID, + wxT("GEO"), &HomeAddressListGeo, + wxT("TZ"), &HomeAddressListTimezone, + wxT("MEDIATYPE"), &HomeAddressListMediatype, + wxT("PREF"), &HomeAddressListPref, + wxT(""), &HomeAddressListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessAddressList.begin(); + iter != BusinessAddressList.end(); ++iter){ + + int intSeekValue = iter->first; + + wxString strAddressString; + wxString strAddressFinalValue; + std::map::iterator iterValue; + + strAddressString.Append(wxT(";;")); + + // Get Address + + iterValue = BusinessAddressList.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue + wxT(";")); + + // Get Town + + iterValue = BusinessAddressListTown.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue + wxT(";")); + + // Get County + + iterValue = BusinessAddressListCounty.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue + wxT(";")); + + // Get Post Code + + iterValue = BusinessAddressListPostCode.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue + wxT(";")); + + // Get Country + + iterValue = BusinessAddressListCountry.find(intSeekValue); + strAddressFinalValue = iterValue->second; + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressString.Append(strAddressFinalValue); + + ProcessSaveData(wxT("ADR;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &strAddressString, &ContactData, + wxT("LABEL"), &BusinessAddressListLabel, + wxT("LANGUAGE"), &BusinessAddressListLang, + wxT("ALTID"), &BusinessAddressListAltID, + wxT("PID"), &BusinessAddressListPID, + wxT("GEO"), &BusinessAddressListGeo, + wxT("TZ"), &BusinessAddressListTimezone, + wxT("MEDIATYPE"), &BusinessAddressListMediatype, + wxT("PREF"), &BusinessAddressListPref, + wxT(""), &BusinessAddressListTokens ); + + ResetSaveProcessData(); + + } + + // Sort out nicknames (if any). + + for (std::map::iterator iter = GeneralNicknamesList.begin(); + iter != GeneralNicknamesList.end(); ++iter){ + + intValue2 = iter->first; + + // Process Alternative ID. + + ProcessSaveData(wxT("NICKNAME"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralNicknamesList, &ContactData, + wxT("LANGUAGE"), &GeneralNicknamesListLanguage, + wxT("ALTID"), &GeneralNicknamesListAltID, + wxT("PID"), &GeneralNicknamesListPID, + wxT("PREF"), &GeneralNicknamesListPref, + wxT(""), &GeneralNicknamesListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeNicknamesList.begin(); + iter != HomeNicknamesList.end(); ++iter){ + + ProcessSaveData(wxT("NICKNAME;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeNicknamesList, &ContactData, + wxT("LANGUAGE"), &HomeNicknamesListLanguage, + wxT("ALTID"), &HomeNicknamesListAltID, + wxT("PID"), &HomeNicknamesListPID, + wxT("PREF"), &HomeNicknamesListPref, + wxT(""), &HomeNicknamesListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessNicknamesList.begin(); + iter != BusinessNicknamesList.end(); ++iter){ + + ProcessSaveData(wxT("NICKNAME;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessNicknamesList, &ContactData, + wxT("LANGUAGE"), &BusinessNicknamesListLanguage, + wxT("ALTID"), &BusinessNicknamesListAltID, + wxT("PID"), &BusinessNicknamesListPID, + wxT("PREF"), &BusinessNicknamesListPref, + wxT(""), &BusinessNicknamesListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + // Sort out email (general, home and business). + + for (std::map::iterator iter = GeneralEmailList.begin(); + iter != GeneralEmailList.end(); ++iter){ + + //strValue3 = ContactData.Convert(GeneralAddressList, FALSE); + //strValue2 = + + wxString strAddressFinalValue; + std::map::iterator iterValue; + + ProcessSaveData(wxT("EMAIL"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralEmailList, &ContactData, + wxT("ALTID"), &GeneralEmailListAltID, + wxT("PID"), &GeneralEmailListPID, + wxT("PREF"), &GeneralEmailListPref, + wxT(""), &GeneralEmailListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeEmailList.begin(); + iter != HomeEmailList.end(); ++iter){ + + //strValue3 = ContactData.Convert(GeneralAddressList, FALSE); + //strValue2 = + + ProcessSaveData(wxT("EMAIL;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeEmailList, &ContactData, + wxT("ALTID"), &HomeEmailListAltID, + wxT("PID"), &HomeEmailListPID, + wxT("PREF"), &HomeEmailListPref, + wxT(""), &HomeEmailListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessEmailList.begin(); + iter != BusinessEmailList.end(); ++iter){ + + //strValue3 = ContactData.Convert(GeneralAddressList, FALSE); + //strValue2 = + + ProcessSaveData(wxT("EMAIL;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessEmailList, &ContactData, + wxT("ALTID"), &BusinessEmailListAltID, + wxT("PID"), &BusinessEmailListPID, + wxT("PREF"), &BusinessEmailListPref, + wxT(""), &BusinessEmailListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralIMList.begin(); + iter != GeneralIMList.end(); ++iter){ + + intValue2 = iter->first; + + // Process Alternative ID. + + ProcessSaveData(wxT("IMPP"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralIMList, &ContactData, + wxT("ALTID"), &GeneralIMListAltID, + wxT("PID"), &GeneralIMListPID, + wxT("MEDIATYPE"), &GeneralIMListMediatype, + wxT("PREF"), &GeneralIMListPref, + wxT(""), &GeneralIMListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeIMList.begin(); + iter != HomeIMList.end(); ++iter){ + + ProcessSaveData(wxT("IMPP;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeIMList, &ContactData, + wxT("ALTID"), &HomeIMListAltID, + wxT("PID"), &HomeIMListPID, + wxT("MEDIATYPE"), &HomeIMListMediatype, + wxT("PREF"), &HomeIMListPref, + wxT(""), &HomeIMListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessIMList.begin(); + iter != BusinessIMList.end(); ++iter){ + + ProcessSaveData(wxT("IMPP;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessIMList, &ContactData, + wxT("ALTID"), &BusinessIMListAltID, + wxT("PID"), &BusinessIMListPID, + wxT("MEDIATYPE"), &BusinessIMListMediatype, + wxT("PREF"), &BusinessIMListPref, + wxT(""), &BusinessIMListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralTelephoneList.begin(); + iter != GeneralTelephoneList.end(); ++iter){ + + wxString strAddressFinalValue = iter->second; + + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressFinalValue.insert(0, wxT("tel:")); + + ProcessSaveData(wxT("TEL"), &strValue2, &boolValue2, &boolValue, + &iter, &strAddressFinalValue, &ContactData, + wxT("ALTID"), &GeneralTelephoneListAltID, + wxT("PID"), &GeneralTelephoneListPID, + wxT("TYPE"), &GeneralTelephoneListType, + wxT("PREF"), &GeneralTelephoneListPref, + wxT(""), &GeneralTelephoneListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeTelephoneList.begin(); + iter != HomeTelephoneList.end(); ++iter){ + + wxString strAddressFinalValue = iter->second; + + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressFinalValue.insert(0, wxT("tel:")); + + ProcessSaveData(wxT("TEL"), &strValue2, &boolValue2, &boolValue, + &iter, &strAddressFinalValue, &ContactData, + wxT("ALTID"), &HomeTelephoneListAltID, + wxT("PID"), &HomeTelephoneListPID, + wxT("TYPE"), &HomeTelephoneListType, + wxT("PREF"), &HomeTelephoneListPref, + wxT(""), &HomeTelephoneListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessTelephoneList.begin(); + iter != BusinessTelephoneList.end(); ++iter){ + + wxString strAddressFinalValue = iter->second; + + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressFinalValue.insert(0, wxT("tel:")); + + ProcessSaveData(wxT("TEL"), &strValue2, &boolValue2, &boolValue, + &iter, &strAddressFinalValue, &ContactData, + wxT("ALTID"), &BusinessTelephoneListAltID, + wxT("PID"), &BusinessTelephoneListPID, + wxT("TYPE"), &BusinessTelephoneListType, + wxT("PREF"), &BusinessTelephoneListPref, + wxT(""), &BusinessTelephoneListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralLanguageList.begin(); + iter != GeneralLanguageList.end(); ++iter){ + + intValue2 = iter->first; + + ProcessSaveData(wxT("LANG"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralLanguageList, &ContactData, + wxT("ALTID"), &GeneralLanguageListAltID, + wxT("PID"), &GeneralLanguageListPID, + wxT("PREF"), &GeneralLanguageListPref, + wxT(""), &GeneralLanguageListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeLanguageList.begin(); + iter != HomeLanguageList.end(); ++iter){ + + ProcessSaveData(wxT("LANG;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeLanguageList, &ContactData, + wxT("ALTID"), &HomeLanguageListAltID, + wxT("PID"), &HomeLanguageListPID, + wxT("PREF"), &HomeLanguageListPref, + wxT(""), &HomeLanguageListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessLanguageList.begin(); + iter != BusinessLanguageList.end(); ++iter){ + + ProcessSaveData(wxT("LANG;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessLanguageList, &ContactData, + wxT("ALTID"), &BusinessLanguageListAltID, + wxT("PID"), &BusinessLanguageListPID, + wxT("PREF"), &BusinessLanguageListPref, + wxT(""), &BusinessLanguageListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralTZList.begin(); + iter != GeneralTZList.end(); ++iter){ + + ProcessSaveData(wxT("TZ"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralTZList, &ContactData, + wxT("ALTID"), &GeneralTZListAltID, + wxT("PID"), &GeneralTZListPID, + wxT("MEDIATYPE"), &GeneralTZListMediatype, + wxT("PREF"), &GeneralTZListPref, + wxT(""), &GeneralTZListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeTZList.begin(); + iter != HomeTZList.end(); ++iter){ + + ProcessSaveData(wxT("TZ;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeTZList, &ContactData, + wxT("ALTID"), &HomeTZListAltID, + wxT("PID"), &HomeTZListPID, + wxT("MEDIATYPE"), &HomeTZListMediatype, + wxT("PREF"), &HomeTZListPref, + wxT(""), &HomeTZListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessTZList.begin(); + iter != BusinessTZList.end(); ++iter){ + + ProcessSaveData(wxT("TZ;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessTZList, &ContactData, + wxT("ALTID"), &BusinessTZListAltID, + wxT("PID"), &BusinessTZListPID, + wxT("MEDIATYPE"), &BusinessTZListMediatype, + wxT("PREF"), &BusinessTZListPref, + wxT(""), &BusinessTZListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralGeographyList.begin(); + iter != GeneralGeographyList.end(); ++iter){ + + wxString strAddressFinalValue = iter->second; + + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressFinalValue.insert(0, wxT("geo:")); + + ProcessSaveData(wxT("GEO"), &strValue2, &boolValue2, &boolValue, + &iter, &strAddressFinalValue, &ContactData, + wxT("ALTID"), &GeneralGeographyListAltID, + wxT("PID"), &GeneralGeographyListPID, + wxT("MEDIATYPE"), &GeneralGeographyListMediatype, + wxT("PREF"), &GeneralGeographyListPref, + wxT(""), &GeneralGeographyListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeGeographyList.begin(); + iter != HomeGeographyList.end(); ++iter){ + + wxString strAddressFinalValue = iter->second; + + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressFinalValue.insert(0, wxT("geo:")); + + ProcessSaveData(wxT("GEO;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeGeographyList, &ContactData, + wxT("ALTID"), &HomeGeographyListAltID, + wxT("PID"), &HomeGeographyListPID, + wxT("MEDIATYPE"), &HomeGeographyListMediatype, + wxT("PREF"), &HomeGeographyListPref, + wxT(""), &HomeGeographyListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessGeographyList.begin(); + iter != BusinessGeographyList.end(); ++iter){ + + wxString strAddressFinalValue = iter->second; + + ProcessCaptureStrings(&strAddressFinalValue); + + strAddressFinalValue.insert(0, wxT("geo:")); + + ProcessSaveData(wxT("GEO;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessGeographyList, &ContactData, + wxT("ALTID"), &BusinessGeographyListAltID, + wxT("PID"), &BusinessGeographyListPID, + wxT("MEDIATYPE"), &BusinessGeographyListMediatype, + wxT("PREF"), &BusinessGeographyListPref, + wxT(""), &BusinessGeographyListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralRelatedList.begin(); + iter != GeneralRelatedList.end(); ++iter){ + + ProcessSaveData(wxT("RELATED"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralRelatedList, &ContactData, + wxT("ALTID"), &GeneralRelatedListAltID, + wxT("PID"), &GeneralRelatedListPID, + wxT("LANGUAGE"), &GeneralRelatedListLanguage, + wxT("TYPE"), &GeneralRelatedListRelType, + wxT("PREF"), &GeneralRelatedListPref, + wxT(""), &GeneralRelatedListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralWebsiteList.begin(); + iter != GeneralWebsiteList.end(); ++iter){ + + ProcessSaveData(wxT("URL"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralWebsiteList, &ContactData, + wxT("ALTID"), &GeneralWebsiteListAltID, + wxT("PID"), &GeneralWebsiteListPID, + wxT("MEDIATYPE"), &GeneralWebsiteListMediatype, + wxT("PREF"), &GeneralWebsiteListPref, + wxT(""), &GeneralWebsiteListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeWebsiteList.begin(); + iter != HomeWebsiteList.end(); ++iter){ + + ProcessSaveData(wxT("URL;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeWebsiteList, &ContactData, + wxT("ALTID"), &HomeWebsiteListAltID, + wxT("PID"), &HomeWebsiteListPID, + wxT("MEDIATYPE"), &HomeWebsiteListMediatype, + wxT("PREF"), &HomeWebsiteListPref, + wxT(""), &HomeWebsiteListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessWebsiteList.begin(); + iter != BusinessWebsiteList.end(); ++iter){ + + ProcessSaveData(wxT("URL;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessWebsiteList, &ContactData, + wxT("ALTID"), &BusinessWebsiteListAltID, + wxT("PID"), &BusinessWebsiteListPID, + wxT("MEDIATYPE"), &BusinessWebsiteListMediatype, + wxT("PREF"), &BusinessWebsiteListPref, + wxT(""), &BusinessWebsiteListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralTitleList.begin(); + iter != GeneralTitleList.end(); ++iter){ + + ProcessSaveData(wxT("TITLE"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralTitleList, &ContactData, + wxT("ALTID"), &GeneralTitleListAltID, + wxT("PID"), &GeneralTitleListPID, + wxT("LANGUAGE"), &GeneralTitleListLanguage, + wxT("PREF"), &GeneralTitleListPref, + wxT(""), &GeneralTitleListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeTitleList.begin(); + iter != HomeTitleList.end(); ++iter){ + + ProcessSaveData(wxT("TITLE;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeTitleList, &ContactData, + wxT("ALTID"), &HomeTitleListAltID, + wxT("PID"), &HomeTitleListPID, + wxT("LANGUAGE"), &HomeTitleListLanguage, + wxT("PREF"), &HomeTitleListPref, + wxT(""), &HomeTitleListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessTitleList.begin(); + iter != BusinessTitleList.end(); ++iter){ + + ProcessSaveData(wxT("TITLE;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessTitleList, &ContactData, + wxT("ALTID"), &BusinessTitleListAltID, + wxT("PID"), &BusinessTitleListPID, + wxT("LANGUAGE"), &BusinessTitleListLanguage, + wxT("PREF"), &BusinessTitleListPref, + wxT(""), &BusinessTitleListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralRoleList.begin(); + iter != GeneralRoleList.end(); ++iter){ + + ProcessSaveData(wxT("ROLE"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralRoleList, &ContactData, + wxT("ALTID"), &GeneralRoleListAltID, + wxT("PID"), &GeneralRoleListPID, + wxT("LANGUAGE"), &GeneralRoleListLanguage, + wxT("PREF"), &GeneralRoleListPref, + wxT(""), &GeneralRoleListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeRoleList.begin(); + iter != HomeRoleList.end(); ++iter){ + + ProcessSaveData(wxT("ROLE;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeRoleList, &ContactData, + wxT("ALTID"), &HomeRoleListAltID, + wxT("PID"), &HomeRoleListPID, + wxT("LANGUAGE"), &HomeRoleListLanguage, + wxT("PREF"), &HomeRoleListPref, + wxT(""), &HomeRoleListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessRoleList.begin(); + iter != BusinessRoleList.end(); ++iter){ + + ProcessSaveData(wxT("ROLE;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessRoleList, &ContactData, + wxT("ALTID"), &BusinessRoleListAltID, + wxT("PID"), &BusinessRoleListPID, + wxT("LANGUAGE"), &BusinessRoleListLanguage, + wxT("PREF"), &BusinessRoleListPref, + wxT(""), &BusinessRoleListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralOrganisationsList.begin(); + iter != GeneralOrganisationsList.end(); ++iter){ + + ProcessSaveData(wxT("ORG"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralOrganisationsList, &ContactData, + wxT("ALTID"), &GeneralOrganisationsListAltID, + wxT("PID"), &GeneralOrganisationsListPID, + wxT("LANGUAGE"), &GeneralOrganisationsListLanguage, + wxT("SORT-AS"), &GeneralOrganisationsListSortAs, + wxT("PREF"), &GeneralOrganisationsListPref, + wxT(""), &GeneralOrganisationsListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeOrganisationsList.begin(); + iter != HomeOrganisationsList.end(); ++iter){ + + ProcessSaveData(wxT("ORG;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeOrganisationsList, &ContactData, + wxT("ALTID"), &HomeOrganisationsListAltID, + wxT("PID"), &HomeOrganisationsListPID, + wxT("LANGUAGE"), &HomeOrganisationsListLanguage, + wxT("SORT-AS"), &HomeOrganisationsListSortAs, + wxT("PREF"), &HomeOrganisationsListPref, + wxT(""), &HomeOrganisationsListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessOrganisationsList.begin(); + iter != BusinessOrganisationsList.end(); ++iter){ + + ProcessSaveData(wxT("ORG;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessOrganisationsList, &ContactData, + wxT("ALTID"), &BusinessOrganisationsListAltID, + wxT("PID"), &BusinessOrganisationsListPID, + wxT("LANGUAGE"), &BusinessOrganisationsListLanguage, + wxT("SORT-AS"), &BusinessOrganisationsListSortAs, + wxT("PREF"), &BusinessOrganisationsListPref, + wxT(""), &BusinessOrganisationsListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = GeneralNoteList.begin(); + iter != GeneralNoteList.end(); ++iter){ + + ProcessSaveData(wxT("NOTE"), &strValue2, &boolValue2, &boolValue, + &iter, &GeneralNoteList, &ContactData, + wxT("ALTID"), &GeneralNoteListAltID, + wxT("PID"), &GeneralNoteListPID, + wxT("LANGUAGE"), &GeneralNoteListLanguage, + wxT("PREF"), &GeneralNoteListPref, + wxT(""), &GeneralNoteListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = HomeNoteList.begin(); + iter != HomeNoteList.end(); ++iter){ + + ProcessSaveData(wxT("NOTE;TYPE=home"), &strValue2, &boolValue2, &boolValue, + &iter, &HomeNoteList, &ContactData, + wxT("ALTID"), &HomeNoteListAltID, + wxT("PID"), &HomeNoteListPID, + wxT("LANGUAGE"), &HomeNoteListLanguage, + wxT("PREF"), &HomeNoteListPref, + wxT(""), &HomeNoteListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = BusinessNoteList.begin(); + iter != BusinessNoteList.end(); ++iter){ + + ProcessSaveData(wxT("NOTE;TYPE=work"), &strValue2, &boolValue2, &boolValue, + &iter, &BusinessNoteList, &ContactData, + wxT("ALTID"), &BusinessNoteListAltID, + wxT("PID"), &BusinessNoteListPID, + wxT("LANGUAGE"), &BusinessNoteListLanguage, + wxT("PREF"), &BusinessNoteListPref, + wxT(""), &BusinessNoteListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = CategoriesList.begin(); + iter != CategoriesList.end(); ++iter){ + + ProcessSaveData(wxT("CATEGORIES"), &strValue2, &boolValue2, &boolValue, + &iter, &CategoriesList, &ContactData, + wxT("ALTID"), &CategoriesListAltID, + wxT("PID"), &CategoriesListPID, + wxT("TYPE"), &CategoriesListType, + wxT("PREF"), &CategoriesListPref, + wxT(""), &CategoriesListTokens ); + + ResetSaveProcessData(); + + } + + // Pictures. + + for (std::map::iterator iter = PicturesList.begin(); + iter != PicturesList.end(); ++iter){ + + int intValueIndex = iter->first; + + std::map::iterator stdstriter; + std::map::iterator enciter; + + striter = PicturesListPictureType.find(intValueIndex); + enciter = PicturesListPicEncType.find(intValueIndex); + + ProcessSaveData(wxT("PHOTO"), &strValue2, &boolValue2, &boolValue, + &iter, &PicturesList, &striter, + &enciter, &ContactData, + wxT("ALTID"), &PicturesListAltID, + wxT("PID"), &PicturesListPID, + wxT("TYPE"), &PicturesListType, + wxT("PREF"), &PicturesListPref, + wxT(""), &PicturesListTokens); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + // Logos. + + for (std::map::iterator iter = LogosList.begin(); + iter != LogosList.end(); ++iter){ + + int intValueIndex = iter->first; + + std::map::iterator stdstriter; + std::map::iterator enciter; + + striter = LogosListPictureType.find(intValueIndex); + enciter = LogosListPicEncType.find(intValueIndex); + + ProcessSaveData(wxT("LOGO"), &strValue2, &boolValue2, &boolValue, + &iter, &LogosList, &striter, + &enciter, &ContactData, + wxT("ALTID"), &LogosListAltID, + wxT("PID"), &LogosListPID, + wxT("TYPE"), &LogosListType, + wxT("PREF"), &LogosListPref, + wxT(""), &LogosListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + // Sounds. + + for (std::map::iterator iter = SoundsList.begin(); + iter != SoundsList.end(); ++iter){ + + int intValueIndex = iter->first; + + std::map::iterator stdstriter; + std::map::iterator enciter; + + striter = SoundsListAudioType.find(intValueIndex); + enciter = SoundsListAudioEncType.find(intValueIndex); + + ProcessSaveData(wxT("SOUND"), &strValue2, &boolValue2, &boolValue, + &iter, &SoundsList, &striter, + &enciter, &ContactData, + wxT("ALTID"), &SoundsListAltID, + wxT("PID"), &SoundsListPID, + wxT("TYPE"), &SoundsListType, + wxT("PREF"), &SoundsListPref, + wxT(""), &SoundsListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = CalendarList.begin(); + iter != CalendarList.end(); ++iter){ + + ProcessSaveData(wxT("CALURI"), &strValue2, &boolValue2, &boolValue, + &iter, &CalendarList, &ContactData, + wxT("ALTID"), &CalendarListAltID, + wxT("PID"), &CalendarListPID, + wxT("MEDIATYPE"), &CalendarListMediatype, + wxT("TYPE"), &CalendarListType, + wxT("PREF"), &CalendarListPref, + wxT(""), &CalendarListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = CalendarRequestList.begin(); + iter != CalendarRequestList.end(); ++iter){ + + ProcessSaveData(wxT("CALADRURI"), &strValue2, &boolValue2, &boolValue, + &iter, &CalendarRequestList, &ContactData, + wxT("ALTID"), &CalendarRequestListAltID, + wxT("PID"), &CalendarRequestListPID, + wxT("MEDIATYPE"), &CalendarRequestListMediatype, + wxT("TYPE"), &CalendarRequestListType, + wxT("PREF"), &CalendarRequestListPref, + wxT(""), &CalendarRequestListTokens ); + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + for (std::map::iterator iter = FreeBusyList.begin(); + iter != FreeBusyList.end(); ++iter){ + + ProcessSaveData(wxT("FBURL"), &strValue2, &boolValue2, &boolValue, + &iter, &FreeBusyList, &ContactData, + wxT("ALTID"), &FreeBusyListAltID, + wxT("PID"), &FreeBusyListPID, + wxT("MEDIATYPE"), &FreeBusyListMediatype, + wxT("TYPE"), &FreeBusyListType, + wxT("PREF"), &FreeBusyListPref, + wxT(""), &FreeBusyListTokens ); + + ResetSaveProcessData(); + + } + + for (std::map::iterator iter = KeyList.begin(); + iter != KeyList.end(); ++iter){ + + intValue2 = iter->first; + + // Process Alternative ID. + + striter = KeyListAltID.find(intValue2); + + if (striter->first == intValue2){ + + strValue3 = striter->second; + + if (!strValue3.IsEmpty()){ + + strValue3.Trim(); + strValue3.Trim(); + + if (boolValue2 == TRUE){ + + strValue2.Append(wxT(";")); + + } else { + + boolValue2 = TRUE; + + } + + strValue2.Append(wxT("ALTID=") + strValue3); + + boolValue = TRUE; + + } + + } + + // Process PID. + + striter = KeyListPID.find(intValue2); + + if (striter->first == intValue2){ + + strValue3 = striter->second; + + if (!strValue3.IsEmpty()){ + + strValue3.Trim(); + strValue3.Trim(); + + if (boolValue2 == TRUE){ + + strValue2.Append(wxT(";")); + + } else { + + boolValue2 = TRUE; + + } + + strValue2.Append(wxT("PID=") + strValue3); + + boolValue = TRUE; + + } + + } + + // Process Type. + + striter = KeyListType.find(intValue2); + + if (striter->first == intValue2){ + + strValue3 = striter->second; + + if (!strValue3.IsEmpty()){ + + strValue3.Trim(); + strValue3.Trim(); + + if (boolValue2 == TRUE){ + + strValue2.Append(wxT(";")); + + } else { + + boolValue2 = TRUE; + + } + + strValue2.Append(wxT("TYPE=") + strValue3); + + boolValue = TRUE; + + } + + } + + intiter = KeyListPref.find(intValue2); + + if (intiter->first == intValue2){ + + intValue3 = intiter->second; + + if (intValue3){ + + if (boolValue2 == TRUE){ + + strValue2.Append(wxT(";")); + + } else { + + boolValue2 = TRUE; + + } + + strValue2.Append(wxT("PREF=") + wxString::Format(wxT("%i"), intValue3)); + + boolValue = TRUE; + + } + + } + + // Process Tokens. + + striter = KeyListTokens.find(intValue2); + + if (striter->first == intValue2){ + + strValue3 = striter->second; + + if (!strValue3.IsEmpty()){ + + strValue3.Trim(); + strValue3.Trim(); + + if (boolValue2 == TRUE){ + + strValue2.Append(wxT(";")); + + } else { + + boolValue2 = TRUE; + + } + + strValue2.Append(strValue3); + + boolValue = TRUE; + + } + + } + + // Get the key information. + + std::map::iterator enciter; + + striter = KeyListDataType.find(intValue2); + //enciter = KeyListAudioEncType.find(intValue2); + + wxString strValueData; + + strValueData = iter->second; + //strValueData.insert(0, wxT("data:") + striter->second + wxT(";") + enciter->second + wxT(",")); + strValueData.insert(0, wxT("data:") + striter->second + wxT(";base64,")); + + + // Add to the vCard. + + if (boolValue == TRUE){ + + ContactData.AddRaw(wxT("KEY;") + strValue2, strValueData); + + } else { + + ContactData.Add(wxT("KEY"), strValueData, TRUE); + + } + + ResetSaveProcessData(); + + } + + // Vendor specific items. + + ResetSaveProcessData(); + + for (std::map::iterator iter = VendorList.begin(); + iter != VendorList.end(); ++iter){ + + intValue2 = iter->first; + + // Get the IANA PEN number. + + striter = VendorListPEN.find(intValue2); + + if (striter->first == intValue2){ + + strValue2 = striter->second; + + } + + // Get the element name. + + striter = VendorListElement.find(intValue2); + + if (striter->first == intValue2){ + + strValue3 = striter->second; + + } + + // Get the address. + + striter = VendorList.find(intValue2); + + if (striter->first == intValue2){ + + strValue = striter->second; + + } + + // Add to the vCard. + + if (boolValue == TRUE){ + + ContactData.AddRaw(wxT("VND-") + strValue2 + wxT("-") + strValue3, strValue); + + } else { + + ContactData.Add(wxT("VND-") + strValue2 + wxT("-") + strValue3, strValue, FALSE); + + } + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + // X-Tokens. + + for (std::map::iterator iter = XTokenList.begin(); + iter != XTokenList.end(); ++iter){ + + intValue2 = iter->first; + + // Get the element name. + + striter = XTokenListTokens.find(intValue2); + + if (striter->first == intValue2){ + + strValue2 = striter->second; + + } + + // Get the address. + + striter = XTokenList.find(intValue2); + + if (striter->first == intValue2){ + + strValue = striter->second; + + } + + // Add to the vCard. + + if (boolValue == TRUE){ + + ContactData.AddRaw(wxT("X-") + strValue2, strValue); + + } else { + + ContactData.Add(wxT("X-") + strValue2, strValue, FALSE); + + } + + ResetSaveProcessData(); + + } + + ResetSaveProcessData(); + + if (FullNamesList.size() == 0){ + + wxString FullName = cmbDisplayAs->GetValue(); + FullNamesList.insert(std::make_pair(0, FullName)); + FullNamesListAltID.insert(std::make_pair(0, wxT(""))); + FullNamesListPID.insert(std::make_pair(0, wxT(""))); + FullNamesListType.insert(std::make_pair(0, wxT(""))); + FullNamesListLanguage.insert(std::make_pair(0, wxT(""))); + FullNamesListPref.insert(std::make_pair(0, 0)); + FullNamesListTokens.insert(std::make_pair(0, wxT(""))); + FNFirst = FALSE; + + } + + for (std::map::iterator iter = FullNamesList.begin(); + iter != FullNamesList.end(); ++iter){ + + if (FNFirst == TRUE){ + + iter->second = cmbDisplayAs->GetValue(); + FNFirst = FALSE; + + } + + std::map::iterator mapS; + + mapS = FullNamesListTokens.find(iter->first); + + ProcessSaveData(wxT("FN"), &strValue2, &boolValue2, &boolValue, + &iter, &FullNamesList, &ContactData, + wxT("ALTID"), &FullNamesListAltID, + wxT("PID"), &FullNamesListPID, + wxT("TYPE"), &FullNamesListType, + wxT("LANGUAGE"), &FullNamesListLanguage, + wxT("PREF"), &FullNamesListPref, + wxT(""), &FullNamesListTokens ); + + // Get the address. + + ResetSaveProcessData(); + + } + + //ContactData.Add(wxT("FN"), cmbDisplayAs->GetValue(), FALSE); + + // Insert revision (REV) date. + + // Get today's date and time. + + wxDateTime DateTimeNow = wxDateTime::Now(); + + wxString DateRev; + + // Set year, month and date. + + int intYear = DateTimeNow.GetYear(); + int intMonth = DateTimeNow.GetMonth(); + int intDay = DateTimeNow.GetDay(); + + DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intYear)); + + if (intMonth < 10){ + + DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intMonth)); + + } else { + + DateRev.Append(wxString::Format(wxT("%i"), intMonth)); + + } + + if (intDay < 10){ + + DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intDay)); + + } else { + + DateRev.Append(wxString::Format(wxT("%i"), intDay)); + + } + + //DateRev.Append(wx); + //DateRev.Append(wx); + //DateRev.Append(wx); + DateRev.Append(wxT("T")); + + // Set hour, minute and second. + + int intHour = DateTimeNow.GetHour(); + int intMinute = DateTimeNow.GetMinute(); + int intSecond = DateTimeNow.GetSecond(); + + if (intHour < 10){ + + DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intHour)); + + } else { + + DateRev.Append(wxString::Format(wxT("%i"), intHour)); + + } + + if (intMinute < 10){ + + DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intMinute)); + + } else { + + DateRev.Append(wxString::Format(wxT("%i"), intMinute)); + + } + + if (intSecond < 10){ + + DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intSecond)); + + } else { + + DateRev.Append(wxString::Format(wxT("%i"), intSecond)); + + } + + // DateRev.Append(wx); + // DateRev.Append(wx); + // DateRev.Append(wxString DateTimeNow->); + DateRev.Append(wxT("Z")); + + ContactData.Add(wxT("UID"), UIDToken, FALSE); + + // Generate ETag data for the contact if it does not exist. + // If X-XAB-ETAG-ORIG exists, leave alone and update X-XAB-ETAG. + + srand (time(NULL)); + + ContactData.Add(wxT("END"), wxT("VCARD"), FALSE); + + FMTimer.Stop(); + ContactData.WriteFile(FilenameFinal); + + vCard34Conv ConvFileFun; + + wxString wxSData; + + ConvFileFun.ConvertToV3(FilenameFinal, &wxSData); + + wxString AccountDirPrefix; + wxString AccountDir; + wxString PrefDir; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + PrefDir = GetUserPrefDir(); + + wxStringTokenizer wSTFilename(wxSContactFilename, wxT("\\")); + +#else + + PrefDir = GetUserPrefDir(); + + wxStringTokenizer wSTFilename(wxSContactFilename, wxT("/")); + +#endif + + XABPreferences PrefData(PrefDir); + + wxString AccountType; + + for (int i = 0; i < PrefData.accounts.GetCount(); i++){ + + AccountDir = PrefData.accounts.GetAccountDirectory(i) + wxT(".carddav"); + + if (AccountDir == wxSContactAccount){ + + AccountDirPrefix = PrefData.accounts.GetAccountDirPrefix(i); + AccountDirPrefix.Trim(); + AccountType = PrefData.accounts.GetAccountType(i); + break; + + } + + } + + wxString wxSplitFilename; + wxString wxSDataURL; + + while(wSTFilename.HasMoreTokens()){ + + wxSplitFilename = wSTFilename.GetNextToken(); + + } + + wxSDataURL = wxSplitFilename; + //wxSDataURL.Append(wxSplitFilename); + + // Find out if the filename exists in the table. + + if (AccountType == wxT("CardDAV") || AccountType == wxT("carddav")){ + + wxString ETagResult; + wxString ETagOriginal; + + ETagDB *ETagDBPtr = NULL; + + ETagDBPtr = ETagTmrPtr->GetPointer(wxSContactAccount); + + wxString wxSETag = ETagDBPtr->GetETag(wxSplitFilename); + wxString wxSETagOrig = ETagDBPtr->GetETagOriginal(wxSplitFilename); + + if (wxSETagOrig.IsEmpty()){ + + // Generate the ETag. + + wxSETagOrig = wxString::Format(wxT("%X%X%X%X"), rand() % 1024, rand() % 1024, rand() % 1024, rand() % 1024); + + } + + if (wxSETag.IsEmpty()){ + + // Update empty ETag. + + wxSETag = wxSETagOrig; + ETagDBPtr->UpdateETag(wxSplitFilename, wxSETag, wxSETagOrig); + + } + else { + + // Don't change original ETag. + + wxSETag = wxString::Format(wxT("%X%X%X%X"), rand() % 1024, rand() % 1024, rand() % 1024, rand() % 1024); + ETagDBPtr->UpdateETag(wxSplitFilename, wxSETag); + + } + + if (EditMode == FALSE){ + + ActMgrPtr->AddTask(0, cmbDisplayAs->GetValue(), wxSContactAccount, wxSDataURL, wxSplitFilename, FilenameFinal, wxSData); + EditMode = TRUE; + FMTimer.SetFilename(FilenameFinal); + FMTimer.UpdateTimestamp(); + FMTimer.Start(10000, FALSE); + + } + else { + + ActMgrPtr->AddTask(1, cmbDisplayAs->GetValue(), wxSContactAccount, wxSDataURL, wxSplitFilename, FilenameFinal, wxSData); + FMTimer.UpdateTimestamp(); + FMTimer.Start(10000, FALSE); + + } + + } + + // Send a notification to update the main window + // with the new details. + + UCNotif *ucd; + ucd = new UCNotif; + + // TODO: Workout nickname settings by priority and + // type. + + ucd->ContactAccount = wxSContactAccount; + ucd->ContactFilename = FilenameFinal; + ucd->ContactName = cmbDisplayAs->GetValue(); + ucd->ContactNameArray = ContactData.GetName(); + + for (std::map::iterator gniter = GeneralNicknamesList.begin(); + gniter != GeneralNicknamesList.end(); gniter++){ + + ucd->ContactNickname = gniter->second; + break; + + } + + wxCommandEvent event(CE_UPDATECONTACTLIST); + event.SetClientData(ucd); + wxPostEvent(MainPtr, event); + +} + +void frmContactEditor::SaveCloseContact( wxCommandEvent& event ) +{ + + // Save the updated contact data and close the form. + +} + +void frmContactEditor::CloseContact( wxCommandEvent& event ) +{ + + Close(); + +} + +void frmContactEditor::CloseWindow( wxCloseEvent& event ) +{ + + // TODO: Check if any changes have been made, + // ask if the changes should be made, process + // action based on question and then close. + + WindowData *WData = new WindowData; + + WData->DataType = 1; + WData->WindowPointer = this; + WData->WindowID = ContactEditorUID; + + wxCommandEvent delevent(WINDOW_CLOSE); + delevent.SetClientData(WData); + wxPostEvent(GetParent(), delevent); + + Destroy(); + +} + + +void frmContactEditor::CutText( wxCommandEvent& event ) +{ + // This function left empty for future implementation. +} + +void frmContactEditor::CopyText( wxCommandEvent& event ) +{ + // This function left empty for future implementation. +} + +void frmContactEditor::PasteText( wxCommandEvent& event ) +{ + // This function left empty for future implementation. +} + +void frmContactEditor::SetupContact( wxString AccountName ) +{ + + wxSContactAccount = AccountName; + +} + +bool frmContactEditor::ProcessEvent(wxEvent& event) +{ + + // This section has been taken from the wxWidgets sample code of richtext.cpp + // so that simple Cut/Copy/Paste code can be made. + + // As this code comes from the samples of the wxWidgets library, this is licenced + // under the wxWindows Library Licence and is compatable with the LGPL and is + // compatable with Xestia Address Book's licence. + + if (event.IsCommandEvent() && !event.IsKindOf(CLASSINFO(wxChildFocusEvent))) + { + // Problem: we can get infinite recursion because the events + // climb back up to this frame, and repeat. + // Assume that command events don't cause another command event + // to be called, so we can rely on inCommand not being overwritten + + static int s_eventType = 0; + static wxWindowID s_id = 0; + + if (s_id != event.GetId() && s_eventType != event.GetEventType()) + { + s_eventType = event.GetEventType(); + s_id = event.GetId(); + + wxWindow* focusWin = wxFindFocusDescendant(this); + if (focusWin && focusWin->GetEventHandler()->ProcessEvent(event)) + { + //s_command = NULL; + s_eventType = 0; + s_id = 0; + return true; + } + s_eventType = 0; + s_id = 0; + } + else + { + return false; + } + } + + return wxFrame::ProcessEvent(event); +} + +void frmContactEditor::SetupHeaders() +{ + + /* Items for the General Tab */ + + SetupColumn(CE_NICKNAME, lboNicknames); + SetupColumn(CE_ADDRESS, lboAddresses); + SetupColumn(CE_EMAIL, lboEmails); + SetupColumn(CE_IM, lboIM); + SetupColumn(CE_TELEPHONE, lboTelephone); + SetupColumn(CE_LANG, lboLanguages); + SetupColumn(CE_TZ, lboTimezones); + SetupColumn(CE_GEOPOSITION, lboGeoposition); + SetupColumn(CE_RELATED, lboRelated); + SetupColumn(CE_WEBSITE, lboWebsites); + SetupColumn(CE_TITLE, lboTitles); + SetupColumn(CE_ROLE, lboRoles); + SetupColumn(CE_ORG, lboOrganisations); + SetupColumn(CE_NOTE, lboNotes); + + /* Items for the Home Tab */ + + SetupColumn(CE_NICKNAME, lboHomeNicknames); + SetupColumn(CE_ADDRESS, lboHomeAddresses); + SetupColumn(CE_EMAIL, lboHomeEmails); + SetupColumn(CE_IM, lboHomeIM); + SetupColumn(CE_TELEPHONE, lboHomeTelephone); + SetupColumn(CE_LANG, lboHomeLanguages); + SetupColumn(CE_TZ, lboHomeTimezones); + SetupColumn(CE_GEOPOSITION, lboHomeGeoposition); + SetupColumn(CE_WEBSITE, lboHomeWebsites); + SetupColumn(CE_TITLE, lboHomeTitles); + SetupColumn(CE_ROLE, lboHomeRoles); + SetupColumn(CE_ORG, lboHomeOrganisations); + SetupColumn(CE_NOTE, lboHomeNotes); + + /* Items for the Business Tab */ + + SetupColumn(CE_NICKNAME, lboBusinessNicknames); + SetupColumn(CE_ADDRESS, lboBusinessAddresses); + SetupColumn(CE_EMAIL, lboBusinessEmail); + SetupColumn(CE_IM, lboBusinessIM); + SetupColumn(CE_TELEPHONE, lboBusinessTelephone); + SetupColumn(CE_LANG, lboBusinessLanguages); + SetupColumn(CE_TZ, lboBusinessTimezones); + SetupColumn(CE_GEOPOSITION, lboBusinessGeoposition); + SetupColumn(CE_WEBSITE, lboBusinessWebsites); + SetupColumn(CE_TITLE, lboBusinessTitles); + SetupColumn(CE_ROLE, lboBusinessRoles); + SetupColumn(CE_ORG, lboBusinessOrganisations); + SetupColumn(CE_NOTE, lboBusinessNotes); + + /* Items for the Categories Tab */ + + SetupColumn(CE_CATEGORIES, lboCategories); + + /* Items for the Groups Tab */ + + SetupColumn(CE_GROUPS, lboGroups); + + /* Items for the Pictures and Logos Tab */ + + SetupColumn(CE_PICTURES, lboPictures); + SetupColumn(CE_PICTURES, lboLogos); + + /* Items for the Sounds Tab */ + + SetupColumn(CE_SOUNDS, lboSounds); + + /* Items for the Calendaring Tab */ + + SetupColumn(CE_CALENDAR, lboCalendarAddresses); + SetupColumn(CE_CALENDAR, lboCalendarRequestAddress); + SetupColumn(CE_CALENDAR, lboFreeBusyAddresses); + + /* Items for the Security Tab */ + + SetupColumn(CE_KEY, lboKeys); + + /* Items for the Other Tab */ + + SetupColumn(CE_TOKEN, lboVendorNamespace); + SetupColumn(CE_TOKEN, lboXToken); + +} + +void frmContactEditor::SetupColumn(wxString ColumnType, wxListCtrl *ListCtrl) +{ + + wxListItem coldata; + + if (ColumnType == CE_NICKNAME){ + + coldata.SetId(0); + coldata.SetText(_("Nickname")); + coldata.SetWidth(128); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_ADDRESS){ + + coldata.SetId(0); + coldata.SetText(_("Address")); + coldata.SetWidth(128); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Town")); + coldata.SetWidth(64); + ListCtrl->InsertColumn(1, coldata); + + coldata.SetId(2); + coldata.SetText(_("County")); + coldata.SetWidth(64); + ListCtrl->InsertColumn(2, coldata); + + coldata.SetId(3); + coldata.SetText(_("Post code")); + coldata.SetWidth(48); + ListCtrl->InsertColumn(3, coldata); + + coldata.SetId(4); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(4, coldata); + + } else if (ColumnType == CE_EMAIL){ + + coldata.SetId(0); + coldata.SetText(_("Email address")); + coldata.SetWidth(304); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_IM){ + + coldata.SetId(0); + coldata.SetText(_("Type")); + coldata.SetWidth(64); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Address")); + coldata.SetWidth(240); + ListCtrl->InsertColumn(1, coldata); + + coldata.SetId(2); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(2, coldata); + + } else if (ColumnType == CE_TELEPHONE){ + + coldata.SetId(0); + coldata.SetText(_("Telephone number")); + coldata.SetWidth(128); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Type")); + coldata.SetWidth(64); + ListCtrl->InsertColumn(1, coldata); + + coldata.SetId(2); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(2, coldata); + + } else if (ColumnType == CE_LANG){ + + coldata.SetId(0); + coldata.SetText(_("Language")); + coldata.SetWidth(128); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_TZ){ + + coldata.SetId(0); + coldata.SetText(_("Timezone")); + coldata.SetWidth(192); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_RELATED){ + + coldata.SetId(0); + coldata.SetText(_("Type")); + coldata.SetWidth(64); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Name/Description")); + coldata.SetWidth(192); + ListCtrl->InsertColumn(1, coldata); + + coldata.SetId(2); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(2, coldata); + + } else if (ColumnType == CE_WEBSITE){ + + coldata.SetId(0); + coldata.SetText(_("Website")); + coldata.SetWidth(288); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_TITLE){ + + coldata.SetId(0); + coldata.SetText(_("Title")); + coldata.SetWidth(288); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_ROLE){ + + coldata.SetId(0); + coldata.SetText(_("Role")); + coldata.SetWidth(288); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_ORG){ + + coldata.SetId(0); + coldata.SetText(_("Organisation")); + coldata.SetWidth(288); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_NOTE){ + + coldata.SetId(0); + coldata.SetText(_("Notes")); + coldata.SetWidth(288); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_CATEGORIES){ + + coldata.SetId(0); + coldata.SetText(_("Category")); + coldata.SetWidth(320); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_GROUPS){ + + coldata.SetId(0); + coldata.SetText(_("Member")); + coldata.SetWidth(320); + ListCtrl->InsertColumn(0, coldata); + + } else if (ColumnType == CE_GEOPOSITION){ + + coldata.SetId(0); + coldata.SetText(_("Geoposition")); + coldata.SetWidth(320); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(1, coldata); + + } else if (ColumnType == CE_PICTURES){ + + coldata.SetId(0); + coldata.SetText(_("Pictures")); + coldata.SetWidth(128); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Type")); + coldata.SetWidth(64); + ListCtrl->InsertColumn(1, coldata); + + coldata.SetId(2); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(2, coldata); + + } else if (ColumnType == CE_SOUNDS){ + + coldata.SetId(0); + coldata.SetText(_("Sounds")); + coldata.SetWidth(128); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Type")); + coldata.SetWidth(64); + ListCtrl->InsertColumn(1, coldata); + + coldata.SetId(2); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(2, coldata); + + } else if (ColumnType == CE_CALENDAR){ + + coldata.SetId(0); + coldata.SetText(_("Calendar Address")); + coldata.SetWidth(224); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Type")); + coldata.SetWidth(64); + ListCtrl->InsertColumn(1, coldata); + + coldata.SetId(2); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(2, coldata); + + } else if (ColumnType == CE_KEY){ + + coldata.SetId(0); + coldata.SetText(_("Key information")); + coldata.SetWidth(224); + ListCtrl->InsertColumn(0, coldata); + + coldata.SetId(1); + coldata.SetText(_("Type")); + coldata.SetWidth(64); + ListCtrl->InsertColumn(1, coldata); + + coldata.SetId(2); + coldata.SetText(_("Pri.")); + coldata.SetWidth(32); + ListCtrl->InsertColumn(2, coldata); + + } else if (ColumnType == CE_TOKEN){ + + coldata.SetId(0); + coldata.SetText(_("Token")); + coldata.SetWidth(320); + ListCtrl->InsertColumn(0, coldata); + + } + +} + +int frmContactEditor::GetLastInt(std::map *MapData){ + + /* + int intResult = 0; + + std::map::iterator iwxsit; + + for( iwxsit=(*MapData).begin(); iwxsit != (*MapData).end(); iwxsit++){ + intResult = (*iwxsit).first; + } + + return intResult; + */ + + intValueSeek++; + return intValueSeek; + +} + +int frmContactEditor::GetLastInt(std::map *MapData){ + + /* int intResult = 0; + + std::map::iterator iwxsit; + + for( iwxsit=(*MapData).begin(); iwxsit != (*MapData).end(); iwxsit++){ + intResult = (*iwxsit).first; + }*/ + + intValueSeek++; + return intValueSeek; + +} + +bool frmContactEditor::GetSelectedItem(wxListCtrl *ListCtrlPtr, + long *longSelected, + int *intSelectedData){ + + *longSelected = -1; + *intSelectedData = 0; + + *longSelected = ListCtrlPtr->GetNextItem(*longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (*longSelected == -1){ + return FALSE; + } + else { + return TRUE; + } + + *intSelectedData = ListCtrlPtr->GetItemData(*longSelected); + +} + +void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map* MapData){ + MapData->erase(IndexNum); +} + +void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map* MapData){ + MapData->erase(IndexNum); +} + +void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map* MapData){ + MapData->erase(IndexNum); +} + +void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map* MapData){ + MapData->erase(IndexNum); +} + +void frmContactEditor::ProcessSaveDataProc( wxString PropName, + std::map* MapData){ + + int intIterVal = (*iterDataPtr)->first; + + std::map::iterator intIter; + + intIter = MapData->find(intIterVal); + + int intPropValue; + + if (intIter->first == intIterVal){ + + intPropValue = intIter->second; + + if (intPropValue){ + + if (*boolAdditionalPtr == TRUE){ + + strPropertyPtr->Append(wxT(";")); + + } else { + + *boolAdditionalPtr = TRUE; + + } + + strPropertyPtr->Append(PropName + wxT("=") + wxString::Format(wxT("%i"), intPropValue)); + + *boolExtraPtr = TRUE; + + } + + } + +} + +void frmContactEditor::ProcessSaveDataProc( wxString PropName, + std::map* MapData){ + + int intIterVal; + + intIterVal = (*iterDataPtr)->first; + + std::map::iterator strIter; + + strIter = MapData->find(intIterVal); + + if (strIter == MapData->end()){ + + return; + + } + + wxString strPropValue; + + if (strIter->first == intIterVal){ + + strPropValue = strIter->second; + + if (!strPropValue.IsEmpty() && PropName.IsEmpty()){ + + strPropValue.Trim(); + strPropValue.Trim(); + + if (*boolAdditionalPtr == TRUE){ + + strPropertyPtr->Append(wxT(";")); + + } else { + + *boolAdditionalPtr = TRUE; + + } + + strPropertyPtr->Append(strPropValue); + + *boolExtraPtr = TRUE; + + return; + + } + + if (!strPropValue.IsEmpty()){ + + strPropValue.Trim(); + strPropValue.Trim(); + + if (*boolAdditionalPtr == TRUE){ + + strPropertyPtr->Append(wxT(";")); + + } else { + + *boolAdditionalPtr = TRUE; + + } + + // Look for semi-colon in property name and if there is then + // quote the value. + + if (PropName != wxT("TYPE")){ + + EscapeString(&strPropValue, FALSE); + + } + + if (strPropValue.find(wxT(";")) == wxNOT_FOUND && strPropValue.find(wxT(":")) == wxNOT_FOUND && + strPropValue.find(wxT(",")) == wxNOT_FOUND){ + + strPropertyPtr->Append(PropName + wxT("=") + strPropValue); + + } else { + + strPropertyPtr->Append(PropName + wxT("=\"") + strPropValue + wxT("\"")); + + } + + *boolExtraPtr = TRUE; + + } + + } + +} + +void frmContactEditor::ProcessSaveDataStrProc( wxString PropName, + std::map* MapData){ + + int intIterVal = (*iterDataStringPtr)->first; + + //std::map::iterator strIter; + + std::map::iterator stdstrIter; + + stdstrIter = MapData->find(intIterVal); + + if (stdstrIter->first == intIterVal){ + + wxString strPropValue(stdstrIter->second.c_str(), wxConvUTF8); + + if (!strPropValue.IsEmpty() && PropName.IsEmpty()){ + + strPropValue.Trim(); + strPropValue.Trim(); + + if (*boolAdditionalPtr == TRUE){ + + strPropertyPtr->Append(wxT(";")); + + } else { + + *boolAdditionalPtr = TRUE; + + } + + strPropertyPtr->Append(strPropValue); + + *boolExtraPtr = TRUE; + + return; + + } + + if (!strPropValue.IsEmpty()){ + + strPropValue.Trim(); + strPropValue.Trim(); + + if (*boolAdditionalPtr == TRUE){ + + strPropertyPtr->Append(wxT(";")); + + } else { + + *boolAdditionalPtr = TRUE; + + } + + // Look for semi-colon in property name and if there is then + // quote the value. + + if (PropName != wxT("TYPE")){ + + EscapeString(&strPropValue, FALSE); + + } + + if (strPropValue.find(wxT(";")) == wxNOT_FOUND && strPropValue.find(wxT(":")) == wxNOT_FOUND && + strPropValue.find(wxT(",")) == wxNOT_FOUND){ + + strPropertyPtr->Append(PropName + wxT("=") + strPropValue); + + } else { + + strPropertyPtr->Append(PropName + wxT("=\"") + strPropValue + wxT("\"")); + + } + + *boolExtraPtr = TRUE; + + } + + } + +} + + +void frmContactEditor::ProcessSaveDataStrProc( wxString PropName, + std::map* MapData){ + + int intIterVal = (*iterDataStringPtr)->first; + + std::map::iterator intIter; + + intIter = MapData->find(intIterVal); + + int intPropValue; + + if (intIter->first == intIterVal){ + + intPropValue = intIter->second; + + if (intPropValue){ + + if (*boolAdditionalPtr == TRUE){ + + strPropertyPtr->Append(wxT(";")); + + } else { + + *boolAdditionalPtr = TRUE; + + } + + strPropertyPtr->Append(PropName + wxT("=") + wxString::Format(wxT("%i"), intPropValue)); + + *boolExtraPtr = TRUE; + + } + + } + +} + +void frmContactEditor::ProcessSaveDataStrProc( wxString PropName, + std::map* MapData){ + + int intIterVal; + + intIterVal = (*iterDataStringPtr)->first; + + std::map::iterator strIter; + + strIter = MapData->find(intIterVal); + + wxString strPropValue; + + if (strIter->first == intIterVal){ + + strPropValue = strIter->second; + + if (!strPropValue.IsEmpty() && PropName.IsEmpty()){ + + strPropValue.Trim(); + strPropValue.Trim(); + + if (*boolAdditionalPtr == TRUE){ + + strPropertyPtr->Append(wxT(";")); + + } else { + + *boolAdditionalPtr = TRUE; + + } + + strPropertyPtr->Append(strPropValue); + + *boolExtraPtr = TRUE; + + return; + + } + + if (!strPropValue.IsEmpty()){ + + strPropValue.Trim(); + strPropValue.Trim(); + + if (*boolAdditionalPtr == TRUE){ + + strPropertyPtr->Append(wxT(";")); + + } else { + + *boolAdditionalPtr = TRUE; + + } + + // Look for semi-colon in property name and if there is then + // quote the value. + + if (PropName != wxT("TYPE")){ + + EscapeString(&strPropValue, FALSE); + + } + + if (strPropValue.find(wxT(";")) == wxNOT_FOUND && strPropValue.find(wxT(":")) == wxNOT_FOUND && + strPropValue.find(wxT(",")) == wxNOT_FOUND){ + + strPropertyPtr->Append(PropName + wxT("=") + strPropValue); + + } else { + + strPropertyPtr->Append(PropName + wxT("=\"") + strPropValue + wxT("\"")); + + } + + *boolExtraPtr = TRUE; + + } + + } + +} + +void frmContactEditor::ProcessCaptureStringsProc(wxString *strCapture){ + + CaptureString(strCapture, FALSE); + +} + +void frmContactEditor::ResetSaveProcessData(){ + + strValue.Clear(); + strValue2.Clear(); + strValue3.Clear(); + + boolValue = FALSE; + boolValue2 = FALSE; + intValue2 = 0; + intValue = 0; + +} + +void frmContactEditor::SetupPointers(frmActivityMgr *ActMgr, wxETagProcessTimer *ETagProc, + frmMain *MainPtrInc){ + + ActMgrPtr = ActMgr; + ETagTmrPtr = ETagProc; + MainPtr = MainPtrInc; + +} + +void frmContactEditor::ClearContact(){ + + // Clear out the GUI and values. + + // Clear GUI. + + txtTitle->Clear(); + txtForename->Clear(); + txtSurname->Clear(); + txtOtherNames->Clear(); + txtSuffix->Clear(); + cmbDisplayAs->Clear(); + cmbDisplayAs->SetValue(wxT("")); + wxDateTime EmptyDate; + wxBitmap EmptyBitmap; + dapAnniversary->SetValue(EmptyDate); + dapBirthday->SetValue(EmptyDate); + txtBirthday->Clear(); + txtAnniversary->Clear(); + cmbGender->Select(0); + txtGenderDescription->Clear(); + + lboNicknames->DeleteAllItems(); + lboHomeNicknames->DeleteAllItems(); + lboBusinessNicknames->DeleteAllItems(); + + lboAddresses->DeleteAllItems(); + lboHomeAddresses->DeleteAllItems(); + lboBusinessAddresses->DeleteAllItems(); + + lboEmails->DeleteAllItems(); + lboHomeEmails->DeleteAllItems(); + lboBusinessEmail->DeleteAllItems(); + + lboIM->DeleteAllItems(); + lboHomeIM->DeleteAllItems(); + lboBusinessIM->DeleteAllItems(); + + lboTelephone->DeleteAllItems(); + lboHomeTelephone->DeleteAllItems(); + lboBusinessTelephone->DeleteAllItems(); + + lboLanguages->DeleteAllItems(); + lboHomeLanguages->DeleteAllItems(); + lboBusinessLanguages->DeleteAllItems(); + + lboTimezones->DeleteAllItems(); + lboHomeTimezones->DeleteAllItems(); + lboBusinessTimezones->DeleteAllItems(); + + lboGeoposition->DeleteAllItems(); + lboHomeGeoposition->DeleteAllItems(); + lboBusinessGeoposition->DeleteAllItems(); + + lboRelated->DeleteAllItems(); + + lboWebsites->DeleteAllItems(); + lboHomeWebsites->DeleteAllItems(); + lboBusinessWebsites->DeleteAllItems(); + + lboTitles->DeleteAllItems(); + lboHomeTitles->DeleteAllItems(); + lboBusinessTitles->DeleteAllItems(); + + lboRoles->DeleteAllItems(); + lboHomeRoles->DeleteAllItems(); + lboBusinessRoles->DeleteAllItems(); + + lboOrganisations->DeleteAllItems(); + lboHomeOrganisations->DeleteAllItems(); + lboBusinessOrganisations->DeleteAllItems(); + + lboNotes->DeleteAllItems(); + lboHomeNotes->DeleteAllItems(); + lboBusinessNotes->DeleteAllItems(); + + lboCategories->DeleteAllItems(); + + lboGroups->DeleteAllItems(); + + // Clear Picture + lboPictures->DeleteAllItems(); + imgPicture->SetBitmap(EmptyBitmap); + + // Clear Logo + lboLogos->DeleteAllItems(); + imgLogo->SetBitmap(EmptyBitmap); + + lboSounds->DeleteAllItems(); + + lboCalendarAddresses->DeleteAllItems(); + lboCalendarRequestAddress->DeleteAllItems(); + lboFreeBusyAddresses->DeleteAllItems(); + + lboKeys->DeleteAllItems(); + + lboVendorNamespace->DeleteAllItems(); + lboXToken->DeleteAllItems(); + + // Clear values out. + + wxString NameTitle; + wxString NameForename; + wxString NameSurname; + wxString NameOtherNames; + wxString NameSuffix; + wxString NameNickname; + wxString NameDisplayAs; + wxString NameLanguage; + wxString NameAltID; + wxString NameTokens; + + wxString Birthday; + wxString BirthdayAltID; + wxString BirthdayCalScale; + wxString BirthdayTokens; + wxString Anniversary; + wxString AnniversaryAltID; + wxString AnniversaryCalScale; + wxString AnniversaryTokens; + + wxString Gender; + wxString GenderDetails; + wxString GenderTokens; + + wxString UIDToken; + + /* We don't use these at the moment but we want to keep + them for compatability reasons */ + + /*std::map ExtraFullNames;*/ + /*std::map ExtraNicknames;*/ + + FullNamesList.clear(); + FullNamesListType.clear(); + FullNamesListLanguage.clear(); + FullNamesListAltID.clear(); + FullNamesListPID.clear(); + FullNamesListTokens.clear(); + FullNamesListPref.clear(); + + GeneralNicknamesList.clear(); + GeneralNicknamesListType.clear(); + GeneralNicknamesListLanguage.clear(); + GeneralNicknamesListAltID.clear(); + GeneralNicknamesListPID.clear(); + GeneralNicknamesListTokens.clear(); + GeneralNicknamesListPref.clear(); + + GeneralAddressList.clear(); + GeneralAddressListTown.clear(); + GeneralAddressListCounty.clear(); + GeneralAddressListPostCode.clear(); + GeneralAddressListCountry.clear(); + GeneralAddressListLabel.clear(); + GeneralAddressListLang.clear(); + GeneralAddressListAltID.clear(); + GeneralAddressListPID.clear(); + GeneralAddressListTokens.clear(); + GeneralAddressListGeo.clear(); + GeneralAddressListTimezone.clear(); + GeneralAddressListType.clear(); + GeneralAddressListMediatype.clear(); + GeneralAddressListPref.clear(); + + GeneralEmailList.clear(); + GeneralEmailListAltID.clear(); + GeneralEmailListPID.clear(); + GeneralEmailListType.clear(); + GeneralEmailListTokens.clear(); + GeneralEmailListPref.clear(); + + GeneralIMList.clear(); + GeneralIMListAltID.clear(); + GeneralIMListPID.clear(); + GeneralIMListType.clear(); + GeneralIMListTokens.clear(); + GeneralIMListMediatype.clear(); + GeneralIMListPref.clear(); + + GeneralTelephoneList.clear(); + GeneralTelephoneListAltID.clear(); + GeneralTelephoneListPID.clear(); + GeneralTelephoneListType.clear(); + GeneralTelephoneListTokens.clear(); + GeneralTelephoneListPref.clear(); + + GeneralLanguageList.clear(); + GeneralLanguageListAltID.clear(); + GeneralLanguageListPID.clear(); + GeneralLanguageListType.clear(); + GeneralLanguageListTokens.clear(); + GeneralLanguageListPref.clear(); + + GeneralTZList.clear(); + GeneralTZListAltID.clear(); + GeneralTZListPID.clear(); + GeneralTZListType.clear(); + GeneralTZListTokens.clear(); + GeneralTZListMediatype.clear(); + GeneralTZListPref.clear(); + + GeneralGeographyList.clear(); + GeneralGeographyListAltID.clear(); + GeneralGeographyListPID.clear(); + GeneralGeographyListType.clear(); + GeneralGeographyListTokens.clear(); + GeneralGeographyListMediatype.clear(); + GeneralGeographyListPref.clear(); + + GeneralRelatedList.clear(); + GeneralRelatedListRelType.clear(); + GeneralRelatedListLanguage.clear(); + GeneralRelatedListAltID.clear(); + GeneralRelatedListPID.clear(); + GeneralRelatedListType.clear(); + GeneralRelatedListTokens.clear(); + GeneralRelatedListPref.clear(); + + GeneralWebsiteList.clear(); + GeneralWebsiteListAltID.clear(); + GeneralWebsiteListPID.clear(); + GeneralWebsiteListType.clear(); + GeneralWebsiteListTokens.clear(); + GeneralWebsiteListMediatype.clear(); + GeneralWebsiteListPref.clear(); + + GeneralTitleList.clear(); + GeneralTitleListLanguage.clear(); + GeneralTitleListAltID.clear(); + GeneralTitleListPID.clear(); + GeneralTitleListType.clear(); + GeneralTitleListTokens.clear(); + GeneralTitleListPref.clear(); + + GeneralRoleList.clear(); + GeneralRoleListLanguage.clear(); + GeneralRoleListAltID.clear(); + GeneralRoleListPID.clear(); + GeneralRoleListType.clear(); + GeneralRoleListTokens.clear(); + GeneralRoleListPref.clear(); + + GeneralOrganisationsList.clear(); + GeneralOrganisationsListLanguage.clear(); + GeneralOrganisationsListAltID.clear(); + GeneralOrganisationsListPID.clear(); + GeneralOrganisationsListType.clear(); + GeneralOrganisationsListTokens.clear(); + GeneralOrganisationsListSortAs.clear(); + GeneralOrganisationsListPref.clear(); + + GeneralNoteList.clear(); + GeneralNoteListLanguage.clear(); + GeneralNoteListAltID.clear(); + GeneralNoteListPID.clear(); + GeneralNoteListType.clear(); + GeneralNoteListTokens.clear(); + GeneralNoteListPref.clear(); + + /* Items on Home Tab */ + + HomeNicknamesList.clear(); + HomeNicknamesListType.clear(); + HomeNicknamesListLanguage.clear(); + HomeNicknamesListAltID.clear(); + HomeNicknamesListPID.clear(); + HomeNicknamesListTokens.clear(); + HomeNicknamesListPref.clear(); + + HomeAddressList.clear(); + HomeAddressListTown.clear(); + HomeAddressListCounty.clear(); + HomeAddressListPostCode.clear(); + HomeAddressListCountry.clear(); + HomeAddressListLabel.clear(); + HomeAddressListLang.clear(); + HomeAddressListAltID.clear(); + HomeAddressListPID.clear(); + HomeAddressListTokens.clear(); + HomeAddressListGeo.clear(); + HomeAddressListTimezone.clear(); + HomeAddressListType.clear(); + HomeAddressListMediatype.clear(); + HomeAddressListPref.clear(); + + HomeEmailList.clear(); + HomeEmailListAltID.clear(); + HomeEmailListPID.clear(); + HomeEmailListType.clear(); + HomeEmailListTokens.clear(); + HomeEmailListPref.clear(); + + HomeIMList.clear(); + HomeIMListAltID.clear(); + HomeIMListPID.clear(); + HomeIMListType.clear(); + HomeIMListTokens.clear(); + HomeIMListMediatype.clear(); + HomeIMListPref.clear(); + + HomeTelephoneList.clear(); + HomeTelephoneListAltID.clear(); + HomeTelephoneListPID.clear(); + HomeTelephoneListType.clear(); + HomeTelephoneListTokens.clear(); + HomeTelephoneListPref.clear(); + + HomeLanguageList.clear(); + HomeLanguageListAltID.clear(); + HomeLanguageListPID.clear(); + HomeLanguageListType.clear(); + HomeLanguageListTokens.clear(); + HomeLanguageListPref.clear(); + + HomeTZList.clear(); + HomeTZListAltID.clear(); + HomeTZListPID.clear(); + HomeTZListType.clear(); + HomeTZListTokens.clear(); + HomeTZListMediatype.clear(); + HomeTZListPref.clear(); + + HomeGeographyList.clear(); + HomeGeographyListAltID.clear(); + HomeGeographyListPID.clear(); + HomeGeographyListType.clear(); + HomeGeographyListTokens.clear(); + HomeGeographyListMediatype.clear(); + HomeGeographyListPref.clear(); + + HomeRelatedList.clear(); + HomeRelatedListRelType.clear(); + HomeRelatedListLanguage.clear(); + HomeRelatedListAltID.clear(); + HomeRelatedListPID.clear(); + HomeRelatedListType.clear(); + HomeRelatedListTokens.clear(); + HomeRelatedListPref.clear(); + + HomeWebsiteList.clear(); + HomeWebsiteListAltID.clear(); + HomeWebsiteListPID.clear(); + HomeWebsiteListType.clear(); + HomeWebsiteListTokens.clear(); + HomeWebsiteListMediatype.clear(); + HomeWebsiteListPref.clear(); + + HomeTitleList.clear(); + HomeTitleListLanguage.clear(); + HomeTitleListAltID.clear(); + HomeTitleListPID.clear(); + HomeTitleListType.clear(); + HomeTitleListTokens.clear(); + HomeTitleListPref.clear(); + + HomeRoleList.clear(); + HomeRoleListLanguage.clear(); + HomeRoleListAltID.clear(); + HomeRoleListPID.clear(); + HomeRoleListType.clear(); + HomeRoleListTokens.clear(); + HomeRoleListPref.clear(); + + HomeOrganisationsList.clear(); + HomeOrganisationsListLanguage.clear(); + HomeOrganisationsListAltID.clear(); + HomeOrganisationsListPID.clear(); + HomeOrganisationsListType.clear(); + HomeOrganisationsListTokens.clear(); + HomeOrganisationsListSortAs.clear(); + HomeOrganisationsListPref.clear(); + + HomeNoteList.clear(); + HomeNoteListLanguage.clear(); + HomeNoteListAltID.clear(); + HomeNoteListPID.clear(); + HomeNoteListType.clear(); + HomeNoteListTokens.clear(); + HomeNoteListPref.clear(); + + /* Items on the Business tab */ + + BusinessNicknamesList.clear(); + BusinessNicknamesListType.clear(); + BusinessNicknamesListLanguage.clear(); + BusinessNicknamesListAltID.clear(); + BusinessNicknamesListPID.clear(); + BusinessNicknamesListTokens.clear(); + BusinessNicknamesListPref.clear(); + + BusinessAddressList.clear(); + BusinessAddressListTown.clear(); + BusinessAddressListCounty.clear(); + BusinessAddressListPostCode.clear(); + BusinessAddressListCountry.clear(); + BusinessAddressListLabel.clear(); + BusinessAddressListLang.clear(); + BusinessAddressListAltID.clear(); + BusinessAddressListPID.clear(); + BusinessAddressListTokens.clear(); + BusinessAddressListGeo.clear(); + BusinessAddressListTimezone.clear(); + BusinessAddressListType.clear(); + BusinessAddressListMediatype.clear(); + BusinessAddressListPref.clear(); + + BusinessEmailList.clear(); + BusinessEmailListAltID.clear(); + BusinessEmailListPID.clear(); + BusinessEmailListType.clear(); + BusinessEmailListTokens.clear(); + BusinessEmailListPref.clear(); + + BusinessIMList.clear(); + BusinessIMListAltID.clear(); + BusinessIMListPID.clear(); + BusinessIMListType.clear(); + BusinessIMListTokens.clear(); + BusinessIMListMediatype.clear(); + BusinessIMListPref.clear(); + + BusinessTelephoneList.clear(); + BusinessTelephoneListAltID.clear(); + BusinessTelephoneListPID.clear(); + BusinessTelephoneListType.clear(); + BusinessTelephoneListTokens.clear(); + BusinessTelephoneListPref.clear(); + + BusinessLanguageList.clear(); + BusinessLanguageListAltID.clear(); + BusinessLanguageListPID.clear(); + BusinessLanguageListType.clear(); + BusinessLanguageListTokens.clear(); + BusinessLanguageListPref.clear(); + + BusinessTZList.clear(); + BusinessTZListAltID.clear(); + BusinessTZListPID.clear(); + BusinessTZListType.clear(); + BusinessTZListTokens.clear(); + BusinessTZListMediatype.clear(); + BusinessTZListPref.clear(); + + BusinessGeographyList.clear(); + BusinessGeographyListAltID.clear(); + BusinessGeographyListPID.clear(); + BusinessGeographyListType.clear(); + BusinessGeographyListTokens.clear(); + BusinessGeographyListMediatype.clear(); + BusinessGeographyListPref.clear(); + + BusinessRelatedList.clear(); + BusinessRelatedListRelType.clear(); + BusinessRelatedListLanguage.clear(); + BusinessRelatedListAltID.clear(); + BusinessRelatedListPID.clear(); + BusinessRelatedListType.clear(); + BusinessRelatedListTokens.clear(); + BusinessRelatedListPref.clear(); + + BusinessWebsiteList.clear(); + BusinessWebsiteListAltID.clear(); + BusinessWebsiteListPID.clear(); + BusinessWebsiteListType.clear(); + BusinessWebsiteListTokens.clear(); + BusinessWebsiteListMediatype.clear(); + BusinessWebsiteListPref.clear(); + + BusinessTitleList.clear(); + BusinessTitleListLanguage.clear(); + BusinessTitleListAltID.clear(); + BusinessTitleListPID.clear(); + BusinessTitleListType.clear(); + BusinessTitleListTokens.clear(); + BusinessTitleListPref.clear(); + + BusinessRoleList.clear(); + BusinessRoleListLanguage.clear(); + BusinessRoleListAltID.clear(); + BusinessRoleListPID.clear(); + BusinessRoleListType.clear(); + BusinessRoleListTokens.clear(); + BusinessRoleListPref.clear(); + + BusinessOrganisationsList.clear(); + BusinessOrganisationsListLanguage.clear(); + BusinessOrganisationsListAltID.clear(); + BusinessOrganisationsListPID.clear(); + BusinessOrganisationsListType.clear(); + BusinessOrganisationsListTokens.clear(); + BusinessOrganisationsListSortAs.clear(); + BusinessOrganisationsListPref.clear(); + + BusinessNoteList.clear(); + BusinessNoteListLanguage.clear(); + BusinessNoteListAltID.clear(); + BusinessNoteListPID.clear(); + BusinessNoteListType.clear(); + BusinessNoteListTokens.clear(); + BusinessNoteListPref.clear(); + + /* Items on the Categories tab */ + + CategoriesList.clear(); + CategoriesListAltID.clear(); + CategoriesListPID.clear(); + CategoriesListType.clear(); + CategoriesListTokens.clear(); + CategoriesListPref.clear(); + + /* Items on the Groups tab */ + + GroupsList.clear(); + GroupsListAltID.clear(); + GroupsListPID.clear(); + GroupsListType.clear(); + GroupsListTokens.clear(); + GroupsListPref.clear(); + + /* Items on the Pictures tab */ + + PicturesList.clear(); + PicturesListAltID.clear(); + PicturesListPID.clear(); + PicturesListType.clear(); + PicturesListPicEncType.clear(); + PicturesListPictureType.clear(); + PicturesListTokens.clear(); + PicturesListMediatype.clear(); + PicturesListPref.clear(); + + /* Items on the Logos tab */ + + LogosList.clear(); + LogosListAltID.clear(); + LogosListPID.clear(); + LogosListType.clear(); + LogosListPicEncType.clear(); + LogosListPictureType.clear(); + LogosListTokens.clear(); + LogosListMediatype.clear(); + LogosListPref.clear(); + + /* Items on the Sounds tab */ + + SoundsList.clear(); + SoundsListAltID.clear(); + SoundsListPID.clear(); + SoundsListType.clear(); + SoundsListAudioEncType.clear(); + SoundsListAudioType.clear(); + SoundsListTokens.clear(); + SoundsListMediatype.clear(); + SoundsListPref.clear(); + + /* Items on the Calendaring tab */ + + CalendarList.clear(); + CalendarListAltID.clear(); + CalendarListPID.clear(); + CalendarListType.clear(); + CalendarListTokens.clear(); + CalendarListMediatype.clear(); + CalendarListPref.clear(); + + CalendarRequestList.clear(); + CalendarRequestListAltID.clear(); + CalendarRequestListPID.clear(); + CalendarRequestListType.clear(); + CalendarRequestListTokens.clear(); + CalendarRequestListMediatype.clear(); + CalendarRequestListPref.clear(); + + FreeBusyList.clear(); + FreeBusyListAltID.clear(); + FreeBusyListPID.clear(); + FreeBusyListType.clear(); + FreeBusyListTokens.clear(); + FreeBusyListMediatype.clear(); + FreeBusyListPref.clear(); + + /* Items on the Security tab */ + + KeyList.clear(); + KeyListAltID.clear(); + KeyListPID.clear(); + KeyListKeyType.clear(); + KeyListDataType.clear(); + KeyListDataEncType.clear(); + KeyListType.clear(); + KeyListTokens.clear(); + KeyListPref.clear(); + + /* Items on the Other tab */ + + VendorList.clear(); + VendorListPEN.clear(); + VendorListElement.clear(); + + XTokenList.clear(); + XTokenListTokens.clear(); + + wxSContactFilename.Clear(); + boolContactModified = FALSE; + intSeekSelectedData = 0; + + /* Section for saving/loading data */ + + ETag.Clear(); + ETagOriginal.Clear(); + + strValue.Clear(); + strValue2.Clear(); + strValue3.Clear(); + + boolValue = FALSE; + boolValue2 = FALSE; + intValue = 0; + intValue2 = 0; + intValue3 = 0; + BinaryDataProc = FALSE; + EditMode = TRUE; + DialogOpen = FALSE; + + PictureImage = wxNullBitmap; + LogoImage = wxNullBitmap; + +} + +void frmContactEditor::ContactFileChanged( wxCommandEvent &event ){ + + // Stop the timer. + + FMTimer.Stop(); + + // Check if a dialog is already open. + + if (DialogOpen == TRUE){ + + FMTimer.Start(1000, FALSE); + return; + + } + + // Bring up a Yes/No modal dialog asking if the changed file should be reloaded. + + int QuestionResponse; + + QuestionResponse = wxMessageBox(_("This contact has changed. Saving the contact may overwrite or lose any changes done by that change. Do you want to reload the contact with the changes made?"), _("Contact information has changed"), wxYES_NO, this); + + if (QuestionResponse == wxYES){ + + // Reload the contact. + wxString wxSReloadContactName = wxSContactFilename; + ClearContact(); + LoadContact(wxSReloadContactName); + + } else { + + // Do nothing other than update the timestamp so this message + // doesn't appear until the next time it changes. + + FMTimer.UpdateTimestamp(); + + } + + // Start the timer. + + FMTimer.Start(); + +} + +void frmContactEditor::UpdateMembersTab( wxCommandEvent &event ){ + + if (cmbType->GetCurrentSelection() == 2){ + + tabMembers->Show(); + + } else { + + tabMembers->Hide(); + + } + +} + +void frmContactEditor::SetUID(int UID){ + + ContactEditorUID = UID; + +} + +void frmContactEditor::UpdateDisplayAs( wxCommandEvent &event ){ + + // Generate a drop down list of common names to use for the display as drop down box. + + wxString SetValue = cmbDisplayAs->GetValue(); + + cmbDisplayAs->Clear(); + cmbDisplayAs->Append(txtForename->GetValue() + wxT(" ") + txtSurname->GetValue()); + if (!txtOtherNames->GetValue().IsEmpty()){ + + cmbDisplayAs->Append(txtForename->GetValue() + wxT(" ") + txtOtherNames->GetValue() + wxT(" ") + txtForename->GetValue()); + + } + cmbDisplayAs->Append(txtSurname->GetValue() + wxT(", ") + txtForename->GetValue()); + if (!txtOtherNames->GetValue().IsEmpty()){ + + cmbDisplayAs->Append(txtForename->GetValue() + wxT(", ") + wxT(" ") + txtForename->GetValue() + wxT(" ") + txtOtherNames->GetValue()); + + } + if (!txtTitle->GetValue().IsEmpty()){ + cmbDisplayAs->Append(txtTitle->GetValue() + wxT(" ") + txtSurname->GetValue() + wxT(" ") + txtForename->GetValue()); + } + + cmbDisplayAs->SetValue(SetValue); + + this->SetTitle(cmbDisplayAs->GetValue()); + +} + +void frmContactEditor::UpdateName( wxCommandEvent &event ){ + + this->SetTitle(cmbDisplayAs->GetValue()); + + WindowData *WData = new WindowData; + + WData->DataType = 1; + WData->WindowPointer = this; + WData->WindowID = ContactEditorUID; + + wxCommandEvent editevent(WINDOW_EDIT); + editevent.SetClientData(WData); + wxPostEvent(GetParent(), editevent); + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditor.h b/source/contacteditor/frmContactEditor.h new file mode 100644 index 0000000..f4dccc0 --- /dev/null +++ b/source/contacteditor/frmContactEditor.h @@ -0,0 +1,1191 @@ +#ifndef __frmContactEditor__ +#define __frmContactEditor__ + +#include + +#include +#include + +#include + +/** +@file +Subclass of frmContactEditorADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" +#include "../vcard/vcard.h" +#include "../common/textprocessing.h" +#include "../common/etag.h" +#include "../common/timers.h" + +#include "../frmActivityMgr.h" +#include "../frmMain.h" + +//// end generated include + +struct frmMain; +struct frmActivityMgr; + +// Special Audio Stream for detecting when a sound has stopped playing. +class AudioStream: public sf::Music +{ +private: + + bool onGetData(SoundStream::Chunk& data) + { + FilePlaying = TRUE; + bool running = sf::Music::onGetData(data); + if(!running) + OnMusicEnd(); + return running; + } +public: + void OnMusicEnd() { } + bool GetPlayingStatus(){ return FilePlaying; } + + +/* + void load(const sf::SoundBuffer& buffer) + { + // extract the audio samples from the sound buffer to our own container + m_samples.assign(buffer.getSamples(), buffer.getSamples() + buffer.getSampleCount()); + + // reset the current playing position + m_currentSample = 0; + + // initialize the base class + initialize(buffer.getChannelCount(), buffer.getSampleRate()); + } + + bool GetPlayingStatus(){ return FilePlaying; } + +private: + + virtual bool onGetData(Chunk& data) + { + // number of samples to stream every time the function is called; + // in a more robust implementation, it would rather be a fixed + // amount of time rather than an arbitrary number of samples + const int samplesToStream = 50000; + + // set the pointer to the next audio samples to be played + data.samples = &m_samples[m_currentSample]; + + // have we reached the end of the sound? + if (m_currentSample + samplesToStream <= m_samples.size()) + { + // end not reached: stream the samples and continue + data.sampleCount = samplesToStream; + m_currentSample += samplesToStream; + FilePlaying = TRUE; + return true; + } + else + { + // end of stream reached: stream the remaining samples and stop playback + data.sampleCount = m_samples.size() - m_currentSample; + m_currentSample = m_samples.size(); + FilePlaying = FALSE; + return false; + } + } + + virtual void onSeek(sf::Time TimeOffset) + { + // compute the corresponding sample index according to the sample rate and channel count + m_currentSample = static_cast(TimeOffset.asSeconds() * getSampleRate() * getChannelCount()); + } + + std::vector m_samples; + std::size_t m_currentSample; + + */ + bool FilePlaying = TRUE; +}; + +/** Implementing frmContactEditorADT */ +class frmContactEditor : public frmContactEditorADT +{ + protected: + // Handlers for frmContactEditorADT events. + void AddGeneralNickname( wxCommandEvent& event ); + void ModifyGeneralNickname( wxCommandEvent& event ); + void DeleteGeneralNickname( wxCommandEvent& event ); + void AddHomeNickname( wxCommandEvent& event ); + void ModifyHomeNickname( wxCommandEvent& event ); + void DeleteHomeNickname( wxCommandEvent& event ); + void AddBusinessNickname( wxCommandEvent& event ); + void ModifyBusinessNickname( wxCommandEvent& event ); + void DeleteBusinessNickname( wxCommandEvent& event ); + void AddGeneralAddress( wxCommandEvent& event ); + void ModifyGeneralAddress( wxCommandEvent& event ); + void DeleteGeneralAddress( wxCommandEvent& event ); + void AddGeneralEmail( wxCommandEvent& event ); + void ModifyGeneralEmail( wxCommandEvent& event ); + void DeleteGeneralEmail( wxCommandEvent& event ); + void AddGeneralIM( wxCommandEvent& event ); + void ModifyGeneralIM( wxCommandEvent& event ); + void DeleteGeneralIM( wxCommandEvent& event ); + void MoveGeneralIMUp( wxCommandEvent& event ); + void MoveGeneralIMDown( wxCommandEvent& event ); + void AddGeneralTelephone( wxCommandEvent& event ); + void ModifyGeneralTelephone( wxCommandEvent& event ); + void DeleteGeneralTelephone( wxCommandEvent& event ); + void AddGeneralLanguages( wxCommandEvent& event ); + void ModifyGeneralLanguages( wxCommandEvent& event ); + void DeleteGeneralLanguage( wxCommandEvent& event ); + void AddGeneralTimezone( wxCommandEvent& event ); + void ModifyGeneralTimezone( wxCommandEvent& event ); + void DeleteGeneralTimezone( wxCommandEvent& event ); + void AddGeneralGeoposition( wxCommandEvent& event ); + void ModifyGeneralGeoposition( wxCommandEvent& event ); + void DeleteGeneralGeoposition( wxCommandEvent& event ); + void AddGeneralRelated( wxCommandEvent& event ); + void ModifyGeneralRelated( wxCommandEvent& event ); + void DeleteGeneralRelated( wxCommandEvent& event ); + void AddGeneralWebsite( wxCommandEvent& event ); + void ModifyGeneralWebsite( wxCommandEvent& event ); + void DeleteGeneralWebsite( wxCommandEvent& event ); + void MoveGeneralWebsiteUp( wxCommandEvent& event ); + void MoveGeneralWebsiteDown( wxCommandEvent& event ); + void AddGeneralTitle( wxCommandEvent& event ); + void ModifyGeneralTitle( wxCommandEvent& event ); + void DeleteGeneralTitle( wxCommandEvent& event ); + void MoveGeneralTitleUp( wxCommandEvent& event ); + void MoveGeneralTitleDown( wxCommandEvent& event ); + void AddGeneralRole( wxCommandEvent& event ); + void ModifyGeneralRole( wxCommandEvent& event ); + void DeleteGeneralRole( wxCommandEvent& event ); + void MoveGeneralRoleUp( wxCommandEvent& event ); + void MoveGeneralRoleDown( wxCommandEvent& event ); + void AddGeneralOrganisation( wxCommandEvent& event ); + void ModifyGeneralOrganisation( wxCommandEvent& event ); + void DeleteGeneralOrganisation( wxCommandEvent& event ); + void MoveGeneralOrganisationUp( wxCommandEvent& event ); + void MoveGeneralOrganisationDown( wxCommandEvent& event ); + void AddGeneralNote( wxCommandEvent& event ); + void ModifyGeneralNote( wxCommandEvent& event ); + void DeleteGeneralNote( wxCommandEvent& event ); + void MoveGeneralNoteUp( wxCommandEvent& event ); + void MoveGeneralNoteDown( wxCommandEvent& event ); + void AddHomeAddress( wxCommandEvent& event ); + void ModifyHomeAddress( wxCommandEvent& event ); + void DeleteHomeAddress( wxCommandEvent& event ); + void AddHomeEmail( wxCommandEvent& event ); + void ModifyHomeEmail( wxCommandEvent& event ); + void DeleteHomeEmail( wxCommandEvent& event ); + void AddHomeIM( wxCommandEvent& event ); + void ModifyHomeIM( wxCommandEvent& event ); + void DeleteHomeIM( wxCommandEvent& event ); + void AddHomeTelephone( wxCommandEvent& event ); + void ModifyHomeTelephone( wxCommandEvent& event ); + void DeleteHomeTelephone( wxCommandEvent& event ); + void AddHomeLanguage( wxCommandEvent& event ); + void ModifyHomeLanguage( wxCommandEvent& event ); + void DeleteHomeLanguage( wxCommandEvent& event ); + void AddHomeTimezone( wxCommandEvent& event ); + void ModifyHomeTimezone( wxCommandEvent& event ); + void DeleteHomeTimezone( wxCommandEvent& event ); + void AddHomeGeoposition( wxCommandEvent& event ); + void ModifyHomeGeoposition( wxCommandEvent& event ); + void DeleteHomeGeoposition( wxCommandEvent& event ); + void AddHomeRelated( wxCommandEvent& event ); + void ModifyHomeRelated( wxCommandEvent& event ); + void DeleteHomeRelated( wxCommandEvent& event ); + void AddHomeWebsite( wxCommandEvent& event ); + void ModifyHomeWebsite( wxCommandEvent& event ); + void DeleteHomeWebsite( wxCommandEvent& event ); + void AddHomeTitle( wxCommandEvent& event ); + void ModifyHomeTitle( wxCommandEvent& event ); + void DeleteHomeTitle( wxCommandEvent& event ); + void AddHomeRole( wxCommandEvent& event ); + void ModifyHomeRole( wxCommandEvent& event ); + void DeleteHomeRole( wxCommandEvent& event ); + void MoveHomeRoleUp( wxCommandEvent& event ); + void MoveHomeRoleDown( wxCommandEvent& event ); + void AddHomeOrganisation( wxCommandEvent& event ); + void ModifyHomeOrganisation( wxCommandEvent& event ); + void DeleteHomeOrganisation( wxCommandEvent& event ); + void MoveHomeOrganisationUp( wxCommandEvent& event ); + void MoveHomeOrganisationDown( wxCommandEvent& event ); + void AddHomeNote( wxCommandEvent& event ); + void ModifyHomeNote( wxCommandEvent& event ); + void DeleteHomeNote( wxCommandEvent& event ); + void MoveHomeNoteUp( wxCommandEvent& event ); + void MoveHomeNoteDown( wxCommandEvent& event ); + void AddBusinessAddress( wxCommandEvent& event ); + void ModifyBusinessAddress( wxCommandEvent& event ); + void DeleteBusinessAddress( wxCommandEvent& event ); + void AddBusinessEmail( wxCommandEvent& event ); + void ModifyBusinessEmail( wxCommandEvent& event ); + void DeleteBusinessEmail( wxCommandEvent& event ); + void AddBusinessIM( wxCommandEvent& event ); + void ModifyBusinessIM( wxCommandEvent& event ); + void DeleteBusinessIM( wxCommandEvent& event ); + void AddBusinessTelephone( wxCommandEvent& event ); + void ModifyBusinessTelephone( wxCommandEvent& event ); + void DeleteBusinessTelephone( wxCommandEvent& event ); + void AddBusinessLanguage( wxCommandEvent& event ); + void ModifyBusinessLanguage( wxCommandEvent& event ); + void DeleteBusinessLanguage( wxCommandEvent& event ); + void AddBusinessTimezone( wxCommandEvent& event ); + void ModifyBusinessTimezone( wxCommandEvent& event ); + void DeleteBusinessTimezone( wxCommandEvent& event ); + void AddBusinessGeoposition( wxCommandEvent& event ); + void ModifyBusinessGeoposition( wxCommandEvent& event ); + void DeleteBusinessGeoposition( wxCommandEvent& event ); + void AddBusinessRelated( wxCommandEvent& event ); + void ModifyBusinessRelated( wxCommandEvent& event ); + void DeleteBusinessRelated( wxCommandEvent& event ); + void AddBusinessWebsite( wxCommandEvent& event ); + void ModifyBusinessWebsite( wxCommandEvent& event ); + void DeleteBusinessWebsite( wxCommandEvent& event ); + void AddBusinessTitle( wxCommandEvent& event ); + void ModifyBusinessTitle( wxCommandEvent& event ); + void DeleteBusinessTitle( wxCommandEvent& event ); + void MoveBusinessTitleUp( wxCommandEvent& event ); + void MoveBusinessTitleDown( wxCommandEvent& event ); + void AddBusinessRole( wxCommandEvent& event ); + void ModifyBusinessRole( wxCommandEvent& event ); + void DeleteBusinessRole( wxCommandEvent& event ); + void MoveBusinessRoleUp( wxCommandEvent& event ); + void MoveBusinessRoleDown( wxCommandEvent& event ); + void AddBusinessOrganisation( wxCommandEvent& event ); + void ModifyBusinessOrganisation( wxCommandEvent& event ); + void DeleteBusinessOrganisation( wxCommandEvent& event ); + void MoveBusinessOrganisationUp( wxCommandEvent& event ); + void MoveBusinessOrganisationDown( wxCommandEvent& event ); + void AddBusinessNote( wxCommandEvent& event ); + void ModifyBusinessNote( wxCommandEvent& event ); + void DeleteBusinessNote( wxCommandEvent& event ); + void MoveBusinessNoteUp( wxCommandEvent& event ); + void MoveBusinessNoteDown( wxCommandEvent& event ); + void AddCategory( wxCommandEvent& event ); + void ModifyCategory( wxCommandEvent& event ); + void DeleteCategory( wxCommandEvent& event ); + void AddGroup( wxCommandEvent& event ); + void ModifyGroup( wxCommandEvent& event ); + void DeleteGroup( wxCommandEvent& event ); + void AddPicture( wxCommandEvent& event ); + void ModifyPicture( wxCommandEvent& event ); + void DeletePicture( wxCommandEvent& event ); + void LoadPicture( wxListEvent& event ); + void AddLogo( wxCommandEvent& event ); + void ModifyLogo( wxCommandEvent& event ); + void DeleteLogo( wxCommandEvent& event ); + void LoadLogo( wxListEvent& event ); + void AddSound( wxCommandEvent& event ); + void ModifySound( wxCommandEvent& event ); + void DeleteSound( wxCommandEvent& event ); + void PlaySoundDetach(); + void PlaySound( wxCommandEvent& event ); + void StopSound( wxCommandEvent& event ); + void AddCalendarAddress( wxCommandEvent& event ); + void ModifyCalendarAddress( wxCommandEvent& event ); + void DeleteCalendarAddress( wxCommandEvent& event ); + void AddCalendarRequest( wxCommandEvent& event ); + void ModifyCalendarRequest( wxCommandEvent& event ); + void DeleteCalendarRequest( wxCommandEvent& event ); + void AddFreeBusy( wxCommandEvent& event ); + void ModifyFreeBusy( wxCommandEvent& event ); + void DeleteFreeBusy( wxCommandEvent& event ); + void AddKey( wxCommandEvent& event ); + void ModifyKey( wxCommandEvent& event ); + void DeleteKey( wxCommandEvent& event ); + void AddVendorNamespace( wxCommandEvent& event ); + void ModifyVendorNamespace( wxCommandEvent& event ); + void DeleteVendorNamespace( wxCommandEvent& event ); + void MoveVendorNamespaceUp( wxCommandEvent& event ); + void MoveVendorNamespaceDown( wxCommandEvent& event ); + void AddXToken( wxCommandEvent& event ); + void ModifyXToken( wxCommandEvent& event ); + void DeleteXToken( wxCommandEvent& event ); + void MoveXTokenUp( wxCommandEvent& event ); + void MoveXTokenDown( wxCommandEvent& event ); + void SaveContact( wxCommandEvent& event ); + void SaveCloseContact( wxCommandEvent& event ); + void CloseContact( wxCommandEvent& event ); + void CloseWindow( wxCloseEvent& event ); + void CutText( wxCommandEvent& event ); + void CopyText( wxCommandEvent& event ); + void PasteText( wxCommandEvent& event ); + void SetupColumn(wxString ColumnType, wxListCtrl *ListCtrl); + void UpdateMembersTab( wxCommandEvent &event ); + void UpdateDisplayAs( wxCommandEvent &event ); + void UpdateName( wxCommandEvent &event ); + bool GetSelectedItem(wxListCtrl *ListCtrlPtr, + long *longSelected, + int *intSelectedData); + int GetLastInt(std::map *MapData); + int GetLastInt(std::map *MapData); + bool ProcessEvent(wxEvent& event); + public: + /** Constructor */ + frmContactEditor( wxWindow* parent ); + void SetupHeaders(); + void SetupContact(wxString AccountName); + void SetupPointers(frmActivityMgr *ActMgr, wxETagProcessTimer *ETagProc, + frmMain *MainPtrInc); + bool LoadContact(wxString Filename); + void SetUID(int UID); + private: + + void DeleteMapDataProcess(int IndexNum, std::map* MapData); + void DeleteMapDataProcess(int IndexNum, std::map* MapData); + void DeleteMapDataProcess(int IndexNum, std::map* MapData); + void DeleteMapDataProcess(int IndexNum, std::map* MapData); + + void DeleteMapDataB () {} ; + + template + void DeleteMapDataB(MapData* mapdata, Args*... args) { + + DeleteMapDataProcess(intSeekSelectedData, mapdata); + DeleteMapDataB(args...); + + } + + template + void DeleteMapData(int IndexNum, Args*... args) { + + //int intSeekSelectedData = 0; + + //DeleteMapDataProcess(IndexNum, Moo); + + intSeekSelectedData = IndexNum; + DeleteMapDataB(args...); + + } + + void ProcessSaveDataProc(wxString PropName, + std::map* MapData); + void ProcessSaveDataProc(wxString PropName, + std::map* MapData); + void ProcessSaveDataStrProc(wxString PropName, + std::map* MapData); + void ProcessSaveDataStrProc(wxString PropName, + std::map* MapData); + void ProcessSaveDataStrProc(wxString PropName, + std::map* MapData); + + + void ProcessSaveDataB () { } ; + void ProcessSaveDataC () { } ; + + template + void ProcessSaveDataB(PropName propname, MapData* mapdata, Args*... args) { + + ProcessSaveDataProc(propname, mapdata); + ProcessSaveDataB(args...); + + } + + template + void ProcessSaveDataC(PropName propname, MapData* mapdata, Args*... args) { + + ProcessSaveDataStrProc(propname, mapdata); + ProcessSaveDataC(args...); + + } + + template + void ProcessSaveData(wxString strPropertyName, + wxString *strPropertyInc, + bool *boolAdditionalInc, bool *boolExtraInc, + std::map::iterator *iterDataInc, + std::map *MainMapData, + std::map::iterator *iterFileTypeInc, + std::map::iterator *iterFileEncInc, + vCard *vCardData, + Args*... args) { + + //int intSeekSelectedData = 0; + + //DeleteMapDataProcess(IndexNum, Moo); + + strPropertyPtr = strPropertyInc; + boolAdditionalPtr = boolAdditionalInc; + boolExtraPtr = boolExtraInc; + iterDataPtr = iterDataInc; + iterFileTypePtr = iterFileTypeInc; + iterFileEncPtr = iterFileEncInc; + ProcessSaveDataB(args...); + + std::map::iterator strIter; + wxString strMainValue; + + int intSeekData = (*iterDataStringPtr)->first; + strIter = MainMapData->find(intSeekData); + + wxString strFileType = (*iterFileTypePtr)->second; + wxString strFileEnc = (*iterFileEncPtr)->second; + + EscapeString(&strFileType, FALSE); + EscapeString(&strFileEnc, FALSE); + + if (strIter->first == intSeekData){ + + strMainValue = strIter->second; + strMainValue.insert(0, wxT("data:") + strFileType + wxT(";") + strFileEnc + wxT(",")); + + } + + if (*boolExtraPtr == TRUE){ + + vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue); + + } else { + + vCardData->AddRaw(strPropertyName, strMainValue); + + } + + boolExtraPtr = FALSE; + iterDataPtr = 0; + + } + + template + void ProcessSaveData(wxString strPropertyName, + wxString *strPropertyInc, + bool *boolAdditionalInc, bool *boolExtraInc, + std::map::iterator *iterDataInc, + std::map *MainMapData, + std::map::iterator *iterFileTypeInc, + std::map::iterator *iterFileEncInc, + vCard *vCardData, + Args*... args) { + + //int intSeekSelectedData = 0; + + //DeleteMapDataProcess(IndexNum, Moo); + + strPropertyPtr = strPropertyInc; + boolAdditionalPtr = boolAdditionalInc; + boolExtraPtr = boolExtraInc; + iterDataStringPtr = iterDataInc; + iterFileTypePtr = iterFileTypeInc; + iterFileEncPtr = iterFileEncInc; + + ProcessSaveDataC(args...); + + std::map::iterator strIter; + wxString strMainValue; + + int intSeekData = (*iterDataStringPtr)->first; + strIter = MainMapData->find(intSeekData); + + wxString strFileType = (*iterFileTypePtr)->second; + wxString strFileEnc = (*iterFileEncPtr)->second; + + EscapeString(&strFileType, FALSE); + EscapeString(&strFileEnc, FALSE); + + if (strIter->first == intSeekData){ + + strMainValue = wxString::FromAscii(strIter->second.c_str()); + strMainValue.insert(0, wxT("data:") + strFileType + wxT(";") + strFileEnc + wxT(",")); + + } + + if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){ + + vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue); + + } else { + + vCardData->AddRaw(strPropertyName, strMainValue); + + } + + *boolExtraPtr = FALSE; + *boolAdditionalPtr = FALSE; + iterDataStringPtr = 0; + + } + + template + void ProcessSaveData(wxString strPropertyName, + wxString *strPropertyInc, + bool *boolAdditionalInc, bool *boolExtraInc, + std::map::iterator *iterDataInc, + std::map *MainMapData, + vCard *vCardData, + Args*... args) { + + //int intSeekSelectedData = 0; + + //DeleteMapDataProcess(IndexNum, Moo); + strPropertyPtr = strPropertyInc; + boolAdditionalPtr = boolAdditionalInc; + boolExtraPtr = boolExtraInc; + iterDataPtr = iterDataInc; + ProcessSaveDataB(args...); + + std::map::iterator strIter; + wxString strMainValue; + + int intSeekData = (*iterDataPtr)->first; + strIter = MainMapData->find(intSeekData); + + if (strIter->first == intSeekData){ + + strMainValue = strIter->second; + + } + + EscapeString(&strMainValue, FALSE); + + if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){ + + vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue); + + } else { + + vCardData->AddRaw(strPropertyName, strMainValue); + + } + + *boolExtraPtr = FALSE; + *boolAdditionalPtr = FALSE; + iterDataPtr = 0; + + } + + template + void ProcessSaveData(wxString strPropertyName, + wxString *strPropertyInc, + bool *boolAdditionalInc, bool *boolExtraInc, + std::map::iterator *iterDataInc, + wxString *MainData, + vCard *vCardData, + Args*... args) { + + //int intSeekSelectedData = 0; + + //DeleteMapDataProcess(IndexNum, Moo); + strPropertyPtr = strPropertyInc; + boolAdditionalPtr = boolAdditionalInc; + boolExtraPtr = boolExtraInc; + iterDataPtr = iterDataInc; + + ProcessSaveDataB(args...); + + std::map::iterator strIter; + + if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){ + + vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, *MainData); + + } else { + + vCardData->AddRaw(strPropertyName, *MainData); + + } + + *boolExtraPtr = FALSE; + *boolAdditionalPtr = FALSE; + iterDataPtr = 0; + + } + + void ProcessCaptureStringsB () {} ; + + void ProcessCaptureStringsProc(wxString *strCapture); + + template + void ProcessCaptureStringsB(StringCapture *string, Args*... args) { + + ProcessCaptureStringsProc(string); + ProcessCaptureStringsB(args...); + + } + + template + void ProcessCaptureStrings(Args*... args) { + + //int intSeekSelectedData = 0; + + ProcessCaptureStringsB(args...); + + } + + void ResetSaveProcessData(); + void ContactFileChanged( wxCommandEvent &event ); + void ClearContact(); + + int intValueSeek = 1; + bool IsGroup = FALSE; + + /* Items on General Tab */ + + wxString NameTitle; + wxString NameForename; + wxString NameSurname; + wxString NameOtherNames; + wxString NameSuffix; + wxString NameNickname; + wxString NameDisplayAs; + wxString NameLanguage; + wxString NameAltID; + wxString NameTokens; + + wxString Birthday; + wxString BirthdayAltID; + wxString BirthdayCalScale; + wxString BirthdayTokens; + wxString Anniversary; + wxString AnniversaryAltID; + wxString AnniversaryCalScale; + wxString AnniversaryTokens; + + wxString Gender; + wxString GenderDetails; + wxString GenderTokens; + + wxString UIDToken; + + /* We don't use these at the moment but we want to keep + them for compatability reasons */ + + /*std::map ExtraFullNames;*/ + /*std::map ExtraNicknames;*/ + + std::map FullNamesList; + std::map FullNamesListType; + std::map FullNamesListLanguage; + std::map FullNamesListAltID; + std::map FullNamesListPID; + std::map FullNamesListTokens; + std::map FullNamesListPref; + + std::map GeneralNicknamesList; + std::map GeneralNicknamesListType; + std::map GeneralNicknamesListLanguage; + std::map GeneralNicknamesListAltID; + std::map GeneralNicknamesListPID; + std::map GeneralNicknamesListTokens; + std::map GeneralNicknamesListPref; + + std::map GeneralAddressList; + std::map GeneralAddressListTown; + std::map GeneralAddressListCounty; + std::map GeneralAddressListPostCode; + std::map GeneralAddressListCountry; + std::map GeneralAddressListLabel; + std::map GeneralAddressListLang; + std::map GeneralAddressListAltID; + std::map GeneralAddressListPID; + std::map GeneralAddressListTokens; + std::map GeneralAddressListGeo; + std::map GeneralAddressListTimezone; + std::map GeneralAddressListType; + std::map GeneralAddressListMediatype; + std::map GeneralAddressListPref; + + std::map GeneralEmailList; + std::map GeneralEmailListAltID; + std::map GeneralEmailListPID; + std::map GeneralEmailListType; + std::map GeneralEmailListTokens; + std::map GeneralEmailListPref; + + std::map GeneralIMList; + std::map GeneralIMListAltID; + std::map GeneralIMListPID; + std::map GeneralIMListType; + std::map GeneralIMListTokens; + std::map GeneralIMListMediatype; + std::map GeneralIMListPref; + + std::map GeneralTelephoneList; + std::map GeneralTelephoneListAltID; + std::map GeneralTelephoneListPID; + std::map GeneralTelephoneListType; + std::map GeneralTelephoneListTokens; + std::map GeneralTelephoneListPref; + + std::map GeneralLanguageList; + std::map GeneralLanguageListAltID; + std::map GeneralLanguageListPID; + std::map GeneralLanguageListType; + std::map GeneralLanguageListTokens; + std::map GeneralLanguageListPref; + + std::map GeneralTZList; + std::map GeneralTZListAltID; + std::map GeneralTZListPID; + std::map GeneralTZListType; + std::map GeneralTZListTokens; + std::map GeneralTZListMediatype; + std::map GeneralTZListPref; + + std::map GeneralGeographyList; + std::map GeneralGeographyListAltID; + std::map GeneralGeographyListPID; + std::map GeneralGeographyListType; + std::map GeneralGeographyListTokens; + std::map GeneralGeographyListMediatype; + std::map GeneralGeographyListPref; + + std::map GeneralRelatedList; + std::map GeneralRelatedListRelType; + std::map GeneralRelatedListLanguage; + std::map GeneralRelatedListAltID; + std::map GeneralRelatedListPID; + std::map GeneralRelatedListType; + std::map GeneralRelatedListTokens; + std::map GeneralRelatedListPref; + + std::map GeneralWebsiteList; + std::map GeneralWebsiteListAltID; + std::map GeneralWebsiteListPID; + std::map GeneralWebsiteListType; + std::map GeneralWebsiteListTokens; + std::map GeneralWebsiteListMediatype; + std::map GeneralWebsiteListPref; + + std::map GeneralTitleList; + std::map GeneralTitleListLanguage; + std::map GeneralTitleListAltID; + std::map GeneralTitleListPID; + std::map GeneralTitleListType; + std::map GeneralTitleListTokens; + std::map GeneralTitleListPref; + + std::map GeneralRoleList; + std::map GeneralRoleListLanguage; + std::map GeneralRoleListAltID; + std::map GeneralRoleListPID; + std::map GeneralRoleListType; + std::map GeneralRoleListTokens; + std::map GeneralRoleListPref; + + std::map GeneralOrganisationsList; + std::map GeneralOrganisationsListLanguage; + std::map GeneralOrganisationsListAltID; + std::map GeneralOrganisationsListPID; + std::map GeneralOrganisationsListType; + std::map GeneralOrganisationsListTokens; + std::map GeneralOrganisationsListSortAs; + std::map GeneralOrganisationsListPref; + + std::map GeneralNoteList; + std::map GeneralNoteListLanguage; + std::map GeneralNoteListAltID; + std::map GeneralNoteListPID; + std::map GeneralNoteListType; + std::map GeneralNoteListTokens; + std::map GeneralNoteListPref; + + /* Items on Home Tab */ + + std::map HomeNicknamesList; + std::map HomeNicknamesListType; + std::map HomeNicknamesListLanguage; + std::map HomeNicknamesListAltID; + std::map HomeNicknamesListPID; + std::map HomeNicknamesListTokens; + std::map HomeNicknamesListPref; + + std::map HomeAddressList; + std::map HomeAddressListTown; + std::map HomeAddressListCounty; + std::map HomeAddressListPostCode; + std::map HomeAddressListCountry; + std::map HomeAddressListLabel; + std::map HomeAddressListLang; + std::map HomeAddressListAltID; + std::map HomeAddressListPID; + std::map HomeAddressListTokens; + std::map HomeAddressListGeo; + std::map HomeAddressListTimezone; + std::map HomeAddressListType; + std::map HomeAddressListMediatype; + std::map HomeAddressListPref; + + std::map HomeEmailList; + std::map HomeEmailListAltID; + std::map HomeEmailListPID; + std::map HomeEmailListType; + std::map HomeEmailListTokens; + std::map HomeEmailListPref; + + std::map HomeIMList; + std::map HomeIMListAltID; + std::map HomeIMListPID; + std::map HomeIMListType; + std::map HomeIMListTokens; + std::map HomeIMListMediatype; + std::map HomeIMListPref; + + std::map HomeTelephoneList; + std::map HomeTelephoneListAltID; + std::map HomeTelephoneListPID; + std::map HomeTelephoneListType; + std::map HomeTelephoneListTokens; + std::map HomeTelephoneListPref; + + std::map HomeLanguageList; + std::map HomeLanguageListAltID; + std::map HomeLanguageListPID; + std::map HomeLanguageListType; + std::map HomeLanguageListTokens; + std::map HomeLanguageListPref; + + std::map HomeTZList; + std::map HomeTZListAltID; + std::map HomeTZListPID; + std::map HomeTZListType; + std::map HomeTZListTokens; + std::map HomeTZListMediatype; + std::map HomeTZListPref; + + std::map HomeGeographyList; + std::map HomeGeographyListAltID; + std::map HomeGeographyListPID; + std::map HomeGeographyListType; + std::map HomeGeographyListTokens; + std::map HomeGeographyListMediatype; + std::map HomeGeographyListPref; + + std::map HomeRelatedList; + std::map HomeRelatedListRelType; + std::map HomeRelatedListLanguage; + std::map HomeRelatedListAltID; + std::map HomeRelatedListPID; + std::map HomeRelatedListType; + std::map HomeRelatedListTokens; + std::map HomeRelatedListPref; + + std::map HomeWebsiteList; + std::map HomeWebsiteListAltID; + std::map HomeWebsiteListPID; + std::map HomeWebsiteListType; + std::map HomeWebsiteListTokens; + std::map HomeWebsiteListMediatype; + std::map HomeWebsiteListPref; + + std::map HomeTitleList; + std::map HomeTitleListLanguage; + std::map HomeTitleListAltID; + std::map HomeTitleListPID; + std::map HomeTitleListType; + std::map HomeTitleListTokens; + std::map HomeTitleListPref; + + std::map HomeRoleList; + std::map HomeRoleListLanguage; + std::map HomeRoleListAltID; + std::map HomeRoleListPID; + std::map HomeRoleListType; + std::map HomeRoleListTokens; + std::map HomeRoleListPref; + + std::map HomeOrganisationsList; + std::map HomeOrganisationsListLanguage; + std::map HomeOrganisationsListAltID; + std::map HomeOrganisationsListPID; + std::map HomeOrganisationsListType; + std::map HomeOrganisationsListTokens; + std::map HomeOrganisationsListSortAs; + std::map HomeOrganisationsListPref; + + std::map HomeNoteList; + std::map HomeNoteListLanguage; + std::map HomeNoteListAltID; + std::map HomeNoteListPID; + std::map HomeNoteListType; + std::map HomeNoteListTokens; + std::map HomeNoteListPref; + + /* Items on the Business tab */ + + std::map BusinessNicknamesList; + std::map BusinessNicknamesListType; + std::map BusinessNicknamesListLanguage; + std::map BusinessNicknamesListAltID; + std::map BusinessNicknamesListPID; + std::map BusinessNicknamesListTokens; + std::map BusinessNicknamesListPref; + + std::map BusinessAddressList; + std::map BusinessAddressListTown; + std::map BusinessAddressListCounty; + std::map BusinessAddressListPostCode; + std::map BusinessAddressListCountry; + std::map BusinessAddressListLabel; + std::map BusinessAddressListLang; + std::map BusinessAddressListAltID; + std::map BusinessAddressListPID; + std::map BusinessAddressListTokens; + std::map BusinessAddressListGeo; + std::map BusinessAddressListTimezone; + std::map BusinessAddressListType; + std::map BusinessAddressListMediatype; + std::map BusinessAddressListPref; + + std::map BusinessEmailList; + std::map BusinessEmailListAltID; + std::map BusinessEmailListPID; + std::map BusinessEmailListType; + std::map BusinessEmailListTokens; + std::map BusinessEmailListPref; + + std::map BusinessIMList; + std::map BusinessIMListAltID; + std::map BusinessIMListPID; + std::map BusinessIMListType; + std::map BusinessIMListTokens; + std::map BusinessIMListMediatype; + std::map BusinessIMListPref; + + std::map BusinessTelephoneList; + std::map BusinessTelephoneListAltID; + std::map BusinessTelephoneListPID; + std::map BusinessTelephoneListType; + std::map BusinessTelephoneListTokens; + std::map BusinessTelephoneListPref; + + std::map BusinessLanguageList; + std::map BusinessLanguageListAltID; + std::map BusinessLanguageListPID; + std::map BusinessLanguageListType; + std::map BusinessLanguageListTokens; + std::map BusinessLanguageListPref; + + std::map BusinessTZList; + std::map BusinessTZListAltID; + std::map BusinessTZListPID; + std::map BusinessTZListType; + std::map BusinessTZListTokens; + std::map BusinessTZListMediatype; + std::map BusinessTZListPref; + + std::map BusinessGeographyList; + std::map BusinessGeographyListAltID; + std::map BusinessGeographyListPID; + std::map BusinessGeographyListType; + std::map BusinessGeographyListTokens; + std::map BusinessGeographyListMediatype; + std::map BusinessGeographyListPref; + + std::map BusinessRelatedList; + std::map BusinessRelatedListRelType; + std::map BusinessRelatedListLanguage; + std::map BusinessRelatedListAltID; + std::map BusinessRelatedListPID; + std::map BusinessRelatedListType; + std::map BusinessRelatedListTokens; + std::map BusinessRelatedListPref; + + std::map BusinessWebsiteList; + std::map BusinessWebsiteListAltID; + std::map BusinessWebsiteListPID; + std::map BusinessWebsiteListType; + std::map BusinessWebsiteListTokens; + std::map BusinessWebsiteListMediatype; + std::map BusinessWebsiteListPref; + + std::map BusinessTitleList; + std::map BusinessTitleListLanguage; + std::map BusinessTitleListAltID; + std::map BusinessTitleListPID; + std::map BusinessTitleListType; + std::map BusinessTitleListTokens; + std::map BusinessTitleListPref; + + std::map BusinessRoleList; + std::map BusinessRoleListLanguage; + std::map BusinessRoleListAltID; + std::map BusinessRoleListPID; + std::map BusinessRoleListType; + std::map BusinessRoleListTokens; + std::map BusinessRoleListPref; + + std::map BusinessOrganisationsList; + std::map BusinessOrganisationsListLanguage; + std::map BusinessOrganisationsListAltID; + std::map BusinessOrganisationsListPID; + std::map BusinessOrganisationsListType; + std::map BusinessOrganisationsListTokens; + std::map BusinessOrganisationsListSortAs; + std::map BusinessOrganisationsListPref; + + std::map BusinessNoteList; + std::map BusinessNoteListLanguage; + std::map BusinessNoteListAltID; + std::map BusinessNoteListPID; + std::map BusinessNoteListType; + std::map BusinessNoteListTokens; + std::map BusinessNoteListPref; + + /* Items on the Categories tab */ + + std::map CategoriesList; + std::map CategoriesListAltID; + std::map CategoriesListPID; + std::map CategoriesListType; + std::map CategoriesListTokens; + std::map CategoriesListPref; + + /* Items on the Groups tab */ + + std::map GroupsList; + std::map GroupsListAltID; + std::map GroupsListPID; + std::map GroupsListType; + std::map GroupsListTokens; + std::map GroupsListPref; + + /* Items on the Pictures tab */ + + std::map PicturesList; + std::map PicturesListAltID; + std::map PicturesListPID; + std::map PicturesListType; + std::map PicturesListPicEncType; + std::map PicturesListPictureType; + std::map PicturesListTokens; + std::map PicturesListMediatype; + std::map PicturesListPref; + + /* Items on the Logos tab */ + + std::map LogosList; + std::map LogosListAltID; + std::map LogosListPID; + std::map LogosListType; + std::map LogosListPicEncType; + std::map LogosListPictureType; + std::map LogosListTokens; + std::map LogosListMediatype; + std::map LogosListPref; + + /* Items on the Sounds tab */ + + std::map SoundsList; + std::map SoundsListAltID; + std::map SoundsListPID; + std::map SoundsListType; + std::map SoundsListAudioEncType; + std::map SoundsListAudioType; + std::map SoundsListTokens; + std::map SoundsListMediatype; + std::map SoundsListPref; + + /* Items on the Calendaring tab */ + + std::map CalendarList; + std::map CalendarListAltID; + std::map CalendarListPID; + std::map CalendarListType; + std::map CalendarListTokens; + std::map CalendarListMediatype; + std::map CalendarListPref; + + std::map CalendarRequestList; + std::map CalendarRequestListAltID; + std::map CalendarRequestListPID; + std::map CalendarRequestListType; + std::map CalendarRequestListTokens; + std::map CalendarRequestListMediatype; + std::map CalendarRequestListPref; + + std::map FreeBusyList; + std::map FreeBusyListAltID; + std::map FreeBusyListPID; + std::map FreeBusyListType; + std::map FreeBusyListTokens; + std::map FreeBusyListMediatype; + std::map FreeBusyListPref; + + /* Items on the Security tab */ + + std::map KeyList; + std::map KeyListAltID; + std::map KeyListPID; + std::map KeyListKeyType; + std::map KeyListDataType; + std::map KeyListDataEncType; + std::map KeyListType; + std::map KeyListTokens; + std::map KeyListPref; + + /* Items on the Other tab */ + + std::map VendorList; + std::map VendorListPEN; + std::map VendorListElement; + + std::map XTokenList; + std::map XTokenListTokens; + + /* Items regarding account and filename */ + + wxString wxSContactFilename; + wxString wxSContactAccount; + bool boolContactModified; + int intSeekSelectedData; + + /* Section for saving/loading data */ + + wxString *strPropertyPtr; + bool *boolAdditionalPtr; + bool *boolExtraPtr; + std::map::iterator *iterDataPtr = 0; + std::map::iterator *iterDataStringPtr = 0; + std::map::iterator *iterFileTypePtr = 0; + std::map::iterator *iterFileEncPtr = 0; + + wxString ETag; + wxString ETagOriginal; + + wxString strValue; + wxString strValue2; + wxString strValue3; + + bool boolValue = FALSE; + bool boolValue2 = FALSE; + size_t intValue = 0; + int intValue2 = 0; + int intValue3 = 0; + bool BinaryDataProc = FALSE; + bool EditMode = FALSE; + bool DialogOpen = FALSE; + + /* + std::string base64dec; + sf::Sound AudioPlayback; + sf::SoundBuffer AudioBuffer; + */ + + size_t base64declen; + std::string base64dec; + sf::Music AudioPlayback; + AudioStream AudioStreamPlayback; + sf::SoundBuffer AudioBuffer; + + wxBitmap PictureImage; + wxBitmap LogoImage; + + void SplitValues(wxString *PropertyLine, + std::map *SplitPoints, + std::map *SplitLength, + int intSize); + + frmMain *MainPtr; + frmActivityMgr *ActMgrPtr; + wxETagProcessTimer *ETagTmrPtr; + wxContactFileMonitorTimer FMTimer; + + int ContactEditorUID; + + DECLARE_EVENT_TABLE() + + //// end generated class members + +}; + +#endif // __frmContactEditor__ diff --git a/source/contacteditor/frmContactEditorAddress.cpp b/source/contacteditor/frmContactEditorAddress.cpp new file mode 100644 index 0000000..f613e0a --- /dev/null +++ b/source/contacteditor/frmContactEditorAddress.cpp @@ -0,0 +1,505 @@ +#include "frmContactEditorAddress.h" +#include +#include + +#include "../common/textprocessing.h" + +frmContactEditorAddress::frmContactEditorAddress( wxWindow* parent ) +: +frmContactEditorAddressADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorAddress::InitAddressEditor( wxInitDialogEvent& event ) +{ + // Do nothing with this subroutine at this time. +} + +void frmContactEditorAddress::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorAddress::ProcessData( wxCommandEvent& event ) +{ + + // Check what edit mode we are in and go from there. + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + // Add the address to the list (maps). + + AddressListPtr->erase(AddressListIndex); + AddressListPtr->insert(std::make_pair(AddressListIndex, txtAddress->GetValue())); + + AddressListTownPtr->erase(AddressListIndex); + AddressListTownPtr->insert(std::make_pair(AddressListIndex, txtTownCity->GetValue())); + + AddressListCountyPtr->erase(AddressListIndex); + AddressListCountyPtr->insert(std::make_pair(AddressListIndex, txtCounty->GetValue())); + + AddressListPostCodePtr->erase(AddressListIndex); + AddressListPostCodePtr->insert(std::make_pair(AddressListIndex, txtPostCode->GetValue())); + + AddressListCountryPtr->erase(AddressListIndex); + AddressListCountryPtr->insert(std::make_pair(AddressListIndex, txtCountry->GetValue())); + + // Add the label to the list (maps). + + AddressListLabelPtr->insert(std::make_pair(AddressListIndex, txtLabel->GetValue())); + + // Add the language to the list (maps). + + AddressListLangPtr->insert(std::make_pair(AddressListIndex, cmbLanguage->GetValue())); + + // No AltIDs at present. + + // No PIDs at present. + + // There are no tokens for a new address to add so this can be + // ignored for the time being. + + // Add the Geopositioning to the list (maps). + + AddressListGeoPtr->insert(std::make_pair(AddressListIndex, txtGeo->GetValue())); + + // Add the Timezone to the list (maps). + + AddressListTimezonePtr->insert(std::make_pair(AddressListIndex, txtTimezone->GetValue())); + + if (EditSectionType == CE_GENERAL){ + + AddressListTypePtr->insert(std::make_pair(AddressListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + AddressListTypePtr->insert(std::make_pair(AddressListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + AddressListTypePtr->insert(std::make_pair(AddressListIndex, wxT("work"))); + + } + + //AddressListTypePtr = &AddressListType; + + // Add the mediatype to the list (maps). + + AddressListMediatypePtr->insert(std::make_pair(AddressListIndex, wxT("text/plain"))); + + //AddressListMediatypePtr = &AddressListMediatype; + //AddressListPrefPtr = &AddressListPref; + + if (chkUsePref->IsChecked()){ + + AddressListPrefPtr->insert(std::make_pair(AddressListIndex, sliPriority->GetValue())); + + } else { + + AddressListPrefPtr->insert(std::make_pair(AddressListIndex, 0)); + + } + + // Add to the form. + + wxListItem coldata; + + coldata.SetId(AddressListIndex); + coldata.SetData(AddressListIndex); + coldata.SetText(txtAddress->GetValue()); + ListCtrlIndex = AddressListCtrlPtr->InsertItem(coldata); + + AddressListCtrlPtr->SetItem(ListCtrlIndex, 1, txtTownCity->GetValue()); + AddressListCtrlPtr->SetItem(ListCtrlIndex, 2, txtCounty->GetValue()); + AddressListCtrlPtr->SetItem(ListCtrlIndex, 3, txtPostCode->GetValue()); + + if (chkUsePref->IsChecked()){ + + AddressListCtrlPtr->SetItem(ListCtrlIndex, 4, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE){ + + // Edit the address in the list. + + wxString strAddress; + wxString strValue; + long longSelected = -1; + + /* + strAddress.Append(wxT(";;")); + + strAddress.Append(txtAddress->GetValue()); + strAddress.Append(wxT(";")); + + strAddress.Append(txtTownCity->GetValue()); + strAddress.Append(wxT(";")); + + strAddress.Append(txtCounty->GetValue()); + strAddress.Append(wxT(";")); + + strAddress.Append(txtPostCode->GetValue()); + strAddress.Append(wxT(";")); + + strAddress.Append(txtCountry->GetValue()); + */ + + AddressListPtr->erase(AddressListIndex); + AddressListPtr->insert(std::make_pair(AddressListIndex, txtAddress->GetValue())); + + AddressListTownPtr->erase(AddressListIndex); + AddressListTownPtr->insert(std::make_pair(AddressListIndex, txtTownCity->GetValue())); + + AddressListCountyPtr->erase(AddressListIndex); + AddressListCountyPtr->insert(std::make_pair(AddressListIndex, txtCounty->GetValue())); + + AddressListPostCodePtr->erase(AddressListIndex); + AddressListPostCodePtr->insert(std::make_pair(AddressListIndex, txtPostCode->GetValue())); + + AddressListCountryPtr->erase(AddressListIndex); + AddressListCountryPtr->insert(std::make_pair(AddressListIndex, txtCountry->GetValue())); + + //AddressListLabelPtr = &AddressListLabel; + + // Add the label to the list (maps). + + AddressListLabelPtr->erase(AddressListIndex); + AddressListLabelPtr->insert(std::make_pair(AddressListIndex, txtLabel->GetValue())); + + // Add the language to the list (maps). + + //AddressListLangPtr = &AddressListLang; + + AddressListLangPtr->erase(AddressListIndex); + AddressListLangPtr->insert(std::make_pair(AddressListIndex, cmbLanguage->GetValue())); + + //AddressListAltIDPtr = &AddressListAltID; + + // No AltIDs at present. + + // No PIDs at present. + + // There are no tokens for a new address to add so this can be + // ignored for the time being. + + // Add the Geopositioning to the list (maps). + + AddressListGeoPtr->erase(AddressListIndex); + AddressListGeoPtr->insert(std::make_pair(AddressListIndex, txtGeo->GetValue())); + + // Add the Timezone to the list (maps). + + AddressListTimezonePtr->erase(AddressListIndex); + AddressListTimezonePtr->insert(std::make_pair(AddressListIndex, txtTimezone->GetValue())); + + // No need to update type since it will not have changed. + + //AddressListTypePtr = &AddressListType; + + // Add the mediatype to the list (maps). + + AddressListMediatypePtr->erase(AddressListIndex); + AddressListMediatypePtr->insert(std::make_pair(AddressListIndex, wxT("text/plain"))); + + //AddressListMediatypePtr = &AddressListMediatype; + //AddressListPrefPtr = &AddressListPref; + + AddressListPrefPtr->erase(AddressListIndex); + + if (chkUsePref->IsChecked()){ + + AddressListPrefPtr->insert(std::make_pair(AddressListIndex, sliPriority->GetValue())); + + } else { + + AddressListPrefPtr->insert(std::make_pair(AddressListIndex, 0)); + + } + + // Update the form with the new details. + + longSelected = AddressListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + AddressListCtrlPtr->SetItem(longSelected, 0, txtAddress->GetValue()); + AddressListCtrlPtr->SetItem(longSelected, 1, txtTownCity->GetValue()); + AddressListCtrlPtr->SetItem(longSelected, 2, txtCounty->GetValue()); + AddressListCtrlPtr->SetItem(longSelected, 3, txtPostCode->GetValue()); + + if (chkUsePref->IsChecked()){ + + AddressListCtrlPtr->SetItem(longSelected, 4, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + AddressListCtrlPtr->SetItem(longSelected, 4, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorAddress::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorAddress::CopyAddress( wxCommandEvent& event ) +{ + + wxString MailingLabel; + bool AddComma = FALSE; + + if (!txtAddress->IsEmpty()){ + + MailingLabel.Append(txtAddress->GetValue()); + AddComma = TRUE; + + } + + if (!txtTownCity->IsEmpty()){ + + if(AddComma == TRUE){ + + MailingLabel.Append(wxT(",\n")); + AddComma = FALSE; + + } + + MailingLabel.Append(txtTownCity->GetValue()); + AddComma = TRUE; + + } + + if (!txtCounty->IsEmpty()){ + + if(AddComma == TRUE){ + + MailingLabel.Append(wxT(",\n")); + AddComma = FALSE; + + } + + MailingLabel.Append(txtCounty->GetValue()); + AddComma = TRUE; + + } + + if (!txtPostCode->IsEmpty()){ + + if(AddComma == TRUE){ + + MailingLabel.Append(wxT(",\n")); + AddComma = FALSE; + + } + + MailingLabel.Append(txtPostCode->GetValue()); + AddComma = TRUE; + + } + + if (!txtCountry->IsEmpty()){ + + if(AddComma == TRUE){ + + MailingLabel.Append(wxT(",\n")); + AddComma = FALSE; + + } + + MailingLabel.Append(txtCountry->GetValue()); + AddComma = TRUE; + + } + + txtLabel->SetValue(MailingLabel); + +} + +void frmContactEditorAddress::SetEditorMode( bool EditMode, SectionType SectType ) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Address")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Address")); + + wxString strValue; + + std::map::iterator intiter; + std::map::iterator striter; + + // Load the data into the form. + + striter = AddressListPtr->find(AddressListIndex); + + if (striter->first == AddressListIndex){ + + txtAddress->SetValue(striter->second); + + } + + striter = AddressListTownPtr->find(AddressListIndex); + + if (striter->first == AddressListIndex){ + + txtTownCity->SetValue(striter->second); + + } + + striter = AddressListCountyPtr->find(AddressListIndex); + + if (striter->first == AddressListIndex){ + + txtCounty->SetValue(striter->second); + + } + + striter = AddressListPostCodePtr->find(AddressListIndex); + + if (striter->first == AddressListIndex){ + + txtPostCode->SetValue(striter->second); + + } + + striter = AddressListCountryPtr->find(AddressListIndex); + + if (striter->first == AddressListIndex){ + + txtCountry->SetValue(striter->second); + + } + + //CaptureString(&strValue, TRUE); + //->Replace(wxT("\;"), wxT("\;;"), TRUE); + + // Setup the Slider. + + intiter = AddressListPrefPtr->find(AddressListIndex); + + if (intiter->first == AddressListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + // Setup the Label. + + striter = AddressListLabelPtr->find(AddressListIndex); + + if (striter->first == AddressListIndex){ + + strValue = striter->second; + + } + + txtLabel->SetValue(strValue); + + // Setup the Language, Geographic position and timezone. + + striter = AddressListLangPtr->find(AddressListIndex); + + if (striter->first == AddressListIndex){ + + strValue = striter->second; + + } + + cmbLanguage->SetValue(strValue); + + striter = AddressListGeoPtr->find(AddressListIndex); + + if (striter->first == AddressListIndex){ + + strValue = striter->second; + + } + + txtGeo->SetValue(strValue); + + striter = AddressListTimezonePtr->find(AddressListIndex); + + if (striter->first == AddressListIndex){ + + strValue = striter->second; + + } + + txtTimezone->SetValue(strValue); + + } + + EditSectionType = SectType; +} + +void frmContactEditorAddress::SetupPointers( std::map *AddressList, + std::map *AddressListTown, + std::map *AddressListCounty, + std::map *AddressListPostCode, + std::map *AddressListCountry, + std::map *AddressListLabel, + std::map *AddressListLang, + std::map *AddressListAltID, + std::map *AddressListPID, + std::map *AddressListTokens, + std::map *AddressListGeo, + std::map *AddressListTimezone, + std::map *AddressListType, + std::map *AddressListMediatype, + std::map *AddressListPref, + wxListCtrl *AddressListCtrl, + int AddressIndex ) +{ + + AddressListPtr = AddressList; + AddressListTownPtr = AddressListTown; + AddressListCountyPtr = AddressListCounty; + AddressListPostCodePtr = AddressListPostCode; + AddressListCountryPtr = AddressListCountry; + AddressListLabelPtr = AddressListLabel; + AddressListLangPtr = AddressListLang; + AddressListAltIDPtr = AddressListAltID; + AddressListPIDPtr = AddressListPID; + AddressListTokensPtr = AddressListTokens; + AddressListGeoPtr = AddressListGeo; + AddressListTimezonePtr = AddressListTimezone; + AddressListTypePtr = AddressListType; + AddressListMediatypePtr = AddressListMediatype; + AddressListPrefPtr = AddressListPref; + AddressListCtrlPtr = AddressListCtrl; + AddressListIndex = AddressIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorAddress.h b/source/contacteditor/frmContactEditorAddress.h new file mode 100644 index 0000000..d0b7eb3 --- /dev/null +++ b/source/contacteditor/frmContactEditorAddress.h @@ -0,0 +1,73 @@ +#ifndef __frmContactEditorAddress__ +#define __frmContactEditorAddress__ + +#include + +/** +@file +Subclass of frmContactEditorAddressADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" + +//// end generated include + +#include "../enums.h" + +/** Implementing frmContactEditorAddressADT */ +class frmContactEditorAddress : public frmContactEditorAddressADT +{ + protected: + // Handlers for frmContactEditorAddressADT events. + void InitAddressEditor( wxInitDialogEvent& event ); + void EnablePriority( wxCommandEvent& event ); + void ProcessData( wxCommandEvent& event ); + void CopyAddress( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorAddress( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers( std::map *AddressList, + std::map *AddressListTown, + std::map *AddressListCounty, + std::map *AddressListPostCode, + std::map *AddressListCountry, + std::map *AddressListLabel, + std::map *AddressListLang, + std::map *AddressListAltID, + std::map *AddressListPID, + std::map *AddressListTokens, + std::map *AddressListGeo, + std::map *AddressListTimezone, + std::map *AddressListType, + std::map *AddressListMediatype, + std::map *AddressListPref, + wxListCtrl *AddressListCtrl, + int AddressIndex ); + + private: + bool EditorMode; + std::map *AddressListPtr; + std::map *AddressListTownPtr; + std::map *AddressListCountyPtr; + std::map *AddressListPostCodePtr; + std::map *AddressListCountryPtr; + std::map *AddressListLabelPtr; + std::map *AddressListLangPtr; + std::map *AddressListAltIDPtr; + std::map *AddressListPIDPtr; + std::map *AddressListTokensPtr; + std::map *AddressListGeoPtr; + std::map *AddressListTimezonePtr; + std::map *AddressListTypePtr; + std::map *AddressListMediatypePtr; + std::map *AddressListPrefPtr; + wxListCtrl *AddressListCtrlPtr; + int AddressListIndex; + SectionType EditSectionType; + //// end generated class members + +}; + +#endif // __frmContactEditorAddress__ diff --git a/source/contacteditor/frmContactEditorCalAdr.cpp b/source/contacteditor/frmContactEditorCalAdr.cpp new file mode 100644 index 0000000..7865799 --- /dev/null +++ b/source/contacteditor/frmContactEditorCalAdr.cpp @@ -0,0 +1,258 @@ +#include "frmContactEditorCalAdr.h" +#include +#include "../common/textprocessing.h" + +frmContactEditorCalAdr::frmContactEditorCalAdr( wxWindow* parent ) +: +frmContactEditorCalAdrADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); + + cmbType->Append(wxT("")); + cmbType->Append(_("Home")); + cmbType->Append(_("Work")); +} + +void frmContactEditorCalAdr::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorCalAdr::ProcessAction( wxCommandEvent& event ) +{ + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + wxString strValue; + + // Setup Calendar Address. + + CalAdrListPtr->insert(std::make_pair(CalAdrListIndex, txtAddress->GetValue())); + + strValue.Clear(); + + strValue = cmbType->GetString(cmbType->GetSelection()); + + // Setup Calendar Type. + + if (strValue == _("Home")) { + + CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT("home"))); + + } else if (strValue == _("Work")) { + + CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT("work"))); + + } else { + + CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT(""))); + + } + + // Setup Calendar Priority. + + if (chkUsePref->IsChecked()){ + + CalAdrListPrefPtr->insert(std::make_pair(CalAdrListIndex, sliPriority->GetValue())); + + } else { + + CalAdrListPrefPtr->insert(std::make_pair(CalAdrListIndex, 0)); + + } + + // Add to form. + + wxListItem coldata; + + coldata.SetId(CalAdrListIndex); + coldata.SetData(CalAdrListIndex); + coldata.SetText(txtAddress->GetValue()); + ListCtrlIndex = CalAdrListCtrlPtr->InsertItem(coldata); + + CalAdrListCtrlPtr->SetItem(ListCtrlIndex, 1, strValue); + + if (chkUsePref->IsChecked()){ + + CalAdrListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE) { + + long longSelected = -1; + wxString strValue; + + // Update Category Name. + + CalAdrListPtr->erase(CalAdrListIndex); + CalAdrListPtr->insert(std::make_pair(CalAdrListIndex, txtAddress->GetValue())); + + // Update Category Type. + + CalAdrListTypePtr->erase(CalAdrListIndex); + + strValue.Clear(); + strValue = cmbType->GetString(cmbType->GetSelection()); + + if (strValue == _("Home")) { + + CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT("home"))); + + } else if (strValue == _("Work")) { + + CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT("work"))); + + } + + // Update Category Priority. + + CalAdrListPrefPtr->erase(CalAdrListIndex); + + if (chkUsePref->IsChecked()){ + + CalAdrListPrefPtr->insert(std::make_pair(CalAdrListIndex, sliPriority->GetValue())); + + } else { + + CalAdrListPrefPtr->insert(std::make_pair(CalAdrListIndex, 0)); + + } + + // Update form. + + longSelected = CalAdrListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + CalAdrListCtrlPtr->SetItem(longSelected, 0, txtAddress->GetValue()); + CalAdrListCtrlPtr->SetItem(longSelected, 1, strValue); + + if (chkUsePref->IsChecked()){ + + CalAdrListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + CalAdrListCtrlPtr->SetItem(longSelected, 2, wxT("")); + + } + + this->Close(); + + } +} + +void frmContactEditorCalAdr::SetEditorMode(bool EditMode) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Calendar Address")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Calendar Address")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Get the organisation name. + + striter = CalAdrListPtr->find(CalAdrListIndex); + + if (striter->first == CalAdrListIndex){ + + strValue = striter->second; + + } + + txtAddress->SetValue(strValue); + + strValue.Clear(); + + // Get the type. + + striter = CalAdrListTypePtr->find(CalAdrListIndex); + + if (striter->first == CalAdrListIndex){ + + strValue = striter->second; + + } + + if (strValue == wxT("home")){ + + cmbType->SetSelection(1); + + } else if (strValue == wxT("work")){ + + cmbType->SetSelection(2); + + } else { + + cmbType->SetSelection(0); + + } + + // Get the organisation priority. + + intiter = CalAdrListPrefPtr->find(CalAdrListIndex); + + if (intiter->first == CalAdrListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + +} + +void frmContactEditorCalAdr::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorCalAdr::SetupPointers(std::map *CalAdrList, + std::map *CalAdrListAltID, + std::map *CalAdrListPID, + std::map *CalAdrListType, + std::map *CalAdrListTokens, + std::map *CalAdrListPref, + wxListCtrl *CalAdrListCtrl, + int CalAdrIndex ) +{ + + CalAdrListPtr = CalAdrList; + CalAdrListAltIDPtr = CalAdrListAltID; + CalAdrListPIDPtr = CalAdrListPID; + CalAdrListTypePtr = CalAdrListType; + CalAdrListTokensPtr = CalAdrListTokens; + CalAdrListPrefPtr = CalAdrListPref; + CalAdrListCtrlPtr = CalAdrListCtrl; + CalAdrListIndex = CalAdrIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorCalAdr.h b/source/contacteditor/frmContactEditorCalAdr.h new file mode 100644 index 0000000..d6ba28a --- /dev/null +++ b/source/contacteditor/frmContactEditorCalAdr.h @@ -0,0 +1,50 @@ +#ifndef __frmContactEditorCalAdr__ +#define __frmContactEditorCalAdr__ + +/** +@file +Subclass of frmContactEditorCalAdrADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorCalAdrADT */ +class frmContactEditorCalAdr : public frmContactEditorCalAdrADT +{ + protected: + // Handlers for frmContactEditorCalAdrADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorCalAdr( wxWindow* parent ); + void SetEditorMode(bool EditMode); + void SetupPointers(std::map *CalAdrList, + std::map *CalAdrListAltID, + std::map *CalAdrListPID, + std::map *CalAdrListType, + std::map *CalAdrListTokens, + std::map *CalAdrListPref, + wxListCtrl *CalAdrListCtrl, + int CalAdrIndex ); + //// end generated class members + + bool EditorMode; + std::map *CalAdrListPtr; + std::map *CalAdrListAltIDPtr; + std::map *CalAdrListPIDPtr; + std::map *CalAdrListTypePtr; + std::map *CalAdrListTokensPtr; + std::map *CalAdrListPrefPtr; + wxListCtrl *CalAdrListCtrlPtr; + int CalAdrListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorCalAdr__ diff --git a/source/contacteditor/frmContactEditorCategory.cpp b/source/contacteditor/frmContactEditorCategory.cpp new file mode 100644 index 0000000..4378c82 --- /dev/null +++ b/source/contacteditor/frmContactEditorCategory.cpp @@ -0,0 +1,259 @@ +#include "frmContactEditorCategory.h" +#include +#include "../common/textprocessing.h" + +frmContactEditorCategory::frmContactEditorCategory( wxWindow* parent ) +: +frmContactEditorCategoryADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); + + cmbType->Append(wxT("")); + cmbType->Append(_("Home")); + cmbType->Append(_("Work")); +} + +void frmContactEditorCategory::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorCategory::ProcessAction( wxCommandEvent& event ) +{ + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + wxString strValue; + + // Setup Organisation Name. + + CategoryListPtr->insert(std::make_pair(CategoryListIndex, txtCategory->GetValue())); + + strValue.Clear(); + + strValue = cmbType->GetString(cmbType->GetSelection()); + + // Setup Category Type. + + if (strValue == _("Home")) { + + CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT("home"))); + + } else if (strValue == _("Work")) { + + CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT("work"))); + + } else { + + CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT(""))); + + } + + // Setup Category Priority. + + if (chkUsePref->IsChecked()){ + + CategoryListPrefPtr->insert(std::make_pair(CategoryListIndex, sliPriority->GetValue())); + + } else { + + CategoryListPrefPtr->insert(std::make_pair(CategoryListIndex, 0)); + + } + + // Add to form. + + wxListItem coldata; + + coldata.SetId(CategoryListIndex); + coldata.SetData(CategoryListIndex); + coldata.SetText(txtCategory->GetValue()); + ListCtrlIndex = CategoryListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + CategoryListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE) { + + long longSelected = -1; + wxString strValue; + + // Update Category Name. + + CategoryListPtr->erase(CategoryListIndex); + CategoryListPtr->insert(std::make_pair(CategoryListIndex, txtCategory->GetValue())); + + // Update Category Type. + + CategoryListTypePtr->erase(CategoryListIndex); + + strValue = cmbType->GetString(cmbType->GetSelection()); + + if (strValue == _("Home")) { + + CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT("home"))); + + } else if (strValue == _("Work")) { + + CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT("work"))); + + } + + // Update Category Priority. + + CategoryListPrefPtr->erase(CategoryListIndex); + + if (chkUsePref->IsChecked()){ + + CategoryListPrefPtr->insert(std::make_pair(CategoryListIndex, sliPriority->GetValue())); + + } else { + + CategoryListPrefPtr->insert(std::make_pair(CategoryListIndex, 0)); + + } + + // Update form. + + longSelected = CategoryListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + CategoryListCtrlPtr->SetItem(longSelected, 0, txtCategory->GetValue()); + + if (chkUsePref->IsChecked()){ + + CategoryListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + CategoryListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorCategory::SetEditorMode(bool EditMode) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Category")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Category")); + + // Load the data into the form. + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Get the organisation name. + + striter = CategoryListPtr->find(CategoryListIndex); + + if (striter->first == CategoryListIndex){ + + strValue = striter->second; + + } + + txtCategory->SetValue(strValue); + + strValue.Clear(); + + // Get the type. + + striter = CategoryListTypePtr->find(CategoryListIndex); + + if (striter->first == CategoryListIndex){ + + strValue = striter->second; + + } + + if (strValue == wxT("home")){ + + cmbType->SetSelection(1); + + } else if (strValue == wxT("work")){ + + cmbType->SetSelection(2); + + } else { + + cmbType->SetSelection(0); + + } + + // Get the organisation priority. + + intiter = CategoryListPrefPtr->find(CategoryListIndex); + + if (intiter->first == CategoryListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + +} + +void frmContactEditorCategory::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorCategory::SetupPointers(std::map *CategoryList, + std::map *CategoryListAltID, + std::map *CategoryListPID, + std::map *CategoryListType, + std::map *CategoryListTokens, + std::map *CategoryListPref, + wxListCtrl *CategoryListCtrl, + int CategoryIndex ) +{ + + CategoryListPtr = CategoryList; + //CategoryListSortAsPtr = CategoryListSortAs; + CategoryListAltIDPtr = CategoryListAltID; + CategoryListPIDPtr = CategoryListPID; + CategoryListTypePtr = CategoryListType; + CategoryListTokensPtr = CategoryListTokens; + CategoryListPrefPtr = CategoryListPref; + CategoryListCtrlPtr = CategoryListCtrl; + CategoryListIndex = CategoryIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorCategory.h b/source/contacteditor/frmContactEditorCategory.h new file mode 100644 index 0000000..7cee4ff --- /dev/null +++ b/source/contacteditor/frmContactEditorCategory.h @@ -0,0 +1,52 @@ +#ifndef __frmContactEditorCategory__ +#define __frmContactEditorCategory__ + +/** +@file +Subclass of frmContactEditorCategoryADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorCategoryADT */ +class frmContactEditorCategory : public frmContactEditorCategoryADT +{ + protected: + // Handlers for frmContactEditorCategoryADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorCategory( wxWindow* parent ); + void SetEditorMode(bool EditMode); + void SetupPointers(std::map *CategoryList, + std::map *CategoryListAltID, + std::map *CategoryListPID, + std::map *CategoryListType, + std::map *CategoryListTokens, + std::map *CategoryListPref, + wxListCtrl *CategoryListCtrl, + int CategoryIndex ); + //// end generated class members + + private: + + bool EditorMode; + std::map *CategoryListPtr; + std::map *CategoryListAltIDPtr; + std::map *CategoryListPIDPtr; + std::map *CategoryListTypePtr; + std::map *CategoryListTokensPtr; + std::map *CategoryListPrefPtr; + wxListCtrl *CategoryListCtrlPtr; + int CategoryListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorCategory__ diff --git a/source/contacteditor/frmContactEditorEmail.cpp b/source/contacteditor/frmContactEditorEmail.cpp new file mode 100644 index 0000000..4755bba --- /dev/null +++ b/source/contacteditor/frmContactEditorEmail.cpp @@ -0,0 +1,208 @@ +#include "frmContactEditorEmail.h" +#include +#include "../common/textprocessing.h" + +frmContactEditorEmail::frmContactEditorEmail( wxWindow* parent ) +: +frmContactEditorEmailADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorEmail::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorEmail::ProcessData( wxCommandEvent& event ) +{ + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + // Add the email address to the list. + + wxString strAddress; + wxString strValue; + + // Add Email address. + + EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue())); + + // Add Email type. + + if (EditSectionType == CE_GENERAL){ + + EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("work"))); + + } + + // Add Email priority. + + if (chkUsePref->IsChecked()){ + + EmailListPrefPtr->insert(std::make_pair(EmailListIndex, sliPriority->GetValue())); + + } else { + + EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0)); + + } + + // Add the data to the form. + + wxListItem coldata; + + coldata.SetId(EmailListIndex); + coldata.SetData(EmailListIndex); + coldata.SetText(txtEmail->GetValue()); + ListCtrlIndex = EmailListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + EmailListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE){ + + // Edit the email address. + + wxString strAddress; + wxString strValue; + long longSelected = -1; + + EmailListPtr->erase(EmailListIndex); + EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue())); + + EmailListPrefPtr->erase(EmailListIndex); + + if (chkUsePref->IsChecked()){ + + EmailListPrefPtr->insert(std::make_pair(EmailListIndex, sliPriority->GetValue())); + + } else { + + EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0)); + + } + + longSelected = EmailListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + EmailListCtrlPtr->SetItem(longSelected, 0, txtEmail->GetValue()); + + if (chkUsePref->IsChecked()){ + + EmailListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + EmailListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorEmail::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorEmail::SetEditorMode(bool EditMode, SectionType SectType) +{ + + // Set the editor mode for adding or editing an email address. + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Email")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Email")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. + + striter = EmailListPtr->find(EmailListIndex); + + if (striter->first == EmailListIndex){ + + strValue = striter->second; + + } + + txtEmail->SetValue(strValue); + + // Setup the Slider. + + intiter = EmailListPrefPtr->find(EmailListIndex); + + if (intiter->first == EmailListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorEmail::SetupPointers(std::map *EmailList, + std::map *EmailListAltID, + std::map *EmailListPID, + std::map *EmailListType, + std::map *EmailListTokens, + std::map *EmailListPref, + wxListCtrl *EmailListCtrl, + int EmailIndex ) +{ + + // Setup the pointers so that the data can be processed without + // duplication. + + EmailListPtr = EmailList; + EmailListAltIDPtr = EmailListAltID; + EmailListPIDPtr = EmailListPID; + EmailListTypePtr = EmailListType; + EmailListTokensPtr = EmailListTokens; + EmailListPrefPtr = EmailListPref; + EmailListCtrlPtr = EmailListCtrl; + EmailListIndex = EmailIndex; +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorEmail.h b/source/contacteditor/frmContactEditorEmail.h new file mode 100644 index 0000000..9ff93bd --- /dev/null +++ b/source/contacteditor/frmContactEditorEmail.h @@ -0,0 +1,54 @@ +#ifndef __frmContactEditorEmail__ +#define __frmContactEditorEmail__ + +#include + +/** +@file +Subclass of frmContactEditorEmailADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" + +//// end generated include + +#include "../enums.h" + +/** Implementing frmContactEditorEmailADT */ +class frmContactEditorEmail : public frmContactEditorEmailADT +{ + protected: + // Handlers for frmContactEditorEmailADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessData( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorEmail( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *EmailList, + std::map *EmailListAltID, + std::map *EmailListPID, + std::map *EmailListType, + std::map *EmailListTokens, + std::map *EmailListPref, + wxListCtrl *EmailListCtrl, + int EmailIndex ); + + private: + bool EditorMode; + std::map *EmailListPtr; + std::map *EmailListAltIDPtr; + std::map *EmailListPIDPtr; + std::map *EmailListTypePtr; + std::map *EmailListTokensPtr; + std::map *EmailListPrefPtr; + wxListCtrl *EmailListCtrlPtr; + int EmailListIndex; + SectionType EditSectionType; + + //// end generated class members + +}; + +#endif // __frmContactEditorEmail__ diff --git a/source/contacteditor/frmContactEditorGeoposition.cpp b/source/contacteditor/frmContactEditorGeoposition.cpp new file mode 100644 index 0000000..3715411 --- /dev/null +++ b/source/contacteditor/frmContactEditorGeoposition.cpp @@ -0,0 +1,214 @@ +#include "frmContactEditorGeoposition.h" +#include +#include "../common/textprocessing.h" + +frmContactEditorGeoposition::frmContactEditorGeoposition( wxWindow* parent ) +: +frmContactEditorGeopositionADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorGeoposition::EnablePriority( wxCommandEvent& event ) +{ + + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } + +} + +void frmContactEditorGeoposition::SetEditorMode(bool EditMode, SectionType SectType) +{ + + // Set the editor mode for adding or editing a timezone. + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Geoposition")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Geoposition")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. + + striter = GeopositionListPtr->find(GeopositionListIndex); + + if (striter->first == GeopositionListIndex){ + + strValue = striter->second; + + } + + txtGeoposition->SetValue(strValue); + + // Setup the Slider. + + intiter = GeopositionListPrefPtr->find(GeopositionListIndex); + + if (intiter->first == GeopositionListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorGeoposition::ProcessAction( wxCommandEvent& event ) +{ + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + // Add the language to the list. + + wxString strValue; + + strValue = txtGeoposition->GetValue(); + + // Add language. + + GeopositionListPtr->insert(std::make_pair(GeopositionListIndex, strValue)); + + // Add Email type. + + if (EditSectionType == CE_GENERAL){ + + GeopositionListTypePtr->insert(std::make_pair(GeopositionListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + GeopositionListTypePtr->insert(std::make_pair(GeopositionListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + GeopositionListTypePtr->insert(std::make_pair(GeopositionListIndex, wxT("work"))); + + } + + // Add Language priority. + + if (chkUsePref->IsChecked()){ + + GeopositionListPrefPtr->insert(std::make_pair(GeopositionListIndex, sliPriority->GetValue())); + + } else { + + GeopositionListPrefPtr->insert(std::make_pair(GeopositionListIndex, 0)); + + } + + // Add the data to the form. + + wxListItem coldata; + + coldata.SetId(GeopositionListIndex); + coldata.SetData(GeopositionListIndex); + coldata.SetText(txtGeoposition->GetValue()); + ListCtrlIndex = GeopositionListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + GeopositionListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE){ + + // Edit the language. + + wxString strAddress; + wxString strValue; + long longSelected = -1; + + GeopositionListPtr->erase(GeopositionListIndex); + GeopositionListPtr->insert(std::make_pair(GeopositionListIndex, txtGeoposition->GetValue())); + + GeopositionListPrefPtr->erase(GeopositionListIndex); + + if (chkUsePref->IsChecked()){ + + GeopositionListPrefPtr->insert(std::make_pair(GeopositionListIndex, sliPriority->GetValue())); + + } else { + + GeopositionListPrefPtr->insert(std::make_pair(GeopositionListIndex, 0)); + + } + + longSelected = GeopositionListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + GeopositionListCtrlPtr->SetItem(longSelected, 0, txtGeoposition->GetValue()); + + if (chkUsePref->IsChecked()){ + + GeopositionListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + GeopositionListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorGeoposition::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorGeoposition::SetupPointers(std::map *GeopositionList, + std::map *GeopositionListAltID, + std::map *GeopositionListPID, + std::map *GeopositionListType, + std::map *GeopositionListTokens, + std::map *GeopositionListMediatype, + std::map *GeopositionListPref, + wxListCtrl *GeopositionListCtrl, + int GeopositionIndex ) +{ + + // Setup the pointers so that the data can be processed without + // duplication. + + GeopositionListPtr = GeopositionList; + GeopositionListAltIDPtr = GeopositionListAltID; + GeopositionListPIDPtr = GeopositionListPID; + GeopositionListTypePtr = GeopositionListType; + GeopositionListTokensPtr = GeopositionListTokens; + GeopositionListPrefPtr = GeopositionListPref; + GeopositionListCtrlPtr = GeopositionListCtrl; + GeopositionListIndex = GeopositionIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorGeoposition.h b/source/contacteditor/frmContactEditorGeoposition.h new file mode 100644 index 0000000..5872489 --- /dev/null +++ b/source/contacteditor/frmContactEditorGeoposition.h @@ -0,0 +1,54 @@ +#ifndef __frmContactEditorGeoposition__ +#define __frmContactEditorGeoposition__ + +#include + +/** +@file +Subclass of frmContactEditorGeopositionADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" + +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorGeopositionADT */ +class frmContactEditorGeoposition : public frmContactEditorGeopositionADT +{ + protected: + // Handlers for frmContactEditorGeopositionADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorGeoposition( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *GeopositionList, + std::map *GeopositionListAltID, + std::map *GeopositionListPID, + std::map *GeopositionListType, + std::map *GeopositionListTokens, + std::map *GeopositionListMediatype, + std::map *GeopositionListPref, + wxListCtrl *GeopositionListCtrl, + int GeopositionIndex ); + //// end generated class members + private: + bool EditorMode; + std::map *GeopositionListPtr; + std::map *GeopositionListAltIDPtr; + std::map *GeopositionListPIDPtr; + std::map *GeopositionListTypePtr; + std::map *GeopositionListTokensPtr; + std::map *GeopositionListMediatypePtr; + std::map *GeopositionListPrefPtr; + wxListCtrl *GeopositionListCtrlPtr; + int GeopositionListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorGeoposition__ diff --git a/source/contacteditor/frmContactEditorGroups.cpp b/source/contacteditor/frmContactEditorGroups.cpp new file mode 100755 index 0000000..46a8253 --- /dev/null +++ b/source/contacteditor/frmContactEditorGroups.cpp @@ -0,0 +1,262 @@ +#include "frmContactEditorGroups.h" +#include +#include +#include "../vcard/vcard.h" +#include "../common/dirs.h" + +frmContactEditorGroup::frmContactEditorGroup( wxWindow* parent ) +: +frmContactEditorGroupsADT( parent ) +{ + EditorMode = FALSE; +} + +void frmContactEditorGroup::FetchContacts( wxInitDialogEvent& event ) +{ + + // Load up the directory and get the list of contacts and UIDs. + + // Ignore contacts which have KIND:group set. + + wxString AccountDirFinal = GetAccountDir(AccName, FALSE); + + //wxString vcardfilenamewxs; + wxString vCardFilename; + wxString vCardFilenameFull; + wxString vCardDataString; + //wxStringTokenizer vcardfileline; + wxString lwxs; + wxString setname, setvalue; + //vCardNames = new std::map>; + std::multimap> vCardNamesAsc; + std::multimap> vCardNamesDsc; + int ContactIndex = 0; + + wxDir vcardaccdir(AccountDirFinal); + + bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES); + while(ProcFiles){ + + if (vCardFilename.Right(4) == wxT(".vcf") || + vCardFilename.Right(4) == wxT(".VCF") || + vCardFilename.Right(5) == wxT(".vcard") || + vCardFilename.Right(5) == wxT(".VCARD")){ + + vCard Person; + + vCardFilenameFull.Append(AccountDirFinal); + vCardFilenameFull.Append(wxT("/")); + vCardFilenameFull.Append(vCardFilename); + + Person.LoadFile(vCardFilenameFull); + + if (Person.MeetBaseSpecification()){ + + wxString KindStatus = Person.Get(wxT("KIND")); + + if (KindStatus == wxT("group")){ + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + vCardDataString.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + continue; + + } + + wxString PersonName = Person.Get(wxT("N")); + wxString PersonUID = Person.Get(wxT("UID")); + wxString PersonFilename = vCardFilenameFull; + + ContactData PersonData; + + PersonData.ContactName = PersonName; + PersonData.ContactUID = PersonUID; + PersonData.ContactFilename = PersonFilename; + + //ContactsNames.insert(std::make_pair(PersonName, ContactIndex)); + //ContactsUIDs.insert(std::make_pair(ContactIndex, PersonUID)); + + if (XVMData.SortMode == 1){ + + // Split the name into sections. + + vCardDataString = Person.Get(wxT("N")); + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname; + + } else if (XVMData.SortMode == 2){ + + // Split the name into sections. + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename; + + } else if (XVMData.SortMode == 3){ + + // Check and make sure that the top most nickname is used. + + vCardDataString = Person.Get(wxT("NICKNAME")); + + if (vCardDataString.IsEmpty()){ + + vCardDataString = wxT("(no nickname)"); + + } + + } else if (XVMData.SortMode == 4){ + + vCardDataString = Person.Get(wxT("FN")); + + } + + if (XVMData.AscendingMode == TRUE){ + vCardNamesAsc.insert(std::make_pair(vCardDataString, PersonData)); + } else { + vCardNamesDsc.insert(std::make_pair(vCardDataString, PersonData)); + } + + } else { + + } + + + + } + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + vCardDataString.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + + } + + if (XVMData.AscendingMode == TRUE){ + + for (std::map::iterator iter = vCardNamesAsc.begin(); + iter != vCardNamesAsc.end(); ++iter){ + + chkContacts->InsertItems(1, &iter->first, 0); + + ContactNamesData.insert(std::make_pair(ContactIndex, iter->second)); + + ContactIndex++; + + } + + + } else { + + ContactIndex = vCardNamesDsc.size() - 1; + + for (std::map::iterator iter = vCardNamesDsc.begin(); + iter != vCardNamesDsc.end(); ++iter){ + + chkContacts->InsertItems(1, &iter->first, 0); + + ContactNamesData.insert(std::make_pair(ContactIndex, iter->second)); + + ContactIndex--; + + } + + } + +} + +void frmContactEditorGroup::ProcessData( wxCommandEvent& event ) +{ + + for (int i = 0; i < chkContacts->GetCount(); i++){ + + if (chkContacts->IsChecked(i) == TRUE){ + + // Get the UID and Name data from the struct + // via GetData. + + wxString ContactName; + wxString ContactUID; + + for (std::map::iterator iter = ContactNamesData.begin(); + iter != ContactNamesData.end(); ++iter){ + + if (i == iter->first){ + + ContactName = iter->second.ContactName; + ContactUID = iter->second.ContactUID; + + } + + } + + std::map::iterator CDataIter = ContactNamesData.find(i); + + wxListItem ItemData; + ItemData.SetId(0); + ItemData.SetText(chkContacts->GetString(i)); + + // Check if UID already exists before adding again. If already there + // then don't bother adding again. + + bool ItemExists = FALSE; + + for (std::map::iterator itemiter = GroupsListPtr->begin(); + itemiter != GroupsListPtr->end(); ++itemiter){ + + if (itemiter->second == ContactUID){ + + ItemExists = TRUE; + break; + + } + + } + + if (ItemExists == TRUE){ + + continue; + + } + + GroupsListCtrlPtr->InsertItem(ItemData); + GroupsListPtr->insert(std::make_pair(GroupsListIndex, ContactUID)); + + } + + } + + this->Close(); + +} + +void frmContactEditorGroup::SetupPointers(std::map *GroupsList, + wxListCtrl *GroupsListCtrl, + wxString AccountName, + int GroupIndex) +{ + + GroupsListCtrlPtr = GroupsListCtrl; + GroupsListPtr = GroupsList; + AccName = AccountName; + GroupsListIndex = GroupIndex; + +} + +void frmContactEditorGroup::SetEditorMode(bool EditMode, XABViewMode XVMIn) +{ + + EditorMode = EditMode; + XVMData = XVMIn; + + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Member(s)")); + +} + +void frmContactEditorGroup::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} diff --git a/source/contacteditor/frmContactEditorGroups.h b/source/contacteditor/frmContactEditorGroups.h new file mode 100755 index 0000000..7412d83 --- /dev/null +++ b/source/contacteditor/frmContactEditorGroups.h @@ -0,0 +1,50 @@ +#ifndef __frmContactEditorGroups__ +#define __frmContactEditorGroups__ + +#include + +/** +@file +Subclass of frmContactEditorGroupsADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" +#include "../frmMain.h" + +struct ContactData{ + wxString ContactName; + wxString ContactUID; + wxString ContactFilename; +}; + +//// end generated include + +/** Implementing frmContactEditorGroupsADT */ +class frmContactEditorGroup : public frmContactEditorGroupsADT +{ + protected: + // Handlers for frmContactEditorGroupsADT events. + void FetchContacts( wxInitDialogEvent& event ); + void ProcessData( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorGroup( wxWindow* parent ); + void SetEditorMode(bool EditMode, XABViewMode XAVIn); + void SetupPointers(std::map *GroupsList, + wxListCtrl *GroupsListCtrl, + wxString AccountName, + int GroupIndex); + private: + bool EditorMode; + std::map *GroupsListPtr; + wxListCtrl *GroupsListCtrlPtr; + wxString AccName; + std::map ContactNamesData; + int GroupsListIndex; + XABViewMode XVMData; + //// end generated class members + +}; + +#endif // __frmContactEditorGroups__ diff --git a/source/contacteditor/frmContactEditorIM.cpp b/source/contacteditor/frmContactEditorIM.cpp new file mode 100644 index 0000000..98ef20d --- /dev/null +++ b/source/contacteditor/frmContactEditorIM.cpp @@ -0,0 +1,369 @@ +#include "frmContactEditorIM.h" +#include +#include + +#include "../common/textprocessing.h" + +frmContactEditorIM::frmContactEditorIM( wxWindow* parent ) +: +frmContactEditorIMADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); + + // Add some values to the drop down box for IM types. + + cmbIMType->Append(wxT("AIM")); + cmbIMType->Append(wxT("Gadu-Gadu")); + cmbIMType->Append(wxT("ICQ")); + cmbIMType->Append(wxT("Skype")); + cmbIMType->Append(wxT("XMPP")); + cmbIMType->Append(wxT("Yahoo")); + +} + +void frmContactEditorIM::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorIM::ProcessAction( wxCommandEvent& event ) +{ + + long ListCtrlIndex; + + // Check if IM type is empty and if it is then + // throw an error message. + + wxString strIMTypeValue; + strIMTypeValue = cmbIMType->GetValue(); + + if (strIMTypeValue.IsEmpty()){ + + wxMessageDialog NopeDlg(this, _("IM Type is required."), _("Error"), wxOK|wxICON_ERROR, wxDefaultPosition); + NopeDlg.ShowModal(); + return; + + } + + if (txtUsername->IsEmpty()){ + + wxMessageDialog NopeDlg(this, _("Username/E-mail Address is required."), _("Error"), wxOK|wxICON_ERROR, wxDefaultPosition); + NopeDlg.ShowModal(); + return; + + } + + if (EditorMode == FALSE){ + + // Add the address to the list (maps). + + wxString strIMAddress; + wxString strValue; + + // Strip out the colons. + + strIMAddress.Replace(wxT(":"), wxT(""), TRUE); + + // Specify the type. + + strIMTypeValue = cmbIMType->GetString(cmbIMType->GetSelection()); + + if (strIMTypeValue == wxT("AIM")){ + + strIMAddress.Append(wxT("aim:")); + + } else if (strIMTypeValue == wxT("Gadu-Gadu")){ + + strIMAddress.Append(wxT("gg:")); + + } else if (strIMTypeValue == wxT("ICQ")){ + + strIMAddress.Append(wxT("icq:")); + + } else if (strIMTypeValue == wxT("Skype")){ + + strIMAddress.Append(wxT("skype:")); + + } else if (strIMTypeValue == wxT("XMPP")){ + + strIMAddress.Append(wxT("xmpp:")); + + } else if (strIMTypeValue == wxT("Yahoo")){ + + strIMAddress.Append(wxT("yahoo:")); + + } else { + + strIMAddress.Append(strIMTypeValue + wxT(":")); + + } + + strIMAddress.Append(strValue); + strIMAddress.Append(txtUsername->GetValue()); + + IMListPtr->insert(std::make_pair(IMListIndex, strIMAddress)); + + // Set the type. + + if (EditSectionType == CE_GENERAL){ + + IMListTypePtr->insert(std::make_pair(IMListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + IMListTypePtr->insert(std::make_pair(IMListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + IMListTypePtr->insert(std::make_pair(IMListIndex, wxT("work"))); + + } + + // Set the priority. + + if (chkUsePref->IsChecked()){ + + IMListPrefPtr->insert(std::make_pair(IMListIndex, sliPriority->GetValue())); + + } else { + + IMListPrefPtr->insert(std::make_pair(IMListIndex, 0)); + + } + + // Add to the form. + + wxListItem coldata; + + coldata.SetId(IMListIndex); + coldata.SetData(IMListIndex); + coldata.SetText(cmbIMType->GetValue()); + ListCtrlIndex = IMListCtrlPtr->InsertItem(coldata); + + IMListCtrlPtr->SetItem(ListCtrlIndex, 1, txtUsername->GetValue()); + + if (chkUsePref->IsChecked()){ + + IMListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE){ + + // Edit the address in the list. + + wxString strIMAddress; + wxString strValue; + long longSelected = -1; + + // Strip out the colons. + + strIMAddress.Replace(wxT(":"), wxT(""), TRUE); + + // Specify the type. + + strIMTypeValue = cmbIMType->GetString(cmbIMType->GetSelection()); + + if (strIMTypeValue == wxT("AIM")){ + + strIMAddress.Append(wxT("aim:")); + + } else if (strIMTypeValue == wxT("Gadu-Gadu")){ + + strIMAddress.Append(wxT("gg:")); + + } else if (strIMTypeValue == wxT("ICQ")){ + + strIMAddress.Append(wxT("icq:")); + + } else if (strIMTypeValue == wxT("Skype")){ + + strIMAddress.Append(wxT("skype:")); + + } else if (strIMTypeValue == wxT("XMPP")){ + + strIMAddress.Append(wxT("xmpp:")); + + } else if (strIMTypeValue == wxT("Yahoo")){ + + strIMAddress.Append(wxT("yahoo:")); + + } else { + + strIMAddress.Append(strIMTypeValue + wxT(":")); + + } + + strIMAddress.Append(strValue); + strIMAddress.Append(txtUsername->GetValue()); + + IMListPtr->erase(IMListIndex); + IMListPtr->insert(std::make_pair(IMListIndex, strIMAddress)); + + // Set the priority. + + IMListPrefPtr->erase(IMListIndex); + + if (chkUsePref->IsChecked()){ + + IMListPrefPtr->insert(std::make_pair(IMListIndex, sliPriority->GetValue())); + + } else { + + IMListPrefPtr->insert(std::make_pair(IMListIndex, 0)); + + } + + // Modify the data on the form. + + longSelected = IMListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + IMListCtrlPtr->SetItem(longSelected, 0, cmbIMType->GetValue()); + IMListCtrlPtr->SetItem(longSelected, 1, txtUsername->GetValue()); + + if (chkUsePref->IsChecked()){ + + IMListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + IMListCtrlPtr->SetItem(longSelected, 2, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorIM::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorIM::SetEditorMode(bool EditMode, SectionType SectType) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add IM")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify IM")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + wxString strIMType; + wxString strIMUser; + + // Setup the IM Type. + + striter = IMListPtr->find(IMListIndex); + + if (striter->first == IMListIndex){ + + strValue = striter->second; + + } + + wxStringTokenizer IMAddressToken(strValue, wxT(":")); + strIMType = IMAddressToken.GetNextToken(); + strIMUser = IMAddressToken.GetNextToken(); + + if (strIMType == wxT("aim")){ + + cmbIMType->SetValue(wxT("AIM")); + + } else if (strIMType == wxT("gg")){ + + cmbIMType->SetValue(wxT("Gadu-Gadu")); + + } else if (strIMType == wxT("icq")){ + + cmbIMType->SetValue(wxT("ICQ")); + + } else if (strIMType == wxT("skype")){ + + cmbIMType->SetValue(wxT("Skype")); + + } else if (strIMType == wxT("xmpp")){ + + cmbIMType->SetValue(wxT("XMPP")); + + } else if (strIMType == wxT("yahoo")){ + + cmbIMType->SetValue(wxT("Yahoo")); + + } else { + + cmbIMType->SetValue(strIMType); + + } + + // Setup the username. + + txtUsername->SetValue(strIMUser); + + // Setup the priority. + + intiter = IMListPrefPtr->find(IMListIndex); + + if (intiter->first == IMListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorIM::SetupPointers( std::map *IMList, + std::map *IMListAltID, + std::map *IMListPID, + std::map *IMListType, + std::map *IMListTokens, + std::map *IMListMediatype, + std::map *IMListPref, + wxListCtrl *IMListCtrl, + int IMIndex ) +{ + + IMListPtr = IMList; + IMListAltIDPtr = IMListAltID; + IMListPIDPtr = IMListPID; + IMListTypePtr = IMListType; + IMListTokensPtr = IMListTokens; + IMListMediatypePtr = IMListMediatype; + IMListPrefPtr = IMListPref; + IMListCtrlPtr = IMListCtrl; + IMListIndex = IMIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorIM.h b/source/contacteditor/frmContactEditorIM.h new file mode 100644 index 0000000..ae96620 --- /dev/null +++ b/source/contacteditor/frmContactEditorIM.h @@ -0,0 +1,54 @@ +#ifndef __frmContactEditorIM__ +#define __frmContactEditorIM__ + +/** +@file +Subclass of frmContactEditorIMADT, which is generated by wxFormBuilder. +*/ + +#include + +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorIMADT */ +class frmContactEditorIM : public frmContactEditorIMADT +{ + protected: + // Handlers for frmContactEditorIMADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorIM( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers( std::map *IMList, + std::map *IMListAltID, + std::map *IMListPID, + std::map *IMListType, + std::map *IMListTokens, + std::map *IMListMediatype, + std::map *IMListPref, + wxListCtrl *AddressListCtrl, + int AddressIndex ); + //// end generated class members + + private: + bool EditorMode; + std::map *IMListPtr; + std::map *IMListAltIDPtr; + std::map *IMListPIDPtr; + std::map *IMListTypePtr; + std::map *IMListTokensPtr; + std::map *IMListMediatypePtr; + std::map *IMListPrefPtr; + wxListCtrl *IMListCtrlPtr; + int IMListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorIM__ diff --git a/source/contacteditor/frmContactEditorKey.cpp b/source/contacteditor/frmContactEditorKey.cpp new file mode 100644 index 0000000..7234bbe --- /dev/null +++ b/source/contacteditor/frmContactEditorKey.cpp @@ -0,0 +1,469 @@ +#include "frmContactEditorKey.h" +#include +#include "../common/textprocessing.h" +#include "../common/base64.h" + +frmContactEditorKey::frmContactEditorKey( wxWindow* parent ) +: +frmContactEditorKeyADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); + + // Setup the control boxes and hide tabs unless they are + // needed. + + tabURL->Hide(); + tabKey->Hide(); + + cmbKeyMainType->Append(_("URL")); + cmbKeyMainType->Append(_("Key")); + + cmbType->Append(_("Home")); + cmbType->Append(_("Work")); + + cmbURL->Append(_("PGP Key")); + + cmbKeyType->Append(_("PGP Key")); + +} + +void frmContactEditorKey::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorKey::SetEditorMode(bool EditMode) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Key")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Key")); + + std::map::iterator booliter; + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + bool boolKeyData = FALSE; + + // Get the key data type. + + booliter = KeyListKeyTypePtr->find(KeyListIndex); + + if (booliter->first == KeyListIndex){ + + boolKeyData = booliter->second; + + } + + // Get the data depending on key data type. + + if (boolKeyData == FALSE){ + + // Setup the URL. + + cmbKeyMainType->SetSelection(0); + + striter = KeyListPtr->find(KeyListIndex); + + if (striter->first == KeyListIndex){ + + strValue = striter->second; + + } + + txtAddress->ChangeValue(strValue); + strValue.Clear(); + + striter = KeyListDataTypePtr->find(KeyListIndex); + + if (striter->first == KeyListIndex){ + + strValue = striter->second; + + } + + cmbURL->SetValue(strValue); + + } else if (boolKeyData == TRUE){ + + // Setup the key. + + cmbKeyMainType->SetSelection(1); + std::string base64dec; + + // Decode the base64 data. + + striter = KeyListPtr->find(KeyListIndex); + + if (striter->first == KeyListIndex){ + + strValue = striter->second; + + } + + std::string base64enc = std::string(strValue.mb_str()); + base64dec = base64_decode(base64enc); + + strValue.Clear(); + wxString strValue(base64dec.c_str(), wxConvUTF8); + + txtKeyData->SetValue(strValue); + + // Get the key data type. + + strValue.Clear(); + + striter = KeyListDataTypePtr->find(KeyListIndex); + + if (striter->first == KeyListIndex){ + + strValue = striter->second; + + } + + cmbKeyType->SetValue(strValue); + + } + + ProcessKeyType(); + + // Get the type. + + striter = KeyListTypePtr->find(KeyListIndex); + + if (striter->first == KeyListIndex){ + + strValue = striter->second; + + } + + if (strValue == wxT("home")){ + + cmbType->SetSelection(0); + + } else if (strValue == wxT("work")){ + + cmbType->SetSelection(1); + + } else { + + //cmbType->SetSelection(-1); + + } + + // Get the key priority. + + intiter = KeyListPrefPtr->find(KeyListIndex); + + if (intiter->first == KeyListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + +} + +void frmContactEditorKey::ProcessAction( wxCommandEvent& event ) +{ + long ListCtrlIndex; + int intKeyType = 0; + + intKeyType = cmbKeyMainType->GetCurrentSelection(); + + if (intKeyType == -1){ + + // No option selected so do nothing. + + return; + + } + + if (EditorMode == FALSE){ + + wxString strValue; + wxListItem coldata; + + coldata.SetId(KeyListIndex); + coldata.SetData(KeyListIndex); + ListCtrlIndex = KeyListCtrlPtr->InsertItem(coldata); + + // Get Key data. + + if (intKeyType == 0){ + + // URL is text. + + KeyListPtr->insert(std::make_pair(KeyListIndex, txtAddress->GetValue())); + + coldata.SetText(txtAddress->GetValue()); + KeyListCtrlPtr->SetItem(ListCtrlIndex, 0, strValue); + KeyListKeyTypePtr->insert(std::make_pair(KeyListIndex, FALSE)); + + } else if (intKeyType == 1){ + + // Encode the data in the text to base64. + + wxString wxSb64orig = txtKeyData->GetValue(); + std::string base64new = std::string(wxSb64orig.mb_str()); + std::string base64enc = base64_encode(reinterpret_cast(base64new.c_str()), base64new.length()); + wxString wxSb64key(base64enc.c_str(), wxConvUTF8); + + KeyListPtr->insert(std::make_pair(KeyListIndex, wxSb64key)); + KeyListDataTypePtr->insert(std::make_pair(KeyListIndex, cmbKeyType->GetValue())); + KeyListCtrlPtr->SetItem(ListCtrlIndex, 0, _("PGP Key")); + KeyListKeyTypePtr->insert(std::make_pair(KeyListIndex, TRUE)); + + } + + // Get Key type. + + strValue.Clear(); + strValue = cmbType->GetString(cmbType->GetSelection()); + + if (strValue == _("Home")) { + + KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("home"))); + KeyListCtrlPtr->SetItem(ListCtrlIndex, 1, strValue); + + } else if (strValue == _("Work")) { + + KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("work"))); + KeyListCtrlPtr->SetItem(ListCtrlIndex, 1, strValue); + + } else { + + KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT(""))); + + } + + // Get Key priority. + + if (chkUsePref->IsChecked()){ + + KeyListPrefPtr->insert(std::make_pair(KeyListIndex, sliPriority->GetValue())); + KeyListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + KeyListPrefPtr->insert(std::make_pair(KeyListIndex, 0)); + + } + + if (chkUsePref->IsChecked()){ + + } + + this->Close(); + + } else if (EditorMode == TRUE){ + + long longSelected = -1; + wxString strValue; + + longSelected = KeyListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + // Update Key data. + + if (intKeyType == 0){ + + // URL is text. + + KeyListPtr->erase(KeyListIndex); + KeyListPtr->insert(std::make_pair(KeyListIndex, txtAddress->GetValue())); + + KeyListCtrlPtr->SetItem(longSelected, 0, strValue); + KeyListKeyTypePtr->erase(KeyListIndex); + KeyListKeyTypePtr->insert(std::make_pair(KeyListIndex, FALSE)); + + } else if (intKeyType == 1){ + + // Encode the data in the text to base64. + + wxString wxSb64orig = txtKeyData->GetValue(); + std::string base64new = std::string(wxSb64orig.mb_str()); + std::string base64enc = base64_encode(reinterpret_cast(base64new.c_str()), base64new.length()); + wxString wxSb64key(base64enc.c_str(), wxConvUTF8); + + KeyListPtr->erase(KeyListIndex); + KeyListPtr->insert(std::make_pair(KeyListIndex, wxSb64key)); + + KeyListDataTypePtr->erase(KeyListIndex); + KeyListDataTypePtr->insert(std::make_pair(KeyListIndex, cmbKeyType->GetValue())); + + KeyListCtrlPtr->SetItem(longSelected, 0, _("PGP Key")); + + KeyListKeyTypePtr->erase(KeyListIndex); + KeyListKeyTypePtr->insert(std::make_pair(KeyListIndex, TRUE)); + + } + + // Update Key type. + + strValue.Clear(); + strValue = cmbType->GetString(cmbType->GetSelection()); + + KeyListTypePtr->erase(KeyListIndex); + + if (strValue == _("Home")) { + + KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("home"))); + KeyListCtrlPtr->SetItem(longSelected, 1, strValue); + + } else if (strValue == _("Work")) { + + KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("work"))); + KeyListCtrlPtr->SetItem(longSelected, 1, strValue); + + } else { + + KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT(""))); + + } + + // Update the key priority. + + KeyListPrefPtr->erase(KeyListIndex); + + if (chkUsePref->IsChecked()){ + + KeyListPrefPtr->insert(std::make_pair(KeyListIndex, sliPriority->GetValue())); + KeyListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + KeyListPrefPtr->insert(std::make_pair(KeyListIndex, 0)); + + } + + this->Close(); + + } +} + +void frmContactEditorKey::ProcessKeyType( wxCommandEvent& event ) +{ + + int intKeyType = 0; + + intKeyType = cmbKeyMainType->GetCurrentSelection(); + + if (intKeyType == 0){ + + tabURL->Show(); + tabKey->Hide(); + + } else if (intKeyType == 1){ + + tabURL->Hide(); + tabKey->Show(); + + } + +} + +void frmContactEditorKey::ProcessKeyType() +{ + + int intKeyType = 0; + + intKeyType = cmbKeyMainType->GetCurrentSelection(); + + if (intKeyType == 0){ + + tabURL->Show(); + tabKey->Hide(); + + } else if (intKeyType == 1){ + + tabURL->Hide(); + tabKey->Show(); + + } + +} + +void frmContactEditorKey::ConvertURLType( wxCommandEvent& event ) +{ + + wxString strValue; + + strValue = cmbURL->GetString(cmbURL->GetCurrentSelection()); + + if (strValue == _("PGP Key")){ + + cmbURL->SetValue(wxT("application/pgp-keys")); + + } + +} + +void frmContactEditorKey::ConvertKeyType( wxCommandEvent& event ) +{ + + wxString strValue; + + strValue = cmbKeyType->GetString(cmbKeyType->GetCurrentSelection()); + + if (strValue == _("PGP Key")){ + + cmbKeyType->SetValue(wxT("application/pgp-keys")); + + } + +} + +void frmContactEditorKey::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorKey::SetupPointers(std::map *KeyList, + std::map *KeyListAltID, + std::map *KeyListPID, + std::map *KeyListKeyType, + std::map *KeyListDataType, + std::map *KeyListType, + std::map *KeyListTokens, + std::map *KeyListPref, + wxListCtrl *KeyListCtrl, + int KeyIndex ) +{ + + KeyListPtr = KeyList; + KeyListAltIDPtr = KeyListAltID; + KeyListPIDPtr = KeyListPID; + KeyListKeyTypePtr = KeyListKeyType; + KeyListDataTypePtr = KeyListDataType; + KeyListTypePtr = KeyListType; + KeyListTokensPtr = KeyListTokens; + KeyListPrefPtr = KeyListPref; + KeyListCtrlPtr = KeyListCtrl; + KeyListIndex = KeyIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorKey.h b/source/contacteditor/frmContactEditorKey.h new file mode 100644 index 0000000..7999e55 --- /dev/null +++ b/source/contacteditor/frmContactEditorKey.h @@ -0,0 +1,58 @@ +#ifndef __frmContactEditorKey__ +#define __frmContactEditorKey__ + +/** +@file +Subclass of frmContactEditorKeyADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorKeyADT */ +class frmContactEditorKey : public frmContactEditorKeyADT +{ + protected: + // Handlers for frmContactEditorKeyADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + void ProcessKeyType( wxCommandEvent& event ); + void ProcessKeyType(); + void ConvertURLType( wxCommandEvent& event ); + void ConvertKeyType( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorKey( wxWindow* parent ); + void SetEditorMode(bool EditMode); + void SetupPointers(std::map *KeyList, + std::map *KeyListAltID, + std::map *KeyListPID, + std::map *KeyListKeyType, + std::map *KeyListDataType, + std::map *KeyListType, + std::map *KeyListTokens, + std::map *KeyListPref, + wxListCtrl *KeyListCtrl, + int KeyIndex ); + //// end generated class members + + bool EditorMode; + std::map *KeyListPtr; + std::map *KeyListAltIDPtr; + std::map *KeyListPIDPtr; + std::map *KeyListKeyTypePtr; + std::map *KeyListDataTypePtr; + std::map *KeyListTypePtr; + std::map *KeyListTokensPtr; + std::map *KeyListPrefPtr; + wxListCtrl *KeyListCtrlPtr; + int KeyListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorKey__ diff --git a/source/contacteditor/frmContactEditorLanguages.cpp b/source/contacteditor/frmContactEditorLanguages.cpp new file mode 100644 index 0000000..06936f5 --- /dev/null +++ b/source/contacteditor/frmContactEditorLanguages.cpp @@ -0,0 +1,211 @@ +#include "frmContactEditorLanguages.h" +#include "../common/textprocessing.h" +#include + +frmContactEditorLanguages::frmContactEditorLanguages( wxWindow* parent ) +: +frmContactEditorLanguagesADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorLanguages::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorLanguages::SetEditorMode(bool EditMode, SectionType SectType) +{ + + // Set the editor mode for adding or editing an email address. + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Language")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Language")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. + + striter = LanguageListPtr->find(LanguageListIndex); + + if (striter->first == LanguageListIndex){ + + strValue = striter->second; + + } + + txtLanguage->SetValue(strValue); + + // Setup the Slider. + + intiter = LanguageListPrefPtr->find(LanguageListIndex); + + if (intiter->first == LanguageListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; +} + +void frmContactEditorLanguages::ProcessAction( wxCommandEvent& event ) +{ + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + // Add the language to the list. + + wxString strValue; + + // Add language. + + LanguageListPtr->insert(std::make_pair(LanguageListIndex, txtLanguage->GetValue())); + + // Add Email type. + + if (EditSectionType == CE_GENERAL){ + + LanguageListTypePtr->insert(std::make_pair(LanguageListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + LanguageListTypePtr->insert(std::make_pair(LanguageListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + LanguageListTypePtr->insert(std::make_pair(LanguageListIndex, wxT("work"))); + + } + + // Add Language priority. + + if (chkUsePref->IsChecked()){ + + LanguageListPrefPtr->insert(std::make_pair(LanguageListIndex, sliPriority->GetValue())); + + } else { + + LanguageListPrefPtr->insert(std::make_pair(LanguageListIndex, 0)); + + } + + // Add the data to the form. + + wxListItem coldata; + + coldata.SetId(LanguageListIndex); + coldata.SetData(LanguageListIndex); + coldata.SetText(txtLanguage->GetValue()); + ListCtrlIndex = LanguageListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + LanguageListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE){ + + // Edit the language. + + wxString strAddress; + wxString strValue; + long longSelected = -1; + + LanguageListPtr->erase(LanguageListIndex); + LanguageListPtr->insert(std::make_pair(LanguageListIndex, txtLanguage->GetValue())); + + LanguageListPrefPtr->erase(LanguageListIndex); + + if (chkUsePref->IsChecked()){ + + LanguageListPrefPtr->insert(std::make_pair(LanguageListIndex, sliPriority->GetValue())); + + } else { + + LanguageListPrefPtr->insert(std::make_pair(LanguageListIndex, 0)); + + } + + longSelected = LanguageListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + LanguageListCtrlPtr->SetItem(longSelected, 0, txtLanguage->GetValue()); + + if (chkUsePref->IsChecked()){ + + LanguageListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + LanguageListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorLanguages::CloseWindow( wxCommandEvent& event ) +{ + + // Close the window. + + this->Close(); + +} + +void frmContactEditorLanguages::SetupPointers(std::map *LanguageList, + std::map *LanguageListAltID, + std::map *LanguageListPID, + std::map *LanguageListType, + std::map *LanguageListTokens, + std::map *LanguageListPref, + wxListCtrl *LanguageListCtrl, + int LanguageIndex ) +{ + + // Setup the pointers so that the data can be processed without + // duplication. + + LanguageListPtr = LanguageList; + LanguageListAltIDPtr = LanguageListAltID; + LanguageListPIDPtr = LanguageListPID; + LanguageListTypePtr = LanguageListType; + LanguageListTokensPtr = LanguageListTokens; + LanguageListPrefPtr = LanguageListPref; + LanguageListCtrlPtr = LanguageListCtrl; + LanguageListIndex = LanguageIndex; +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorLanguages.h b/source/contacteditor/frmContactEditorLanguages.h new file mode 100644 index 0000000..9ba32aa --- /dev/null +++ b/source/contacteditor/frmContactEditorLanguages.h @@ -0,0 +1,51 @@ +#ifndef __frmContactEditorLanguages__ +#define __frmContactEditorLanguages__ +#include + +/** +@file +Subclass of frmContactEditorLanguagesADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" + +//// end generated include + +#include "../enums.h" + +/** Implementing frmContactEditorLanguagesADT */ +class frmContactEditorLanguages : public frmContactEditorLanguagesADT +{ + protected: + // Handlers for frmContactEditorLanguagesADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorLanguages( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *LanguageList, + std::map *LanguageListAltID, + std::map *LanguageListPID, + std::map *LanguageListType, + std::map *LanguageListTokens, + std::map *LanguageListPref, + wxListCtrl *LanguageListCtrl, + int LanguageIndex ); + //// end generated class members + private: + bool EditorMode; + std::map *LanguageListPtr; + std::map *LanguageListAltIDPtr; + std::map *LanguageListPIDPtr; + std::map *LanguageListTypePtr; + std::map *LanguageListTokensPtr; + std::map *LanguageListPrefPtr; + wxListCtrl *LanguageListCtrlPtr; + int LanguageListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorLanguages__ diff --git a/source/contacteditor/frmContactEditorNickname.cpp b/source/contacteditor/frmContactEditorNickname.cpp new file mode 100644 index 0000000..5261969 --- /dev/null +++ b/source/contacteditor/frmContactEditorNickname.cpp @@ -0,0 +1,231 @@ +#include "frmContactEditorNickname.h" +#include "../common/textprocessing.h" + +frmContactEditorNickname::frmContactEditorNickname( wxWindow* parent ) +: +frmContactEditorNicknameADT( parent ) +{ + +} + +void frmContactEditorNickname::InitAddressEditor( wxInitDialogEvent& event ) +{ + // Do nothing with this subroutine for the time being. +} + +void frmContactEditorNickname::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorNickname::ProcessData( wxCommandEvent& event ) +{ + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + // Add the language to the list. + + wxString strValue; + + // Add nickname. + + NicknamesListPtr->insert(std::make_pair(NicknamesListIndex, txtNickname->GetValue())); + + // Add nickname type. + + if (EditSectionType == CE_GENERAL){ + + NicknamesListTypePtr->insert(std::make_pair(NicknamesListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + NicknamesListTypePtr->insert(std::make_pair(NicknamesListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + NicknamesListTypePtr->insert(std::make_pair(NicknamesListIndex, wxT("work"))); + + } + + // Add nickname language. + + NicknamesListLanguagePtr->insert(std::make_pair(NicknamesListIndex, cmbLanguage->GetValue())); + + // Add nickname priority. + + if (chkUsePref->IsChecked()){ + + NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, sliPriority->GetValue())); + + } else { + + NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, 0)); + + } + + // Add the data to the form. + + wxListItem coldata; + + coldata.SetId(NicknamesListIndex); + coldata.SetData(NicknamesListIndex); + coldata.SetText(txtNickname->GetValue()); + ListCtrlIndex = NicknamesListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + NicknamesListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE){ + + // Edit the language. + + wxString strAddress; + wxString strValue; + long longSelected = -1; + + NicknamesListPtr->erase(NicknamesListIndex); + NicknamesListPtr->insert(std::make_pair(NicknamesListIndex, txtNickname->GetValue())); + + NicknamesListPrefPtr->erase(NicknamesListIndex); + + if (chkUsePref->IsChecked()){ + + NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, sliPriority->GetValue())); + + } else { + + NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, 0)); + + } + + NicknamesListLanguagePtr->erase(NicknamesListIndex); + NicknamesListLanguagePtr->insert(std::make_pair(NicknamesListIndex, cmbLanguage->GetValue())); + + longSelected = NicknamesListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + NicknamesListCtrlPtr->SetItem(longSelected, 0, txtNickname->GetValue()); + + if (chkUsePref->IsChecked()){ + + NicknamesListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + NicknamesListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorNickname::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorNickname::SetEditorMode(bool EditMode, SectionType SectType) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Nickname")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Nickname")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. Get the website. + + striter = NicknamesListPtr->find(NicknamesListIndex); + + if (striter->first == NicknamesListIndex){ + + strValue = striter->second; + + } + + txtNickname->SetValue(strValue); + + strValue.Clear(); + + striter = NicknamesListLanguagePtr->find(NicknamesListIndex); + + if (striter->first == NicknamesListIndex){ + + strValue = striter->second; + + } + + cmbLanguage->SetValue(strValue); + strValue.Clear(); + + // Get the website priority. + + intiter = NicknamesListPrefPtr->find(NicknamesListIndex); + + if (intiter->first == NicknamesListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorNickname::SetupPointers(std::map *NicknamesList, + std::map *NicknamesListAltID, + std::map *NicknamesListPID, + std::map *NicknamesListType, + std::map *NicknamesListLanguage, + std::map *NicknamesListTokens, + std::map *NicknamesListPref, + wxListCtrl *NicknamesListCtrl, + int NicknamesIndex ) +{ + + NicknamesListPtr = NicknamesList; + NicknamesListAltIDPtr = NicknamesListAltID; + NicknamesListPIDPtr = NicknamesListPID; + NicknamesListTypePtr = NicknamesListType; + NicknamesListLanguagePtr = NicknamesListLanguage; + NicknamesListTokensPtr = NicknamesListTokens; + NicknamesListPrefPtr = NicknamesListPref; + NicknamesListCtrlPtr = NicknamesListCtrl; + NicknamesListIndex = NicknamesIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorNickname.h b/source/contacteditor/frmContactEditorNickname.h new file mode 100644 index 0000000..005d97d --- /dev/null +++ b/source/contacteditor/frmContactEditorNickname.h @@ -0,0 +1,54 @@ +#ifndef __frmContactEditorNickname__ +#define __frmContactEditorNickname__ + +/** +@file +Subclass of frmContactEditorNicknameADT, which is generated by wxFormBuilder. +*/ + +#include +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorNicknameADT */ +class frmContactEditorNickname : public frmContactEditorNicknameADT +{ + protected: + // Handlers for frmContactEditorNicknameADT events. + void InitAddressEditor( wxInitDialogEvent& event ); + void EnablePriority( wxCommandEvent& event ); + void ProcessData( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorNickname( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *NicknamesList, + std::map *NicknamesListAltID, + std::map *NicknamesListPID, + std::map *NicknamesListType, + std::map *NicknamesListLanguage, + std::map *NicknamesListTokens, + std::map *NicknamesListPref, + wxListCtrl *NicknamesListCtrl, + int NicknamesIndex ); + //// end generated class members + private: + bool EditorMode; + std::map *NicknamesListPtr; + std::map *NicknamesListAltIDPtr; + std::map *NicknamesListPIDPtr; + std::map *NicknamesListTypePtr; + std::map *NicknamesListLanguagePtr; + std::map *NicknamesListTokensPtr; + std::map *NicknamesListPrefPtr; + wxListCtrl *NicknamesListCtrlPtr; + int NicknamesListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorNickname__ diff --git a/source/contacteditor/frmContactEditorNotes.cpp b/source/contacteditor/frmContactEditorNotes.cpp new file mode 100644 index 0000000..f4aaef4 --- /dev/null +++ b/source/contacteditor/frmContactEditorNotes.cpp @@ -0,0 +1,258 @@ +#include "frmContactEditorNotes.h" +#include "../common/textprocessing.h" +#include + +frmContactEditorNotes::frmContactEditorNotes( wxWindow* parent ) +: +frmContactEditorNotesADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorNotes::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorNotes::ProcessAction( wxCommandEvent& event ) +{ + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + // Add the note to the list. + + wxString strAddress; + wxString strValue; + + // Add note. + + NotesListPtr->insert(std::make_pair(NotesListIndex, txtNote->GetValue())); + + // Add note type. + + if (EditSectionType == CE_GENERAL){ + + NotesListTypePtr->insert(std::make_pair(NotesListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + NotesListTypePtr->insert(std::make_pair(NotesListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + NotesListTypePtr->insert(std::make_pair(NotesListIndex, wxT("work"))); + + } + + // Add note priority. + + if (chkUsePref->IsChecked()){ + + NotesListPrefPtr->insert(std::make_pair(NotesListIndex, sliPriority->GetValue())); + + } else { + + NotesListPrefPtr->insert(std::make_pair(NotesListIndex, 0)); + + } + + // Add note language. + + strValue.Clear(); + + if (!strValue.IsEmpty()){ + + NotesListLangPtr->insert(std::make_pair(NotesListIndex, cmbLanguage->GetValue())); + + } else { + + NotesListLangPtr->insert(std::make_pair(NotesListIndex, wxT(""))); + + } + + // Add the data to the form. + + wxListItem coldata; + + coldata.SetId(NotesListIndex); + coldata.SetData(NotesListIndex); + coldata.SetText(txtNote->GetValue()); + ListCtrlIndex = NotesListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + NotesListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE){ + + // Edit the note. + + wxString strAddress; + wxString strValue; + long longSelected = -1; + + // Update the note. + + NotesListPtr->erase(NotesListIndex); + NotesListPtr->insert(std::make_pair(NotesListIndex, txtNote->GetValue())); + + // Update the note preference. + + NotesListPrefPtr->erase(NotesListIndex); + + if (chkUsePref->IsChecked()){ + + NotesListPrefPtr->insert(std::make_pair(NotesListIndex, sliPriority->GetValue())); + + } else { + + NotesListPrefPtr->insert(std::make_pair(NotesListIndex, 0)); + + } + + // Update the language. + + strValue.Clear(); + + NotesListLangPtr->erase(NotesListIndex); + + if (!strValue.IsEmpty()){ + + NotesListLangPtr->insert(std::make_pair(NotesListIndex, cmbLanguage->GetValue())); + + } else { + + NotesListLangPtr->insert(std::make_pair(NotesListIndex, wxT(""))); + + } + + // Update the form. + + longSelected = NotesListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + NotesListCtrlPtr->SetItem(longSelected, 0, txtNote->GetValue()); + + if (chkUsePref->IsChecked()){ + + NotesListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + NotesListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorNotes::SetEditorMode(bool EditMode, SectionType SectType) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Note")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Note")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Get the note. + + striter = NotesListPtr->find(NotesListIndex); + + if (striter->first == NotesListIndex){ + + strValue = striter->second; + + } + + txtNote->SetValue(strValue); + + // Get the language. + + striter = NotesListLangPtr->find(NotesListIndex); + + if (striter->first == NotesListIndex){ + + strValue = striter->second; + + } + + cmbLanguage->SetValue(strValue); + + // Get the priority. + + intiter = NotesListPrefPtr->find(NotesListIndex); + + if (intiter->first == NotesListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorNotes::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + + +void frmContactEditorNotes::SetupPointers(std::map *NotesList, + std::map *NotesListLang, + std::map *NotesListAltID, + std::map *NotesListPID, + std::map *NotesListType, + std::map *NotesListTokens, + std::map *NotesListPref, + wxListCtrl *NotesListCtrl, + int NotesIndex ) +{ + + NotesListPtr = NotesList; + NotesListLangPtr = NotesListLang; + NotesListAltIDPtr = NotesListAltID; + NotesListPIDPtr = NotesListPID; + NotesListTypePtr = NotesListType; + NotesListTokensPtr = NotesListTokens; + NotesListPrefPtr = NotesListPref; + NotesListCtrlPtr = NotesListCtrl; + NotesListIndex = NotesIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorNotes.h b/source/contacteditor/frmContactEditorNotes.h new file mode 100644 index 0000000..7e64771 --- /dev/null +++ b/source/contacteditor/frmContactEditorNotes.h @@ -0,0 +1,53 @@ +#ifndef __frmContactEditorNotes__ +#define __frmContactEditorNotes__ + +/** +@file +Subclass of frmContactEditorNotesADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorNotesADT */ +class frmContactEditorNotes : public frmContactEditorNotesADT +{ + protected: + // Handlers for frmContactEditorNotesADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorNotes( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *NotesList, + std::map *NotesListLang, + std::map *NotesListAltID, + std::map *NotesListPID, + std::map *NotesListType, + std::map *NotesListTokens, + std::map *NotesListPref, + wxListCtrl *NotesListCtrl, + int NotesIndex ); + //// end generated class members + + private: + + bool EditorMode; + std::map *NotesListPtr; + std::map *NotesListLangPtr; + std::map *NotesListAltIDPtr; + std::map *NotesListPIDPtr; + std::map *NotesListTypePtr; + std::map *NotesListTokensPtr; + std::map *NotesListPrefPtr; + wxListCtrl *NotesListCtrlPtr; + int NotesListIndex; + SectionType EditSectionType; +}; + +#endif // __frmContactEditorNotes__ diff --git a/source/contacteditor/frmContactEditorOrganisations.cpp b/source/contacteditor/frmContactEditorOrganisations.cpp new file mode 100644 index 0000000..ccfb509 --- /dev/null +++ b/source/contacteditor/frmContactEditorOrganisations.cpp @@ -0,0 +1,278 @@ +#include "frmContactEditorOrganisations.h" +#include +#include "../common/textprocessing.h" + +frmContactEditorOrganisations::frmContactEditorOrganisations( wxWindow* parent ) +: +frmContactEditorOrganisationsADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorOrganisations::UpdateSortAs( wxCommandEvent& event ) +{ + + // Clear out the options for the combo box. + + cmbSortAs->Clear(); + cmbSortAs->Append(txtOrganisation->GetValue()); + + // See if there are more than one word, if not leave drop down + // with the default organisation name. + + wxStringTokenizer tknOrg(txtOrganisation->GetValue(), wxT(" ")); + wxString strArrange; + wxString strFirst; + wxString strArrFinal; + + if (tknOrg.CountTokens() > 1){ + + strFirst = tknOrg.GetNextToken(); + + while (tknOrg.HasMoreTokens()){ + + strArrange.Append(tknOrg.GetNextToken()); + + if (tknOrg.CountTokens() != 0){ + strArrange.Append(wxT(" ")); + } + + } + + strArrFinal.Append(strArrange); + strArrFinal.Append(wxT(", ")); + strArrFinal.Append(strFirst); + cmbSortAs->Append(strArrFinal); + + } + +} + +void frmContactEditorOrganisations::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorOrganisations::ProcessAction( wxCommandEvent& event ) +{ + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + wxString strValue; + + // Setup Organisation Name. + + OrganisationListPtr->insert(std::make_pair(OrganisationListIndex, txtOrganisation->GetValue())); + + // Setup Organisation Type. + + if (EditSectionType == CE_GENERAL){ + + OrganisationListTypePtr->insert(std::make_pair(OrganisationListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + OrganisationListTypePtr->insert(std::make_pair(OrganisationListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + OrganisationListTypePtr->insert(std::make_pair(OrganisationListIndex, wxT("work"))); + + } + + // Setup Organisation SortAs. + + strValue.Clear(); + OrganisationListSortAsPtr->insert(std::make_pair(OrganisationListIndex, cmbSortAs->GetValue())); + + // Setup Organisation Priority. + + if (chkUsePref->IsChecked()){ + + OrganisationListPrefPtr->insert(std::make_pair(OrganisationListIndex, sliPriority->GetValue())); + + } else { + + OrganisationListPrefPtr->insert(std::make_pair(OrganisationListIndex, 0)); + + } + + // Add to form. + + wxListItem coldata; + + coldata.SetId(OrganisationListIndex); + coldata.SetData(OrganisationListIndex); + coldata.SetText(txtOrganisation->GetValue()); + ListCtrlIndex = OrganisationListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + OrganisationListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE) { + + long longSelected = -1; + wxString strValue; + + // Update Organisation Name. + + OrganisationListPtr->erase(OrganisationListIndex); + OrganisationListPtr->insert(std::make_pair(OrganisationListIndex, txtOrganisation->GetValue())); + + // Update Organisation SortAs. + + strValue.Clear(); + OrganisationListSortAsPtr->erase(OrganisationListIndex); + OrganisationListSortAsPtr->insert(std::make_pair(OrganisationListIndex, cmbSortAs->GetValue())); + + // Update Organisation Priority. + + OrganisationListPrefPtr->erase(OrganisationListIndex); + + if (chkUsePref->IsChecked()){ + + OrganisationListPrefPtr->insert(std::make_pair(OrganisationListIndex, sliPriority->GetValue())); + + } else { + + OrganisationListPrefPtr->insert(std::make_pair(OrganisationListIndex, 0)); + + } + + // Update form. + + longSelected = OrganisationListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + OrganisationListCtrlPtr->SetItem(longSelected, 0, txtOrganisation->GetValue()); + + if (chkUsePref->IsChecked()){ + + OrganisationListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + OrganisationListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorOrganisations::SetEditorMode(bool EditMode, SectionType SectType) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Organisation")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Organisation")); + + // Load the data into the form. + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Get the organisation name. + + striter = OrganisationListPtr->find(OrganisationListIndex); + + if (striter->first == OrganisationListIndex){ + + strValue = striter->second; + + } + + txtOrganisation->SetValue(strValue); + + strValue.Clear(); + + // Get the organisation sort as. + + striter = OrganisationListSortAsPtr->find(OrganisationListIndex); + + if (striter->first == OrganisationListIndex){ + + strValue = striter->second; + + } + + cmbSortAs->SetValue(strValue); + + // Get the organisation priority. + + intiter = OrganisationListPrefPtr->find(OrganisationListIndex); + + if (intiter->first == OrganisationListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorOrganisations::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorOrganisations::SetupPointers(std::map *OrganisationList, + std::map *OrganisationListLanguage, + std::map *OrganisationListSortAs, + std::map *OrganisationListAltID, + std::map *OrganisationListPID, + std::map *OrganisationListType, + std::map *OrganisationListTokens, + std::map *OrganisationListPref, + wxListCtrl *OrganisationListCtrl, + int OrganisationIndex ) +{ + + OrganisationListPtr = OrganisationList; + OrganisationListLanguagePtr = OrganisationListLanguage; + OrganisationListSortAsPtr = OrganisationListSortAs; + OrganisationListAltIDPtr = OrganisationListAltID; + OrganisationListPIDPtr = OrganisationListPID; + OrganisationListTypePtr = OrganisationListType; + OrganisationListTokensPtr = OrganisationListTokens; + OrganisationListPrefPtr = OrganisationListPref; + OrganisationListCtrlPtr = OrganisationListCtrl; + OrganisationListIndex = OrganisationIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorOrganisations.h b/source/contacteditor/frmContactEditorOrganisations.h new file mode 100644 index 0000000..2e258be --- /dev/null +++ b/source/contacteditor/frmContactEditorOrganisations.h @@ -0,0 +1,57 @@ +#ifndef __frmContactEditorOrganisations__ +#define __frmContactEditorOrganisations__ + +/** +@file +Subclass of frmContactEditorOrganisationsADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorOrganisationsADT */ +class frmContactEditorOrganisations : public frmContactEditorOrganisationsADT +{ + protected: + // Handlers for frmContactEditorOrganisationsADT events. + void UpdateSortAs( wxCommandEvent& event ); + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorOrganisations( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *OrganisationList, + std::map *OrganisationListLanguage, + std::map *OrganisationListSortAs, + std::map *OrganisationListAltID, + std::map *OrganisationListPID, + std::map *OrganisationListType, + std::map *OrganisationListTokens, + std::map *OrganisationListPref, + wxListCtrl *OrganisationListCtrl, + int OrganisationIndex ); + //// end generated class members + + private: + + bool EditorMode; + std::map *OrganisationListPtr; + std::map *OrganisationListLanguagePtr; + std::map *OrganisationListSortAsPtr; + std::map *OrganisationListAltIDPtr; + std::map *OrganisationListPIDPtr; + std::map *OrganisationListTypePtr; + std::map *OrganisationListTokensPtr; + std::map *OrganisationListPrefPtr; + wxListCtrl *OrganisationListCtrlPtr; + int OrganisationListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorOrganisations__ diff --git a/source/contacteditor/frmContactEditorPicture.cpp b/source/contacteditor/frmContactEditorPicture.cpp new file mode 100644 index 0000000..905e3ad --- /dev/null +++ b/source/contacteditor/frmContactEditorPicture.cpp @@ -0,0 +1,356 @@ +#include "frmContactEditorPicture.h" + +#include +#include +#include +#include +#include +#include + +#include "../common/textprocessing.h" +#include "../common/base64.h" +#include "../common/mime.h" + + +frmContactEditorPicture::frmContactEditorPicture( wxWindow* parent ) +: +frmContactEditorPictureADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); + + cmbType->Append(wxT("")); + cmbType->Append(_("Home")); + cmbType->Append(_("Work")); +} + +void frmContactEditorPicture::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorPicture::ProcessData( wxCommandEvent& event ) +{ + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + // Load the file into memory. + + wxFile PictureFile; + wxString wxSPictureFilename; + wxString wxSPictureMIMEType; + size_t len; + std::string b64enc; + + wxSPictureFilename = fipPicture->GetPath(); + +/* +#if wxABI_VERSION < 20900 + if (AudioFile.Open(wxSAudioFilename.c_str(), wxT("rb"))){ +#else + if (AudioFile.Open(wxSAudioFilename, wxT("rb"))){ +#endif + +*/ + if (PictureFile.Open(wxSPictureFilename, wxFile::read)){ + size_t flen; + len = PictureFile.Length(); + + unsigned char* PictureFileData = new unsigned char[len]; + flen = PictureFile.Read(PictureFileData, len); + + // Check to make sure it is an audio file. + + wxMemoryInputStream istream(PictureFileData, flen); + wxImage photo; + + //wxBitmap (bigimgs_contactpersonicon48i, -1); + + //Get MIME data. + + /*const char *MIMEType; + magic_t MagicCookie = magic_open(MAGIC_MIME); + magic_setflags(MagicCookie, MAGIC_MIME_TYPE); + + if (!MagicCookie){ + + wxMessageBox(_("An error occured with the support library for getting the picture type."), _("Error opening picture file"), wxICON_ERROR); + return; + + } + + if (magic_load(MagicCookie, NULL) != 0) { + + wxMessageBox(_("An error occured whilst determining the picture type."), _("Error opening picture file"), wxICON_ERROR); + return; + + } + + MIMEType = magic_file(MagicCookie, wxSPictureFilename.mb_str()); + wxSPictureMIMEType = wxString::FromUTF8(MIMEType); + magic_close(MagicCookie);*/ + + wxSPictureMIMEType = GetMIME(wxSPictureFilename); + + if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){ + + wxMessageBox(_("This file is in an picture format that is unsupported or is not a picture file."), _("Error opening picture file"), wxICON_ERROR); + return; + + + } + + // Covert the file into base64. + + b64enc = base64_encode(PictureFileData, (int)len); + + delete[] PictureFileData; + + } else { + + wxMessageBox(_("There was an error opening the audio file!"), _("Error opening audio file"), wxICON_ERROR); + + return; + + } + + PictureListPtr->insert(std::make_pair(PictureListIndex, b64enc)); + + wxString strValue; + strValue.Clear(); + + strValue = cmbType->GetString(cmbType->GetSelection()); + + // Setup Picture Type. + + if (strValue == _("Home")) { + + PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT("home"))); + + } else if (strValue == _("Work")) { + + PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT("work"))); + + } else { + + PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT(""))); + + } + + // Setup Organisation Priority. + + if (chkUsePref->IsChecked()){ + + PictureListPrefPtr->insert(std::make_pair(PictureListIndex, sliPriority->GetValue())); + + } else { + + PictureListPrefPtr->insert(std::make_pair(PictureListIndex, 0)); + + } + + // Setup MIME Type. + + PictureListPictureTypePtr->insert(std::make_pair(PictureListIndex, wxSPictureMIMEType)); + + // Setup encoding type. + + PictureListPicEncTypePtr->insert(std::make_pair(PictureListIndex, wxT("base64"))); + + // Add to form. + + wxListItem coldata; + + coldata.SetId(PictureListIndex); + coldata.SetData(PictureListIndex); + coldata.SetText(_("Picture")); + ListCtrlIndex = PictureListCtrlPtr->InsertItem(coldata); + + if (strValue == _("Home")) { + + PictureListCtrlPtr->SetItem(ListCtrlIndex, 1, _("Home")); + + } else if (strValue == _("Work")) { + + PictureListCtrlPtr->SetItem(ListCtrlIndex, 1, _("Work")); + + } else { + + + + } + + if (chkUsePref->IsChecked()){ + + PictureListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE) { + + // Do not touch the audio file but update the settings + // associated with the audio file. + + long longSelected = -1; + wxString strValue; + + // Update Picture Type. + + PictureListTypePtr->erase(PictureListIndex); + strValue = cmbType->GetString(cmbType->GetSelection()); + + if (strValue == _("Home")) { + + PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT("home"))); + + } else if (strValue == _("Work")) { + + PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT("work"))); + + } + + // Update Category Priority. + + PictureListPrefPtr->erase(PictureListIndex); + + if (chkUsePref->IsChecked()){ + + PictureListPrefPtr->insert(std::make_pair(PictureListIndex, sliPriority->GetValue())); + + } else { + + PictureListPrefPtr->insert(std::make_pair(PictureListIndex, 0)); + + } + + // Update form. + + longSelected = PictureListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + PictureListCtrlPtr->SetItem(longSelected, 0, wxT("Picture")); + PictureListCtrlPtr->SetItem(longSelected, 1, strValue); + + if (chkUsePref->IsChecked()){ + + PictureListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + PictureListCtrlPtr->SetItem(longSelected, 2, wxT("")); + + } + + this->Close(); + + } +} + +void frmContactEditorPicture::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorPicture::SetEditorMode(bool EditMode) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Picture")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Picture")); + fipPicture->Disable(); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. Get the website. + + striter = PictureListTypePtr->find(PictureListIndex); + + if (striter->first == PictureListIndex){ + + strValue = striter->second; + + } + + if (strValue == wxT("home")){ + + cmbType->SetSelection(1); + + } else if (strValue == wxT("work")){ + + cmbType->SetSelection(2); + + } else { + + cmbType->SetSelection(0); + + } + + //strValue.Clear(); + + // Get the website priority. + + intiter = PictureListPrefPtr->find(PictureListIndex); + + if (intiter->first == PictureListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + +} + +void frmContactEditorPicture::SetupPointers(std::map *PictureList, + std::map *PictureListAltID, + std::map *PictureListPID, + std::map *PictureListType, + std::map *PictureListPicEncType, + std::map *PictureListPictureType, + std::map *PictureListTokens, + std::map *PictureListMediatype, + std::map *PictureListPref, + wxListCtrl *PictureListCtrl, + int PictureIndex ) +{ + + PictureListPtr = PictureList; + PictureListAltIDPtr = PictureListAltID; + PictureListPIDPtr = PictureListPID; + PictureListPicEncTypePtr = PictureListPicEncType; + PictureListPictureTypePtr = PictureListPictureType; + PictureListTypePtr = PictureListType; + PictureListTokensPtr = PictureListTokens; + PictureListMediatypePtr = PictureListMediatype; + PictureListPrefPtr = PictureListPref; + PictureListCtrlPtr = PictureListCtrl; + PictureListIndex = PictureIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorPicture.h b/source/contacteditor/frmContactEditorPicture.h new file mode 100644 index 0000000..930a495 --- /dev/null +++ b/source/contacteditor/frmContactEditorPicture.h @@ -0,0 +1,57 @@ +#ifndef __frmContactEditorPicture__ +#define __frmContactEditorPicture__ + +/** +@file +Subclass of frmContactEditorPictureADT, which is generated by wxFormBuilder. +*/ + +#include +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorPictureADT */ +class frmContactEditorPicture : public frmContactEditorPictureADT +{ + protected: + // Handlers for frmContactEditorPictureADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessData( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorPicture( wxWindow* parent ); + void SetEditorMode(bool EditMode); + void SetupPointers(std::map *PictureList, + std::map *PictureListAltID, + std::map *PictureListPID, + std::map *PictureListType, + std::map *PictureListPicEncType, + std::map *PictureListPictureType, + std::map *PictureListTokens, + std::map *PictureListMediatype, + std::map *PictureListPref, + wxListCtrl *PictureListCtrl, + int PictureIndex ); + //// end generated class members + + bool EditorMode; + std::map *PictureListPtr; + std::map *PictureListAltIDPtr; + std::map *PictureListPIDPtr; + std::map *PictureListTypePtr; + std::map *PictureListPicEncTypePtr; + std::map *PictureListPictureTypePtr; + std::map *PictureListTokensPtr; + std::map *PictureListMediatypePtr; + std::map *PictureListPrefPtr; + wxListCtrl *PictureListCtrlPtr; + int PictureListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorPicture__ diff --git a/source/contacteditor/frmContactEditorRelated.cpp b/source/contacteditor/frmContactEditorRelated.cpp new file mode 100644 index 0000000..a9f774a --- /dev/null +++ b/source/contacteditor/frmContactEditorRelated.cpp @@ -0,0 +1,509 @@ +#include "frmContactEditorRelated.h" +#include +#include "../common/textprocessing.h" +#include "../enums.h" + +frmContactEditorRelated::frmContactEditorRelated( wxWindow* parent ) +: +frmContactEditorRelatedADT( parent ) +{ + + EditorMode = FALSE; + sliPriority->Disable(); + + // Setup the list of types for the related drop down box. + + cmbType->Append(_("Contact")); + cmbType->Append(_("Acquaintance")); + cmbType->Append(_("Friend")); + cmbType->Append(_("Met")); + cmbType->Append(_("Co-worker")); + cmbType->Append(_("Colleague")); + cmbType->Append(_("Co-resident")); + cmbType->Append(_("Neighbour")); + cmbType->Append(_("Child")); + cmbType->Append(_("Parent")); + cmbType->Append(_("Sibling")); + cmbType->Append(_("Spouse")); + cmbType->Append(_("Kin")); + cmbType->Append(_("Muse")); + cmbType->Append(_("Crush")); + cmbType->Append(_("Date")); + cmbType->Append(_("Sweetheart")); + cmbType->Append(_("Me")); + cmbType->Append(_("Agent")); + cmbType->Append(_("Emergency")); + +} + +void frmContactEditorRelated::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorRelated::SetEditorMode(bool EditMode, SectionType SectType) +{ + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Related")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Related")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Get the related data. + + striter = RelatedListPtr->find(RelatedListIndex); + + if (striter->first == RelatedListIndex){ + + strValue = striter->second; + + } + + txtRelated->SetValue(strValue); + + strValue.Clear(); + + // Get the related type. + + striter = RelatedListRelTypePtr->find(RelatedListIndex); + + if (striter->first == RelatedListIndex){ + + strValue = striter->second; + + } + + if (strValue == wxT("contact")){ + + cmbType->SetValue(_("Contact")); + + } else if (strValue == wxT("acquaintance")){ + + cmbType->SetValue(_("Acquaintance")); + + } else if (strValue == wxT("friend")){ + + cmbType->SetValue(_("Friend")); + + } else if (strValue == wxT("met")){ + + cmbType->SetValue(_("Met")); + + } else if (strValue == wxT("co-worker")){ + + cmbType->SetValue(_("Co-worker")); + + } else if (strValue == wxT("colleague")){ + + cmbType->SetValue(_("Colleague")); + + } else if (strValue == wxT("co-resident")){ + + cmbType->SetValue(_("Co-resident")); + + } else if (strValue == wxT("neighbor")){ + + cmbType->SetValue(_("Neighbour")); + + } else if (strValue == wxT("child")){ + + cmbType->SetValue(_("Child")); + + } else if (strValue == wxT("parent")){ + + cmbType->SetValue(_("Parent")); + + } else if (strValue == wxT("sibling")){ + + cmbType->SetValue(_("Sibling")); + + } else if (strValue == wxT("spouse")){ + + cmbType->SetValue(_("Spouse")); + + } else if (strValue == wxT("kin")){ + + cmbType->SetValue(_("Kin")); + + } else if (strValue == wxT("muse")){ + + cmbType->SetValue(_("Muse")); + + } else if (strValue == wxT("crush")){ + + cmbType->SetValue(_("Crush")); + + } else if (strValue == wxT("date")){ + + cmbType->SetValue(_("Date")); + + } else if (strValue == wxT("sweetheart")){ + + cmbType->SetValue(_("Sweetheart")); + + } else if (strValue == wxT("me")){ + + cmbType->SetValue(_("Me")); + + } else if (strValue == wxT("agent")){ + + cmbType->SetValue(_("Agent")); + + } else if (strValue == wxT("emergency")){ + + cmbType->SetValue(_("Emergency")); + + } else { + + cmbType->SetValue(strValue); + + } + + // Setup the Slider. + + intiter = RelatedListPrefPtr->find(RelatedListIndex); + + if (intiter->first == RelatedListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorRelated::ProcessData( wxCommandEvent& event ) +{ + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + wxString strValue; + + RelatedListPtr->insert(std::make_pair(RelatedListIndex, txtRelated->GetValue())); + + // Work out the type of contact. + + strValue = cmbType->GetValue(); + + if (strValue == _("Contact")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("contact"))); + + } else if (strValue == _("Acquaintance")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("acquaintance"))); + + } else if (strValue == _("Friend")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("friend"))); + + } else if (strValue == _("Met")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("met"))); + + } else if (strValue == _("Co-worker")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("co-worker"))); + + } else if (strValue == _("Colleague")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("colleague"))); + + } else if (strValue == _("Co-resident")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("co-resident"))); + + } else if (strValue == _("Neighbour")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("neighbor"))); + + } else if (strValue == _("Child")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("child"))); + + } else if (strValue == _("Parent")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("parent"))); + + } else if (strValue == _("Sibling")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("sibling"))); + + } else if (strValue == _("Spouse")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("spouse"))); + + } else if (strValue == _("Kin")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("kin"))); + + } else if (strValue == _("Muse")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("muse"))); + + } else if (strValue == _("Crush")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("crush"))); + + } else if (strValue == _("Date")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("date"))); + + } else if (strValue == _("Sweetheart")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("sweetheart"))); + + } else if (strValue == _("Me")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("me"))); + + } else if (strValue == _("Agent")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("agent"))); + + } else if (strValue == _("Emergency")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("emergency"))); + + } else { + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, strValue)); + + } + + // Add Related type. + + if (EditSectionType == CE_GENERAL){ + + RelatedListTypePtr->insert(std::make_pair(RelatedListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + RelatedListTypePtr->insert(std::make_pair(RelatedListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + RelatedListTypePtr->insert(std::make_pair(RelatedListIndex, wxT("work"))); + + } + + // Add Related Priority. + + if (chkUsePref->IsChecked()){ + + RelatedListPrefPtr->insert(std::make_pair(RelatedListIndex, sliPriority->GetValue())); + + } else { + + RelatedListPrefPtr->insert(std::make_pair(RelatedListIndex, 0)); + + } + + // Add to the form. + + wxListItem coldata; + + coldata.SetId(RelatedListIndex); + coldata.SetData(RelatedListIndex); + coldata.SetText(cmbType->GetValue()); + ListCtrlIndex = RelatedListCtrlPtr->InsertItem(coldata); + + RelatedListCtrlPtr->SetItem(ListCtrlIndex, 1, txtRelated->GetValue()); + + if (chkUsePref->IsChecked()){ + + RelatedListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE) { + + wxString strValue; + long longSelected = -1; + + // Work out the type of contact. + + strValue = cmbType->GetValue(); + + RelatedListRelTypePtr->erase(RelatedListIndex); + + if (strValue == _("Contact")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("contact"))); + + } else if (strValue == _("Acquaintance")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("acquaintance"))); + + } else if (strValue == _("Friend")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("friend"))); + + } else if (strValue == _("Met")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("met"))); + + } else if (strValue == _("Co-worker")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("co-worker"))); + + } else if (strValue == _("Colleague")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("colleague"))); + + } else if (strValue == _("Co-resident")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("co-resident"))); + + } else if (strValue == _("Neighbour")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("neighbor"))); + + } else if (strValue == _("Child")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("child"))); + + } else if (strValue == _("Parent")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("parent"))); + + } else if (strValue == _("Sibling")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("sibling"))); + + } else if (strValue == _("Spouse")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("spouse"))); + + } else if (strValue == _("Kin")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("kin"))); + + } else if (strValue == _("Muse")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("muse"))); + + } else if (strValue == _("Crush")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("crush"))); + + } else if (strValue == _("Date")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("date"))); + + } else if (strValue == _("Sweetheart")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("sweetheart"))); + + } else if (strValue == _("Me")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("me"))); + + } else if (strValue == _("Agent")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("agent"))); + + } else if (strValue == _("Emergency")){ + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("emergency"))); + + } else { + + RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, strValue)); + + } + + RelatedListPrefPtr->erase(RelatedListIndex); + + if (chkUsePref->IsChecked()){ + + RelatedListPrefPtr->insert(std::make_pair(RelatedListIndex, sliPriority->GetValue())); + + } else { + + RelatedListPrefPtr->insert(std::make_pair(RelatedListIndex, 0)); + + } + + // Get the related person/details. + + RelatedListPtr->erase(RelatedListIndex); + RelatedListPtr->insert(std::make_pair(RelatedListIndex, txtRelated->GetValue())); + + // Update the form. + + longSelected = RelatedListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + RelatedListCtrlPtr->SetItem(longSelected, 0, cmbType->GetValue()); + RelatedListCtrlPtr->SetItem(longSelected, 1, txtRelated->GetValue()); + + if (chkUsePref->IsChecked()){ + + RelatedListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + RelatedListCtrlPtr->SetItem(longSelected, 2, wxT("")); + + } + + this->Close(); + + } +} + +void frmContactEditorRelated::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorRelated::SetupPointers(std::map *RelatedList, + std::map *RelatedListRelType, + std::map *RelatedListAltID, + std::map *RelatedListPID, + std::map *RelatedListType, + std::map *RelatedListTokens, + std::map *RelatedListPref, + wxListCtrl *RelatedListCtrl, + int RelatedIndex ) +{ + + RelatedListPtr = RelatedList; + RelatedListRelTypePtr = RelatedListRelType; + RelatedListAltIDPtr = RelatedListAltID; + RelatedListPIDPtr = RelatedListPID; + RelatedListTypePtr = RelatedListType; + RelatedListTokensPtr = RelatedListTokens; + RelatedListPrefPtr = RelatedListPref; + RelatedListCtrlPtr = RelatedListCtrl; + RelatedListIndex = RelatedIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorRelated.h b/source/contacteditor/frmContactEditorRelated.h new file mode 100644 index 0000000..3c3f37f --- /dev/null +++ b/source/contacteditor/frmContactEditorRelated.h @@ -0,0 +1,54 @@ +#ifndef __frmContactEditorRelated__ +#define __frmContactEditorRelated__ + +/** +@file +Subclass of frmContactEditorRelatedADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" +#include "../enums.h" +#include + +//// end generated include + +/** Implementing frmContactEditorRelatedADT */ +class frmContactEditorRelated : public frmContactEditorRelatedADT +{ + protected: + // Handlers for frmContactEditorRelatedADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessData( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorRelated( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *RelatedList, + std::map *RelatedListRelType, + std::map *RelatedListAltID, + std::map *RelatedListPID, + std::map *RelatedListType, + std::map *RelatedListTokens, + std::map *RelatedListPref, + wxListCtrl *RelatedListCtrl, + int RelatedIndex ); + //// end generated class members + + private: + + bool EditorMode; + std::map *RelatedListPtr; + std::map *RelatedListRelTypePtr; + std::map *RelatedListAltIDPtr; + std::map *RelatedListPIDPtr; + std::map *RelatedListTypePtr; + std::map *RelatedListTokensPtr; + std::map *RelatedListPrefPtr; + wxListCtrl *RelatedListCtrlPtr; + int RelatedListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorRelated__ diff --git a/source/contacteditor/frmContactEditorRoles.cpp b/source/contacteditor/frmContactEditorRoles.cpp new file mode 100644 index 0000000..d33fdfa --- /dev/null +++ b/source/contacteditor/frmContactEditorRoles.cpp @@ -0,0 +1,214 @@ +#include "frmContactEditorRoles.h" + +#include +#include "../enums.h" +#include "../common/textprocessing.h" + +frmContactEditorRoles::frmContactEditorRoles( wxWindow* parent ) +: +frmContactEditorRolesADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorRoles::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorRoles::ProcessAction( wxCommandEvent& event ) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + wxString strValue; + + // Get the website address. + + RolesListPtr->insert(std::make_pair(RolesListIndex, txtRole->GetValue())); + + // Get the type of website. + + if (EditSectionType == CE_GENERAL){ + + RolesListTypePtr->insert(std::make_pair(RolesListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + RolesListTypePtr->insert(std::make_pair(RolesListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + RolesListTypePtr->insert(std::make_pair(RolesListIndex, wxT("work"))); + + } + + // Add the website priority. + + if (chkUsePref->IsChecked()){ + + RolesListPrefPtr->insert(std::make_pair(RolesListIndex, sliPriority->GetValue())); + + } else { + + RolesListPrefPtr->insert(std::make_pair(RolesListIndex, 0)); + + } + + // Add to the form. + + wxListItem coldata; + + coldata.SetId(RolesListIndex); + coldata.SetData(RolesListIndex); + coldata.SetText(txtRole->GetValue()); + ListCtrlIndex = RolesListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + RolesListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else { + + // Update the title. + long longSelected = -1; + wxString strValue; + RolesListPtr->erase(RolesListIndex); + RolesListPtr->insert(std::make_pair(RolesListIndex, txtRole->GetValue())); + + // Update the slider priority. + + RolesListPrefPtr->erase(RolesListIndex); + + if (chkUsePref->IsChecked()){ + + RolesListPrefPtr->insert(std::make_pair(RolesListIndex, sliPriority->GetValue())); + + } else { + + RolesListPrefPtr->insert(std::make_pair(RolesListIndex, 0)); + + } + + // Update the form. + + longSelected = RolesListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + RolesListCtrlPtr->SetItem(longSelected, 0, txtRole->GetValue()); + + if (chkUsePref->IsChecked()){ + + RolesListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + RolesListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } +} + +void frmContactEditorRoles::SetEditorMode(bool EditMode, SectionType SectType) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Title")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Title")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. Get the website. + + striter = RolesListPtr->find(RolesListIndex); + + if (striter->first == RolesListIndex){ + + strValue = striter->second; + + } + + txtRole->SetValue(strValue); + + strValue.Clear(); + + // Get the website priority. + + intiter = RolesListPrefPtr->find(RolesListIndex); + + if (intiter->first == RolesListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorRoles::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorRoles::SetupPointers(std::map *RolesList, + std::map *RolesListLanguage, + std::map *RolesListAltID, + std::map *RolesListPID, + std::map *RolesListType, + std::map *RolesListTokens, + std::map *RolesListPref, + wxListCtrl *RolesListCtrl, + int RolesIndex ) +{ + + RolesListPtr = RolesList; + RolesListLanguagePtr = RolesListLanguage; + RolesListAltIDPtr = RolesListAltID; + RolesListPIDPtr = RolesListPID; + RolesListTypePtr = RolesListType; + RolesListTokensPtr = RolesListTokens; + RolesListPrefPtr = RolesListPref; + RolesListCtrlPtr = RolesListCtrl; + RolesListIndex = RolesIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorRoles.h b/source/contacteditor/frmContactEditorRoles.h new file mode 100644 index 0000000..b0b8d92 --- /dev/null +++ b/source/contacteditor/frmContactEditorRoles.h @@ -0,0 +1,53 @@ +#ifndef __frmContactEditorRoles__ +#define __frmContactEditorRoles__ + +/** +@file +Subclass of frmContactEditorRolesADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorRolesADT */ +class frmContactEditorRoles : public frmContactEditorRolesADT +{ + protected: + // Handlers for frmContactEditorRolesADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorRoles( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *RolesList, + std::map *RolesListLanguage, + std::map *RolesListAltID, + std::map *RolesListPID, + std::map *RolesListType, + std::map *RolesListTokens, + std::map *RolesListPref, + wxListCtrl *RolesListCtrl, + int RolesIndex ); + //// end generated class members + + private: + + bool EditorMode; + std::map *RolesListPtr; + std::map *RolesListLanguagePtr; + std::map *RolesListAltIDPtr; + std::map *RolesListPIDPtr; + std::map *RolesListTypePtr; + std::map *RolesListTokensPtr; + std::map *RolesListPrefPtr; + wxListCtrl *RolesListCtrlPtr; + int RolesListIndex; + SectionType EditSectionType; +}; + +#endif // __frmContactEditorRoles__ diff --git a/source/contacteditor/frmContactEditorSound.cpp b/source/contacteditor/frmContactEditorSound.cpp new file mode 100644 index 0000000..6e1fab0 --- /dev/null +++ b/source/contacteditor/frmContactEditorSound.cpp @@ -0,0 +1,355 @@ +#include "frmContactEditorSound.h" + +#include +#include +#include + +#include "../common/textprocessing.h" +#include "../common/base64.h" +#include "../common/mime.h" + +frmContactEditorSound::frmContactEditorSound( wxWindow* parent ) +: +frmContactEditorSoundADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); + + cmbType->Append(wxT("")); + cmbType->Append(_("Home")); + cmbType->Append(_("Work")); +} + +void frmContactEditorSound::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorSound::ProcessData( wxCommandEvent& event ) +{ + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + // Load the file into memory. + + wxFile AudioFile; + wxString wxSAudioString; + wxString wxSAudioFilename; + wxString wxSAudioMIMEType; + sf::SoundBuffer AudioBuffer; + size_t len; + std::string b64enc; + + wxSAudioFilename = fipSound->GetPath(); + +/* +#if wxABI_VERSION < 20900 + if (AudioFile.Open(wxSAudioFilename.c_str(), wxT("rb"))){ +#else + if (AudioFile.Open(wxSAudioFilename, wxT("rb"))){ +#endif + +*/ + if (AudioFile.Open(wxSAudioFilename, wxFile::read)){ + size_t flen; + len = AudioFile.Length(); + + unsigned char* AudioFileData = new unsigned char[len]; + flen = AudioFile.Read(AudioFileData, len); + + // Get MIME Type. + + /*const char *MIMEType; + magic_t MagicCookie = magic_open(MAGIC_MIME); + magic_setflags(MagicCookie, MAGIC_MIME_TYPE); + + if (!MagicCookie){ + + wxMessageBox(_("An error occured with the support library for getting the picture type."), _("Error opening picture file"), wxICON_ERROR); + return; + + } + + if (magic_load(MagicCookie, NULL) != 0) { + + wxMessageBox(_("An error occured whilst determining the picture type."), _("Error opening picture file"), wxICON_ERROR); + return; + + } + + MIMEType = magic_file(MagicCookie, wxSAudioFilename.mb_str()); + wxSAudioMIMEType = wxString::FromUTF8(MIMEType); + magic_close(MagicCookie);*/ + + wxSAudioMIMEType = GetMIME(wxSAudioFilename); + + // Check to make sure it is an audio file. + + if (!AudioBuffer.loadFromMemory(AudioFileData, len)){ + + // Can't load file. We must flee... + // Also show an error message too. + + wxMessageBox(_("This file is in an audio format that is unsupported or is not an audio file."), _("Error opening audio file"), wxICON_ERROR); + + return; + + } + + // Covert the file into base64. + + b64enc = base64_encode(AudioFileData, (int)len); + + delete[] AudioFileData; + + } else { + + wxMessageBox(_("There was an error opening the audio file!"), _("Error opening audio file"), wxICON_ERROR); + + return; + + } + + SoundListPtr->insert(std::make_pair(SoundListIndex, b64enc)); + + wxString strValue; + strValue.Clear(); + strValue = cmbType->GetString(cmbType->GetSelection()); + + // Setup Sound Type. + + if (strValue == _("Home")) { + + SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT("home"))); + + } else if (strValue == _("Work")) { + + SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT("work"))); + + } else { + + SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT(""))); + + } + + // Setup Organisation Priority. + + if (chkUsePref->IsChecked()){ + + SoundListPrefPtr->insert(std::make_pair(SoundListIndex, sliPriority->GetValue())); + + } else { + + SoundListPrefPtr->insert(std::make_pair(SoundListIndex, 0)); + + } + + // Setup MIME Type. + + SoundListAudioTypePtr->insert(std::make_pair(SoundListIndex, wxSAudioMIMEType)); + + // Setup Encoding Type. + + SoundListAudioEncTypePtr->insert(std::make_pair(SoundListIndex, wxT("base64"))); + + // Add to form. + + wxListItem coldata; + + coldata.SetId(SoundListIndex); + coldata.SetData(SoundListIndex); + coldata.SetText(_("Sound")); + ListCtrlIndex = SoundListCtrlPtr->InsertItem(coldata); + + if (strValue == _("Home")) { + + SoundListCtrlPtr->SetItem(ListCtrlIndex, 1, _("Home")); + + } else if (strValue == _("Work")) { + + SoundListCtrlPtr->SetItem(ListCtrlIndex, 1, _("Work")); + + } else { + + + + } + + if (chkUsePref->IsChecked()){ + + SoundListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE) { + + // Do not touch the audio file but update the settings + // associated with the audio file. + + + + long longSelected = -1; + wxString strValue; + + // Update Category Type. + + SoundListTypePtr->erase(SoundListIndex); + strValue = cmbType->GetString(cmbType->GetSelection()); + + if (strValue == _("Home")) { + + SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT("home"))); + + } else if (strValue == _("Work")) { + + SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT("work"))); + + } + + // Update Category Priority. + + SoundListPrefPtr->erase(SoundListIndex); + + if (chkUsePref->IsChecked()){ + + SoundListPrefPtr->insert(std::make_pair(SoundListIndex, sliPriority->GetValue())); + + } else { + + SoundListPrefPtr->insert(std::make_pair(SoundListIndex, 0)); + + } + + // Update form. + + longSelected = SoundListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + SoundListCtrlPtr->SetItem(longSelected, 0, wxT("Sound")); + SoundListCtrlPtr->SetItem(longSelected, 1, strValue); + + if (chkUsePref->IsChecked()){ + + SoundListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + SoundListCtrlPtr->SetItem(longSelected, 2, wxT("")); + + } + + this->Close(); + + } +} + +void frmContactEditorSound::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorSound::SetEditorMode(bool EditMode) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Sound")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Sound")); + fipSound->Disable(); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. Get the website. + + striter = SoundListTypePtr->find(SoundListIndex); + + if (striter->first == SoundListIndex){ + + strValue = striter->second; + + } + + if (strValue == wxT("home")){ + + cmbType->SetSelection(1); + + } else if (strValue == wxT("work")){ + + cmbType->SetSelection(2); + + } else { + + cmbType->SetSelection(0); + + } + + //strValue.Clear(); + + // Get the website priority. + + intiter = SoundListPrefPtr->find(SoundListIndex); + + if (intiter->first == SoundListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + + +} + +void frmContactEditorSound::SetupPointers(std::map *SoundList, + std::map *SoundListAltID, + std::map *SoundListPID, + std::map *SoundListType, + std::map *SoundListAudioType, + std::map *SoundListAudioEncType, + std::map *SoundListTokens, + std::map *SoundListMediatype, + std::map *SoundListPref, + wxListCtrl *SoundListCtrl, + int SoundIndex ) +{ + + SoundListPtr = SoundList; + SoundListAltIDPtr = SoundListAltID; + SoundListPIDPtr = SoundListPID; + SoundListTypePtr = SoundListType; + SoundListAudioTypePtr = SoundListAudioType; + SoundListAudioEncTypePtr = SoundListAudioEncType; + SoundListTokensPtr = SoundListTokens; + SoundListMediatypePtr = SoundListMediatype; + SoundListPrefPtr = SoundListPref; + SoundListCtrlPtr = SoundListCtrl; + SoundListIndex = SoundIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorSound.h b/source/contacteditor/frmContactEditorSound.h new file mode 100644 index 0000000..2425230 --- /dev/null +++ b/source/contacteditor/frmContactEditorSound.h @@ -0,0 +1,60 @@ +#ifndef __frmContactEditorSound__ +#define __frmContactEditorSound__ + +/** +@file +Subclass of frmContactEditorSoundADT, which is generated by wxFormBuilder. +*/ + +#include +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorSoundADT */ +class frmContactEditorSound : public frmContactEditorSoundADT +{ + protected: + // Handlers for frmContactEditorSoundADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessData( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorSound( wxWindow* parent ); + void SetEditorMode(bool EditMode); + void SetupPointers(std::map *SoundList, + std::map *SoundListAltID, + std::map *SoundListPID, + std::map *SoundListType, + std::map *SoundListAudioType, + std::map *SoundListAudioEncType, + std::map *SoundListTokens, + std::map *SoundListMediatype, + std::map *SoundListPref, + wxListCtrl *SoundListCtrl, + int SoundIndex ); + //// end generated class members + + private: + + bool EditorMode; + std::map *SoundListPtr; + std::map *SoundListAltIDPtr; + std::map *SoundListPIDPtr; + std::map *SoundListTypePtr; + std::map *SoundListAudioTypePtr; + std::map *SoundListAudioEncTypePtr; + std::map *SoundListTokensPtr; + std::map *SoundListMediatypePtr; + std::map *SoundListPrefPtr; + wxListCtrl *SoundListCtrlPtr; + int SoundListIndex; + SectionType EditSectionType; + //// end generated class members + +}; + +#endif // __frmContactEditorSound__ diff --git a/source/contacteditor/frmContactEditorTelephone.cpp b/source/contacteditor/frmContactEditorTelephone.cpp new file mode 100644 index 0000000..d3ac345 --- /dev/null +++ b/source/contacteditor/frmContactEditorTelephone.cpp @@ -0,0 +1,529 @@ +#include "frmContactEditorTelephone.h" +#include "../common/textprocessing.h" +#include + +frmContactEditorTelephone::frmContactEditorTelephone( wxWindow* parent ) +: +frmContactEditorTelephoneADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorTelephone::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorTelephone::ProcessAction( wxCommandEvent& event ) +{ + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + wxString strTelTypes; + wxString strTelTypesLCtrl; + bool AddComma = FALSE; + + // Add the telephone number. + + wxString strValue; + TelephoneListPtr->insert(std::make_pair(TelephoneListIndex, txtTelephone->GetValue())); + + // Add the telephone type. + + if (EditSectionType == CE_GENERAL){ + + strTelTypes.Append(wxT("")); + + } else if (EditSectionType == CE_HOME) { + + strTelTypes.Append(wxT("home")); + AddComma = TRUE; + + } else if (EditSectionType == CE_WORK) { + + strTelTypes.Append(wxT("work")); + AddComma = TRUE; + + } + + if (chkVoice->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("voice")); + strTelTypesLCtrl.Append(wxT("voice")); + AddComma = TRUE; + + } + + if (chkFax->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("fax")); + strTelTypesLCtrl.Append(wxT("fax")); + AddComma = TRUE; + + } + + if (chkVideo->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("video")); + strTelTypesLCtrl.Append(wxT("video")); + AddComma = TRUE; + + } + + if (chkText->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("text")); + strTelTypesLCtrl.Append(wxT("text")); + AddComma = TRUE; + + } + + if (chkMobile->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("cell")); + strTelTypesLCtrl.Append(wxT("cell")); + AddComma = TRUE; + + } + + if (chkTextphone->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("textphone")); + strTelTypesLCtrl.Append(wxT("textphone")); + AddComma = TRUE; + + } + + if (chkPager->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("pager")); + strTelTypesLCtrl.Append(wxT("pager")); + AddComma = TRUE; + + } + + TelephoneListTypePtr->insert(std::make_pair(TelephoneListIndex, strTelTypes)); + + // Add Telephone Priority. + + if (chkUsePref->IsChecked()){ + + TelephoneListPrefPtr->insert(std::make_pair(TelephoneListIndex, sliPriority->GetValue())); + + } else { + + TelephoneListPrefPtr->insert(std::make_pair(TelephoneListIndex, 0)); + + } + + // Add to the form. + + wxListItem coldata; + + coldata.SetId(TelephoneListIndex); + coldata.SetData(TelephoneListIndex); + coldata.SetText(txtTelephone->GetValue()); + ListCtrlIndex = TelephoneListCtrlPtr->InsertItem(coldata); + + strTelTypesLCtrl.Replace(wxT(","), wxT(""), FALSE); + + TelephoneListCtrlPtr->SetItem(ListCtrlIndex, 1, strTelTypesLCtrl); + + if (chkUsePref->IsChecked()){ + + TelephoneListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE) { + + wxString strTelTypes; + wxString strTelTypesLCtrl; + bool AddComma = FALSE; + long longSelected = -1; + + // Edit the Telephone number. + + wxString strValue; + TelephoneListPtr->erase(TelephoneListIndex); + TelephoneListPtr->insert(std::make_pair(TelephoneListIndex, txtTelephone->GetValue())); + + // Edit the Telephone type. + + if (EditSectionType == CE_GENERAL){ + + strTelTypes.Append(wxT("")); + + } else if (EditSectionType == CE_HOME) { + + strTelTypes.Append(wxT("home")); + AddComma = TRUE; + + } else if (EditSectionType == CE_WORK) { + + strTelTypes.Append(wxT("work")); + AddComma = TRUE; + + } + + if (chkVoice->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("voice")); + strTelTypesLCtrl.Append(wxT("voice")); + AddComma = TRUE; + + } + + if (chkFax->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("fax")); + strTelTypesLCtrl.Append(wxT("fax")); + AddComma = TRUE; + + } + + if (chkVideo->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("video")); + strTelTypesLCtrl.Append(wxT("video")); + AddComma = TRUE; + + } + + if (chkText->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("text")); + strTelTypesLCtrl.Append(wxT("text")); + AddComma = TRUE; + + } + + if (chkMobile->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("cell")); + strTelTypesLCtrl.Append(wxT("cell")); + AddComma = TRUE; + + } + + if (chkTextphone->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("textphone")); + strTelTypesLCtrl.Append(wxT("textphone")); + AddComma = TRUE; + + } + + if (chkPager->IsChecked()){ + + if (AddComma){ + + strTelTypes.Append(wxT(",")); + strTelTypesLCtrl.Append(wxT(",")); + + } + + strTelTypes.Append(wxT("pager")); + strTelTypesLCtrl.Append(wxT("pager")); + AddComma = TRUE; + + } + + strTelTypesLCtrl.Replace(wxT(","), wxT(""), FALSE); + + TelephoneListTypePtr->erase(TelephoneListIndex); + TelephoneListTypePtr->insert(std::make_pair(TelephoneListIndex, strTelTypes)); + + // Edit the Telephone Priority. + + TelephoneListPrefPtr->erase(TelephoneListIndex); + + if (chkUsePref->IsChecked()){ + + TelephoneListPrefPtr->insert(std::make_pair(TelephoneListIndex, sliPriority->GetValue())); + + } else { + + TelephoneListPrefPtr->insert(std::make_pair(TelephoneListIndex, 0)); + + } + + // Update the form. + + longSelected = TelephoneListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + TelephoneListCtrlPtr->SetItem(longSelected, 0, txtTelephone->GetValue()); + TelephoneListCtrlPtr->SetItem(longSelected, 1, strTelTypesLCtrl); + + if (chkUsePref->IsChecked()){ + + TelephoneListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + TelephoneListCtrlPtr->SetItem(longSelected, 2, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorTelephone::CloseWindow( wxCommandEvent& event ) +{ + + this->Close(); + +} + +void frmContactEditorTelephone::SetEditorMode(bool EditMode, SectionType SectType) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Telephone")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Telephone")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. Get the phone number. + + striter = TelephoneListPtr->find(TelephoneListIndex); + + if (striter->first == TelephoneListIndex){ + + strValue = striter->second; + + } + + txtTelephone->SetValue(strValue); + + strValue.Clear(); + + // Get the phone types in. + + striter = TelephoneListTypePtr->find(TelephoneListIndex); + + if (striter->first == TelephoneListIndex){ + + strValue = striter->second; + + } + + wxStringTokenizer TelephonePrefToken (strValue, wxT(",")); + + strValue.Clear(); + + while(TelephonePrefToken.HasMoreTokens()){ + + strValue = TelephonePrefToken.GetNextToken(); + + if (strValue == wxT("home") || strValue == wxT("work")){ + + // Ignore these two since they aren't needed. + + continue; + + } + + if (strValue == wxT("voice")){ + + chkVoice->SetValue(TRUE); + + } + + if (strValue == wxT("fax")){ + + chkFax->SetValue(TRUE); + + } + + if (strValue == wxT("video")){ + + chkVideo->SetValue(TRUE); + + } + + if (strValue == wxT("text")){ + + chkText->SetValue(TRUE); + + } + + if (strValue == wxT("cell")){ + + chkMobile->SetValue(TRUE); + + } + + if (strValue == wxT("textphone")){ + + chkTextphone->SetValue(TRUE); + + } + + if (strValue == wxT("pager")){ + + chkPager->SetValue(TRUE); + + } + + } + + // Setup the Slider. + + intiter = TelephoneListPrefPtr->find(TelephoneListIndex); + + if (intiter->first == TelephoneListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorTelephone::SetupPointers(std::map *TelephoneList, + std::map *TelephoneListAltID, + std::map *TelephoneListPID, + std::map *TelephoneListType, + std::map *TelephoneListTokens, + std::map *TelephoneListPref, + wxListCtrl *TelephoneListCtrl, + int TelephoneIndex ) +{ + + TelephoneListPtr = TelephoneList; + TelephoneListAltIDPtr = TelephoneListAltID; + TelephoneListPIDPtr = TelephoneListPID; + TelephoneListTypePtr = TelephoneListType; + TelephoneListTokensPtr = TelephoneListTokens; + TelephoneListPrefPtr = TelephoneListPref; + TelephoneListCtrlPtr = TelephoneListCtrl; + TelephoneListIndex = TelephoneIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorTelephone.h b/source/contacteditor/frmContactEditorTelephone.h new file mode 100644 index 0000000..4836ba8 --- /dev/null +++ b/source/contacteditor/frmContactEditorTelephone.h @@ -0,0 +1,52 @@ +#ifndef __frmContactEditorTelephone__ +#define __frmContactEditorTelephone__ + +/** +@file +Subclass of frmContactEditorTelephoneADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorTelephoneADT */ +class frmContactEditorTelephone : public frmContactEditorTelephoneADT +{ + protected: + // Handlers for frmContactEditorTelephoneADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorTelephone( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *TelephoneList, + std::map *TelephoneListAltID, + std::map *TelephoneListPID, + std::map *TelephoneListType, + std::map *TelephoneListTokens, + std::map *TelephoneListPref, + wxListCtrl *TelephoneListCtrl, + int TelephoneIndex ); + //// end generated class members + + private: + + bool EditorMode; + std::map *TelephoneListPtr; + std::map *TelephoneListAltIDPtr; + std::map *TelephoneListPIDPtr; + std::map *TelephoneListTypePtr; + std::map *TelephoneListTokensPtr; + std::map *TelephoneListPrefPtr; + wxListCtrl *TelephoneListCtrlPtr; + int TelephoneListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorTelephone__ diff --git a/source/contacteditor/frmContactEditorTimezones.cpp b/source/contacteditor/frmContactEditorTimezones.cpp new file mode 100644 index 0000000..80b52b2 --- /dev/null +++ b/source/contacteditor/frmContactEditorTimezones.cpp @@ -0,0 +1,209 @@ +#include "frmContactEditorTimezones.h" +#include +#include "../common/textprocessing.h" + +frmContactEditorTimezones::frmContactEditorTimezones( wxWindow* parent ) +: +frmContactEditorTimezonesADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorTimezones::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorTimezones::SetEditorMode(bool EditMode, SectionType SectType) +{ + + // Set the editor mode for adding or editing a timezone. + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Timezone")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Timezone")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. + + striter = TZListPtr->find(TZListIndex); + + if (striter->first == TZListIndex){ + + strValue = striter->second; + + } + + cmbTimezone->SetValue(strValue); + + // Setup the Slider. + + intiter = TZListPrefPtr->find(TZListIndex); + + if (intiter->first == TZListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorTimezones::ProcessAction( wxCommandEvent& event ) +{ + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + // Add the language to the list. + + wxString strValue; + + // Add language. + + TZListPtr->insert(std::make_pair(TZListIndex, cmbTimezone->GetValue())); + + // Add Email type. + + if (EditSectionType == CE_GENERAL){ + + TZListTypePtr->insert(std::make_pair(TZListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + TZListTypePtr->insert(std::make_pair(TZListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + TZListTypePtr->insert(std::make_pair(TZListIndex, wxT("work"))); + + } + + // Add Language priority. + + if (chkUsePref->IsChecked()){ + + TZListPrefPtr->insert(std::make_pair(TZListIndex, sliPriority->GetValue())); + + } else { + + TZListPrefPtr->insert(std::make_pair(TZListIndex, 0)); + + } + + // Add the data to the form. + + wxListItem coldata; + + coldata.SetId(TZListIndex); + coldata.SetData(TZListIndex); + coldata.SetText(cmbTimezone->GetValue()); + ListCtrlIndex = TZListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + TZListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else if (EditorMode == TRUE){ + + // Edit the language. + + wxString strAddress; + wxString strValue; + long longSelected = -1; + + TZListPtr->erase(TZListIndex); + TZListPtr->insert(std::make_pair(TZListIndex, cmbTimezone->GetValue())); + + TZListPrefPtr->erase(TZListIndex); + + if (chkUsePref->IsChecked()){ + + TZListPrefPtr->insert(std::make_pair(TZListIndex, sliPriority->GetValue())); + + } else { + + TZListPrefPtr->insert(std::make_pair(TZListIndex, 0)); + + } + + longSelected = TZListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + TZListCtrlPtr->SetItem(longSelected, 0, cmbTimezone->GetValue()); + + if (chkUsePref->IsChecked()){ + + TZListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + TZListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } + +} + +void frmContactEditorTimezones::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorTimezones::SetupPointers(std::map *TZList, + std::map *TZListAltID, + std::map *TZListPID, + std::map *TZListType, + std::map *TZListTokens, + std::map *TZListMediatype, + std::map *TZListPref, + wxListCtrl *TZListCtrl, + int TZIndex ) +{ + + // Setup the pointers so that the data can be processed without + // duplication. + + TZListPtr = TZList; + TZListAltIDPtr = TZListAltID; + TZListPIDPtr = TZListPID; + TZListTypePtr = TZListType; + TZListTokensPtr = TZListTokens; + TZListPrefPtr = TZListPref; + TZListCtrlPtr = TZListCtrl; + TZListIndex = TZIndex; +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorTimezones.h b/source/contacteditor/frmContactEditorTimezones.h new file mode 100644 index 0000000..09e771e --- /dev/null +++ b/source/contacteditor/frmContactEditorTimezones.h @@ -0,0 +1,55 @@ +#ifndef __frmContactEditorTimezones__ +#define __frmContactEditorTimezones__ + +#include + +/** +@file +Subclass of frmContactEditorTimezonesADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" + +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorTimezonesADT */ +class frmContactEditorTimezones : public frmContactEditorTimezonesADT +{ + protected: + // Handlers for frmContactEditorTimezonesADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorTimezones( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *TZList, + std::map *TZListAltID, + std::map *TZListPID, + std::map *TZListType, + std::map *TZListTokens, + std::map *TZListMediatype, + std::map *TZListPref, + wxListCtrl *TZListCtrl, + int TZIndex ); + //// end generated class members + private: + bool EditorMode; + std::map *TZListPtr; + std::map *TZListAltIDPtr; + std::map *TZListPIDPtr; + std::map *TZListTypePtr; + std::map *TZListTokensPtr; + std::map *TZListMediatypePtr; + std::map *TZListPrefPtr; + wxListCtrl *TZListCtrlPtr; + int TZListIndex; + SectionType EditSectionType; + + +}; + +#endif // __frmContactEditorTimezones__ diff --git a/source/contacteditor/frmContactEditorTitles.cpp b/source/contacteditor/frmContactEditorTitles.cpp new file mode 100644 index 0000000..9c8861d --- /dev/null +++ b/source/contacteditor/frmContactEditorTitles.cpp @@ -0,0 +1,214 @@ +#include "frmContactEditorTitles.h" + +#include +#include "../enums.h" +#include "../common/textprocessing.h" + +frmContactEditorTitles::frmContactEditorTitles( wxWindow* parent ) +: +frmContactEditorTitlesADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorTitles::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorTitles::ProcessAction( wxCommandEvent& event ) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + wxString strValue; + + // Get the website address. + + TitlesListPtr->insert(std::make_pair(TitlesListIndex, txtTitle->GetValue())); + + // Get the type of website. + + if (EditSectionType == CE_GENERAL){ + + TitlesListTypePtr->insert(std::make_pair(TitlesListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + TitlesListTypePtr->insert(std::make_pair(TitlesListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + TitlesListTypePtr->insert(std::make_pair(TitlesListIndex, wxT("work"))); + + } + + // Add the website priority. + + if (chkUsePref->IsChecked()){ + + TitlesListPrefPtr->insert(std::make_pair(TitlesListIndex, sliPriority->GetValue())); + + } else { + + TitlesListPrefPtr->insert(std::make_pair(TitlesListIndex, 0)); + + } + + // Add to the form. + + wxListItem coldata; + + coldata.SetId(TitlesListIndex); + coldata.SetData(TitlesListIndex); + coldata.SetText(txtTitle->GetValue()); + ListCtrlIndex = TitlesListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + TitlesListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else { + + // Update the title. + long longSelected = -1; + wxString strValue; + TitlesListPtr->erase(TitlesListIndex); + TitlesListPtr->insert(std::make_pair(TitlesListIndex, txtTitle->GetValue())); + + // Update the slider priority. + + TitlesListPrefPtr->erase(TitlesListIndex); + + if (chkUsePref->IsChecked()){ + + TitlesListPrefPtr->insert(std::make_pair(TitlesListIndex, sliPriority->GetValue())); + + } else { + + TitlesListPrefPtr->insert(std::make_pair(TitlesListIndex, 0)); + + } + + // Update the form. + + longSelected = TitlesListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + TitlesListCtrlPtr->SetItem(longSelected, 0, txtTitle->GetValue()); + + if (chkUsePref->IsChecked()){ + + TitlesListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + TitlesListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } +} + +void frmContactEditorTitles::SetEditorMode(bool EditMode, SectionType SectType) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Title")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Title")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. Get the website. + + striter = TitlesListPtr->find(TitlesListIndex); + + if (striter->first == TitlesListIndex){ + + strValue = striter->second; + + } + + txtTitle->SetValue(strValue); + + strValue.Clear(); + + // Get the website priority. + + intiter = TitlesListPrefPtr->find(TitlesListIndex); + + if (intiter->first == TitlesListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorTitles::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorTitles::SetupPointers(std::map *TitlesList, + std::map *TitlesListLanguage, + std::map *TitlesListAltID, + std::map *TitlesListPID, + std::map *TitlesListType, + std::map *TitlesListTokens, + std::map *TitlesListPref, + wxListCtrl *TitlesListCtrl, + int TitlesIndex ) +{ + + TitlesListPtr = TitlesList; + TitlesListLanguagePtr = TitlesListLanguage; + TitlesListAltIDPtr = TitlesListAltID; + TitlesListPIDPtr = TitlesListPID; + TitlesListTypePtr = TitlesListType; + TitlesListTokensPtr = TitlesListTokens; + TitlesListPrefPtr = TitlesListPref; + TitlesListCtrlPtr = TitlesListCtrl; + TitlesListIndex = TitlesIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorTitles.h b/source/contacteditor/frmContactEditorTitles.h new file mode 100644 index 0000000..8f8e868 --- /dev/null +++ b/source/contacteditor/frmContactEditorTitles.h @@ -0,0 +1,53 @@ +#ifndef __frmContactEditorTitles__ +#define __frmContactEditorTitles__ + +/** +@file +Subclass of frmContactEditorTitlesADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorTitlesADT */ +class frmContactEditorTitles : public frmContactEditorTitlesADT +{ + protected: + // Handlers for frmContactEditorTitlesADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorTitles( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *TitlesList, + std::map *TitlesListLanguage, + std::map *TitlesListAltID, + std::map *TitlesListPID, + std::map *TitlesListType, + std::map *TitlesListTokens, + std::map *TitlesListPref, + wxListCtrl *TitlesListCtrl, + int TitlesIndex ); + //// end generated class members + + private: + + bool EditorMode; + std::map *TitlesListPtr; + std::map *TitlesListLanguagePtr; + std::map *TitlesListAltIDPtr; + std::map *TitlesListPIDPtr; + std::map *TitlesListTypePtr; + std::map *TitlesListTokensPtr; + std::map *TitlesListPrefPtr; + wxListCtrl *TitlesListCtrlPtr; + int TitlesListIndex; + SectionType EditSectionType; +}; + +#endif // __frmContactEditorTitles__ diff --git a/source/contacteditor/frmContactEditorVendor.cpp b/source/contacteditor/frmContactEditorVendor.cpp new file mode 100644 index 0000000..c1340ef --- /dev/null +++ b/source/contacteditor/frmContactEditorVendor.cpp @@ -0,0 +1,177 @@ +#include "frmContactEditorVendor.h" +#include +#include "../common/textprocessing.h" + +frmContactEditorVendor::frmContactEditorVendor( wxWindow* parent ) +: +frmContactEditorVendorADT( parent ) +{ + +} + +void frmContactEditorVendor::SetEditorMode(bool EditMode) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Vendor Namespace")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Add Vendor Namespace")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Get the vendor PEN. + + striter = VendorListPENPtr->find(VendorListIndex); + + if (striter->first == VendorListIndex){ + + strValue = striter->second; + + } + + txtPEN->SetValue(strValue); + + strValue.Clear(); + + // Get the vendor element. + + striter = VendorListElementPtr->find(VendorListIndex); + + if (striter->first == VendorListIndex){ + + strValue = striter->second; + + } + + txtElement->SetValue(strValue); + + strValue.Clear(); + + // Get the vendor value. + + striter = VendorListPtr->find(VendorListIndex); + + if (striter->first == VendorListIndex){ + + strValue = striter->second; + + } + + txtValue->SetValue(strValue); + + strValue.Clear(); + + } + +} + +void frmContactEditorVendor::ProcessAction( wxCommandEvent& event ) +{ + + if (EditorMode == FALSE){ + + wxString strValue; + wxString strVNDID; + wxListItem coldata; + long ListCtrlIndex; + + coldata.SetId(VendorListIndex); + coldata.SetData(VendorListIndex); + ListCtrlIndex = VendorListCtrlPtr->InsertItem(coldata); + + // Get Vendor PEN. + + strValue = txtPEN->GetValue(); + VendorListPENPtr->insert(std::make_pair(VendorListIndex, strValue)); + + // Get Vendor Element. + + strValue = txtElement->GetValue(); + VendorListElementPtr->insert(std::make_pair(VendorListIndex, strValue)); + + // Get Vendor Value. + + strValue = txtValue->GetValue(); + VendorListPtr->insert(std::make_pair(VendorListIndex, strValue)); + + // Update form. + + strVNDID = txtPEN->GetValue() + wxT("-") + txtElement->GetValue(); + + VendorListCtrlPtr->SetItem(ListCtrlIndex, 0, strVNDID); + + this->Close(); + + } else if (EditorMode == TRUE){ + + long longSelected = -1; + wxString strValue; + wxString strVNDID; + + longSelected = VendorListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + // Update Vendor PEN. + + VendorListPENPtr->erase(VendorListIndex); + strValue = txtPEN->GetValue(); + VendorListPENPtr->insert(std::make_pair(VendorListIndex, strValue)); + + // Update Vendor Element. + + VendorListElementPtr->erase(VendorListIndex); + strValue = txtValue->GetValue(); + VendorListElementPtr->insert(std::make_pair(VendorListIndex, strValue)); + + // Update Vendor Value. + + VendorListPtr->erase(VendorListIndex); + strValue = txtValue->GetValue(); + VendorListPtr->insert(std::make_pair(VendorListIndex, strValue)); + + // Update form. + + strVNDID = txtPEN->GetValue() + wxT("-") + txtElement->GetValue(); + VendorListCtrlPtr->SetItem(longSelected, 0, strVNDID); + + this->Close(); + + } +} + +void frmContactEditorVendor::SetupPointers( std::map *VendorList, + std::map *VendorListPEN, + std::map *VendorListElement, + wxListCtrl *VendorListCtrl, + int VendorIndex ) +{ + + VendorListPtr = VendorList; + VendorListPENPtr = VendorListPEN; + VendorListElementPtr = VendorListElement; + VendorListCtrlPtr = VendorListCtrl; + VendorListIndex = VendorIndex; + +} + +void frmContactEditorVendor::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} diff --git a/source/contacteditor/frmContactEditorVendor.h b/source/contacteditor/frmContactEditorVendor.h new file mode 100644 index 0000000..9decec3 --- /dev/null +++ b/source/contacteditor/frmContactEditorVendor.h @@ -0,0 +1,43 @@ +#ifndef __frmContactEditorVendor__ +#define __frmContactEditorVendor__ + +/** +@file +Subclass of frmContactEditorVendorADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorVendorADT */ +class frmContactEditorVendor : public frmContactEditorVendorADT +{ + protected: + // Handlers for frmContactEditorVendorADT events. + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorVendor( wxWindow* parent ); + void SetEditorMode(bool EditMode); + void SetupPointers( std::map *VendorList, + std::map *VendorListPEN, + std::map *VendorListElement, + wxListCtrl *VendorListCtrl, + int VendorIndex ); + //// end generated class members + + bool EditorMode; + std::map *VendorListPtr; + std::map *VendorListPENPtr; + std::map *VendorListElementPtr; + wxListCtrl *VendorListCtrlPtr; + int VendorListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorVendor__ diff --git a/source/contacteditor/frmContactEditorWebsites.cpp b/source/contacteditor/frmContactEditorWebsites.cpp new file mode 100644 index 0000000..c4030b6 --- /dev/null +++ b/source/contacteditor/frmContactEditorWebsites.cpp @@ -0,0 +1,214 @@ +#include "frmContactEditorWebsites.h" + +#include +#include "../enums.h" +#include "../common/textprocessing.h" + +frmContactEditorWebsites::frmContactEditorWebsites( wxWindow* parent ) +: +frmContactEditorWebsitesADT( parent ) +{ + EditorMode = FALSE; + sliPriority->Disable(); +} + +void frmContactEditorWebsites::EnablePriority( wxCommandEvent& event ) +{ + if (chkUsePref->IsChecked()){ + sliPriority->Enable(); + } else { + sliPriority->Disable(); + } +} + +void frmContactEditorWebsites::ProcessAction( wxCommandEvent& event ) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + wxString strValue; + + // Get the website address. + + WebsiteListPtr->insert(std::make_pair(WebsiteListIndex, txtWebsite->GetValue())); + + // Get the type of website. + + if (EditSectionType == CE_GENERAL){ + + WebsiteListTypePtr->insert(std::make_pair(WebsiteListIndex, wxT(""))); + + } else if (EditSectionType == CE_HOME) { + + WebsiteListTypePtr->insert(std::make_pair(WebsiteListIndex, wxT("home"))); + + } else if (EditSectionType == CE_WORK) { + + WebsiteListTypePtr->insert(std::make_pair(WebsiteListIndex, wxT("work"))); + + } + + // Add the website priority. + + if (chkUsePref->IsChecked()){ + + WebsiteListPrefPtr->insert(std::make_pair(WebsiteListIndex, sliPriority->GetValue())); + + } else { + + WebsiteListPrefPtr->insert(std::make_pair(WebsiteListIndex, 0)); + + } + + // Add to the form. + + wxListItem coldata; + + coldata.SetId(WebsiteListIndex); + coldata.SetData(WebsiteListIndex); + coldata.SetText(txtWebsite->GetValue()); + ListCtrlIndex = WebsiteListCtrlPtr->InsertItem(coldata); + + if (chkUsePref->IsChecked()){ + + WebsiteListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } + + this->Close(); + + } else { + + // Update the website address. + long longSelected = -1; + wxString strValue; + WebsiteListPtr->erase(WebsiteListIndex); + WebsiteListPtr->insert(std::make_pair(WebsiteListIndex, txtWebsite->GetValue())); + + // Update the slider priority. + + WebsiteListPrefPtr->erase(WebsiteListIndex); + + if (chkUsePref->IsChecked()){ + + WebsiteListPrefPtr->insert(std::make_pair(WebsiteListIndex, sliPriority->GetValue())); + + } else { + + WebsiteListPrefPtr->insert(std::make_pair(WebsiteListIndex, 0)); + + } + + // Update the form. + + longSelected = WebsiteListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + WebsiteListCtrlPtr->SetItem(longSelected, 0, txtWebsite->GetValue()); + + if (chkUsePref->IsChecked()){ + + WebsiteListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue())); + + } else { + + WebsiteListCtrlPtr->SetItem(longSelected, 1, wxT("")); + + } + + this->Close(); + + } +} + +void frmContactEditorWebsites::SetEditorMode(bool EditMode, SectionType SectType) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add Website")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Modify Website")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Load the data into the form. Get the website. + + striter = WebsiteListPtr->find(WebsiteListIndex); + + if (striter->first == WebsiteListIndex){ + + strValue = striter->second; + + } + + txtWebsite->SetValue(strValue); + + strValue.Clear(); + + // Get the website priority. + + intiter = WebsiteListPrefPtr->find(WebsiteListIndex); + + if (intiter->first == WebsiteListIndex && intiter->second > 0){ + + sliPriority->SetValue(intiter->second); + sliPriority->Enable(); + chkUsePref->SetValue(TRUE); + + } + + } + + EditSectionType = SectType; + +} + +void frmContactEditorWebsites::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmContactEditorWebsites::SetupPointers(std::map *WebsiteList, + std::map *WebsiteListAltID, + std::map *WebsiteListPID, + std::map *WebsiteListType, + std::map *WebsiteListTokens, + std::map *WebsiteListMediatype, + std::map *WebsiteListPref, + wxListCtrl *WebsiteListCtrl, + int WebsiteIndex ) +{ + + WebsiteListPtr = WebsiteList; + WebsiteListAltIDPtr = WebsiteListAltID; + WebsiteListPIDPtr = WebsiteListPID; + WebsiteListTypePtr = WebsiteListType; + WebsiteListTokensPtr = WebsiteListTokens; + WebsiteListMediatypePtr = WebsiteListMediatype; + WebsiteListPrefPtr = WebsiteListPref; + WebsiteListCtrlPtr = WebsiteListCtrl; + WebsiteListIndex = WebsiteIndex; + +} \ No newline at end of file diff --git a/source/contacteditor/frmContactEditorWebsites.h b/source/contacteditor/frmContactEditorWebsites.h new file mode 100644 index 0000000..5178d40 --- /dev/null +++ b/source/contacteditor/frmContactEditorWebsites.h @@ -0,0 +1,54 @@ +#ifndef __frmContactEditorWebsites__ +#define __frmContactEditorWebsites__ + +/** +@file +Subclass of frmContactEditorWebsitesADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorWebsitesADT */ +class frmContactEditorWebsites : public frmContactEditorWebsitesADT +{ + protected: + // Handlers for frmContactEditorWebsitesADT events. + void EnablePriority( wxCommandEvent& event ); + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorWebsites( wxWindow* parent ); + void SetEditorMode(bool EditMode, SectionType SectType); + void SetupPointers(std::map *WebsiteList, + std::map *WebsiteListAltID, + std::map *WebsiteListPID, + std::map *WebsiteListType, + std::map *WebsiteListTokens, + std::map *WebsiteListMediatype, + std::map *WebsiteListPref, + wxListCtrl *WebsiteListCtrl, + int WebsiteIndex ); + //// end generated class members + + private: + + bool EditorMode; + std::map *WebsiteListPtr; + std::map *WebsiteListAltIDPtr; + std::map *WebsiteListPIDPtr; + std::map *WebsiteListTypePtr; + std::map *WebsiteListTokensPtr; + std::map *WebsiteListMediatypePtr; + std::map *WebsiteListPrefPtr; + wxListCtrl *WebsiteListCtrlPtr; + int WebsiteListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorWebsites__ diff --git a/source/contacteditor/frmContactEditorXToken.cpp b/source/contacteditor/frmContactEditorXToken.cpp new file mode 100644 index 0000000..5474373 --- /dev/null +++ b/source/contacteditor/frmContactEditorXToken.cpp @@ -0,0 +1,147 @@ +#include "frmContactEditorXToken.h" +#include +#include "../common/textprocessing.h" + +frmContactEditorXToken::frmContactEditorXToken( wxWindow* parent ) +: +frmContactEditorXTokenADT( parent ) +{ + +} + +void frmContactEditorXToken::ProcessAction( wxCommandEvent& event ) +{ + + long ListCtrlIndex; + + if (EditorMode == FALSE){ + + wxString strValue; + wxListItem coldata; + + coldata.SetId(XTokenListIndex); + coldata.SetData(XTokenListIndex); + ListCtrlIndex = XTokenListCtrlPtr->InsertItem(coldata); + + // Get the X-Token value. + + strValue = txtValue->GetValue(); + XTokenListPtr->insert(std::make_pair(XTokenListIndex, strValue)); + + // Get the X-Token name. + + strValue = txtTokenName->GetValue(); + XTokenListTokensPtr->insert(std::make_pair(XTokenListIndex, strValue)); + + // Update form. + + XTokenListCtrlPtr->SetItem(ListCtrlIndex, 0, strValue); + + this->Close(); + + } else if (EditorMode == TRUE){ + + long longSelected = -1; + wxString strValue; + + longSelected = XTokenListCtrlPtr->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + return; + } + + // Update X-Token value. + + XTokenListPtr->erase(XTokenListIndex); + strValue = txtValue->GetValue(); + XTokenListPtr->insert(std::make_pair(XTokenListIndex, strValue)); + + // Update X-Token name. + + XTokenListTokensPtr->erase(XTokenListIndex); + strValue = txtTokenName->GetValue(); + XTokenListTokensPtr->insert(std::make_pair(XTokenListIndex, strValue)); + + // Update form. + + XTokenListCtrlPtr->SetItem(longSelected, 0,strValue); + + this->Close(); + + } + +} + +void frmContactEditorXToken::SetEditorMode(bool EditMode) +{ + // Set if the editor is adding or editing an address. + // FALSE = Add + // TRUE = Edit + + if (EditMode == FALSE){ + + EditorMode = FALSE; + btnAction->SetLabel(_("Add")); + this->SetTitle(_("Add X-Token")); + + } else if (EditMode == TRUE){ + + EditorMode = TRUE; + btnAction->SetLabel(_("Modify")); + this->SetTitle(_("Add X-Token")); + + std::map::iterator intiter; + std::map::iterator striter; + wxString strValue; + + // Get the X-Token name. + + striter = XTokenListTokensPtr->find(XTokenListIndex); + + if (striter->first == XTokenListIndex){ + + strValue = striter->second; + + } + + txtTokenName->SetValue(strValue); + + strValue.Clear(); + + // Get the X-Token value. + + striter = XTokenListPtr->find(XTokenListIndex); + + if (striter->first == XTokenListIndex){ + + strValue = striter->second; + + } + + txtValue->SetValue(strValue); + + strValue.Clear(); + + } + +} + +void frmContactEditorXToken::SetupPointers( std::map *XTokenList, + std::map *XTokenListTokens, + wxListCtrl *XTokenListCtrl, + int XTokenIndex ) +{ + + XTokenListPtr = XTokenList; + XTokenListTokensPtr = XTokenListTokens; + XTokenListCtrlPtr = XTokenListCtrl; + XTokenListIndex = XTokenIndex; + +} + +void frmContactEditorXToken::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} diff --git a/source/contacteditor/frmContactEditorXToken.h b/source/contacteditor/frmContactEditorXToken.h new file mode 100644 index 0000000..b05a17c --- /dev/null +++ b/source/contacteditor/frmContactEditorXToken.h @@ -0,0 +1,41 @@ +#ifndef __frmContactEditorXToken__ +#define __frmContactEditorXToken__ + +/** +@file +Subclass of frmContactEditorXTokenADT, which is generated by wxFormBuilder. +*/ + +#include +#include "../AppXestiaAddrBk.h" +#include "../enums.h" + +//// end generated include + +/** Implementing frmContactEditorXTokenADT */ +class frmContactEditorXToken : public frmContactEditorXTokenADT +{ + protected: + // Handlers for frmContactEditorXTokenADT events. + void ProcessAction( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmContactEditorXToken( wxWindow* parent ); + void SetEditorMode(bool EditMode); + void SetupPointers( std::map *XTokenList, + std::map *XTokenListTokens, + wxListCtrl *XTokenListCtrl, + int XTokenIndex ); + //// end generated class members + + bool EditorMode; + std::map *XTokenListPtr; + std::map *XTokenListTokensPtr; + wxListCtrl *XTokenListCtrlPtr; + int XTokenListIndex; + SectionType EditSectionType; + +}; + +#endif // __frmContactEditorXToken__ diff --git a/source/debug.h b/source/debug.h new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/source/debug.h @@ -0,0 +1 @@ + diff --git a/source/enums.h b/source/enums.h new file mode 100644 index 0000000..907a2f0 --- /dev/null +++ b/source/enums.h @@ -0,0 +1,47 @@ +#include + +#ifndef ENUMS_H +#define ENUMS_H + +enum SectionType { CE_GENERAL, CE_HOME, CE_WORK }; + +#define AM_ADDCONTACT 0; +#define AM_EDITCONTACT 1; +#define AM_DELETECONTACT 2; +#define AM_GETALLCONTACTS 3; + +// Related type setup - Also with ints for pointing in frmContactEditorRelated. + +/* + +enum RelatedType { CE_CONTACT, CE_ACQUAINTANCE, CE_FRIEND, CE_MET, + CE_COWORKER, CE_COLLEAGUE, CE_CORESIDENT, CE_NEIGHBOR, + CE_CHILD, CE_PARENT, CE_SIBLING, CE_SPOUSE, + CE_KIN, CE_MUSE, CE_CRUSH, CE_DATE, CE_SWEETHEART, + CE_ME, CE_AGENT, CE_EMERGENCY }; + +int TypeCEContact = CE_CONTACT; +int TypeCEAcquaintance = CE_ACQUAINTANCE; +int TypeCEFriend = CE_FRIEND; +int TypeCEMet = CE_MET; +int TypeCECoworker = CE_COWORKER; +int TypeCEColleague = CE_COLLEAGUE; +int TypeCECoresident = CE_CORESIDENT; +int TypeCENeighbor = CE_NEIGHBOR; +int TypeCEChild = CE_CHILD; +int TypeCEParent = CE_PARENT; +int TypeCESibling = CE_SIBLING; +int TypeCESpouse = CE_SPOUSE; +int TypeCEKin = CE_KIN; +int TypeCEMuse = CE_MUSE; +int TypeCECrush = CE_CRUSH; +int TypeCEDate = CE_DATE; +int TypeCESweetheart = CE_SWEETHEART; +int TypeCEMe = CE_ME; +int TypeCEAgent = CE_AGENT; +int TypeCEEmergency = CE_EMERGENCY; + +*/ + +#endif + diff --git a/source/export/export-vcard3.cpp b/source/export/export-vcard3.cpp new file mode 100644 index 0000000..5536758 --- /dev/null +++ b/source/export/export-vcard3.cpp @@ -0,0 +1,114 @@ +#include +#include +#include +#include + +#include "../vcard/vcard.h" +#include "../vcard/vcard34conv.h" + +void ExportVCard3(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount){ + + if (DirMode == TRUE){ + + // Output each contact into the directory. + + // Load the contact file and covert it to vCard 3.0. + + wxString Filename; + wxString FinalFilename; + wxString ContactData; + + for (int i = 0; i < FileList->GetCount(); i++){ + + // Get the final part of the path (filename). + + vCard34Conv vCardConvObj; + vCardConvObj.ConvertToV3(FileList->Item(i), &ContactData); + +#if defined(__HAIKU__) + + +#elif defined(__WIN32__) + + wxStringTokenizer FileToken(FileList->Item(i), wxT("\\")); + + while (FileToken.HasMoreTokens()){ + Filename = FileToken.GetNextToken(); + } + + FinalFilename.Append(OutputLocation); + FinalFilename.Append(wxT("\\")); + FinalFilename.Append(Filename); + +#else + + wxStringTokenizer FileToken(FileList->Item(i), wxT("//")); + + while(FileToken.HasMoreTokens()){ + Filename = FileToken.GetNextToken(); + } + + FinalFilename.Append(OutputLocation); + FinalFilename.Append(wxT("/")); + FinalFilename.Append(Filename); + +#endif + + // Write the converted card to the file. + + wxFFile OutputFile; + +#if wxABI_VERSION < 20900 + OutputFile.Open(FinalFilename, wxT("w")); +#else + OutputFile.Open(FinalFilename, wxT("w")); +#endif + + OutputFile.Write(ContactData, wxConvAuto()); + + OutputFile.Close(); + + (*ExportCount)++; + + Filename.Clear(); + FinalFilename.Clear(); + ContactData.Clear(); + + } + + } else { + + // Output all contacts into one file. + + wxFFile OutputFile; + + // Open the output file. + +#if wxABI_VERSION < 20900 + OutputFile.Open(OutputLocation.c_str(), wxT("w")); +#else + OutputFile.Open(OutputLocation, wxT("w")); +#endif + + wxString InputFileData; + + for (int i = 0; i < FileList->GetCount(); i++){ + + // Open up the input file. + + vCard34Conv vCardConvObj; + vCardConvObj.ConvertToV3(FileList->Item(i), &InputFileData); + + OutputFile.Write(InputFileData, wxConvAuto()); + + InputFileData.Clear(); + + (*ExportCount)++; + + } + + OutputFile.Close(); + + } + +} \ No newline at end of file diff --git a/source/export/export-vcard3.h b/source/export/export-vcard3.h new file mode 100644 index 0000000..91f0ad3 --- /dev/null +++ b/source/export/export-vcard3.h @@ -0,0 +1,10 @@ +#include +#include + +#ifndef EXPORT_VCARD3_H +#define EXPORT_VCARD3_H + +void ExportVCard3(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount); + +#endif + diff --git a/source/export/export-vcard4.cpp b/source/export/export-vcard4.cpp new file mode 100644 index 0000000..e4f79fe --- /dev/null +++ b/source/export/export-vcard4.cpp @@ -0,0 +1,101 @@ +#include +#include +#include +#include + +void ExportVCard4(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount){ + + if (DirMode == TRUE){ + + // Output each contact into the directory. + + // Simply just copy the files unchanged. + + wxString Filename; + wxString FinalFilename; + + for (int i = 0; i < FileList->GetCount(); i++){ + + // Get the final part of the path (filename). + +#if defined(__HAIKU__) + + +#elif defined(__WIN32__) + + wxStringTokenizer FileToken(FileList->Item(i), wxT("//")); + + while (FileToken.HasMoreTokens()){ + Filename = FileToken.GetNextToken(); + } + + // Copy the file to the requested directory. + + FinalFilename.Append(OutputLocation); + FinalFilename.Append(wxT("/")); + FinalFilename.Append(Filename); + +#else + + wxStringTokenizer FileToken(FileList->Item(i), wxT("//")); + + while(FileToken.HasMoreTokens()){ + Filename = FileToken.GetNextToken(); + } + + // Copy the file to the requested directory. + + FinalFilename.Append(OutputLocation); + FinalFilename.Append(wxT("/")); + FinalFilename.Append(Filename); + +#endif + + bool CopyResult = wxCopyFile(FileList->Item(i), FinalFilename); + + (*ExportCount)++; + + Filename.Clear(); + FinalFilename.Clear(); + + } + + } else { + + // Output all contacts into one file. + + wxFFile OutputFile; + wxFFile InputFile; + + // Open the output file. + +#if wxABI_VERSION < 20900 + OutputFile.Open(OutputLocation.c_str(), wxT("w")); +#else + OutputFile.Open(OutputLocation, wxT("w")); +#endif + + wxString InputFileData; + + for (int i = 0; i < FileList->GetCount(); i++){ + + // Open up the input file. + + InputFile.Open(FileList->Item(i), wxT("r")); + + InputFile.ReadAll(&InputFileData, wxConvAuto()); + + OutputFile.Write(InputFileData, wxConvAuto()); + + InputFile.Close(); + InputFileData.Clear(); + + (*ExportCount)++; + + } + + OutputFile.Close(); + + } + +} \ No newline at end of file diff --git a/source/export/export-vcard4.h b/source/export/export-vcard4.h new file mode 100644 index 0000000..2e446b9 --- /dev/null +++ b/source/export/export-vcard4.h @@ -0,0 +1,11 @@ +#include +#include + +#ifndef EXPORT_VCARD4_H +#define EXPORT_VCARD4_H + +void ExportVCard4(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount); + +#endif + + diff --git a/source/export/export.cpp b/source/export/export.cpp new file mode 100644 index 0000000..88d8b28 --- /dev/null +++ b/source/export/export.cpp @@ -0,0 +1,89 @@ +#include +#include +#include + +#include "../frmMain.h" +#include "export-vcard3.h" +#include "export-vcard4.h" + +void ExportRun(frmMain *frmMainPtrInc, wxArrayString *FileListInc){ + + frmMainPtrInc->PauseAllTimers(); + + wxString FileTypes; + + bool DirMode = FALSE; + long ContactsExported = 0; + long ContactsCollected = 0; + int ExportType = 0; + int ExportCount = 0; + wxString FinalFilename; + + FileTypes.Append(wxT("vCard 4.0 (directory, one contact per file) (*.vcf)")); + FileTypes.Append(wxT("|*.vcf|")); + FileTypes.Append(wxT("vCard 4.0 (file, all contacts in one file) (*.vcf)")); + FileTypes.Append(wxT("|*.vcf|")); + FileTypes.Append(wxT("vCard 3.0 (directory, one contact per file) (*.vcf)")); + FileTypes.Append(wxT("|*.vcf|")); + FileTypes.Append(wxT("vCard 3.0 (file, all contacts in one file) (*.vcf)")); + FileTypes.Append(wxT("|*.vcf")); + + // Open up the dialog to export file data. + + wxFileDialog ExportDlg(frmMainPtrInc, wxT("Export Contacts"), wxT(""), wxT(""), + FileTypes, wxFD_SAVE|wxFD_OVERWRITE_PROMPT); + + if (ExportDlg.ShowModal() == wxID_CANCEL){ + + frmMainPtrInc->ResumeAllTimers(); + return; + + } + + // Find which data type is being used. + + ExportType = ExportDlg.GetFilterIndex(); + + if (ExportType == 0 || ExportType == 2){ + DirMode = TRUE; + } + + // Process the filename based on data type. + + if (DirMode == FALSE){ + + // All contacts exported into one file. Setup the filename. + + FinalFilename = ExportDlg.GetPath(); + + } else { + + // One contact per filename. Setup the directory name. + + FinalFilename = ExportDlg.GetDirectory(); + + } + + if (ExportType == 0 || ExportType == 1){ + + ExportVCard4(DirMode, FinalFilename, FileListInc, &ExportCount); + + } + + // vCard 3.0 export + + if (ExportType == 2 || ExportType == 3){ + + ExportVCard3(DirMode, FinalFilename, FileListInc, &ExportCount); + + } + + // Notify the user of how many contacts + // were exported. + + wxMessageBox(wxString::Format(_("%i contacts exported."), ExportCount), _("Contacts exported")); + //wxMessageBox(_("Selected contacts have been exported."), _("Contacts exported")); + + frmMainPtrInc->ResumeAllTimers(); + +} diff --git a/source/export/export.h b/source/export/export.h new file mode 100644 index 0000000..a147d48 --- /dev/null +++ b/source/export/export.h @@ -0,0 +1,12 @@ +#include +#include + +#include "../frmMain.h" + +#ifndef EXPORT_EXPORT_H +#define EXPORT_EXPORT_H + +void ExportRun(frmMain *frmMainPtrInc, wxArrayString *FileListInc); + +#endif + diff --git a/source/frmAbout.cpp b/source/frmAbout.cpp new file mode 100644 index 0000000..b10e104 --- /dev/null +++ b/source/frmAbout.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +#include + +#include "frmAbout.h" +#include "version.h" +#include "bitmaps.h" + +frmAbout::frmAbout( wxWindow* parent ) +: +frmAboutADT( parent ) +{ + +} + +void frmAbout::CloseAboutWindow( wxCommandEvent& event ) +{ + Close(this); +} + +void frmAbout::SetupAboutWindow() +{ + + wxString versionlabel, buildlabel; + wxMemoryInputStream istream(bigimgs_aboutimage_png, sizeof(bigimgs_aboutimage_png)); + wxImage bigimgs_aboutimage_png(istream, wxBITMAP_TYPE_PNG); + wxBitmap aboutscreen(bigimgs_aboutimage_png, -1); + bmpLogo->SetBitmap(aboutscreen); + + versionlabel.Append(wxT("Version ")); + versionlabel.Append(wxT(XSDAB_VERSION)); + + buildlabel.Append(wxT("Built on ")); + buildlabel.Append(wxT(__DATE__)); + buildlabel.Append(wxT(" at ")); + buildlabel.Append(wxT(__TIME__)); + buildlabel.Append(wxT(".")); + + //wxJoin(arrayversionlabel, " ", '\0'); + + lblVersion->SetLabel(versionlabel); + lblCompileTime->SetLabel(buildlabel); + +} \ No newline at end of file diff --git a/source/frmAbout.h b/source/frmAbout.h new file mode 100644 index 0000000..ce4c242 --- /dev/null +++ b/source/frmAbout.h @@ -0,0 +1,27 @@ +#ifndef __frmAbout__ +#define __frmAbout__ + +/** +@file +Subclass of frmAboutADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" + +//// end generated include + +/** Implementing frmAboutADT */ +class frmAbout : public frmAboutADT +{ + protected: + // Handlers for frmAboutADT events. + void CloseAboutWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmAbout( wxWindow* parent ); + void SetupAboutWindow(); + //// end generated class members + +}; + +#endif // __frmAbout__ diff --git a/source/frmActivityMgr.cpp b/source/frmActivityMgr.cpp new file mode 100644 index 0000000..39274fd --- /dev/null +++ b/source/frmActivityMgr.cpp @@ -0,0 +1,1897 @@ +#include "frmActivityMgr.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bitmaps.h" +#include "enums.h" +#include "common/preferences.h" +#include "frmConflictResolution.h" +#include "frmInvalidSSLCertificate.h" +#include "frmMain.h" +#include "common/events.h" +#include "common/filename.h" +#include "common/dirs.h" +#include "vcard/vcard34conv.h" +#include "vcard/vcard.h" + + +#ifndef FRMACTIVITYMGR_H +#define FRMACTIVITYMGR_H + +DEFINE_EVENT_TYPE(ACTMGR_RESUMEPROC); +DEFINE_EVENT_TYPE(ACTMGR_TOGGLECONN); +DEFINE_EVENT_TYPE(ACTMGR_STARTTIMER); +DEFINE_EVENT_TYPE(ACTMGR_STOPTIMER); +DEFINE_EVENT_TYPE(ACTMGR_STARTPROCESSTIMER); +DEFINE_EVENT_TYPE(ACTMGR_STOPPROCESSTIMER); + +BEGIN_EVENT_TABLE(frmActivityMgr, wxWindow) + EVT_COMMAND(wxID_ANY, ACTMGR_RESUMEPROC, frmActivityMgr::ResumeProcessing) + EVT_COMMAND(wxID_ANY, ACTMGR_TOGGLECONN, frmActivityMgr::ToggleConnectionStatus) + EVT_COMMAND(wxID_ANY, ACTMGR_STARTTIMER, frmActivityMgr::StartTimer) + EVT_COMMAND(wxID_ANY, ACTMGR_STOPTIMER, frmActivityMgr::StopTimer) + EVT_COMMAND(wxID_ANY, ACTMGR_STARTPROCESSTIMER, frmActivityMgr::StartProcessTimer) + EVT_COMMAND(wxID_ANY, ACTMGR_STOPPROCESSTIMER, frmActivityMgr::StopProcessTimer) +END_EVENT_TABLE() + +frmActivityMgr::frmActivityMgr( wxWindow* parent ) +: +frmActivityMgrADT( parent ) +{ + + frmMain *frmMainPtrGet = static_cast(frmMainPtr); + + wxMemoryInputStream istream(icons_activitywindow_png, sizeof(icons_activitywindow_png)); + wxImage icons_activitywindow_pngi(istream, wxBITMAP_TYPE_PNG); + wxBitmap activityiconbmp(icons_activitywindow_pngi, -1); + wxIcon activityicon; + activityicon.CopyFromBitmap(activityiconbmp); + this->SetIcon(activityicon); + + wxMemoryInputStream istream2(misc_activitysleep_png, sizeof(misc_activitysleep_png)); + wxImage misc_activitysleep_pngi(istream2, wxBITMAP_TYPE_PNG); + wxBitmap sleepiconbmp(misc_activitysleep_pngi, -1); + SleepBitmap = sleepiconbmp; + bmpActivity->SetBitmap(SleepBitmap); + ActProcessTimer.SetupPointers(this); + lblDetails->SetLabel(_("No activity.")); + + ActListProcTimer.SetupPointers(&ActivityList, &ActivityListIndex, &ActivityListTaskDetail, + &TasksActive, lstActivity, lblDetails, GauProgress, this, &AnimationTimer, + &ActProcessTimer, &ActivityListFinDate); + + AnimationTimer.SetBitmap(bmpActivity); + AnimationTimer.SetSleepBitmap(&SleepBitmap); + AnimationTimer.SetupPointer(this->GetParent()); + + wxListItem ColumnData; + ColumnData.SetId(0); + ColumnData.SetText(_("Activity")); + ColumnData.SetWidth(175); + lstActivity->InsertColumn(0, ColumnData); + + wxListItem ColumnData2; + ColumnData2.SetId(1); + ColumnData2.SetText(_("Account")); + ColumnData2.SetWidth(100); + lstActivity->InsertColumn(1, ColumnData2); + + wxListItem ColumnData3; + ColumnData3.SetId(2); + ColumnData3.SetText(_("Status")); + ColumnData3.SetWidth(100); + lstActivity->InsertColumn(2, ColumnData3); + + //AnimationTimer.StartAnimation(); + + // Create recovery database if it doesn't exist. + + wxString RecoveryFilename = GetRecoveryDB(); + + wxFile RecoveryDB; + + if (wxFile::Exists(RecoveryFilename) == FALSE){ + + // Create the recovery database. + + RecoveryDB.Open(RecoveryFilename.c_str(), wxFile::write); + + RecoveryDB.Write(wxT("BEGIN:XAB-RECOVERYDB\r\n"), wxConvUTF8); + RecoveryDB.Write(wxT("VERSION:1.0\r\n"), wxConvUTF8); + RecoveryDB.Write(wxT("COMMENT:Please do not alter or delete this file. DATA LOSS IS POSSIBLE!\r\n"), wxConvUTF8); + RecoveryDB.Write(wxT("END:XAB-RECOVERYDB\r\n"), wxConvUTF8); + RecoveryDB.Close(); + + } + + wxFFile RecoveryDBF; + +#if wxABI_VERSION < 20900 + RecoveryDBF.Open(RecoveryFilename.c_str(), wxT("r")); +#else + RecoveryDBF.Open(RecoveryFilename, wxT("r")); +#endif + + // Load the recovery database for tasks not done. + + if (RecoveryDBF.IsOpened() == TRUE){ + + wxString wxSRecoveryDB; + wxString RecoveryLine; + + // Check if we are using wxWidgets version 2.8 or less and + // execute the required command accordingly. + + RecoveryDBF.ReadAll(&wxSRecoveryDB, wxConvAuto()); + + // Split the lines. + + std::map RecoveryFileLines; + std::map::iterator striter; + + wxStringTokenizer wSTRecoveryDBLines(wxSRecoveryDB, wxT("\r\n")); + + int RecoveryLineSeek = 0; + + while (wSTRecoveryDBLines.HasMoreTokens() == TRUE){ + + RecoveryLine = wSTRecoveryDBLines.GetNextToken(); + RecoveryFileLines.insert(std::make_pair(RecoveryLineSeek, RecoveryLine)); + RecoveryLineSeek++; + + } + + } + + + + //TestTimer.Start(50, FALSE); +} + +int frmActivityMgr::AddTask(int TaskType, wxString TaskDetail, wxString TaskAccount, + wxString TaskURL, wxString TaskFilename, wxString TaskFullFilename, + wxString TaskData){ + + ActivityTaskID++; + + wxListItem coldata; + long itemindex = -1; + CardDAV CardDAVConn; + + coldata.SetId(ActivityTaskID); + coldata.SetData(ActivityTaskID); + + AnimationTimer.StartAnimation(); + + // Get the preferences file. + + wxString PrefFilename = GetUserPrefDir(); + + XABPreferences PrefData(PrefFilename); + + wxString AccountName; + wxString AccountDir; + wxString AccountAddress; + int AccountPort = 0; + wxString AccountUsername; + wxString AccountPassword; + bool AccountSSL = FALSE; + wxString AccountPrefix; + + // Look for the account and get the friendly name for the account. + + for (int i = 0; i < PrefData.accounts.GetCount(); i++){ + + AccountDir = PrefData.accounts.GetAccountDirectory(i); + + AccountDir.Trim(); + AccountDir.Append(wxT(".carddav")); + + if (AccountDir == TaskAccount){ + + AccountName = PrefData.accounts.GetAccountName(i); + AccountAddress = PrefData.accounts.GetAccountAddress(i); + AccountPort = PrefData.accounts.GetAccountPort(i); + AccountUsername = PrefData.accounts.GetAccountUsername(i); + AccountPassword = PrefData.accounts.GetAccountPassword(i); + AccountPrefix = PrefData.accounts.GetAccountDirPrefix(i); + AccountSSL = PrefData.accounts.GetAccountSSL(i); + + AccountName.Trim(); + AccountAddress.Trim(); + //AccountPort.Trim(); + AccountUsername.Trim(); + AccountPassword.Trim(); + AccountPrefix.Trim(); + break; + + } + + } + + CardDAVConn.SetupConnection(AccountAddress, AccountPort, AccountUsername, AccountPassword, AccountSSL, AccountPrefix, AccountDir); + CardDAVConn.SetupVariables(&ActivityList, ActivityTaskID); + CardDAVConn.SetupResultBools(&BlankBool, &BlankBool); + + // TaskType: + // 0 - Add a contact. + // 1 - Update a contact. + // 2 - Delete a contact. + // 3 - Account syncronisation. + + if (TaskType == 0){ + + coldata.SetText(_("Adding Contact '") + TaskDetail + _("'")); + itemindex = lstActivity->InsertItem(coldata); + + lstActivity->SetItem(itemindex, 1, AccountName); + lstActivity->SetItem(itemindex, 2, _("Queued")); + + CardDAVConn.SetUploadMode(TRUE); + CardDAVConn.SetupData(wxT("PUT"), TaskURL, TaskData); + + // Setup all of the task details. + + ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); + + ActivityListType.insert(std::make_pair(ActivityTaskID, 0)); + ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData)); + ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn)); + ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex)); + ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail)); + ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount)); + ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename)); + ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename)); + + ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename))); + ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename))); + ActivityList.insert(std::make_pair(ActivityTaskID, 0)); + + } else if (TaskType == 1){ + + coldata.SetText(_("Updating Contact '") + TaskDetail + _("'")); + itemindex = lstActivity->InsertItem(coldata); + + lstActivity->SetItem(itemindex, 1, AccountName); + lstActivity->SetItem(itemindex, 2, _("Queued")); + + CardDAVConn.SetUploadMode(TRUE); + CardDAVConn.SetupData(wxT("PUT"), TaskURL, TaskData); + CardDAVConn.SetEditMode(TRUE); + + ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); + + ActivityListType.insert(std::make_pair(ActivityTaskID, 1)); + ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData)); + ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn)); + ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex)); + ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail)); + ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount)); + ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename)); + ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename)); + + ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename))); + ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename))); + ActivityList.insert(std::make_pair(ActivityTaskID, 0)); + + } else if (TaskType == 2){ + + coldata.SetText(_("Deleting Contact '") + TaskDetail + _("'")); + itemindex = lstActivity->InsertItem(coldata); + + lstActivity->SetItem(itemindex, 1, AccountName); + lstActivity->SetItem(itemindex, 2, _("Queued")); + + // TODO: Pass the ETagDB for the account to the connection. + + ActivityList.insert(std::make_pair(ActivityTaskID, 0)); + ActivityListType.insert(std::make_pair(ActivityTaskID, 2)); + ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData)); + ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount)); + ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn)); + ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename)); + ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex)); + + } else if (TaskType == 3){ + + coldata.SetText(_("Syncronising All Contacts")); + itemindex = lstActivity->InsertItem(coldata); + + lstActivity->SetItem(itemindex, 1, AccountName); + lstActivity->SetItem(itemindex, 2, _("Queued")); + + ActivityList.insert(std::make_pair(ActivityTaskID, 0)); + ActivityListType.insert(std::make_pair(ActivityTaskID, 3)); + ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData)); + ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn)); + ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, AccountPrefix)); + ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount)); + ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex)); + + } + + ProcessTasksData = TRUE; + + if (!ActProcessTimer.IsRunning()) { + + wxCommandEvent event(ACTMGR_STARTTIMER); + wxPostEvent(this, event); + + wxCommandEvent eventp(ACTMGR_STARTPROCESSTIMER); + wxPostEvent(this, eventp); + + //ActProcessTimer.Start(1000, FALSE); + //ActListProcTimer.Start(1000, FALSE); + + } + + // Update the recovery database. + + return ActivityTaskID; + +} + +void frmActivityMgr::RemoveTask(){ + + // Remove task from the recovery database. + +} + +void frmActivityMgr::StopTask( wxCommandEvent& event ){ + + // Check if activity has been completed already before stopping. + + long longSelected = -1; + int intSelectedData = 0; + + longSelected = lstActivity->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + intSelectedData = lstActivity->GetItemData(longSelected); + + if (longSelected == -1){ + return; + } + + std::map::iterator CDAVter; + + CDAVter = ActivityListConn.find(intSelectedData); + + CDAVter->second.Abort(); + + lstActivity->SetItem(longSelected, 2, _("Stopped")); + +} + +void frmActivityMgr::StopAllTasks( wxCommandEvent& event ){ + + // Check if activity has been completed already before stopping. + + // TODO: Look through for '1' and stop the running task(s). + + long longSelected = -1; + int intSelectedData = 0; + + longSelected = lstActivity->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + intSelectedData = lstActivity->GetItemData(longSelected); + + if (longSelected == -1){ + return; + } + + std::map::iterator CDAVter; + + CDAVter = ActivityListConn.find(intSelectedData); + + CDAVter->second.Abort(); + + lstActivity->SetItem(longSelected, 2, _("Stopped")); + AnimationTimer.StopAnimation(); + bmpActivity->SetBitmap(SleepBitmap); + lblDetails->SetLabel(_("No activity.")); + +} + +void frmActivityMgr::RetryTask( wxCommandEvent& event ){ + + // Check if activity has been completed already before retrying. + + long longSelected = -1; + int intSelectedData = 0; + + longSelected = lstActivity->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + intSelectedData = lstActivity->GetItemData(longSelected); + + if (longSelected == -1){ + return; + } + + std::map::iterator CDAVter; + + CDAVter = ActivityListConn.find(intSelectedData); + + // Restart the task. + + //CDAVter->second.Abort(); + + std::map::iterator Iter; + Iter = ActivityList.find(intSelectedData); + + Iter->second = 0; + + AnimationTimer.StartAnimation(); + + if (!ActProcessTimer.IsRunning()) { + + ActProcessTimer.Start(150, FALSE); + ActListProcTimer.Start(150, FALSE); + + } + + //lstActivity->SetItem(longSelected, 2, _("Processing...")); + +} + +void frmActivityMgr::OpenWindow() +{ + WindowOpen = TRUE; +} + +void frmActivityMgr::CloseWindow( wxCommandEvent& event ) +{ + WindowOpen = FALSE; + this->Hide(); +} + +void frmActivityMgr::ProcessTasksThread() +{ + + if (ProcessTasksData == FALSE){ + + return; + + } + + std::map::iterator TypeIter; + std::map::iterator StringIter; + std::map::iterator StringDetailIter; + std::map::iterator StringAccountIter; + std::map::iterator StringFilenameIter; + std::map::iterator StringFullFilenameIter; + std::map::iterator StringTaskDetailIter; + std::map::iterator StringETagIter; + std::map::iterator StringETagOrigIter; + std::map::iterator CardDAVIter; + std::map::iterator LongIter; + bool TasksFoundProc = FALSE; + wxString TaskDetail; + + for (std::map::iterator iter = ActivityList.begin(); + iter != ActivityList.end(); ++iter){ + + // Check for any queued tasks and start one. + + if (iter->second > 4){ + continue; + } + + CardDAVIter = ActivityListConn.find(iter->first); + TypeIter = ActivityListType.find(iter->first); + StringETagIter = ActivityListETag.find(iter->first); + StringETagOrigIter = ActivityListETagOriginal.find(iter->first); + StringAccountIter = ActivityListAccount.find(iter->first); + StringFilenameIter = ActivityListFilename.find(iter->first); + StringFullFilenameIter = ActivityListFullFilename.find(iter->first); + + // 0 = Queued. + // 1 = Processing. + // 2 = Failed. + // 3 = Stopped. + // 4 = Completed. + // 5 = Failed (UI Updated). + // 6 = Stopped (UI Updated). + // 7 = (Reserved) (UI Updated). + // 8 = Completed. (UI Updated). + + if (iter->second == 0){ + + //CardDAVIter->second. + + // Wait for process to finish. + + TasksActive = TRUE; + TasksFoundProc = TRUE; + wxString ETag; + wxString ETagOriginal; + wxString ETagServer; + wxString AccountDir; + wxString ContactFilename; + wxString FullFilename; + wxString ETagResult; + + iter->second = 1; + + if (TypeIter->second == 1){ + CardDAVIter->second.GetServerETagValueThread(); + ETagServer = CardDAVIter->second.ETagValueResult(); + } + + // Compare the ETags and work out if a conflict has occured. + + if (TypeIter->second == 1){ + + ETag = StringETagIter->second; + ETagOriginal = StringETagOrigIter->second; + AccountDir = StringAccountIter->second; + ContactFilename = StringFilenameIter->second; + FullFilename = StringFullFilenameIter->second; + + ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); + + if (ETag == ETagOriginal){ + + // Compare the ETag with the Server ETag. + + if (ETagOriginal != ETagServer){ + + // Server ETag is different from original ETag. + // This is a conflict which the user will now + // need to resolve. + + vCard Moo1; + vCard Moo2; + int intResult; + + frmMain *frmMainPtrGet = static_cast(frmMainPtr); + + vCard34Conv vCard34Obj; + + wxString ServerContactData; + vCard ClientData; + vCard ConvertedV4Data; + + // Load the client data from the filename given. + + CardDAVIter->second.GetServerContactData(); + ServerContactData = CardDAVIter->second.GetPageData(); + + // Process v3 version into v4 version. + + vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data); + + vCardConflictObj vCardProcData; + + vCardProcData.vCardLocalData = &ClientData; + vCardProcData.vCardServerData = &ConvertedV4Data; + ClientData.LoadFile(FullFilename); + + //ContactConflictEvent event(ContactConflictCmdEnv); + //event.SetData(ContactFilename, Moo1, Moo2); + + //wxPostEvent(frmMainPtrGet, event); + + // Setup Conflict Resolution Dialog. + + // Fetch Data from Server and convert. + + bool *PauseMode = new bool; + int ConflictResult; + QRNotif qrn; + + *PauseMode = TRUE; + qrn.QResponse = &ConflictResult; + qrn.PausePtr = PauseMode; + + vCardProcData.QRNotifData = &qrn; + + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED); + event.SetClientData(&vCardProcData); + wxPostEvent(frmMainPtrGet, event); + + /*timespec n1, n2; + + n1.tv_sec = 0; + n1.tv_nsec = 250000000L;*/ + + while (*PauseMode == TRUE){ + //nanosleep(&n1, &n2); + SleepFor(250000000); + } + + delete PauseMode; + PauseMode = NULL; + + //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2); + + if (ConflictResult == 0){ + + // Decide Later. + + iter->second = 4; + continue; + + } else if (ConflictResult == 1){ + + // Decided to use client version. + + CardDAVIter->second.ProcessData(); + + iter->second = 4; + + } else if (ConflictResult == 2){ + + // Decided to use server version. + + // Download server version. + + ConvertedV4Data.WriteFile(FullFilename); + + + iter->second = 4; + + } + + } else { + + // Update the data to the server. + + CardDAVIter->second.ProcessData(); + + } + + } else { + + if (ETagOriginal != ETagServer){ + + // Server ETag is different from original ETag. + // This is a conflict which the user will now + // need to resolve. + + vCard Moo1; + vCard Moo2; + int intResult; + + frmMain *frmMainPtrGet = (frmMain *)frmMainPtr; + + //ContactConflictEvent event(ContactConflictCmdEnv); + //event.SetData(ContactFilename, Moo1, Moo2); + + vCard34Conv vCard34Obj; + + wxString ServerContactData; + vCard ClientData; + vCard ConvertedV4Data; + + // Load the client data from the filename given. + + CardDAVIter->second.GetServerContactData(); + ServerContactData = CardDAVIter->second.GetPageData(); + ClientData.LoadFile(FullFilename); + + // Process v3 version into v4 version. + + vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data); + + vCardConflictObj vCardProcData; + + vCardProcData.vCardLocalData = &ClientData; + vCardProcData.vCardServerData = &ConvertedV4Data; + + bool *PauseMode = new bool; + int ConflictResult; + QRNotif qrn; + + *PauseMode = TRUE; + qrn.QResponse = &ConflictResult; + qrn.PausePtr = PauseMode; + + vCardProcData.QRNotifData = &qrn; + + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED); + event.SetClientData(&vCardProcData); + wxPostEvent(frmMainPtrGet, event); + + /*timespec n1, n2; + + n1.tv_sec = 0; + n1.tv_nsec = 250000000L;*/ + + while (*PauseMode == TRUE){ + //nanosleep(&n1, &n2); + SleepFor(250000000); + } + + delete PauseMode; + PauseMode = NULL; + + //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2); + + if (ConflictResult == 0){ + + // Decide Later. + + iter->second = 4; + continue; + + } else if (ConflictResult == 1){ + + // Decided to use client version. + + CardDAVIter->second.ProcessData(); + //ETagServer = CardDAVIter->second.GetServerETagValueThread(); + //ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer); + + iter->second = 4; + + } else if (ConflictResult == 2){ + + // Decided to use server version. + + // Write server version to file. + + ConvertedV4Data.WriteFile(FullFilename); + + iter->second = 4; + + } + + } else { + + // Update the data to the server. + + CardDAVIter->second.ProcessData(); + + } + + } + + // Update the ETag DB. + + CardDAVIter->second.GetServerETagValueThread(); + ETagServer = CardDAVIter->second.ETagValueResult(); + ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer); + + iter->second = 4; + + } else if (TypeIter->second == 2) { + + // Delete the contact from the server and update the ETag DB. + + AccountDir = StringAccountIter->second; + ContactFilename = StringFilenameIter->second; + + ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); + + CardDAVIter->second.SetUploadMode(FALSE); + CardDAVIter->second.SetupData(wxT("DELETE"), ContactFilename, wxT("")); + //CardDAVIter->second.SetServerFilename(); + CardDAVIter->second.ProcessData(); + ETagDBPtr->RemoveETag(ContactFilename); + + iter->second = 4; + + } else if (TypeIter->second == 3) { + + frmMain *frmMainPtrGet = static_cast(frmMainPtr); + + wxString AccountNameFriendly; + wxString PrefFilename = GetUserPrefDir(); + + XABPreferences PrefData(PrefFilename); + int AccountID = 0; + + for (int i = 0; i < PrefData.accounts.GetCount(); i++){ + + wxString AccountDirCheck = PrefData.accounts.GetAccountDirectory(i); + + AccountDirCheck.Trim(); + AccountDirCheck.Append(wxT(".carddav")); + + if (AccountDirCheck == StringAccountIter->second){ + + AccountNameFriendly = PrefData.accounts.GetAccountName(i); + AccountID = i; + + } + + } + + bool KeepUpdating = TRUE; + + while (KeepUpdating == TRUE){ + + StringTaskDetailIter = ActivityListTaskDetail.find(iter->first); + + AccountDir = StringAccountIter->second; + + ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); + + wxArrayString vCardAdd; + wxArrayString vCardDelete; + wxArrayString vCardList; + wxArrayString vCardUpdateLocal; + wxArrayString vCardUpdateRemote; + wxArrayString vCardUpdateLog; + std::map vCardETag; + ContactListData ServerContactList; + + std::map vCardDownloadData; + //wxArrayString vCardDownload; + //std::map vCardDownloadData; + + // Get the list of vCard files locally. + + wxString AccountDirFinal; + wxString AccountSyncTokenFilename; + wxString SyncTokenLoad; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + AccountDirFinal = GetAccountDir(AccountDir, FALSE); + AccountSyncTokenFilename = AccountDirFinal; + AccountSyncTokenFilename.Append(wxT("synctoken")); + +#else + + AccountDirFinal = GetAccountDir(AccountDir, FALSE); + AccountSyncTokenFilename = AccountDirFinal; + AccountSyncTokenFilename.Append(wxT("synctoken")); + +#endif + + // Suppress Error Messages. + + wxLogNull PleaseDoNotDisturb; + + wxFFile SyncLoad; + SyncLoad.Open(AccountSyncTokenFilename, wxT("r")); + + if (SyncLoad.IsOpened()){ + + SyncLoad.ReadAll(&SyncTokenLoad, wxMBConvUTF8()); + SyncLoad.Close(); + + } + + // Get a list of vCard files from the server. + + // Get the list of vCard files from the ETagDB. + + std::map ETagDBData = ETagDBPtr->GetETagData(); + + CardDAV CardDAVInstance = CardDAVIter->second; + + bool ExitLoop = FALSE; + + std::map *SCListData = NULL; + + while (ExitLoop == FALSE){ + + //ServerContactList = CardDAVInstance.GetContactList(SyncTokenLoad.ToUTF8()); + ServerContactList = CardDAVIter->second.GetContactList(SyncTokenLoad.ToUTF8()); + + // Create a pointer for the std::map. + + SCListData = &ServerContactList.ListData; + + // Check if any errors have occured whilst getting the data. + + int ErrorCode = CardDAVIter->second.GetResultCode(); + + if (ErrorCode != 0){ + + if (ErrorCode == 60 || ErrorCode == 51){ + + // Invalid SSL certificate so bring up a dialog to the user + // explaining what has happened and the options available. + + // Stop all the timers. + + frmMainPtrGet->PauseAllTimers(); + + // Setup the data to be sent in the wxPostEvent command. + + SSLInvalidCertNotifObj SSLICNProcData; + + bool *PauseMode = new bool; + int SSLResult; + QRNotif qrn; + + *PauseMode = TRUE; + qrn.QResponse = &SSLResult; + qrn.PausePtr = PauseMode; + + SSLICNProcData.CertCollection = CardDAVIter->second.GetCertificateData(); + SSLICNProcData.QRNotifData = &qrn; + SSLICNProcData.AccountName = AccountNameFriendly; + + wxCommandEvent event(INVALIDSSLCERT); + event.SetClientData(&SSLICNProcData); + wxPostEvent(frmMainPtrGet, event); + + /*timespec n1, n2; + + // Fall asleep until we get an response. + + n1.tv_sec = 0; + n1.tv_nsec = 250000000L;*/ + + while (*PauseMode == TRUE){ + //nanosleep(&n1, &n2); + SleepFor(250000000); + } + + // Process the response from the user. + + if (SSLResult == 1){ + + // Accept the certificate. Write the certificate into the account + // directory (as server.crt) - will overwrite old certificate. + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, CardDAVIter->second.GetCertificateData()); + WriteServerCertificate(AccountDir, CardDAVIter->second.GetCertificateData()); + + } else if (SSLResult == 2){ + + // Reject the certificate, abort the task and mark as failed. + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, CardDAVIter->second.GetCertificateData()); + iter->second = 2; + break; + + } + + // Resume all the timers. + + frmMainPtrGet->ResumeAllTimers(); + + } else { + + iter->second = 4; + break; + + } + + } else { + + ExitLoop = TRUE; + + } + + } + + if (iter->second == 2 || iter->second == 3 || iter->second == 4){ + break; + } + + frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, CardDAVIter->second.GetCertificateData()); + + // Look in directory and see which vCards to add and delete + + // In short: + // vCard exists but not in ETagDB - Add (and upload). + // vCard missing but in ETagDB - Delete (from server). + + // Start by looking for vCards that are not in the ETagDB. + + wxDir AccDir(AccountDirFinal); + wxString AccDirFilename; + + bool ContinueProcess = AccDir.GetFirst(&AccDirFilename, wxEmptyString, wxDIR_DEFAULT); + + // Process the server data. + + if (SCListData != NULL){ + + for (std::map::iterator fsiter = SCListData->begin(); + fsiter != SCListData->end(); fsiter++){ + + // Check the mode of the file before adding. + + // Get the HTTP status of the file from the list. + + FileSyncData fsd = fsiter->second; + + if (fsd.DataFlag == 1){ + + // Added or modified contact. + + //vCardAdd.Add(fsiter->first, 1); + + vCardDownloadDataFileClass vCardNewData; + vCardNewData.DataType = 0; + vCardDownloadData.insert(std::make_pair(fsiter->first, vCardNewData)); + + //} else if (fsd.DataFlag == 1){ + + // Contact has been modified on the server. + + // vCardUpdateLocal.Add(fsiter->first, 1); + + } + else if (fsd.DataFlag == 2){ + + // Contact has been deleted. + + vCardDelete.Add(fsiter->first, 1); + + } + + } + + } + + // Look for vCards that are missing but in the ETagDB. + + for (std::map::iterator etagiter = ETagDBData.begin(); + etagiter != ETagDBData.end(); etagiter++){ + + // Check if the vCard exists. + + if (!wxFileExists(AccountDirFinal + etagiter->first)){ + + // vCard doesn't exist so mark for deleting. + + vCardDelete.Add(etagiter->first, 1); + + } + + } + + // Compare Server with the ETag DB. Work out which + // needs to updated remotely and which needs to be + // updated locally. + + for (std::map::iterator srviter = SCListData->begin(); + srviter != SCListData->end(); srviter++){ + + if (ETagDBData.find(srviter->first) == ETagDBData.end()){ + continue; + } + + std::map::iterator lociter = ETagDBData.find(srviter->first); + + ETagData etd = lociter->second; + FileSyncData fsd = srviter->second; + + wxString ETagSrv = fsd.ETagData; + + // Compare local ETag with original local ETag. + // If different, update to server is required. + + if (etd.ETagValue != etd.ETagOrigValue){ + + // Check if local original ETag is different from server ETag. + // If it is then throw up a conflict resolution dialog. + + if (etd.ETagOrigValue != ETagSrv){ + + vCard34Conv vCard34Obj; + + wxString ServerContactData; + wxString FullFilename; + vCard ClientData; + vCard ConvertedV4Data; + + // Conflict. Bring up conflict resolution dialog. + + // Get the server contact data for comparison. + + CardDAVIter->second.SetServerFilename(srviter->first); + CardDAVIter->second.GetServerContactData(); + ServerContactData = CardDAVIter->second.GetPageData(); + + FullFilename = CreateFilenamePath(AccountDirFinal, srviter->first); + + // Convert it to v4. + + vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data); + + vCardConflictObj vCardProcData; + + vCardProcData.vCardLocalData = &ClientData; + vCardProcData.vCardServerData = &ConvertedV4Data; + + // Load the client data from the filename given. + + ClientData.LoadFile(FullFilename); + + // Show dialog. + + bool *PauseMode = new bool; + int ConflictResult; + QRNotif qrn; + frmMain *frmMainPtrGet = static_cast(frmMainPtr); + + *PauseMode = TRUE; + qrn.QResponse = &ConflictResult; + qrn.PausePtr = PauseMode; + + vCardProcData.QRNotifData = &qrn; + + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED); + event.SetClientData(&vCardProcData); + wxPostEvent(frmMainPtrGet, event); + + /*timespec n1, n2; + + n1.tv_sec = 0; + n1.tv_nsec = 250000000L;*/ + + while (*PauseMode == TRUE){ + //nanosleep(&n1, &n2); + SleepFor(250000000); + } + + delete PauseMode; + PauseMode = NULL; + + // If replacing local version, store copy for now. + // Otherwise upload to server. + + if (ConflictResult == 0){ + + // Decide Later. + + continue; + + } else if (ConflictResult == 1){ + + // Decided to use client version. + + vCardUpdateLocal.Remove(srviter->first); + vCardUpdateRemote.Add(srviter->first, 1); + + } else if (ConflictResult == 2){ + + // Decided to use server version. + // Store the converted downloaded copy for + // processing later. + + //vCardUpdateLocal.Add(srviter->first, 1); + + vCardDownloadDataFileClass vCardNewData; + vCardNewData.DataType = 1; + vCardNewData.FileData = ConvertedV4Data.WriteString(); + + ConvertedV4Data.WriteFile(FullFilename); + + vCardDownloadData.insert(std::make_pair(srviter->first, vCardNewData)); + + + + } + + } else { + + // Send vCard to the server. + + vCardUpdateRemote.Add(srviter->first, 1); + + } + + } else { + + // Check if local ETag is different from server ETag. + // If different, obtain the vCard from the server. + + if (etd.ETagOrigValue != ETagSrv){ + + vCardUpdateLocal.Add(srviter->first, 1); + + } + + } + + } + + // Process the vCards that need to be downloaded and added/overwritten. + + wxString vCardFilenameFinal; + wxString vCardOutputData; + wxString vCardInputData; + wxString ETagFileData; + wxFFile vCardFile; + bool vCardProcessError; + + for (std::map::iterator additer = vCardDownloadData.begin(); + additer != vCardDownloadData.end(); additer++){ + + vCardFilenameFinal.Clear(); + vCardInputData.Clear(); + vCardOutputData.Clear(); + ETagFileData.Clear(); + + vCardFilenameFinal = CreateFilenamePath(AccountDirFinal, additer->first); + + ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); + + if (additer->second.DataType == 0){ + + vCard ConvertedV4Data; + + // Grab the file from the server and write the contact out. + + vCard34Conv vCard34Obj; + + CardDAVIter->second.SetServerFilename(additer->first); + CardDAVIter->second.GetServerContactData(); + vCardInputData = CardDAVIter->second.GetPageData(); + + vCard34Obj.ConvertToV4(&vCardInputData, &ConvertedV4Data); + + ConvertedV4Data.WriteFile(vCardFilenameFinal); + + // Update the ETagDB. + + //vCardFile.Open(vCardFilenameFinal, wxT("w")); + + //if (vCardFile.IsOpened()){ + + // vCardFile.Write(vCardOutputData, wxConvAuto()); + // vCardFile.Close(); + + //} + + // Get the server ETag. + + wxString ServerETag; + CardDAVIter->second.GetServerETagValueThread(); + ServerETag = CardDAVIter->second.ETagValueResult(); + + // Add to the ETag Database. + + ETagDBPtr->AddETag(additer->first, ServerETag, ServerETag); + + } else if (additer->second.DataType == 1){ + + // Write out the contact to the account directory. + + vCardFilenameFinal = CreateFilenamePath(AccountDirFinal, additer->first); + vCardOutputData = additer->second.FileData; + + vCardFile.Open(vCardFilenameFinal, wxT("w")); + + if (vCardFile.IsOpened()){ + + vCardFile.Write(vCardOutputData, wxConvAuto()); + vCardFile.Close(); + + } + + // Update the ETagDB. + + wxString ServerETag; + CardDAVIter->second.GetServerETagValueThread(); + ServerETag = CardDAVIter->second.ETagValueResult(); + + // Add to the ETag Database. + + ETagDBPtr->AddETag(additer->first, ServerETag, ServerETag); + + } + } + + // Look for vCard files which aren't in the ETagDB. + + while(ContinueProcess){ + + // Check and make sure that the filename ends in .vcf/.vcard + // Skip any file that beings with a dot. + + if (AccDirFilename.Left(1) == wxT(".")){ + + ContinueProcess = AccDir.GetNext(&AccDirFilename); + continue; + + } + + if (AccDirFilename.Right(4) != wxT(".vcf") && + AccDirFilename.Right(6) != wxT(".vcard")){ + + ContinueProcess = AccDir.GetNext(&AccDirFilename); + continue; + + } + + // Look in the ETagDB for the file. + + bool ETagExists = ETagDBPtr->CheckETagExists(AccDirFilename); + + if (ETagExists == FALSE){ + + // Add the vCard to the list to be added. + + vCardAdd.Add(AccDirFilename, 1); + + } + + ContinueProcess = AccDir.GetNext(&AccDirFilename); + + } + + // Process the vCards to add/update to the server. + + for (int vi = 0; vi < vCardAdd.GetCount(); vi++){ + + ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); + ETag = ETagDBPtr->GetETag(vCardAdd[vi]); + ETagOriginal = ETagDBPtr->GetETagOriginal(vCardAdd[vi]); + ContactFilename = vCardAdd[vi]; + FullFilename = CreateFilenamePath(AccountDirFinal, vCardAdd[vi]); + + ContactFilename.Trim(); + + if (ETag == ETagOriginal){ + + // Compare the ETag with the Server ETag. + + if (ETagOriginal != ETagServer){ + + // Server ETag is different from original ETag. + // This is a conflict which the user will now + // need to resolve. + + vCard Moo1; + vCard Moo2; + int intResult; + + frmMain *frmMainPtrGet = static_cast(frmMainPtr); + + vCard34Conv vCard34Obj; + + wxString ServerContactData; + vCard ClientData; + vCard ConvertedV4Data; + + // Load the client data from the filename given. + + CardDAVIter->second.GetServerContactData(); + ServerContactData = CardDAVIter->second.GetPageData(); + + // Process v3 version into v4 version. + + vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data); + + vCardConflictObj vCardProcData; + + vCardProcData.vCardLocalData = &ClientData; + vCardProcData.vCardServerData = &ConvertedV4Data; + ClientData.LoadFile(FullFilename); + + //ContactConflictEvent event(ContactConflictCmdEnv); + //event.SetData(ContactFilename, Moo1, Moo2); + + //wxPostEvent(frmMainPtrGet, event); + + // Setup Conflict Resolution Dialog. + + // Fetch Data from Server and convert. + + bool *PauseMode = new bool; + int ConflictResult; + QRNotif qrn; + + *PauseMode = TRUE; + qrn.QResponse = &ConflictResult; + qrn.PausePtr = PauseMode; + + vCardProcData.QRNotifData = &qrn; + + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED); + event.SetClientData(&vCardProcData); + wxPostEvent(frmMainPtrGet, event); + + /*timespec n1, n2; + + n1.tv_sec = 0; + n1.tv_nsec = 250000000L;*/ + + while (*PauseMode == TRUE){ + //nanosleep(&n1, &n2); + SleepFor(250000000); + } + + delete PauseMode; + PauseMode = NULL; + + //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2); + + if (ConflictResult == 0){ + + // Decide Later. + + iter->second = 4; + continue; + + } else if (ConflictResult == 1){ + + // Decided to use client version. + + CardDAVIter->second.ProcessData(); + + iter->second = 4; + + } else if (ConflictResult == 2){ + + // Decided to use server version. + + // Download server version. + + ConvertedV4Data.WriteFile(CreateFilenamePath(AccountDirFinal, vCardAdd[vi])); + + iter->second = 4; + + } + + } else { + + // Setup the filename for the contact being added. + + wxString wxSFilename = CreateFilenamePath(AccountDirFinal, vCardAdd[vi]); + wxString wxSCardData; + wxString TaskData; + //wxString TaskURL; + + // Load the data from the file. + + wxFFile wxFCard; + wxFCard.Open(wxSFilename, wxT("r")); + + if (wxFCard.IsOpened()){ + + wxFCard.ReadAll(&wxSCardData, wxConvAuto()); + wxFCard.Close(); + + } + + // Convert the data to v3. + + vCard34Conv vCard34Obj; + + vCard34Obj.ConvertToV3(wxSFilename, &TaskData); + + // Setup the URL address. + + //TaskURL = StringTaskDetailIter->second + wxT("/") + vCardAdd[vi]; + + // Upload the data to the server. + + CardDAVIter->second.SetUploadMode(TRUE); + CardDAVIter->second.SetupData(wxT("PUT"), vCardAdd[vi], TaskData); + CardDAVIter->second.ProcessData(); + + // Get the Server ETag and put it in the ETag database. + + CardDAVIter->second.SetServerFilename(vCardAdd[vi]); + CardDAVIter->second.GetServerETagValueThread(); + ETagServer = CardDAVIter->second.ETagValueResult(); + + ETagDBPtr->AddETag(vCardAdd[vi], ETagServer, ETagServer); + + } + + } else { + + if (ETagOriginal != ETagServer){ + + // Server ETag is different from original ETag. + // This is a conflict which the user will now + // need to resolve. + + vCard Moo1; + vCard Moo2; + int intResult; + + frmMain *frmMainPtrGet = (frmMain *)frmMainPtr; + + //ContactConflictEvent event(ContactConflictCmdEnv); + //event.SetData(ContactFilename, Moo1, Moo2); + + vCard34Conv vCard34Obj; + + wxString ServerContactData; + vCard ClientData; + vCard ConvertedV4Data; + + // Load the client data from the filename given. + + CardDAVIter->second.GetServerContactData(); + ServerContactData = CardDAVIter->second.GetPageData(); + ClientData.LoadFile(FullFilename); + + // Process v3 version into v4 version. + + vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data); + + vCardConflictObj vCardProcData; + + vCardProcData.vCardLocalData = &ClientData; + vCardProcData.vCardServerData = &ConvertedV4Data; + + bool *PauseMode = new bool; + int ConflictResult; + QRNotif qrn; + + *PauseMode = TRUE; + qrn.QResponse = &ConflictResult; + qrn.PausePtr = PauseMode; + + vCardProcData.QRNotifData = &qrn; + + wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED); + event.SetClientData(&vCardProcData); + wxPostEvent(frmMainPtrGet, event); + + /*timespec n1, n2; + + n1.tv_sec = 0; + n1.tv_nsec = 250000000L;*/ + + while (*PauseMode == TRUE){ + //nanosleep(&n1, &n2); + SleepFor(250000000); + } + + delete PauseMode; + PauseMode = NULL; + + //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2); + + if (ConflictResult == 0){ + + // Decide Later. + + iter->second = 4; + continue; + + } else if (ConflictResult == 1){ + + // Decided to use client version. + + CardDAVIter->second.ProcessData(); + //ETagServer = CardDAVIter->second.GetServerETagValueThread(); + //ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer); + + iter->second = 4; + + } else if (ConflictResult == 2){ + + // Decided to use server version. + + // Write server version to file. + + ConvertedV4Data.WriteFile(CreateFilenamePath(AccountDirFinal, vCardAdd[vi])); + + iter->second = 4; + + } + + } else { + + // Setup the filename for the contact being added. + + wxString wxSFilename = CreateFilenamePath(AccountDirFinal, vCardAdd[vi]); + wxString wxSCardData; + wxString TaskData; + //wxString TaskURL; + + // Load the data from the file. + + wxFFile wxFCard; + wxFCard.Open(wxSFilename, wxT("r")); + + if (wxFCard.IsOpened()){ + + wxFCard.ReadAll(&wxSCardData, wxConvAuto()); + wxFCard.Close(); + + } + + // Convert the data to v3. + + vCard34Conv vCard34Obj; + + vCard34Obj.ConvertToV3(wxSFilename, &TaskData); + + // Setup the URL address. + + //TaskURL = StringTaskDetailIter->second + wxT("/") + vCardAdd[vi]; + + // Upload the data to the server. + + CardDAVIter->second.SetUploadMode(TRUE); + CardDAVIter->second.SetupData(wxT("PUT"), vCardAdd[vi], TaskData); + CardDAVIter->second.ProcessData(); + + // Get the Server ETag and put it in the ETag database. + + CardDAVIter->second.SetServerFilename(vCardAdd[vi]); + CardDAVIter->second.GetServerETagValueThread(); + ETagServer = CardDAVIter->second.ETagValueResult(); + + + ETagDBPtr->AddETag(vCardAdd[vi], ETagServer, ETagServer); + + } + + } + + } + + // Process the vCards to delete locally. + + for (int vi = 0; vi < vCardDelete.GetCount(); vi++){ + + if (!wxRemoveFile(CreateFilenamePath(AccountDirFinal, vCardDelete[vi]))){ + + } else { + + ETagDBPtr->RemoveETag(vCardDelete[vi]); + + } + + frmMain *frmMainPtrGet = static_cast(frmMainPtr); + + } + + // Process the vCards to delete from the server. + + std::map *ETagFilenameMap = ETagDBPtr->GetFilenamePointer(); + + + for (std::map::iterator deliter = ETagFilenameMap->begin(); + deliter != ETagFilenameMap->end(); deliter++){ + + // Look through the ETagDB and find contacts which are marked as DELETED. + + if (deliter->second == wxT("DELETED")){ + + CardDAVIter->second.SetUploadMode(FALSE); + CardDAVIter->second.SetupData(wxT("DELETE"), deliter->first, wxT("")); + CardDAVIter->second.ProcessData(); + + // Delete the ETag as the file has now been deleted. + + ETagDBPtr->RemoveETag(deliter->first); + + } + + } + + // Write out the update server sync token. + + wxString ServerSyncToken = ServerContactList.SyncToken; + + ServerSyncToken.Trim(); + + if (!ServerSyncToken.IsEmpty()){ + + wxFFile SyncWrite; + SyncWrite.Open(AccountSyncTokenFilename, wxT("w")); + + if (SyncWrite.IsOpened()){ + + SyncWrite.Write(ServerSyncToken, wxConvAuto()); + SyncWrite.Close(); + + } + + } + + // Check for another sync token. If there is another + // sync token then repeat this. If token matches then stop processing. + + if (SyncTokenLoad == ServerSyncToken){ + + KeepUpdating = FALSE; + + } + + } + + // Mark as completed. + + iter->second = 4; + continue; + + } else { + + // Update the data to the server. + + CardDAVIter->second.ProcessData(); + + } + + /*timespec n1, n2; + + n1.tv_sec = 0; + n1.tv_nsec = 250000000L;*/ + + while (iter->second == 1){ + + SleepFor(250000000); + //nanosleep(&n1, &n2); + + } + + if ((iter->second == 4 && TypeIter->second == 0) || + (iter->second == 8 && TypeIter->second == 0)){ + + AccountDir = StringAccountIter->second; + ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); + + CardDAVIter->second.GetServerETagValueThread(); + ETagServer = CardDAVIter->second.ETagValueResult(); + ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer); + + } + + if ((iter->second == 4 && TypeIter->second == 1) || + (iter->second == 8 && TypeIter->second == 1)){ + + AccountDir = StringAccountIter->second; + ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir); + + CardDAVIter->second.GetServerETagValueThread(); + ETagServer = CardDAVIter->second.ETagValueResult(); + ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer); + + } + + break; + + } + + } + + if (TasksFoundProc == FALSE){ + + TasksActive = FALSE; + ProcessTasksData = FALSE; + + } else { + + wxCommandEvent eventp(ACTMGR_STARTTIMER); + wxPostEvent(this, eventp); + + //AnimationTimer.StartAnimation(); + //ActListProcTimer.Start(); + + } + + wxCommandEvent event(ACTMGR_STARTPROCESSTIMER); + wxPostEvent(this, event); + + //ActProcessTimer.Start(); + +} + +void frmActivityMgr::ProcessTasks() +{ + + std::thread ProcessThread(&frmActivityMgr::ProcessTasksThread, this); + ProcessThread.detach(); + +} + +void frmActivityMgr::SetupPointers(wxETagProcessTimer *ETagTmrPtrInc, void *frmMainPtrInc) +{ + + ETagTmrPtr = ETagTmrPtrInc; + + frmMainPtr = frmMainPtrInc; + +} + +void frmActivityMgr::ResumeProcessing(wxCommandEvent &event){ + + QRNotif *qrn = (QRNotif *)event.GetClientData(); + + int *QRes = qrn->QResponse; + + *qrn->PausePtr = FALSE; + + *QRes = event.GetInt(); + +} + +int frmActivityMgr::GetTaskStatus(int intTaskID){ + + int intResult = 2; + + if (ActivityList.find(intTaskID) == ActivityList.end()){ + + return intResult; + + } + + std::map::iterator taskiter = ActivityList.find(intTaskID); + intResult = taskiter->second; + + return intResult; + +} + +void frmActivityMgr::ToggleConnectionStatus( wxCommandEvent &event ){ + + wxCommandEvent connevent(CONNSTAT_UPDATE); + + if (SleepMode == FALSE){ + + connevent.SetInt(1); + SleepMode = TRUE; + + } else { + + connevent.SetInt(0); + SleepMode = FALSE; + + } + + wxPostEvent(GetParent(), connevent); + +} + +void frmActivityMgr::WriteServerCertificate(wxString AccountName, SSLCertCollection SSLCertInc){ + + wxString ServerCertFinal; + + // Get the Cert section of the certificate and write it to the file. + + ServerCertFinal = GetAccountDir(AccountName, TRUE); + + wxFile CertFile; + + std::map::iterator SSLCDIter = SSLCertInc.SSLCollection.find(0); + std::multimap::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert")); + + CertFile.Open(ServerCertFinal, wxFile::write); + + CertFile.Write(SSLDataIter->second, wxConvUTF8); + CertFile.Close(); + +} + +void frmActivityMgr::StartTimer(wxCommandEvent& event){ + + ActListProcTimer.Start(1000, FALSE); + +} + +void frmActivityMgr::StopTimer(wxCommandEvent& event){ + + ActListProcTimer.Stop(); + +} + +void frmActivityMgr::StartProcessTimer(wxCommandEvent& event){ + + ActProcessTimer.Start(1000, FALSE); + +} + +void frmActivityMgr::StopProcessTimer(wxCommandEvent& event){ + + ActProcessTimer.Stop(); + +} + +#endif \ No newline at end of file diff --git a/source/frmActivityMgr.h b/source/frmActivityMgr.h new file mode 100644 index 0000000..d434056 --- /dev/null +++ b/source/frmActivityMgr.h @@ -0,0 +1,97 @@ +#ifndef __frmActivityMgr__ +#define __frmActivityMgr__ + +/** +@file +Subclass of frmActivityMgrADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" +#include "carddav/carddav.h" +#include +#include +#include "common/timers.h" +#include "common/etag.h" + +//// end generated include + +DECLARE_EVENT_TYPE(ACTMGR_RESUMEPROC, wxID_ANY) +DECLARE_EVENT_TYPE(ACTMGR_TOGGLECONN, wxID_ANY) +DECLARE_EVENT_TYPE(ACTMGR_STARTTIMER, wxID_ANY) +DECLARE_EVENT_TYPE(ACTMGR_STOPTIMER, wxID_ANY) +DECLARE_EVENT_TYPE(ACTMGR_STARTPROCESSTIMER, wxID_ANY) +DECLARE_EVENT_TYPE(ACTMGR_STOPPROCESSTIMER, wxID_ANY) + +struct vCardDownloadDataFileClass{ + unsigned int DataType = 0; + wxString FileData; +}; + +/** Implementing frmActivityMgrADT */ +class frmActivityMgr : public frmActivityMgrADT +{ + private: + wxActTimer AnimationTimer; + wxActProcessTimer ActProcessTimer; + wxActListProcTimer ActListProcTimer; + wxBitmap SleepBitmap; + int ActivityTaskID = 0; + int ActivityProgressBarTotal = 0; + int ActivityProgressBarDone = 0; + bool BlankBool = FALSE; + std::map ActivityList; + std::map ActivityListType; + std::map ActivityListIndex; + std::map ActivityListData; + std::map ActivityListTaskDetail; + std::map ActivityListAccount; + std::map ActivityListFilename; + std::map ActivityListFullFilename; + std::map ActivityListConn; + std::map ActivityListETag; + std::map ActivityListETagOriginal; + std::map ActivityListFinDate; + std::map ActivityListLog; + bool WindowOpen = FALSE; + bool TasksActive = FALSE; + bool SleepMode = FALSE; + bool ProcessTasksData = FALSE; + //int ConflictResult = 0; + wxETagProcessTimer *ETagTmrPtr; + void *frmMainPtr; + //frmMain *frmMainPtr; + protected: + // Handlers for frmActivityMgrADT events. + void CloseWindow( wxCommandEvent& event ); + void StopTask( wxCommandEvent& event ); + void StopAllTasks( wxCommandEvent& event ); + void RetryTask( wxCommandEvent& event ); + void StartTimer( wxCommandEvent& event ); + void StopTimer( wxCommandEvent& event ); + void StartProcessTimer( wxCommandEvent& event ); + void StopProcessTimer( wxCommandEvent& event ); + void FlushAllTasks(); + void RemoveTask(); + void ProcessTasksThread(); + void ToggleConnectionStatus( wxCommandEvent& event ); + void WriteServerCertificate(wxString AccountName, SSLCertCollection SSLCertInc); + public: + /** Constructor */ + frmActivityMgr( wxWindow* parent ); + int AddTask(int TaskType, wxString TaskDetail, wxString TaskAccount, + wxString TaskURL, wxString TaskFilename, wxString TaskFullFilename, + wxString TaskData); + void ProcessTasks(); + void OpenWindow(); + void SetupPointers(wxETagProcessTimer *ETagTmrPtrInc, void *frmMainPtrInc); + void ResumeProcessing(wxCommandEvent &event); + void PauseAllTimers(); + void ResumeAllTimers(); + int GetTaskStatus(int intTaskID); + DECLARE_EVENT_TABLE() + + //// end generated class members + +}; + +#endif // __frmActivityMgr__ diff --git a/source/frmConflictResolution.cpp b/source/frmConflictResolution.cpp new file mode 100644 index 0000000..16e0d55 --- /dev/null +++ b/source/frmConflictResolution.cpp @@ -0,0 +1,54 @@ +#include "frmConflictResolution.h" +#include "common/getcontactinfo.h" + +frmConflictResolution::frmConflictResolution( wxWindow* parent ) +: +frmConflictResolutionADT( parent ) +{ + +} + +void frmConflictResolution::KeepLocalData( wxCommandEvent& event ) +{ + ConflictResult = 1; + this->Close(); + +} + +void frmConflictResolution::KeepServerData( wxCommandEvent& event ) +{ + ConflictResult = 2; + this->Close(); + +} + +void frmConflictResolution::DecideLater( wxCommandEvent& event ) +{ + + ConflictResult = 0; + this->Close(); + +} + +int frmConflictResolution::GetResult(){ + + return ConflictResult; + +} + +void frmConflictResolution::LoadData(vCard *LocalData, vCard *ServerData, std::map *MemoryFSList){ + + // Load the local data. + + wxString ClientSID = wxString::Format(wxT("%i"), rand() % 32768); + wxString ServerSID = wxString::Format(wxT("%i"), rand() % 32768); + + LoadContactData(LocalData, htmClient, ClientSID, + wxT(""), MemoryFSList); + + // Load the server data. + + LoadContactData(ServerData, htmServer, ServerSID, + wxT(""), MemoryFSList); + +} \ No newline at end of file diff --git a/source/frmConflictResolution.h b/source/frmConflictResolution.h new file mode 100644 index 0000000..3a48d94 --- /dev/null +++ b/source/frmConflictResolution.h @@ -0,0 +1,40 @@ +#ifndef __frmConflictResolution__ +#define __frmConflictResolution__ + +/** +@file +Subclass of frmConflictResolutionADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" +#include "vcard/vcard.h" +#include "frmMain.h" + +//// end generated include + +struct vCardConflictObj{ + vCard *vCardLocalData; + vCard *vCardServerData; + QRNotif *QRNotifData; +}; + +/** Implementing frmConflictResolutionADT */ +class frmConflictResolution : public frmConflictResolutionADT +{ + private: + int ConflictResult; + protected: + // Handlers for frmConflictResolutionADT events. + void KeepLocalData( wxCommandEvent& event ); + void KeepServerData( wxCommandEvent& event ); + void DecideLater( wxCommandEvent& event ); + public: + /** Constructor */ + frmConflictResolution( wxWindow* parent ); + int GetResult(); + void LoadData(vCard *LocalObj, vCard *ServerObj, std::map *MemoryFSList); + //// end generated class members + +}; + +#endif // __frmConflictResolution__ diff --git a/source/frmContact.cpp b/source/frmContact.cpp new file mode 100644 index 0000000..5d9eeae --- /dev/null +++ b/source/frmContact.cpp @@ -0,0 +1,131 @@ +#include "frmContact.h" +#include "common/getcontactinfo.h" +#include "frmMain.h" +#include +#include +#include + +BEGIN_EVENT_TABLE(frmContact, wxFrame) +END_EVENT_TABLE() + +frmContact::frmContact( wxWindow* parent ) +: +frmContactADT( parent ) +{ + +} + +void frmContact::CloseWindowProcessing(){ + +} + +void frmContact::CloseWindow( wxCommandEvent& event ){ + + this->Close(); + +} + +void frmContact::CloseWindow( wxCloseEvent& event ){ + + // Off for peppermint tea. Better clean up first or + // we'll be in for it later. + + wxFileSystem::AddHandler(new wxMemoryFSHandler); + + if (MemoryFSListPtr->find(SessionID) == MemoryFSListPtr->end()){ + + } else { + + std::map::iterator striter; + + for (striter = MemoryFSListPtr->begin(); striter != MemoryFSListPtr->end(); striter++){ + + if (SessionID == striter->second){ + + // Delete the references from the wxMemoryFSHandler + // and the entry from the map. + + wxMemoryFSHandler::RemoveFile(striter->first); + + break; + + } + + } + + MemoryFSListPtr->erase(striter); + + } + + WindowData *WData = new WindowData; + + WData->DataType = 0; + WData->WindowPointer = this; + WData->WindowID = ContactUID; + + wxCommandEvent delevent(WINDOW_CLOSE); + delevent.SetClientData(WData); + wxPostEvent(GetParent(), delevent); + + Destroy(); + +} + + + +bool frmContact::SetupContactData(vCard *vCardObj){ + + wxFileSystem::AddHandler(new wxMemoryFSHandler); + + for (std::map::iterator striter = MemoryFSListPtr->begin(); + striter != MemoryFSListPtr->end(); striter++){ + + if (SessionID == striter->second){ + + // Delete the references from the wxMemoryFSHandler + // and the entry from the map. + + wxMemoryFSHandler::RemoveFile(striter->first); + MemoryFSListPtr->erase(striter); + + } + + } + + OldSessionID = SessionID; + SessionID = wxString::Format(wxT("%i"), rand() % 32768); + LoadContactData(vCardObj, htmContactData, SessionID, OldSessionID, MemoryFSListPtr); + SetTitle(vCardObj->Get(wxT("FN"))); + + WindowData *WData = new WindowData; + + vCardFilename = vCardObj->GetFilename(); + + WData->DataType = 0; + WData->WindowPointer = this; + WData->WindowID = ContactUID; + + wxCommandEvent editevent(WINDOW_EDIT); + editevent.SetClientData(WData); + wxPostEvent(GetParent(), editevent); + + return TRUE; +} + +void frmContact::SetupPointers(std::map *MemoryFSListIncPtr){ + + MemoryFSListPtr = MemoryFSListIncPtr; + +} + +void frmContact::SetUID(int UID){ + + ContactUID = UID; + +} + +wxString frmContact::GetFilename(){ + + return vCardFilename; + +} \ No newline at end of file diff --git a/source/frmContact.h b/source/frmContact.h new file mode 100644 index 0000000..305c6a4 --- /dev/null +++ b/source/frmContact.h @@ -0,0 +1,40 @@ +#include "vcard/vcard.h" +#include + +#ifndef __frmContact__ +#define __frmContact__ + +/** +@file +Subclass of frmContactADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" + +//// end generated include + +/** Implementing frmContactADT */ +class frmContact : public frmContactADT +{ + private: + std::map *MemoryFSListPtr; + wxString SessionID; + wxString OldSessionID; + int ContactUID; + void CloseWindowProcessing(); + wxString vCardFilename; + public: + /** Constructor */ + frmContact( wxWindow* parent ); + bool SetupContactData(vCard *vCardObj); + void CloseWindow( wxCloseEvent& event ); + void CloseWindow( wxCommandEvent& event ); + void SetupPointers(std::map *MemoryFSListIncPtr); + void SetUID(int UID); + wxString GetFilename(); + DECLARE_EVENT_TABLE(); + //// end generated class members + +}; + +#endif // __frmContact__ diff --git a/source/frmEditAccount.cpp b/source/frmEditAccount.cpp new file mode 100644 index 0000000..b7c8fef --- /dev/null +++ b/source/frmEditAccount.cpp @@ -0,0 +1,231 @@ +#include "frmEditAccount.h" +#include "carddav/carddav.h" + +frmEditAccount::frmEditAccount( wxWindow* parent ) +: +frmEditAccountADT( parent ) +{ + +} + +void frmEditAccount::DetectAddressBook( wxCommandEvent& event ) +{ + + // Check data before connecting. + + wxString ValueData; + + long PortNum; + ValueData = txtPort->GetValue(); + ValueData.ToLong(&PortNum, 10); + long RefreshNum; + ValueData = txtRefresh->GetValue(); + ValueData.ToLong(&RefreshNum, 10); + bool UseSSL; + + if (txtAddress->IsEmpty()){ + + wxMessageBox(wxT("The server address cannot be blank."), wxT("Error"), wxICON_ERROR); + return; + + } + + if (txtPort->IsEmpty() || PortNum < 0 || PortNum > 65535){ + + wxMessageBox(wxT("The server port needs to be between number 1 and 65535."), wxT("Error"), wxICON_ERROR); + return; + + } + + if (txtUsername->IsEmpty()){ + + wxMessageBox(wxT("The server username cannot be blank."), wxT("Error"), wxICON_ERROR); + return; + + } + + if (txtPassword->IsEmpty()){ + + wxMessageBox(wxT("The server password cannot be blank."), wxT("Error"), wxICON_ERROR); + return; + + } + + UseSSL = chkSSL->GetValue(); + + if (txtRefresh->IsEmpty() || RefreshNum < 300 || RefreshNum > 86400){ + + RefreshNum = 1800; + + } + + // Setup a CardDAV object. + + CardDAV CDavObj; + + CDavObj.SetupConnection(txtAddress->GetValue(), PortNum, txtUsername->GetValue(), txtPassword->GetValue(), UseSSL); + + // Attempt to extract the CardDAV address. + + wxString ABURL = CDavObj.GetDefaultAddressBookURL(); + + txtPrefix->SetValue(ABURL); + +} + +void frmEditAccount::LoadPointers( wxFileConfig* cfgin ){ + + cfgfile = cfgin; + +} + +void frmEditAccount::LoadSettings( wxString AccNameIn ){ + + // Get the data from the accounts settings file. + + AccName = AccNameIn; + long itemindex = 0; + bool ContinueAcc = TRUE; + wxString AccountName; + wxString AccountData; + + ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex); + + while (ContinueAcc){ + + if (AccountName == AccName){ + + cfgfile->SetPath(AccountName); + txtAccountName->SetValue(AccountName); + + cfgfile->Read("address", &AccountData); + txtAddress->SetValue(AccountData); + + cfgfile->Read("port", &AccountData); + txtPort->SetValue(AccountData); + + cfgfile->Read("username", &AccountData); + txtUsername->SetValue(AccountData); + + cfgfile->Read("password", &AccountData); + txtPassword->SetValue(AccountData); + + cfgfile->Read("prefix", &AccountData); + txtPrefix->SetValue(AccountData); + + cfgfile->Read("ssl", &AccountData); + if (AccountData == wxT("true")){ + + chkSSL->SetValue(TRUE); + + } + + cfgfile->Read("refresh", &AccountData); + txtRefresh->SetValue(AccountData); + + break; + + } + + cfgfile->SetPath(wxT("/")); + ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); + + } + +} + +void frmEditAccount::UpdateSettings( wxCommandEvent& event ) +{ + + // Update the settings for the account. + + long itemindex = 0; + bool ContinueAcc = TRUE; + wxString AccountName; + + // Look for the account + + while (ContinueAcc){ + + if (AccountName == AccName){ + + // Update the settings for the account. + + cfgfile->RenameGroup(AccountName, txtAccountName->GetValue()); + + cfgfile->SetPath(txtAccountName->GetValue()); + //txtAccountName->SetValue(AccountName); + + cfgfile->DeleteEntry(wxT("address"), FALSE); + cfgfile->Write(wxT("address"), txtAddress->GetValue()); + + cfgfile->DeleteEntry(wxT("port"), FALSE); + cfgfile->Write(wxT("port"), txtPort->GetValue()); + + cfgfile->DeleteEntry(wxT("username"), FALSE); + cfgfile->Write(wxT("username"), txtUsername->GetValue()); + + cfgfile->DeleteEntry(wxT("password"), FALSE); + cfgfile->Write(wxT("password"), txtPassword->GetValue()); + + cfgfile->DeleteEntry(wxT("prefix"), FALSE); + cfgfile->Write(wxT("prefix"), txtPrefix->GetValue()); + + cfgfile->DeleteEntry(wxT("ssl"), FALSE); + + if (chkSSL->GetValue() == TRUE){ + + cfgfile->Write(wxT("ssl"), wxT("true")); + + } else { + + cfgfile->Write(wxT("ssl"), wxT("false")); + + } + + cfgfile->DeleteEntry(wxT("refresh"), FALSE); + cfgfile->Write(wxT("refresh"), txtRefresh->GetValue()); + + /*cfgfile->Read("address", &AccountData); + //txtAddress->SetValue(AccountData); + + cfgfile->Read("port", &AccountData); + //txtPort->SetValue(AccountData); + + cfgfile->Read("username", &AccountData); + //txtUsername->SetValue(AccountData); + + cfgfile->Read("password", &AccountData); + //txtPassword->SetValue(AccountData); + + cfgfile->Read("prefix", &AccountData); + //txtPrefix->SetValue(AccountData); + + cfgfile->Read("ssl", &AccountData); + if (AccountData == wxT("true")){ + + chkSSL->SetValue(TRUE); + + } + + cfgfile->Read("refresh", &AccountData); + //txtRefresh->SetValue(AccountData);*/ + + + break; + + } + + cfgfile->SetPath(wxT("/")); + ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); + + } + + this->Close(); + +} + +void frmEditAccount::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} diff --git a/source/frmEditAccount.h b/source/frmEditAccount.h new file mode 100644 index 0000000..8247440 --- /dev/null +++ b/source/frmEditAccount.h @@ -0,0 +1,34 @@ +#ifndef __frmEditAccount__ +#define __frmEditAccount__ + +/** +@file +Subclass of frmEditAccountADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" +#include + +//// end generated include + +/** Implementing frmEditAccountADT */ +class frmEditAccount : public frmEditAccountADT +{ + protected: + // Handlers for frmEditAccountADT events. + void DetectAddressBook( wxCommandEvent& event ); + void UpdateSettings( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmEditAccount( wxWindow* parent ); + void LoadPointers( wxFileConfig* cfgin ); + void LoadSettings( wxString AccNameIn ); + private: + wxFileConfig *cfgfile; + wxString AccName; + //// end generated class members + +}; + +#endif // __frmEditAccount__ diff --git a/source/frmInvalidSSLCertificate.cpp b/source/frmInvalidSSLCertificate.cpp new file mode 100644 index 0000000..a7e75ca --- /dev/null +++ b/source/frmInvalidSSLCertificate.cpp @@ -0,0 +1,55 @@ +#include "frmInvalidSSLCertificate.h" +#include "frmSSLCertificate.h" + +frmInvalidSSLCertificate::frmInvalidSSLCertificate( wxWindow* parent ) +: +frmInvalidSSLCertificateADT( parent ) +{ + +} + +void frmInvalidSSLCertificate::Accept( wxCommandEvent& event ) +{ + intResult = 1; + Close(); +} + +void frmInvalidSSLCertificate::Reject( wxCommandEvent& event ) +{ + intResult = 2; + Close(); +} + +void frmInvalidSSLCertificate::ViewCertificates( wxCommandEvent& event ) +{ + frmSSLCertificate *frameSSLCert = new frmSSLCertificate ( this ); + frameSSLCert->StartCertFrom(0); + frameSSLCert->SetupCerts(CertData); + frameSSLCert->ShowModal(); + + delete frameSSLCert; + frameSSLCert = NULL; +} + +void frmInvalidSSLCertificate::LoadData(SSLCertCollection CertDataInc, + wxString AccountNameInc) +{ + + AccountName = AccountNameInc; + CertData = CertDataInc; + + lblSSLText->SetLabel(wxT("An invalid SSL certificate was received from the server for the '") + AccountName + wxT("' account.\n\n") + + wxT("Click on one of the following buttons:\n\n") + + wxT("- Accept to accept the SSL certificate for this session and future sessions until the certificate changes.\n") + + wxT("- Reject to not use this certificate and disconnect (you will be asked again on subsequent reconnections to the server).\n") + + wxT("- View Certificates to review the certificates that were received.") + ); + +} + +int frmInvalidSSLCertificate::GetResult() +{ + + return intResult; + +} \ No newline at end of file diff --git a/source/frmInvalidSSLCertificate.h b/source/frmInvalidSSLCertificate.h new file mode 100644 index 0000000..b7ead06 --- /dev/null +++ b/source/frmInvalidSSLCertificate.h @@ -0,0 +1,42 @@ +#ifndef __frmInvalidSSLCertificate__ +#define __frmInvalidSSLCertificate__ + +/** +@file +Subclass of frmInvalidSSLCertificateADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" +#include "frmMain.h" +#include "common/sslcertstructs.h" + +//// end generated include + +struct SSLInvalidCertNotifObj{ + SSLCertCollection CertCollection; + QRNotif *QRNotifData; + wxString AccountName; +}; + +/** Implementing frmInvalidSSLCertificateADT */ +class frmInvalidSSLCertificate : public frmInvalidSSLCertificateADT +{ + protected: + // Handlers for frmInvalidSSLCertificateADT events. + void Accept( wxCommandEvent& event ); + void Reject( wxCommandEvent& event ); + void ViewCertificates( wxCommandEvent& event ); + private: + SSLCertCollection CertData; + int intResult; + wxString AccountName; + public: + /** Constructor */ + frmInvalidSSLCertificate( wxWindow* parent ); + void LoadData(SSLCertCollection CertDataInc, wxString AccountNameInc); + int GetResult(); + //// end generated class members + +}; + +#endif // __frmInvalidSSLCertificate__ diff --git a/source/frmMain.cpp b/source/frmMain.cpp new file mode 100644 index 0000000..c352b82 --- /dev/null +++ b/source/frmMain.cpp @@ -0,0 +1,2833 @@ +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include + +// Include the forms. + +#include "frmMain.h" +#include "frmAbout.h" +#include "frmPreferences.h" +#include "frmNewAccount.h" +#include "frmActivityMgr.h" +#include "frmContact.h" +#include "frmConflictResolution.h" +#include "frmInvalidSSLCertificate.h" +#include "frmSearch.h" +#include "frmSSLCertificate.h" +#include "frmUpdate.h" +#include "bitmaps.h" + +#include "common/preferences.h" +#include "common/getcontactinfo.h" +#include "common/events.h" +#include "common/dirs.h" +#include "vcard/vcard.h" +#include "carddav/carddav.h" +#include "contacteditor/frmContactEditor.h" +#include "import/import.h" +#include "export/export.h" +#include "widgets/XABAccountView2.h" + +#include "version.h" + +//extern const wxEventType MyHaremEvent = wxNewEventType(); + +//#define CE_UPDATECONTACTLIST 7700 +//#define CE_UPDATEACCOUNTLIST 7701 + +DEFINE_EVENT_TYPE(CE_UPDATECONTACTLIST); +DEFINE_EVENT_TYPE(CE_UPDATEACCOUNTLIST); +DEFINE_EVENT_TYPE(SE_UPDATECONTACTNOTIF); +DEFINE_EVENT_TYPE(CE_OPENCONTACT); +DEFINE_EVENT_TYPE(CE_EDITCONTACT); +DEFINE_EVENT_TYPE(CE_REVEALCONTACT); +DEFINE_EVENT_TYPE(CE_REMOVECONTACT); +DEFINE_EVENT_TYPE(CE_REMOVESEARCH); +DEFINE_EVENT_TYPE(SYNC_EMPTYSERVER); +DEFINE_EVENT_TYPE(ACTMGR_START); +DEFINE_EVENT_TYPE(ACTMGR_SHUFFLE); +DEFINE_EVENT_TYPE(ACTMGR_STOP); +DEFINE_EVENT_TYPE(WINDOW_ADD); +DEFINE_EVENT_TYPE(WINDOW_EDIT); +//DEFINE_EVENT_TYPE(WINDOW_DELETE); +DEFINE_EVENT_TYPE(WINDOW_CLOSE); +DEFINE_EVENT_TYPE(CONNSTAT_UPDATE); +DEFINE_EVENT_TYPE(INVALIDSSLCERT); +DEFINE_EVENT_TYPE(GETSELECTEDLIST); +DEFINE_EVENT_TYPE(SYNCACCOUNT); + +BEGIN_EVENT_TABLE(frmMain, wxFrame) + EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, frmMain::ConflictResolution) + EVT_COMMAND(wxID_ANY, CE_UPDATECONTACTLIST, frmMain::UpdateContactList) + EVT_COMMAND(wxID_ANY, CE_UPDATEACCOUNTLIST, frmMain::UpdateAccountList) + EVT_COMMAND(wxID_ANY, SE_UPDATECONTACTNOTIF, frmMain::UpdateSearchContactLists) + EVT_COMMAND(wxID_ANY, CE_OPENCONTACT, frmMain::OpenContactInfo) + EVT_COMMAND(wxID_ANY, CE_EDITCONTACT, frmMain::ShowContactEditorEdit) + EVT_COMMAND(wxID_ANY, CE_REVEALCONTACT, frmMain::RevealContact) + EVT_COMMAND(wxID_ANY, CE_REMOVESEARCH, frmMain::RemoveContactsWindowPointer) + EVT_COMMAND(wxID_ANY, SYNC_EMPTYSERVER, frmMain::EmptyServerDialog) + EVT_COMMAND(wxID_ANY, ACTMGR_START, frmMain::ActivityIconStart) + EVT_COMMAND(wxID_ANY, ACTMGR_SHUFFLE, frmMain::ActivityIconShuffle) + EVT_COMMAND(wxID_ANY, ACTMGR_STOP, frmMain::ActivityIconStop) + EVT_COMMAND(wxID_ANY, WINDOW_ADD, frmMain::WindowAdd) + EVT_COMMAND(wxID_ANY, WINDOW_EDIT, frmMain::WindowEdit) + EVT_COMMAND(wxID_ANY, WINDOW_CLOSE, frmMain::WindowDelete) + EVT_COMMAND(wxID_ANY, CONNSTAT_UPDATE, frmMain::UpdateConnectionStatus) + EVT_COMMAND(wxID_ANY, INVALIDSSLCERT, frmMain::InvalidSSLCertificate) + EVT_COMMAND(wxID_ANY, GETSELECTEDLIST, frmMain::GetSelectedList) + EVT_COMMAND(wxID_ANY, SYNCACCOUNT, frmMain::SyncAccount) +END_EVENT_TABLE() + +frmMain::frmMain( wxWindow* parent ) +: +frmMainADT( parent ) +{ + + // Setup the account icons. + + wxMemoryInputStream astream(icons_accinet_png, sizeof(icons_accinet_png)); + wxMemoryInputStream bstream(icons_acclocal_png, sizeof(icons_acclocal_png)); + wxMemoryInputStream cstream(icons_accgroup_png, sizeof(icons_accgroup_png)); + wxMemoryInputStream dstream(icons_accnone_png, sizeof(icons_accnone_png)); + + wxImage icons_accinet_png(astream, wxBITMAP_TYPE_PNG); + wxBitmap AccInet(icons_accinet_png, -1); + wxIcon wxIAccInet; + wxIAccInet.CopyFromBitmap(AccInet); + + wxImage icons_acclocal_png(bstream, wxBITMAP_TYPE_PNG); + wxBitmap AccNIcon(icons_acclocal_png, -1); + wxIcon wxIAccNIcon; + wxIAccNIcon.CopyFromBitmap(AccNIcon); + + wxImage icons_accgroup_png(cstream, wxBITMAP_TYPE_PNG); + wxBitmap AccGrp(icons_accgroup_png, -1); + wxIcon wxIAccGrp; + wxIAccGrp.CopyFromBitmap(AccGrp); + + wxImage icons_accnone_png(dstream, wxBITMAP_TYPE_PNG); + wxBitmap AccNone(icons_accnone_png, -1); + wxIcon wxIAccNone; + wxIAccNone.CopyFromBitmap(AccNone); + + AccountID = AccImgList->Add(wxIAccNIcon); + AccountNetID = AccImgList->Add(wxIAccInet); + AccountGrpID = AccImgList->Add(wxIAccGrp); + AccountNoneID = AccImgList->Add(wxIAccNone); + + bmpIcon->SetIcon(AccImgList->GetIcon(AccountNoneID)); + + // Setup the status bar icons. + + // SSL icons. + + wxMemoryInputStream sslstream(icons_ssl_png, sizeof(icons_ssl_png)); + wxMemoryInputStream sslwarningstream(icons_sslwarning_png, sizeof(icons_sslwarning_png)); + wxMemoryInputStream nosslstream(icons_nossl_png, sizeof(icons_nossl_png)); + + wxImage icons_ssl_png(sslstream, wxBITMAP_TYPE_PNG); + imgSSL = new wxBitmap(icons_ssl_png, -1); + + wxImage icons_sslwarning_png(sslwarningstream, wxBITMAP_TYPE_PNG); + imgSSLWarning = new wxBitmap(icons_sslwarning_png, -1); + + wxImage icons_nossl_png(nosslstream, wxBITMAP_TYPE_PNG); + imgNoSSL = new wxBitmap(icons_nossl_png, -1); + + // Activity Icon. + + wxMemoryInputStream act1(icons_act1_png, sizeof(icons_act1_png)); + wxMemoryInputStream act2(icons_act2_png, sizeof(icons_act2_png)); + wxMemoryInputStream act3(icons_act3_png, sizeof(icons_act3_png)); + wxMemoryInputStream act4(icons_act4_png, sizeof(icons_act4_png)); + wxMemoryInputStream actsleep(icons_actsleep_png, sizeof(icons_actsleep_png)); + + wxImage icons_actsleep_png(actsleep, wxBITMAP_TYPE_PNG); + imgActIconSleep = new wxBitmap (icons_actsleep_png, -1); + + wxImage icons_act1_png(act1, wxBITMAP_TYPE_PNG); + imgActIcon1 = new wxBitmap (icons_act1_png, -1); + wxIcon wxIAct1icon; + wxIAct1icon.CopyFromBitmap(*imgActIcon1); + + wxImage icons_act2_png(act2, wxBITMAP_TYPE_PNG); + imgActIcon2 = new wxBitmap (icons_act2_png, -1); + wxIcon wxIAct2icon; + wxIAct2icon.CopyFromBitmap(*imgActIcon2); + + wxImage icons_act3_png(act3, wxBITMAP_TYPE_PNG); + imgActIcon3 = new wxBitmap (icons_act3_png, -1); + wxIcon wxIAct3icon; + wxIAct3icon.CopyFromBitmap(*imgActIcon3); + + wxImage icons_act4_png(act4, wxBITMAP_TYPE_PNG); + imgActIcon4 = new wxBitmap (icons_act4_png, -1); + wxIcon wxIAct4icon; + wxIAct4icon.CopyFromBitmap(*imgActIcon4); + + // Online/Offline icons. + + wxMemoryInputStream onlinestream(icons_online_png, sizeof(icons_online_png)); + wxMemoryInputStream offlinestream(icons_offline_png, sizeof(icons_offline_png)); + + wxImage icons_online_png(onlinestream, wxBITMAP_TYPE_PNG); + imgOnline = new wxBitmap(icons_online_png, -1); + + wxImage icons_offline_png(offlinestream, wxBITMAP_TYPE_PNG); + imgOffline = new wxBitmap(icons_offline_png, -1); + + // Setup the account view. + + AccCtrl->SetPopupControl(treAccounts); + AccCtrl->SetPopupMaxHeight(175); + AccCtrl->SetPopupMinWidth(250); + treAccounts->AssignImageList(AccImgList); + //bmpIcon->Hide(); + wxRect AccTextCtrlSize = AccCtrl->GetTextRect(); + + /*wxStaticBitmap* BeepBoop = new wxStaticBitmap(AccCtrl, wxID_ANY, wxNullBitmap, wxPoint(AccTextCtrlSize.GetX() + 3, AccTextCtrlSize.GetY() + 2), wxDefaultSize, 0); + + icons_accgroup_png.SetMask(new wxMask(icons_accgroup_png, wxSystemSettings::GetColour(wxSYS_COLOUR_BACKGROUND))); + + BeepBoop->SetBackgroundColour(AccCtrl->GetBackgroundColour()); + BeepBoop->SetBitmap(icons_accgroup_png);*/ + + //szrContactList->Insert(0, XABV2, 1, wxEXPAND | wxALL, 0); + + /*AccControl->UseAltPopupWindow(); + AccControl->SetPopupControl(treAccounts); + AccControl->SetPopupMaxHeight(175); + + treAccounts->AssignImageList(AccImgList); + szrContactList->Insert(0, AccControl, 1, wxEXPAND|wxALL, 0); + szrAccList->Add(AccIcon, 0, wxLEFT|wxTOP|wxEXPAND, 3); + + */ + + //szrContactList->Layout(); + //szrContactList->RecalcSizes(); + + wxListItem ColumnData; + ColumnData.SetId(0); + ColumnData.SetText(wxT("Name0")); + ColumnData.SetWidth(320); + lstContacts->InsertColumn(0, ColumnData); + + //Connect(wxID_ANY, ContactConflictCmdEnv, + // ContactConflictEventHandler(frmMain::ConflictResolution), NULL, this); + + //Connect(wxID_ANY, MyFooCommandEvent, + // MyFooEventHandler(frmMain::DoSomething), NULL, this); + + //Bind(ContactConflictCmdEnv, ContactConflictEventHandler(frmMain::ConflictResolution), this, wxID_ANY); + + treAccounts->Connect(wxEVT_LEFT_DCLICK, wxTreeEventHandler(frmMain::LoadContactList), NULL, this); + treAccounts->Connect(wxEVT_TREE_SEL_CHANGED, wxTreeEventHandler(frmMain::LoadContactList), NULL, this); + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + int stbBottomData [4] = { -1, 8, 8, 8 }; + +#else + + int stbBottomData [4] = { -1, 20, 20, 20 }; + +#endif + + stbBottom->SetFieldsCount(4, stbBottomData); + stbBottom->SetMinHeight(16); + + wxRect rectOnline; + wxRect rectSSL; + wxRect rectActivity; + stbBottom->GetFieldRect(1, rectOnline); + stbBottom->GetFieldRect(2, rectSSL); + stbBottom->GetFieldRect(3, rectActivity); + + SSLToolTip = new wxToolTip(wxT("")); + + imgConnStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectOnline.GetX()),(rectOnline.GetY())), wxDefaultSize, 0 ); + imgConnStatus->SetBitmap(*imgOnline); + imgConnStatus->Connect( wxEVT_LEFT_DCLICK, wxCommandEventHandler( frmMain::ToggleConnectionStatus ), NULL, this ); + + imgSSLStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectSSL.GetX()),(rectSSL.GetY())), wxDefaultSize, 0 ); + imgSSLStatus->SetBitmap(*imgNoSSL); + imgSSLStatus->SetToolTip(SSLToolTip); + imgSSLStatus->Connect( wxEVT_LEFT_DCLICK, wxCommandEventHandler( frmMain::ShowSSLCertificates ), NULL, this ); + + imgActivityStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectActivity.GetX()),(rectActivity.GetY())), wxDefaultSize, 0); + imgActivityStatus->SetBitmap(*imgActIconSleep); + imgActivityStatus->Connect( wxEVT_LEFT_DCLICK, wxCommandEventHandler( frmMain::ShowActivityWindow ), NULL, this ); + + // Setup the window menu. + + // By default should be: + + // Contact windows: + // (none) + // (horizontal line) + // Contact editor windows: + // (none) + // (horizontal line) + // Search windows: + // (none) + + mnuContactWindows = new wxMenuItem( mnuManage, wxID_ANY, wxString( _("Contact windows:") ), wxEmptyString, wxITEM_NORMAL ); + mnuWindow->Append( mnuContactWindows ); + + mnuWindow->AppendSeparator(); + + mnuContactEditorWindows = new wxMenuItem( mnuManage, wxID_ANY, wxString( _("Contact editor windows:") ), wxEmptyString, wxITEM_NORMAL ); + mnuWindow->Append( mnuContactEditorWindows ); + + mnuWindow->AppendSeparator(); + + mnuSearchWindows = new wxMenuItem( mnuManage, wxID_ANY, wxString( wxT("Search windows:") ), wxEmptyString, wxITEM_NORMAL ); + mnuWindow->Append( mnuSearchWindows ); + +#if defined(__WIN32__) + + wxFont fontstyle; + fontstyle.Bold(); + + mnuContactWindows->SetFont(fontstyle); + mnuContactEditorWindows->SetFont(fontstyle); + mnuSearchWindows->SetFont(fontstyle); + +#else + + mnuContactWindows->Enable(FALSE); + mnuContactEditorWindows->Enable(FALSE); + mnuSearchWindows->Enable(FALSE); + +#endif + + // Hide unimplemented functions. + + mnuMain->Remove(3); + +} + +void frmMain::QuitApp( wxCommandEvent& event ) +{ +//------------------------------------------------------------------- +// frmMain::QuitApp: Quits the application by simply closing this +// window which causes the exit as frmMain is the main window. +// +// wxCommandEvent Accepts a referenced event command. +//------------------------------------------------------------------- + + //Go through the windows and close each one (be it search + //or contact editor). Abort if user wants to cancel. + + // Close the contact editor windows. + + // Close the contact windows. + + // Close the search windows. + + // Write out the ETag databases. + + // Save Preferences: Save the window position if that option is enabled. + + wxString SetFilename = GetUserPrefDir(); + +#if defined(__HAIKU__) + + + +#elif defined(__WIN32__) + + SetFilename.Append(wxT("settings")); + +#else + + // *nix OSes + + SetFilename.Append(wxT("settings")); + +#endif + + wxFileConfig *cfgfile = new wxFileConfig("", "", SetFilename); + + bool SaveWindowPos = FALSE; + wxString SaveWindowInc; + cfgfile->Read(wxT("SaveWindowPosition"), &SaveWindowInc); + + if (SaveWindowInc == wxT("true")){ + + SaveWindowPos = TRUE; + + } + + if (SaveWindowPos == TRUE){ + + wxRect frmMainPos = this->GetRect(); + + cfgfile->Write(wxT("WindowPositionX"), frmMainPos.GetX()); + cfgfile->Write(wxT("WindowPositionY"), frmMainPos.GetY()); + cfgfile->Write(wxT("WindowPositionHeight"), frmMainPos.GetHeight()); + cfgfile->Write(wxT("WindowPositionWidth"), frmMainPos.GetWidth()); + + + } + + delete cfgfile; + cfgfile = NULL; + + //Everything closed... exit. + + std::exit(0); + +} + +void frmMain::QuitApp() +{ +//------------------------------------------------------------------- +// frmMain::QuitApp: Quits the application by simply closing this +// window which causes the exit as frmMain is the main window. +// +// wxCommandEvent Accepts a referenced event command. +//------------------------------------------------------------------- + + Close(this); +} + +void frmMain::ShowActivityWindow( wxCommandEvent& event ) +{ + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + frameActMgr->OpenWindow(); + frameActMgr->Show(); + +} + +void frmMain::ShowAboutWindow( wxCommandEvent& event ) +{ +//------------------------------------------------------------------- +// frmMain::ShowAboutWindow: Shows the About window as a modal +// dialog and then cleans up when finished. +// +// wxCommandEvent Accepts a referenced event command. +//------------------------------------------------------------------- + + frmAbout *frameAbout = new frmAbout ( this ); + frameAbout->SetupAboutWindow(); + frameAbout->ShowModal(); + delete frameAbout; + frameAbout = NULL; + +} + +void frmMain::OpenPreferences( wxCommandEvent& event) +{ +//------------------------------------------------------------------- +// frmMain::ShowAboutWindow: Opens the Preferences window as a modal +// dialog and then cleans up when finished. +// +// wxCommandEvent Accepts a referenced event command. +//------------------------------------------------------------------- + + ReloadAccounts = FALSE; + + frmPreferences *framePreferences = new frmPreferences ( this ); + framePreferences->SetupPointers(&ReloadAccounts); + framePreferences->ShowModal(); + delete framePreferences; + framePreferences = NULL; + + if (ReloadAccounts == TRUE){ + + // Reload the accounts as a change has been made within + // the application. + + this->LoadPreferences(); + + } + +} + +void frmMain::OpenNewABDialog( wxCommandEvent& event) +{ +//------------------------------------------------------------------- +// frmMain::ShowAboutWindow: Opens the Preferences window as a modal +// dialog and then cleans up when finished. +// +// wxCommandEvent Accepts a referenced event command. +//------------------------------------------------------------------- + + ReloadAccounts = FALSE; + + frmNewAccount *frameNewAccount = new frmNewAccount ( this ); + frameNewAccount->SetupPointers(&ReloadAccounts); + frameNewAccount->ShowModal(); + delete frameNewAccount; + frameNewAccount = NULL; + + if (ReloadAccounts == TRUE){ + + // Reload the accounts as a change has been made within + // the application. + + this->LoadPreferences(); + + } + +} + +void frmMain::LoadContactList( wxTreeEvent& event ) +{ + + // Clear all existing variables. + + lstContacts->DeleteAllItems(); + + treAccounts->SetAccount(); + + wxTreeItemIdValue cookie; + wxTreeItemId next = treAccounts->GetRootItem(); + wxString AccountName; + wxString AccountDir, AccountType, AccountDirFinal, AccountTypeFinal; + wxString AccountDirCmb; + long selectedaccount = 0; + + wxTreeItemId selectedChild = treAccounts->GetSelection(); + wxTreeItemId nextChild; + + wxTreeItemId ActiveItemId = treAccounts->GetFocusedItem(); + int ActiveItemIcon = treAccounts->GetItemImage(ActiveItemId, wxTreeItemIcon_Normal); + + int SCImg = treAccounts->GetItemImage(selectedChild); + int AccountIndex = 0; + + bmpIcon->SetIcon(AccImgList->GetIcon(SCImg)); + + for (int i = 0; i < prefaccounts.GetCount(); i++){ + + if (ActiveItemIcon == 2){ + + std::multimap::iterator AGTiter = AccountGroupTreeId.find(ActiveItemId); + std::multimap::iterator AGFiter = AccountGroupFilename.find(AGTiter->second); + std::multimap::iterator AGLiter = AccountGroupList.find(AGTiter->second); + int ActiveAccountG = AGLiter->second; + + if (i == ActiveAccountG){ + + AccountDir.Append(prefaccounts.GetAccountDirectory(i)); + AccountType.Append(prefaccounts.GetAccountType(i)); + + AccountDir.Trim(); + AccountType.Trim(); + + if (AccountType == wxT("CardDAV")){ + AccountTypeFinal.Append(wxT("carddav")); + } + else if (AccountType == wxT("Local")){ + imgSSLStatus->SetBitmap(*imgOffline); + SSLToolTip->SetTip(wxT("SSL status is not applicable for this account")); + AccountTypeFinal.Append(wxT("local")); + } + + AccountIndex = i; + break; + + } + + } + + if (!nextChild){ + nextChild = treAccounts->GetFirstChild(next, cookie); + } + else { + nextChild = treAccounts->GetNextSibling(nextChild); + } + + AccountName = treAccounts->GetItemText(nextChild); + + if (nextChild == selectedChild){ + AccountDir.Append(prefaccounts.GetAccountDirectory(i)); + AccountType.Append(prefaccounts.GetAccountType(i)); + + AccountDir.Trim(); + AccountType.Trim(); + + if (AccountType == wxT("CardDAV")){ + AccountTypeFinal.Append(wxT("carddav")); + } + else if (AccountType == wxT("Local")){ + SSLToolTip->SetTip(wxT("SSL status is not applicable for this account")); + AccountTypeFinal.Append(wxT("local")); + } + + AccountIndex = i; + + } + + } + + if (selectedaccount >= prefaccounts.GetCount()){ + + // The account selected isn't there so return. + + RevealWait = FALSE; + + return; + + } + + // Open the directory and get the list of .vcf files + // in that directory. + + ActiveAccount = AccountDir + wxT(".") + AccountTypeFinal; + ActiveAccountType = AccountType; + + SetupSSLStatus(AccountIndex); + + AccountDirFinal.Clear(); + AccountDirFinal = GetAccountDir(AccountDir + wxT(".") + AccountTypeFinal, FALSE); + + ContactsFileIndex.Clear(); + + //wxString vcardfilenamewxs; + wxString vCardFilename; + wxString vCardFilenameFull; + wxString vCardDataString; + wxStringTokenizer vcardfileline; + wxString lwxs; + wxString setname, setvalue; + //vCardNames = new std::map>; + std::multimap> vCardNamesAsc; + std::multimap> vCardNamesDsc; + long ContactIndex = 1; + long ContactSeekPoint = 0; + + wxDir vcardaccdir(AccountDirFinal); + + // Get the wxTreeItemId and image icon and compare it to the list. + + if (ActiveItemIcon == AccountGrpID){ + + // It's a group so load the file containing the group and + // get the members of the group. + + vCard Group; + wxString UIDCode; + + std::multimap::iterator AGTiter = AccountGroupTreeId.find(ActiveItemId); + std::multimap::iterator AGFiter = AccountGroupFilename.find(AGTiter->second); + //std::multimap::iterator AGFiter = AccountGroupTreeId.find(ActiveItemId); + + Group.LoadFile(AGFiter->second); + + ArrayvCardOutData vCardMember = Group.GetByPartial(wxT("MEMBER")); + + for (int i = 0; i < vCardMember.PropCount; i++){ + + vCardMember.PropValues[i].Trim(); + if (vCardMember.PropValues[i].Left(9) == wxT("urn:uuid:")){ + + wxString NewPropValue; + NewPropValue = vCardMember.PropValues[i].Mid(9, wxString::npos); + vCardMember.PropValues[i] = NewPropValue; + + } + + + } + + bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES); + while(ProcFiles){ + + if (vCardFilename.Right(4) == wxT(".vcf") || + vCardFilename.Right(4) == wxT(".VCF") || + vCardFilename.Right(5) == wxT(".vcard") || + vCardFilename.Right(5) == wxT(".VCARD")){ + + vCard Person; + bool FoundMember = FALSE; + + vCardFilenameFull.Append(AccountDirFinal); + vCardFilenameFull.Append(wxT("/")); + vCardFilenameFull.Append(vCardFilename); + + Person.LoadFile(vCardFilenameFull); + + UIDCode = Person.Get(wxT("UID")); + + for (int i = 0; i < vCardMember.PropCount; i++){ + + if (vCardMember.PropValues[i] == UIDCode){ + + FoundMember = TRUE; + + } + + } + + if (FoundMember == FALSE){ + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + vCardDataString.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + continue; + + } + + if (Person.MeetBaseSpecification()){ + + if (SortMode == 1){ + + // Split the name into sections. + + vCardDataString = Person.Get(wxT("N")); + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname; + + } else if (SortMode == 2){ + + // Split the name into sections. + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename; + + } else if (SortMode == 3){ + + // Check and make sure that the top most nickname is used. + + vCardDataString = Person.Get(wxT("NICKNAME")); + + if (vCardDataString.IsEmpty()){ + + vCardDataString = wxT("(no nickname)"); + + } + + } else if (SortMode == 4){ + + vCardDataString = Person.Get(wxT("FN")); + + } + + if (AscendingMode == TRUE){ + vCardNamesAsc.insert(std::make_pair(vCardDataString, vCardFilenameFull)); + } else { + vCardNamesDsc.insert(std::make_pair(vCardDataString, vCardFilenameFull)); + } + + } else { + + } + + } + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + vCardDataString.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + } + + } else { + + bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES); + while(ProcFiles){ + + if (vCardFilename.Right(4) == wxT(".vcf") || + vCardFilename.Right(4) == wxT(".VCF") || + vCardFilename.Right(5) == wxT(".vcard") || + vCardFilename.Right(5) == wxT(".VCARD")){ + + vCard Person; + + vCardFilenameFull.Append(AccountDirFinal); + vCardFilenameFull.Append(wxT("/")); + vCardFilenameFull.Append(vCardFilename); + + Person.LoadFile(vCardFilenameFull); + + if (Person.MeetBaseSpecification()){ + + if (SortMode == 1){ + + // Split the name into sections. + + vCardDataString = Person.Get(wxT("N")); + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname; + + } else if (SortMode == 2){ + + // Split the name into sections. + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename; + + } else if (SortMode == 3){ + + // Check and make sure that the top most nickname is used. + + vCardDataString = Person.Get(wxT("NICKNAME")); + + if (vCardDataString.IsEmpty()){ + + vCardDataString = wxT("(no nickname)"); + + } + + } else if (SortMode == 4){ + + vCardDataString = Person.Get(wxT("FN")); + + } + + if (AscendingMode == TRUE){ + vCardNamesAsc.insert(std::make_pair(vCardDataString, vCardFilenameFull)); + } else { + vCardNamesDsc.insert(std::make_pair(vCardDataString, vCardFilenameFull)); + } + + } else { + + } + + } + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + vCardDataString.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + } + + } + + // Sort the data. + + // Insert the data into the control. + + if (AscendingMode == TRUE){ + for (std::map::iterator iter = vCardNamesAsc.begin(); + iter != vCardNamesAsc.end(); ++iter){ + + wxListItem ContactInfo; + + ContactInfo.SetId(0); + ContactInfo.SetText(_("Mooo")); + ContactInfo.SetData(ContactSeekPoint); + ContactIndex = lstContacts->InsertItem(ContactInfo); + + lstContacts->SetItem(ContactIndex, 0, iter->first); + ContactsFileIndex.Insert(iter->second, ContactSeekPoint); + ContactSeekPoint++; + + } + + } else { + + for (std::map::iterator iter = vCardNamesDsc.begin(); + iter != vCardNamesDsc.end(); ++iter){ + + wxListItem ContactInfo; + + ContactInfo.SetId(0); + ContactInfo.SetText(_("Mooo")); + ContactInfo.SetData(ContactSeekPoint); + ContactIndex = lstContacts->InsertItem(ContactInfo); + + lstContacts->SetItem(ContactIndex, 0, iter->first); + ContactsFileIndex.Insert(iter->second, ContactSeekPoint); + ContactSeekPoint++; + + } + + } + +} + +void frmMain::ShowContactInfo( wxListEvent& event ) +{ + + long intSelected = -1; + int intSelectedData = 0; + long ContactSeekNum = -1; + +// intSelected = lstContacts->GetSelection(); + + // Check if several contacts have been selected. + + int ContactTotal = 0; + + for (;;){ + + intSelected = lstContacts->GetNextItem(intSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (intSelected == -1){ + + break; + + } + + ContactTotal++; + + } + + if (ContactTotal == 0){ + htmContactData->SetPage(wxT("")); + return; + } + + if (ContactTotal > 1){ + + htmContactData->SetPage(wxString::Format(wxT("%i contacts selected."), ContactTotal)); + ActiveFilename.Clear(); + return; + + } + + intSelected = lstContacts->GetNextItem(intSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + ContactSeekNum = lstContacts->GetItemData(intSelected); + + wxFFile ContactFile; + wxString wxSContactString; + wxString ContactLine; + vCard Person; + + int ContactLineLen; + bool ExtraLineSeek = FALSE; + int QuoteBreakPoint; + + bool PropertyFind = FALSE; + bool QuoteMode = FALSE; + + wxString wxSPropertyNextLine; + wxString wxSProperty; + wxString wxSPropertySeg1; + wxString wxSPropertySeg2; + + // Check if we are using wxWidgets version 2.8 or less and + // execute the required command accordingly. + +#if wxABI_VERSION < 20900 + ContactFile.Open(ContactsFileIndex[ContactSeekNum].c_str(), wxT("r")); +#else + ContactFile.Open(ContactsFileIndex[ContactSeekNum], wxT("r")); +#endif + + if (ContactFile.IsOpened() == FALSE){ + + return; + + } + + ContactFile.ReadAll(&wxSContactString, wxConvAuto()); + + // Split the lines. + + std::map ContactFileLines; + std::map::iterator striter; + + wxStringTokenizer wSTContactFileLines(wxSContactString, wxT("\r\n")); + + int ContactLineSeek = 0; + + while (wSTContactFileLines.HasMoreTokens() == TRUE){ + + ContactLine = wSTContactFileLines.GetNextToken(); + ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLine)); + ContactLineSeek++; + + } + + if (ContactSeekNum < 0){ + return; + } + + for (std::map::iterator iter = ContactFileLines.begin(); + iter != ContactFileLines.end(); ++iter){ + + // Find the colon which splits the start bit from the data part. + + ContactLine = iter->second; + + while (ExtraLineSeek == TRUE){ + + // Check if there is extra data on the next line + // (indicated by space or tab at the start) and add data. + + iter++; + + if (iter == ContactFileLines.end()){ + + iter--; + break; + + } + + wxSPropertyNextLine = iter->second; + + + if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ + + wxSPropertyNextLine.Remove(0, 1); + //wxSPropertyNextLine.Trim(FALSE); + //ContactLine.Trim(); + ContactLine.Append(wxSPropertyNextLine); + + } else { + + iter--; + ExtraLineSeek = FALSE; + + } + + } + + ContactLineLen = ContactLine.Len(); + + // Make sure we are not in quotation mode. + // Make sure colon does not have \ or \\ before it. + + for (int i = 0; i <= ContactLineLen; i++){ + + if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){ + + PropertyFind = FALSE; + + } else if (PropertyFind == TRUE){ + + wxSProperty.Append(ContactLine.Mid(i, 1)); + + } + + if (ContactLine.Mid(i, 1) == wxT("\"")){ + + if (QuoteMode == TRUE){ + + QuoteMode = FALSE; + + } else { + + QuoteMode = TRUE; + + } + + } + + if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){ + + QuoteBreakPoint = i; + break; + + } + + } + + // Split that line at the point into two variables (ignore the colon). + + wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint); + wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1)); + + // Insert both into the vCard data file. + + Person.AddRaw(wxSPropertySeg1, wxSPropertySeg2); + + QuoteMode = FALSE; + PropertyFind = TRUE; + ExtraLineSeek = TRUE; + ContactLineLen = 0; + QuoteBreakPoint = 0; + ContactLine.Clear(); + wxSProperty.Clear(); + + } + + OldSessionID = SessionID; + SessionID = wxString::Format(wxT("%i"), rand() % 32768); + LoadContactData(&Person, htmContactData, SessionID, OldSessionID, &MemoryFileList); + ActiveFilename = ContactsFileIndex[ContactSeekNum]; + +} + +void frmMain::ShowContactEditorNew( wxCommandEvent& event ) +{ + + // Check if there is an account selected and if not + // return immediately. + + if (ActiveAccount.IsEmpty()){ + + return; + + } + + // Add Pointer to SetupPointers for the ETagDB. + + wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png)); + wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG); + wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1); + wxIcon contacticon; + contacticon.CopyFromBitmap(contacticonbmp); + + frmContactEditor *ContactEditor = new frmContactEditor( this ); + + WindowMenuItemID++; + + ContactEditor->SetUID(WindowMenuItemID); + + WindowData *WData = new WindowData; + + WData->DataType = 1; + WData->WindowPointer = (void*)ContactEditor; + WData->WindowID = WindowMenuItemID; + + wxCommandEvent addevent(WINDOW_ADD); + addevent.SetClientData(WData); + wxPostEvent(this, addevent); + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + ContactEditor->SetupHeaders(); + ContactEditor->SetupContact(ActiveAccount); + ContactEditor->SetIcon(contacticon); + ContactEditor->SetupPointers(frameActMgr, &ETagProcTimer, this); + ContactEditor->Show(true); + +} + +void frmMain::ShowContactEditorEdit( wxCommandEvent& event ) +{ + + // Check if there is an account selected and if not + // return immediately. + + int DataCheck = event.GetInt(); + + if (ActiveAccount.IsEmpty() && DataCheck == 0){ + + return; + + } + + wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png)); + wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG); + wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1); + wxIcon contacticon; + contacticon.CopyFromBitmap(contacticonbmp); + + // Check if a contact has been selected. + + long intSelected = -1; + int intSelectedData = 0; + long intContactSeekNum = -1; + +// intSelected = lstContacts->GetSelection(); + + intSelected = lstContacts->GetNextItem(intSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (intSelected == -1){ + return; + } + + intContactSeekNum = lstContacts->GetItemData(intSelected); + + // Get the filename of the selected contact. + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + frmContactEditor *ContactEditor = new frmContactEditor( this ); + + WindowMenuItemID++; + + ContactEditor->SetUID(WindowMenuItemID); + + WindowData *WData = new WindowData; + + WData->DataType = 1; + WData->WindowPointer = (void*)ContactEditor; + WData->WindowID = WindowMenuItemID; + + wxCommandEvent addevent(WINDOW_ADD); + addevent.SetClientData(WData); + wxPostEvent(this, addevent); + + ContactEditor->SetupPointers(frameActMgr, &ETagProcTimer, this); + ContactEditor->SetupHeaders(); + + // Check if pointer is NULL (not from the search forms) or not. + + if (DataCheck == 0){ + + ContactEditor->LoadContact(ContactsFileIndex[intContactSeekNum]); + ContactEditor->SetupContact(ActiveAccount); + + } else { + + UCNotif *uc = (UCNotif*)event.GetClientData(); + + if (!uc){ + + ContactEditor->SetupContact(ActiveAccount); + ContactEditor->LoadContact(ContactsFileIndex[intContactSeekNum]); + + } else { + + ContactEditor->SetupContact(uc->ContactAccount); + ContactEditor->LoadContact(uc->ContactFilename); + + delete uc; + uc = NULL; + + + } + + } + + ContactEditor->SetIcon(contacticon); + ContactEditor->Show(true); + +} + +void frmMain::RefreshAddressBook( wxCommandEvent& event ){ + + // TODO: Check Account Type. + + if (!ActiveAccount.IsEmpty()){ + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + frameActMgr->AddTask(3, wxT(""), ActiveAccount, + wxT(""), wxT(""), wxT(""), wxT("")); + + } + +} + +void frmMain::OpenContactInfo( wxListEvent& event ) +{ + + wxStringTokenizer vcardfileline; + std::string l; + wxString lwxs; + wxString setname, setvalue; + vCard Person; + wxString nextchar; + + long intSelected = -1; + int intSelectedData = 0; + long intContactSeekNum = -1; + + intSelected = lstContacts->GetNextItem(intSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + intContactSeekNum = lstContacts->GetItemData(intSelected); + + if (intContactSeekNum == -1){ + return; + } + + Person.LoadFile(ContactsFileIndex[intContactSeekNum]); + + wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png)); + wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG); + wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1); + wxIcon contacticon; + contacticon.CopyFromBitmap(contacticonbmp); + + frmContact *Contact = new frmContact( this ); + + // Add to window list. + + WindowMenuItemID++; + + Contact->SetUID(WindowMenuItemID); + + WindowData *WData = new WindowData; + + WData->DataType = 0; + WData->WindowPointer = (void*)Contact; + WData->WindowID = WindowMenuItemID; + + wxCommandEvent addevent(WINDOW_ADD); + addevent.SetClientData(WData); + wxPostEvent(this, addevent); + + Contact->SetupPointers(&MemoryFileList); + Contact->SetupContactData(&Person); + + Contact->SetIcon(contacticon); + Contact->Show(true); + +} + +void frmMain::OpenContactInfo( wxCommandEvent& event ) +{ + + UCNotif *uc = (UCNotif*)event.GetClientData(); + + wxStringTokenizer vcardfileline; + std::string l; + wxString lwxs; + wxString setname, setvalue; + vCard Person; + wxString nextchar; + //std::fstream vcardfile; + + long intSelected = -1; + int intSelectedData = 0; + long intContactSeekNum = -1; + + Person.LoadFile(uc->ContactFilename); + + wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png)); + wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG); + wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1); + wxIcon contacticon; + contacticon.CopyFromBitmap(contacticonbmp); + + frmContact *Contact = new frmContact( this ); + + // Add to window list. + + WindowMenuItemID++; + + Contact->SetUID(WindowMenuItemID); + + WindowData *WData = new WindowData; + + WData->DataType = 0; + WData->WindowPointer = (void*)Contact; + WData->WindowID = WindowMenuItemID; + + wxCommandEvent addevent(WINDOW_ADD); + addevent.SetClientData(WData); + wxPostEvent(this, addevent); + + Contact->SetupPointers(&MemoryFileList); + Contact->SetupContactData(&Person); + + Contact->SetIcon(contacticon); + Contact->Show(true); + +} + + +void frmMain::LoadPreferences( wxActivateEvent& event) +{ + this->LoadPreferences(); +} + +void frmMain::LoadPreferences(){ + + // Load the preferences. + + wxString preffilename = GetUserPrefDir(); + + XABPreferences preferences(preffilename); + + // Setup the main window position (if needed). + + bool SaveWindowPos = preferences.GetBoolData(wxT("SaveWindowPosition")); + bool HideLocalABs = preferences.GetBoolData(wxT("HideLocalAddressBooks")); + + if (SaveWindowPos == TRUE){ + + this->SetSize(preferences.GetMainWindowData()); + + } + + treAccounts->DeleteAllItems(); + + wxTreeItemId RootNode = treAccounts->AddRoot(wxT("Root Item")); + + // Stop all account timers and remove the accounts. + + for (std::map::iterator iter = AccountSyncTimers.begin(); + iter != AccountSyncTimers.end(); iter++){ + + wxAccountSyncTimer *AccTmrPtr = iter->second; + AccTmrPtr->Stop(); + + delete AccTmrPtr; + AccTmrPtr = NULL; + + } + + AccountSyncTimers.clear(); + + /* + for (int i = (preferences.accounts.GetCount() - 1); i > 0; --i){ + treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i)); + } + */ + + wxString AccDir; + wxString AccDirFull; + wxString AccDirFullSfx; + wxString AccName; + wxString AccDirFinal; + AccountAccDirList.clear(); + AccountGroupList.clear(); + AccountGroupFilename.clear(); + AccountGroupTreeId.clear(); + wxTreeItemId AccountTreeId; + wxTreeItemId GroupTreeId; + int intGroupID = 0; + + for (int i = 0; i < preferences.accounts.GetCount(); i++){ + + if ((preferences.accounts.GetAccountType(i) == wxT("Local") || + preferences.accounts.GetAccountType(i) == wxT("local")) && HideLocalABs == TRUE){ + + continue; + + } + + AccDir = preferences.accounts.GetAccountDirectory(i); + AccDirFull = preferences.accounts.GetAccountDirectory(i); + AccDirFull.Trim(); + AccDirFull.Append(wxT(".")); + AccDirFullSfx.Append(preferences.accounts.GetAccountType(i)); + AccDirFullSfx.LowerCase(); + AccDirFullSfx.Trim(); + AccDirFull.Append(AccDirFullSfx); + AccName = preferences.accounts.GetAccountName(i); + AccName.Trim(); + AccountAccDirList.insert(std::make_pair(i, AccDirFull)); + + if (preferences.accounts.GetAccountType(i) == wxT("CardDAV") || + preferences.accounts.GetAccountType(i) == wxT("carddav")){ + + // Add a new timer using the existing account details. + + wxAccountSyncTimer *ActTmrPtr = new wxAccountSyncTimer; + + ActTmrPtr->SetupData(AccDirFull, AccName); + ActTmrPtr->SetupPointers(this, ActMgrPtr, ETagProcTimer.GetPointer(AccDirFull)); + ActTmrPtr->Start(preferences.accounts.GetAccountRefresh(i) * 1000); + ActTmrPtr->SetOwner(this); + ActTmrPtr->Notify(); + + // Add the timer to the list of timers. + + AccountSyncTimers.insert(std::make_pair(AccDirFull, ActTmrPtr)); + + AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountNetID, -1); + + } else { + + AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountID, -1); + + } + + // Go through the account directory and find contact files with + // 'KIND:group' set and add them to the list of groups for the account. + + AccDirFinal = GetAccountDir(AccDirFull, FALSE); + + wxDir vcardaccdir(AccDirFinal); + + wxString vCardFilename; + wxString vCardDataString; + wxString vCardFilenameFull; + //bool ProcFiles = FALSE; + + bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES); + while(ProcFiles){ + + if (vCardFilename.Right(4) == wxT(".vcf") || + vCardFilename.Right(4) == wxT(".VCF") || + vCardFilename.Right(5) == wxT(".vcard") || + vCardFilename.Right(5) == wxT(".VCARD")){ + + vCard Person; + + vCardFilenameFull.Append(AccDirFinal); + vCardFilenameFull.Append(wxT("/")); + vCardFilenameFull.Append(vCardFilename); + + Person.LoadFile(vCardFilenameFull); + + if (Person.MeetBaseSpecification()){ + + vCardDataString = Person.Get(wxT("KIND")); + + if (vCardDataString == wxT("group")){ + + // The vCard kind is a group. Add to the account's group list. + + GroupTreeId = treAccounts->AppendItem(AccountTreeId, Person.Get(wxT("FN")), AccountGrpID, -1); + treAccounts->SetItemHasChildren(AccountTreeId, TRUE); + AccountGroupList.insert(std::make_pair(intGroupID, i)); + AccountGroupFilename.insert(std::make_pair(intGroupID, vCardFilenameFull)); + AccountGroupTreeId.insert(std::make_pair(GroupTreeId, intGroupID)); + + } + + /*if (SortMode == 1){ + + // Split the name into sections. + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname; + + } else if (SortMode == 2){ + + // Split the name into sections. + + vCardName NameData = Person.GetName(); + + vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename; + + } else if (SortMode == 3){ + + // Check and make sure that the top most nickname is used. + + vCardDataString = Person.Get(wxT("NICKNAME")); + + if (vCardDataString.IsEmpty()){ + + vCardDataString = wxT("(no nickname)"); + + } + + } else if (SortMode == 4){ + + vCardDataString = Person.Get(wxT("FN")); + + } + + if (AscendingMode == TRUE){ + vCardNamesAsc.insert(std::make_pair(vCardDataString, vCardFilenameFull)); + } else { + vCardNamesDsc.insert(std::make_pair(vCardDataString, vCardFilenameFull)); + }*/ + + intGroupID++; + + } else { + + } + + } + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + vCardDataString.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + + } + + // Clearup for next account. + + AccDir.clear(); + AccDirFull.clear(); + AccDirFullSfx.clear(); + AccDirFinal.clear(); + AccName.clear(); + + } + + // Load the account settings as they are needed for connecting + // to the servers. + + prefaccounts = preferences.accounts; + +} + +void frmMain::ConflictResolution(wxCommandEvent& event){ + + frmConflictResolution *frameCR = new frmConflictResolution ( this ); + vCardConflictObj *vCardConfObj = (vCardConflictObj*)event.GetClientData(); + vCard *ClientDataPtr = vCardConfObj->vCardLocalData; + vCard *ServerDataPtr = vCardConfObj->vCardServerData; + //vCard *ServerDataPtr = vCardConfObj->vCardServerData; + //wxString Moo = ClientDataPtr->WriteString(); + //vCard *ServerDataPtr = vCardConfObj->vCardServerData; + frameCR->LoadData(ClientDataPtr, ServerDataPtr, &MemoryFileList); + //frameCR->LoadData(vCardConfObj->vCardLocalData, vCardConfObj->vCardServerData, &MemoryFileList); + frameCR->ShowModal(); + + int FinalConflictResult = frameCR->GetResult(); + + wxCommandEvent event2(ACTMGR_RESUMEPROC); + event2.SetClientData(vCardConfObj->QRNotifData); + event2.SetInt(FinalConflictResult); + + delete frameCR; + frameCR = NULL; + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + wxPostEvent(frameActMgr, event2); + +} + +void frmMain::UpdateContactList(wxCommandEvent& event){ + + UCNotif *ucd = (UCNotif*)event.GetClientData(); + + // Check if the active account is being displayed in the + // main window. If not, skip and delete the data. + + long longSelected = -1; + int intSelectedData = 0; + + if (ActiveAccount == ucd->ContactAccount){ + + // Look at the list of contacts and if it matches the + // filename then update the name. + + for (;;){ + + longSelected = lstContacts->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_DONTCARE); + + if (longSelected == -1){ + + break; + + } + + intSelectedData = lstContacts->GetItemData(longSelected); + + if (ucd->ContactFilename == ContactsFileIndex[intSelectedData]){ + + // Work out which sorting mode we are in. + + if (SortMode == 1){ + + // First Name, Last Name. + + lstContacts->SetItem(longSelected, 0, ucd->ContactNameArray.Forename + wxT(" ") + ucd->ContactNameArray.Surname); + + } else if (SortMode == 2){ + + // Last Name, First Name. + + lstContacts->SetItem(longSelected, 0, ucd->ContactNameArray.Surname + wxT(", ") + ucd->ContactNameArray.Forename); + + } else if (SortMode == 3){ + + // Nickname. + + lstContacts->SetItem(longSelected, 0, ucd->ContactNickname); + + } else if (SortMode == 4){ + + // Display As. + + lstContacts->SetItem(longSelected, 0, ucd->ContactName); + + } + + + } + + // If the filename is the one loaded into the + // browser control, then update this too. + + if (ActiveFilename == ContactsFileIndex[intSelectedData]){ + + wxListEvent nullevent; + ShowContactInfo(nullevent); + + } + + } + + } + + for (std::map::iterator WindowIter = WindowListPointers.begin(); + WindowIter != WindowListPointers.end(); WindowIter++){ + + if (WindowListType[WindowIter->first] != 0){ + + continue; + + } + + frmContact *frmContactPtr = static_cast(WindowIter->second); + + if (frmContactPtr->GetFilename() == ucd->ContactFilename){ + + vCard UpdatedPerson; + UpdatedPerson.LoadFile(ucd->ContactFilename); + frmContactPtr->SetupContactData(&UpdatedPerson); + + } + + } + + // Send message to search window controller subroutine and + // pass that notification onto the search windows. + + // Setup the new pointer to use the existing UCNotif without + // deleting it. + + UCNotif *ucd2 = ucd; + + wxCommandEvent sup(SE_UPDATECONTACTNOTIF); + sup.SetClientData(ucd2); + wxPostEvent(this, sup); + + // Clear up the unused pointer. + + ucd = NULL; + +} + +void frmMain::UpdateAccountList(wxCommandEvent& event){ + +} + +void frmMain::SetupPointers(void *ActMgrPtrInc){ + + ActMgrPtr = ActMgrPtrInc; + +} + +void frmMain::SetupForm(){ + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + frameActMgr->SetupPointers(&ETagProcTimer, this); + + // Setup the contact information icons for later. + + wxFileSystem::AddHandler(new wxMemoryFSHandler); + wxImage ciicon_png; + //wxBitmap ciicon; + + wxMemoryInputStream ciptostream(icons_cipto_png, sizeof(icons_cipto_png)); + ciicon_png.LoadFile(ciptostream, wxBITMAP_TYPE_PNG); + wxMemoryFSHandler::AddFile(wxT("cipto.png"), ciicon_png, wxBITMAP_TYPE_PNG); + + wxMemoryInputStream cilogstream(icons_cilog_png, sizeof(icons_cilog_png)); + ciicon_png.LoadFile(cilogstream, wxBITMAP_TYPE_PNG); + wxMemoryFSHandler::AddFile(wxT("cilog.png"), ciicon_png, wxBITMAP_TYPE_PNG); + + wxMemoryInputStream cisndstream(icons_cisnd_png, sizeof(icons_cisnd_png)); + ciicon_png.LoadFile(cisndstream, wxBITMAP_TYPE_PNG); + wxMemoryFSHandler::AddFile(wxT("cisnd.png"), ciicon_png, wxBITMAP_TYPE_PNG); + + wxMemoryInputStream cikeystream(icons_cikey_png, sizeof(icons_cikey_png)); + ciicon_png.LoadFile(cikeystream, wxBITMAP_TYPE_PNG); + wxMemoryFSHandler::AddFile(wxT("cikey.png"), ciicon_png, wxBITMAP_TYPE_PNG); + + wxMemoryInputStream civenstream(icons_civen_png, sizeof(icons_civen_png)); + ciicon_png.LoadFile(civenstream, wxBITMAP_TYPE_PNG); + wxMemoryFSHandler::AddFile(wxT("civen.png"), ciicon_png, wxBITMAP_TYPE_PNG); + + wxMemoryInputStream ciextstream(icons_ciext_png, sizeof(icons_ciext_png)); + ciicon_png.LoadFile(ciextstream, wxBITMAP_TYPE_PNG); + wxMemoryFSHandler::AddFile(wxT("ciext.png"), ciicon_png, wxBITMAP_TYPE_PNG); + + LoadPreferences(); + +} + +void frmMain::UpdateSearchContactLists(wxCommandEvent& event){ + + // Go through each of the search windows and + // send the required notification to update the + // contact information. + + // Get the event notification data. + + UCNotif *ucd = (UCNotif*)event.GetClientData(); + + // Process each search window giving the new details. + + for (std::map::iterator switer = SearchWindowList.begin(); + switer != SearchWindowList.end(); switer++){ + + // Duplicate the event notification data. + + UCNotif *ucd2 = new UCNotif; + + ucd2->ContactAccount = ucd->ContactAccount; + ucd2->ContactFilename = ucd->ContactFilename; + ucd2->ContactName = ucd->ContactName; + ucd2->ContactNickname = ucd->ContactNickname; + ucd2->ContactNameArray = ucd->ContactNameArray; + + // Pass the data to the search window for processing. + + frmSearch *frameSCH = static_cast(switer->first); + wxCommandEvent schupdate(SE_UPDATERESULT); + schupdate.SetClientData(ucd2); + wxPostEvent(frameSCH, schupdate); + + // Clear up the pointer prior to variable deletion. + + frameSCH = NULL; + + } + + delete ucd; + ucd = NULL; + +} + +void frmMain::OpenFindContactsWindow(wxCommandEvent& event){ + + WindowMenuItemID++; + + frmSearch *frameSCH = new frmSearch ( this ); + frameSCH->SetUID(WindowMenuItemID); + frameSCH->Show(true); + + WindowData *WData = new WindowData; + + WData->DataType = 2; + WData->WindowPointer = (void*)frameSCH; + WData->WindowID = WindowMenuItemID; + + wxCommandEvent addevent(WINDOW_ADD); + addevent.SetClientData(WData); + wxPostEvent(this, addevent); + + // Add pointer to the list of open search windows. + + SearchWindowList.insert(std::make_pair(frameSCH, wxT("Search"))); + + WData = NULL; + +} + +void frmMain::RemoveContactsWindowPointer(wxCommandEvent& event){ + + //frmSearch *frameSCH = static_cast(ActMgrPtr); + void *frameSCH = (void*)event.GetClientData(); + + SearchWindowList.erase(frameSCH); + + frameSCH = NULL; + +} + +void frmMain::RemoveContactEditorWindowPointer(wxCommandEvent& event){ + + void *frameSCH = (void*)event.GetClientData(); + + SearchWindowList.erase(frameSCH); + + frameSCH = NULL; + +} + +void frmMain::UpdateWindowList(wxCommandEvent& event){ + + // Update the Window List. + + // Delete the existing items in the window menu. + + // Get the list of contacts. + + // Insert a separator. + + // Get the list of search windows. + +} + +void frmMain::RevealContact(wxCommandEvent& event){ + + UCNotif *uc = (UCNotif*)event.GetClientData(); + + // Switch the account to the one passed. + + wxTreeItemIdValue cookie; + wxTreeItemId next = treAccounts->GetRootItem(); + wxTreeItemId nextChild; + + for (int i = 0; i < prefaccounts.GetCount(); i++){ + + if (!nextChild){ + nextChild = treAccounts->GetFirstChild(next, cookie); + } else { + nextChild = treAccounts->GetNextSibling(nextChild); + } + + //AccountName = treAccounts->GetItemText(nextChild); + + if (uc->ContactAccount == AccountAccDirList[i]){ + + //AccControl->(); + treAccounts->SelectItem(nextChild, TRUE); + AccCtrl->SetText(treAccounts->GetItemText(nextChild)); + + } + + } + + // Switch the contact to the one passed. + + long longSelected = -1; + int intSelectedData = 0; + + for (;;){ + + longSelected = lstContacts->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_DONTCARE); + + if (longSelected == -1){ + + break; + + } + + intSelectedData = lstContacts->GetItemData(longSelected); + + // Compare the filename with the one received. + // If they match then select it. + + if (ContactsFileIndex[intSelectedData] == uc->ContactFilename){ + + // Select. + + lstContacts->SetItemState(longSelected, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); + lstContacts->EnsureVisible(longSelected); + + break; + + } + + } + +} + +void frmMain::DeleteContact(wxCommandEvent& event){ + + // Check if a contact is selected. + + long intSelected = -1; + int intSelectedData = 0; + long intContactSeekNum = -1; + wxString wxSContactName; + + intSelected = lstContacts->GetNextItem(intSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (intSelected == -1){ + return; + } + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + + // Get the item data of the contact. + + intContactSeekNum = lstContacts->GetItemData(intSelected); + + // Get the name of the contact. + + wxSContactName = lstContacts->GetItemText(intSelected); + + // Display a message confirming if the contact should + // be deleted. + + int QuestionResponse; + + QuestionResponse = wxMessageBox(_("Are you sure you want to delete this contact?"), _("Delete contact"), wxYES_NO, this); + + if (QuestionResponse == wxNO){ + + // Exit the subroutine + + return; + + } + + // Delete the contact. + + if (!wxRemoveFile(ContactsFileIndex[intContactSeekNum])){ + + wxMessageBox(_("Unable to delete the contact."), _("Cannot delete contact"), wxOK, this); + return; + + } + + // Remove the contact from the list. + + lstContacts->DeleteItem(intSelected); + + // Update the search windows, removing the deleted + // contact. + + UCNotif *ucd = new UCNotif; + + ucd->ContactAccount = ActiveAccount; + ucd->ContactFilename = ContactsFileIndex[intContactSeekNum]; + + for (std::map::iterator switer = SearchWindowList.begin(); + switer != SearchWindowList.end(); switer++){ + + // Duplicate the event notification data. + + UCNotif *ucd2 = new UCNotif; + + ucd2->ContactAccount = ucd->ContactAccount; + ucd2->ContactFilename = ucd->ContactFilename; + + // Pass the data to the search window for processing. + + frmSearch *frameSCH = static_cast(switer->first); + wxCommandEvent schdelete(SE_DELETERESULT); + schdelete.SetClientData(ucd2); + wxPostEvent(frameSCH, schdelete); + + // Clear up the pointer prior to variable deletion. + + frameSCH = NULL; + ucd2 = NULL; + + } + + // Clear the wxHTMLWindow. + + wxString EmptyPage = wxT(""); + + htmContactData->SetPage(EmptyPage); + + wxStringTokenizer wSTFilename(ContactsFileIndex[intContactSeekNum], wxT("/")); + + wxString wxSplitFilename; + wxString wxSDataURL; + + while(wSTFilename.HasMoreTokens()){ + + wxSplitFilename = wSTFilename.GetNextToken(); + + } + + if (ActiveAccountType == wxT("CardDAV") || ActiveAccountType == wxT("carddav")){ + + // Update the ETagDB and mark it as deleted. + + ETagDB *ETagDBPtr = ETagProcTimer.GetPointer(ActiveAccount); + + ETagDBPtr->UpdateETag(wxSplitFilename, wxT("DELETED")); + + // Get the Data URL. + + wxTreeItemIdValue cookie; + wxTreeItemId next = treAccounts->GetRootItem(); + + wxTreeItemId selectedChild = treAccounts->GetSelection(); + wxTreeItemId nextChild; + + for (int i = 0; i < prefaccounts.GetCount(); i++){ + + if (!nextChild){ + nextChild = treAccounts->GetFirstChild(next, cookie); + } + else { + nextChild = treAccounts->GetNextSibling(nextChild); + } + + if (nextChild == selectedChild){ + wxSDataURL = prefaccounts.GetAccountDirPrefix(i) + wxT("/") + wxSplitFilename; + + } + + } + + // Add task to the activity monitor to delete the contact. + + frameActMgr->AddTask(2, wxSContactName, ActiveAccount, wxSDataURL, wxSplitFilename, ContactsFileIndex[intContactSeekNum], wxT("")); + + } + + // Clear the variable. Don't delete as it will mess things up. + + ContactsFileIndex[intContactSeekNum] = wxT(""); + + delete ucd; + ucd = NULL; + +} + +void frmMain::EmptyServerDialog(wxCommandEvent& event){ + + QRNotif *qrn = (QRNotif *)event.GetClientData(); + + int QResponse = wxMessageBox(_("The list of contacts on the server is empty. Upload all locally stored contacts for this account now?"), _("No contacts on server"), wxYES_NO, this); + + wxCommandEvent event2(ACTMGR_RESUMEPROC); + event2.SetInt(*qrn->QResponse); + event2.SetClientData(qrn->PausePtr); + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + + wxPostEvent(frameActMgr, event2); + +} + +void frmMain::DeleteContactSync(wxString &Account, wxString &Filename){ + + // Remove the contact from the window after syncronising. + + // Check which account is currently active in the window. + // If it is different from the one passed to this subroutine then + // exit from the subroutine. + + if (Account != ActiveAccount){ + return; + } + + long longSelected = -1; + int intSelectedData = 0; + + for (;;){ + + longSelected = lstContacts->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_DONTCARE); + + if (longSelected == -1){ + + break; + + } + + intSelectedData = lstContacts->GetItemData(longSelected); + + // Compare the filename with the one received. + // If they match then select it. + + if (ContactsFileIndex[intSelectedData] == Filename){ + + // Remove the contact from the window. + + lstContacts->DeleteItem(intSelectedData); + + // Check if contact is the selected contact in the HTML window and + // if it is then clear the window. + + if (ActiveFilename == Filename){ + + wxString EmptyPage = wxT(""); + htmContactData->SetPage(EmptyPage); + + } + + break; + + } + + } + +} + + + +void frmMain::SortFNLN( wxCommandEvent& event ) { + + wxTreeEvent NullEvent; + SortMode = 1; + LoadContactList(NullEvent); + +} + +void frmMain::SortLNFN( wxCommandEvent& event ) { + + wxTreeEvent NullEvent; + SortMode = 2; + LoadContactList(NullEvent); + +} + +void frmMain::SortNickname( wxCommandEvent& event ) { + + wxTreeEvent NullEvent; + SortMode = 3; + LoadContactList(NullEvent); + +} + +void frmMain::SortDisplayAs( wxCommandEvent& event ) { + + wxTreeEvent NullEvent; + SortMode = 4; + LoadContactList(NullEvent); + +} + +void frmMain::SortAscending( wxCommandEvent& event ) { + + wxTreeEvent NullEvent; + AscendingMode = TRUE; + LoadContactList(NullEvent); + +} + +void frmMain::SortDescending( wxCommandEvent& event ) { + + wxTreeEvent NullEvent; + AscendingMode = FALSE; + LoadContactList(NullEvent); + +} + +void frmMain::ToggleStatusBar( wxCommandEvent& event ) { + + if (stbBottom->IsShown() == TRUE){ + + stbBottom->Hide(); + + } else { + + stbBottom->Show(); + + } + + this->Layout(); + +} + +void frmMain::ActivityIconStart( wxCommandEvent& event ){ + + // Display the activity icon. + + imgActivityStatus->SetBitmap(*imgActIcon1); + ActivityIconStatus = 0; + +} + +void frmMain::ActivityIconShuffle( wxCommandEvent& event ){ + + switch (ActivityIconStatus){ + + case 0: + imgActivityStatus->SetBitmap(*imgActIcon1); + ActivityIconStatus = 1; + break; + case 1: + imgActivityStatus->SetBitmap(*imgActIcon2); + ActivityIconStatus = 2; + break; + case 2: + imgActivityStatus->SetBitmap(*imgActIcon3); + ActivityIconStatus = 3; + break; + case 3: + imgActivityStatus->SetBitmap(*imgActIcon4); + ActivityIconStatus = 0; + break; + default: + ActivityIconStatus = 0; + + } + +} + +void frmMain::ActivityIconStop( wxCommandEvent& event ){ + + // Display the sleep icon. + + imgActivityStatus->SetBitmap(*imgActIconSleep); + +} + +void frmMain::UpdateSBIconPlacement( wxSizeEvent& event ){ + + if (imgConnStatus == 0 || imgSSLStatus == 0 || imgActivityStatus == 0){ + + return; + + } + + wxRect rectOnline; + wxRect rectSSL; + wxRect rectActivity; + stbBottom->GetFieldRect(1, rectOnline); + stbBottom->GetFieldRect(2, rectSSL); + stbBottom->GetFieldRect(3, rectActivity); + + imgConnStatus->Move(rectOnline.GetX(),rectOnline.GetY()); + imgSSLStatus->Move(rectSSL.GetX(),rectSSL.GetY()); + imgActivityStatus->Move(rectActivity.GetX(),rectActivity.GetY()); + +} + +XABViewMode frmMain::GetViewMode(){ + + XABViewMode xvm; + + xvm.SortMode = SortMode; + xvm.AscendingMode = AscendingMode; + + return xvm; + +} + +void frmMain::WindowAdd( wxCommandEvent &event ){ + + WindowData *WData = (WindowData*)event.GetClientData(); + + size_t pos; + + if (WData->DataType == 0){ + + // Contact Window + + int intID = mnuContactWindows->GetId(); + + mnuWindow->FindChildItem(intID, &pos); + wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, wxT("Contact Window #") + wxString::Format(wxT("%i"), WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL); + mnuNewItem->SetId(WData->WindowID); + WindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem)); + WindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer)); + WindowListType.insert(std::make_pair(WData->WindowID, 0)); + mnuWindow->Insert((pos + 1), mnuNewItem); + this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactWindow)); + + } else if (WData->DataType == 1){ + + // Contact Editor Window + + int intID = mnuContactEditorWindows->GetId(); + + mnuWindow->FindChildItem(intID, &pos); + wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, wxT("Contact Editor Window #") + wxString::Format(wxT("%i"), WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL); + mnuNewItem->SetId(WData->WindowID); + WindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem)); + WindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer)); + WindowListType.insert(std::make_pair(WData->WindowID, 1)); + mnuWindow->Insert((pos + 1), mnuNewItem); + this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactEditorWindow)); + + } else if (WData->DataType == 2){ + + // Search Window + + int intID = mnuSearchWindows->GetId(); + + mnuWindow->FindChildItem(intID, &pos); + wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, wxT("Search Window #") + wxString::Format(wxT("%i"), WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL); + mnuNewItem->SetId(WData->WindowID); + WindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem)); + WindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer)); + WindowListType.insert(std::make_pair(WData->WindowID, 2)); + mnuWindow->Insert((pos + 1), mnuNewItem); + this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowSearchWindow)); + + } + + delete WData; + WData = NULL; + +} + +void frmMain::WindowEdit( wxCommandEvent &event ){ + + WindowData *WData = (WindowData*)event.GetClientData(); + + if (WData->DataType == 0){ + + // Contact Window + + int intID = mnuContactWindows->GetId(); + + // Get the window title and use that. + + frmContact *frmContactPtr = static_cast(WData->WindowPointer); + + wxString WindowTitle = frmContactPtr->GetTitle(); + + std::map::iterator MenuIter = WindowListPointersMenu.find(WData->WindowID); + + MenuIter->second->SetItemLabel(WindowTitle); + + //mnuWindow->FindChildItem(intID, &pos); + //wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, WindowTitle, WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL); + //mnuNewItem->SetId(WData->WindowID); + //ContactWindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem)); + //ContactWindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer)); + //mnuWindow->Insert((pos + 1), mnuNewItem); + //this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactWindow)); + + } else if (WData->DataType == 1){ + + // Contact Editor Window + + int intID = mnuContactEditorWindows->GetId(); + + // Get the window title and use that. + + frmContactEditor *frmCEPtr = static_cast(WData->WindowPointer); + + wxString WindowTitle = frmCEPtr->GetTitle(); + + std::map::iterator MenuIter = WindowListPointersMenu.find(WData->WindowID); + + if (WindowTitle.IsEmpty()){ + + MenuIter->second->SetItemLabel(_("Unnamed Contact")); + + } else { + + MenuIter->second->SetItemLabel(WindowTitle); + + } + + //mnuWindow->FindChildItem(intID, &pos); + //wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, WindowTitle, WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL); + //mnuNewItem->SetId(WData->WindowID); + //ContactEditorWindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem)); + //ContactEditorWindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer)); + //mnuWindow->Insert((pos + 1), mnuNewItem); + //this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactEditorWindow)); + + } + + delete WData; + WData = NULL; + +} + +void frmMain::WindowDelete( wxCommandEvent &event ){ + + WindowData *WData = (WindowData*)event.GetClientData(); + + std::map::iterator MenuIter = WindowListPointersMenu.find(WData->WindowID); + + mnuWindow->Remove(MenuIter->second); + + delete MenuIter->second; + MenuIter->second = NULL; + + WindowListPointersMenu.erase(WData->WindowID); + WindowListPointers.erase(WData->WindowID); + WindowListType.erase(WData->WindowID); + + delete WData; + WData = NULL; + +} + +void frmMain::ShowContactWindow( wxCommandEvent &event ){ + + std::map::iterator WindowIter = WindowListPointers.find(event.GetId()); + + frmContact *frmContactPtr = static_cast(WindowIter->second); + + frmContactPtr->Show(); + frmContactPtr->Raise(); + +} + +void frmMain::ShowContactEditorWindow( wxCommandEvent &event ){ + + std::map::iterator WindowIter = WindowListPointers.find(event.GetId()); + + frmContactEditor *frmCEPtr = static_cast(WindowIter->second); + + frmCEPtr->Show(); + frmCEPtr->Raise(); + +} + +void frmMain::ShowSearchWindow( wxCommandEvent &event ){ + + // Look through the Search Window List Pointers, grab the + // window point and show the window. + + std::map::iterator WindowIter = WindowListPointers.find(event.GetId()); + + frmSearch *frmSearchPtr = static_cast(WindowIter->second); + + frmSearchPtr->Show(); + frmSearchPtr->Raise(); + +} + +void frmMain::ToggleConnectionStatus( wxCommandEvent &event ){ + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + wxCommandEvent toggconn(ACTMGR_TOGGLECONN); + wxPostEvent(frameActMgr, toggconn); + +} + +void frmMain::ShowSSLCertificates( wxCommandEvent &event ){ + + // Check the account type before continuing. + + wxString SeekAccount; + wxString AccTypeLower; + wxString AccType; + std::map::iterator SSLColIter; + + for (int i = 0; i < prefaccounts.GetCount(); i++){ + + SeekAccount.Append(prefaccounts.GetAccountDirectory(i)); + AccType.Append(prefaccounts.GetAccountType(i)); + AccTypeLower = AccType.MakeLower(); + SeekAccount.Append(wxT(".")); + SeekAccount.Append(AccTypeLower); + + if (SeekAccount == ActiveAccount){ + + if (AccTypeLower == wxT("local")){ + + return; + + } + + SSLColIter = AccountSSLData.find(i); + + SSLCertCollection SSLCertInfo = SSLColIter->second; + + frmSSLCertificate *frameSSLCert = new frmSSLCertificate ( this ); + frameSSLCert->StartCertFrom(0); + frameSSLCert->SetupCerts(SSLCertInfo); + frameSSLCert->ShowModal(); + + delete frameSSLCert; + frameSSLCert = NULL; + + } + + SeekAccount.Clear(); + AccTypeLower.Clear(); + AccType.clear(); + + } + +} + +void frmMain::ShowSSLInfo( wxCommandEvent &event ){ + + // Check the account type before continuing. + +} + +void frmMain::HideSSLInfo( wxCommandEvent &event ){ + + // Check the account type before continuing. + +} + +void frmMain::UpdateConnectionStatus( wxCommandEvent &event ){ + + if (event.GetInt() == 0){ + + imgConnStatus->SetBitmap(*imgOnline); + + } else { + + imgConnStatus->SetBitmap(*imgOffline); + + } + +} + +void frmMain::SetupSSLStatus( int AccountID ){ + + // Check if account ID given is + // the active account and if not, do nothing. + + wxString AccType; + wxString AccTypeLower; + + AccType = prefaccounts.GetAccountType(AccountID); + AccTypeLower = AccType.MakeLower(); + + wxString AccountIDName = prefaccounts.GetAccountDirectory(AccountID) + wxT(".") + + AccTypeLower; + + if (AccountIDName != ActiveAccount){ + + return; + + } + + // Check if the account has SSL enabled. + + bool SSLInUse = prefaccounts.GetAccountSSL(AccountID); + + if (SSLInUse == FALSE){ + + SSLToolTip->SetTip(wxT("SSL is not enabled for this account")); + imgSSLStatus->SetBitmap(*imgNoSSL); + + } else { + + // Get the SSL Collection Data. + + std::map::iterator SSLResultIter = AccountSSLResult.find(AccountID); + + if (SSLResultIter->second == 1){ + + imgSSLStatus->SetBitmap(*imgSSLWarning); + SSLToolTip->SetTip(wxT("Invalid certificate(s) received for '") + + prefaccounts.GetAccountName(AccountID) + + wxT("' (Connection denied by user)\n\nDouble click for more information.")); + + + } else if (SSLResultIter->second == 0){ + + imgSSLStatus->SetBitmap(*imgSSL); + SSLToolTip->SetTip(wxT("Account '") + + prefaccounts.GetAccountName(AccountID) + + wxT("' secured using SSL\n\nDouble click for more information.")); + + } + + } + +} + +void frmMain::InvalidSSLCertificate( wxCommandEvent &event ){ + + frmInvalidSSLCertificate *frameISC = new frmInvalidSSLCertificate ( this ); + SSLInvalidCertNotifObj *SSLICNObj = (SSLInvalidCertNotifObj*)event.GetClientData(); + SSLCertCollection SSLCCData = SSLICNObj->CertCollection; + wxString AccountName = SSLICNObj->AccountName; + frameISC->LoadData(SSLCCData, AccountName); + frameISC->ShowModal(); + + int FinalConflictResult = frameISC->GetResult(); + + wxCommandEvent event2(ACTMGR_RESUMEPROC); + event2.SetClientData(SSLICNObj->QRNotifData); + event2.SetInt(FinalConflictResult); + + delete frameISC; + frameISC = NULL; + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + wxPostEvent(frameActMgr, event2); +} + +void frmMain::PauseAllTimers(){ + + for (std::map::iterator ASTiter = AccountSyncTimers.begin(); + ASTiter != AccountSyncTimers.end(); ASTiter++){ + + ASTiter->second->Stop(); + + } + +} + +void frmMain::ResumeAllTimers(){ + + for (std::map::iterator ASTiter = AccountSyncTimers.begin(); + ASTiter != AccountSyncTimers.end(); ASTiter++){ + + ASTiter->second->Start(); + + } + +} + +void frmMain::UpdateSSLAccountStatus(int AccountID, int SSLStatus, SSLCertCollection SSLCertInc){ + + // Delete existing data. + + AccountSSLData.erase(AccountID); + AccountSSLResult.erase(AccountID); + + // Insert new data. + + AccountSSLData.insert(std::make_pair(AccountID, SSLCertInc)); + AccountSSLResult.insert(std::make_pair(AccountID, SSLStatus)); + +} + +void frmMain::CheckUpdates( wxCommandEvent& event ){ + + frmUpdate *frameUpdate = new frmUpdate ( this ); + frameUpdate->FetchData(); + frameUpdate->ShowModal(); + +} + +void frmMain::OpenImportDialog( wxCommandEvent& event ){ + + // Run the import contacts system. + + ImportRun(this); + +} + +void frmMain::OpenExportDialog( wxCommandEvent& event ){ + + // Check if an account and at least one contact is selected + // before continuing. + + wxArrayString ArrData; + + if (ActiveAccount.IsEmpty()){ + + return; + + } + + int ContactSelected = 0; + int ContactsCollected = 0; + long longSelected = -1; + + for (;;){ + + longSelected = lstContacts->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + + break; + + } + + int FileID = lstContacts->GetItemData(longSelected); + + ArrData.Insert(ContactsFileIndex[FileID], + ContactsCollected, 1); + + ContactSelected++; + + } + + if (ContactSelected == 0){ + + return; + + } + + // Run the export contacts system. + + ExportRun(this, &ArrData); + +} + +void frmMain::GetListControl(wxListCtrl *lstContactsPtr, + wxArrayString *ContactsFileIndexPtr){ + + lstContactsPtr = lstContacts; + ContactsFileIndexPtr = &ContactsFileIndex; + +} + +void frmMain::GetSelectedList( wxCommandEvent& event ){ + + // Get the array of contact filenames. + + wxArrayString *ArrData = (wxArrayString*)event.GetClientData(); + + // Process them into an array of files. + + long longSelected = -1; + int ContactsCollected = 0; + wxString ContactFilename; + + for (;;){ + + longSelected = lstContacts->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (longSelected == -1){ + + break; + + } + + // Get the file information and add to the list. + + int FileID = lstContacts->GetItemData(longSelected); + + ArrData->Insert(ContactsFileIndex[FileID], + ContactsCollected, 1); + + ContactsCollected++; + ContactFilename.Clear(); + + } + + event.SetInt(1); + +} + +void frmMain::SyncAccount( wxCommandEvent& event ){ + + wxString *AccNameInc = (wxString*)event.GetClientData(); + + frmActivityMgr *frameActMgr = static_cast(ActMgrPtr); + frameActMgr->AddTask(3, wxT(""), *AccNameInc, + wxT(""), wxT(""), wxT(""), wxT("")); + +} + +void frmMain::ShowHelp( wxCommandEvent& event ){ + + // Based on the operating system, work out where + // the documentation should be. + +//#ifdef __APPLE__ + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + + +#else + + if (wxFileExists("/usr/share/doc/xestiaab/index.html")){ + + wxLaunchDefaultBrowser(wxT("file:///usr/share/doc/xestiaab/index.html")); + return; + +#if XSDAB_RELEASE == 0 + + } else if (wxFileExists("/usr/local/share/doc/xestiaab/index.html")){ + + wxLaunchDefaultBrowser(wxT("file:///usr/local/share/doc/xestiaab/index.html")); + return; + +#endif + + } + +#endif + +#if XSDAB_RELEASE == 0 + + wxMessageBox(_("The help documentation is not available.\n\nYou can view the documentation that came with your source package."), _("Help documentation missing!")); + +#else + + wxMessageBox(_("The help documentation is not available in the usual locations on the system. Please visit http://documentation.xestia.co.uk/xestiaab/ for documentation"), _("Help documentation missing!")); + +#endif + +} \ No newline at end of file diff --git a/source/frmMain.h b/source/frmMain.h new file mode 100644 index 0000000..1838300 --- /dev/null +++ b/source/frmMain.h @@ -0,0 +1,233 @@ +#ifndef __frmMain__ +#define __frmMain__ + +/** +@file +Subclass of frmMainADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" +#include "common/preferences.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "common/timers.h" +#include "common/events.h" +#include "common/etag.h" +#include "widgets/XABAccountView.h" +#include "bitmaps.h" +#include "common/sslcertstructs.h" + +//// end generated include + +DECLARE_EVENT_TYPE(CE_UPDATECONTACTLIST, wxID_ANY) +DECLARE_EVENT_TYPE(CE_UPDATEACCOUNTLIST, wxID_ANY) +DECLARE_EVENT_TYPE(SE_UPDATECONTACTNOTIF, wxID_ANY) +DECLARE_EVENT_TYPE(CE_OPENCONTACT, wxID_ANY) +DECLARE_EVENT_TYPE(CE_EDITCONTACT, wxID_ANY) +DECLARE_EVENT_TYPE(CE_REVEALCONTACT, wxID_ANY) +DECLARE_EVENT_TYPE(CE_REMOVESEARCH, wxID_ANY) +DECLARE_EVENT_TYPE(CE_REMOVECONTACT, wxID_ANY) +DECLARE_EVENT_TYPE(SYNC_EMPTYSERVER, wxID_ANY) +DECLARE_EVENT_TYPE(ACTMGR_START, wxID_ANY); +DECLARE_EVENT_TYPE(ACTMGR_SHUFFLE, wxID_ANY); +DECLARE_EVENT_TYPE(ACTMGR_STOP, wxID_ANY); +DECLARE_EVENT_TYPE(WINDOW_ADD, wxID_ANY); +DECLARE_EVENT_TYPE(WINDOW_EDIT, wxID_ANY); +//DECLARE_EVENT_TYPE(WINDOW_DELETE, wxID_ANY); +DECLARE_EVENT_TYPE(WINDOW_CLOSE, wxID_ANY); +DECLARE_EVENT_TYPE(CONNSTAT_UPDATE, wxID_ANY); +DECLARE_EVENT_TYPE(INVALIDSSLCERT, wxID_ANY); +DECLARE_EVENT_TYPE(GETSELECTEDLIST, wxID_ANY); +DECLARE_EVENT_TYPE(SYNCACCOUNT, wxID_ANY); + +struct UCNotif{ + wxString ContactAccount; + wxString ContactFilename; + wxString ContactName; + wxString ContactNameField; + wxString ContactNickname; + vCardName ContactNameArray; +}; + +struct SWCloseNotif{ + void *SCHWinPtr; +}; + +struct QRNotif{ + int *QResponse; + bool *PausePtr; +}; + +struct XABViewMode{ + + int SortMode; + bool AscendingMode; + +}; + +struct WindowData{ + + int DataType; + void *WindowPointer; + int WindowID; + +}; + +/** Implementing frmMainADT */ +class frmMain : public frmMainADT +{ + private: + XABPrefAccounts prefaccounts; + wxArrayString ContactsFileIndex; + std::map WindowList; + std::map AccountRefreshList; + std::map AccountAccDirList; + std::map AccountSSLData; + std::map AccountSSLResult; + std::multimap AccountGroupList; + std::multimap AccountGroupFilename; + std::multimap AccountGroupTreeId; + std::map AccountSyncTimers; + void *ActMgrPtr; + wxString ActiveAccount; + wxString ActiveAccountType; + wxString ActiveFilename; + wxETagProcessTimer ETagProcTimer; + std::map MemoryFileList; + std::map ContactWindowList; + std::map ContactEditorWindowList; + std::map SearchWindowList; + std::map WindowListPointersMenu; + std::map WindowListPointers; + std::map WindowListType; + //std::map WindowListType; + wxMenuItem *mnuContactWindows; + wxMenuItem *mnuContactEditorWindows; + wxMenuItem *mnuSearchWindows; + wxToolTip *SSLToolTip; + bool RevealWait = FALSE; + wxString SessionID; + wxString OldSessionID; + wxIcon IconEmp; + //wxIcon Emp; + //wxComboCtrl* AccControl = new wxGenericComboCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize); + //wxComboCtrl* AccControl = new wxComboCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCB_READONLY|wxEXPAND|wxCC_STD_BUTTON); + //wxStaticBitmap* AccIcon = new wxStaticBitmap(this, wxID_ANY, IconEmp, wxDefaultPosition, wxSize(16,16), wxALL|wxEXPAND, wxStaticBitmapNameStr); + XABAccountView* treAccounts = new XABAccountView(); + wxImageList *AccImgList = new wxImageList(16,16,true); + wxImageList *ActMgrImgList = new wxImageList(16,16,true); + //wxIcon wxIAccInet; + int AccountID; + int AccountNetID; + int AccountGrpID; + int AccountNoneID; + bool ReloadAccounts = FALSE; + bool AscendingMode = FALSE; + int SortMode = 1; + wxStaticBitmap *imgConnStatus = NULL; + wxStaticBitmap *imgSSLStatus = NULL; + wxStaticBitmap *imgActivityStatus = NULL; + wxBitmap *imgActIcon1 = NULL; + wxBitmap *imgActIcon2 = NULL; + wxBitmap *imgActIcon3 = NULL; + wxBitmap *imgActIcon4 = NULL; + wxBitmap *imgActIconSleep = NULL; + wxBitmap *imgSSL = NULL; + wxBitmap *imgNoSSL = NULL; + wxBitmap *imgSSLWarning = NULL; + wxBitmap *imgOnline = NULL; + wxBitmap *imgOffline = NULL; + int ActivityIconStatus = 0; + int SearchUID = 0; + int ContactUID = 0; + int ContactEditorUID = 0; + int WindowMenuItemID = 0; + protected: + // Handlers for frmMainADT events. + void QuitApp( wxCommandEvent& event ); + void QuitApp(); + void ShowAboutWindow( wxCommandEvent& event ); + void OpenPreferences( wxCommandEvent& event ); + void OpenNewABDialog( wxCommandEvent& event ); + void LoadPreferences( wxActivateEvent& event ); + void LoadPreferences(); + void LoadContactList( wxTreeEvent& event ); + void ShowContactInfo( wxListEvent& event ); + void OpenContactInfo( wxListEvent& event ); + void OpenContactInfo( wxCommandEvent& event ); + void ShowContactEditorNew( wxCommandEvent& event ); + void ShowContactEditorEdit( wxCommandEvent& event ); + void RefreshAddressBook( wxCommandEvent& event ); + void ShowActivityWindow( wxCommandEvent& event ); + wxTreeItemId FindItemNamed(wxTreeCtrl &tree, + const std::wstring &name); + void ConflictResolution( wxCommandEvent& event ); + void UpdateContactList( wxCommandEvent& event ); + void UpdateAccountList( wxCommandEvent& event ); + void UpdateSearchContactLists( wxCommandEvent& event ); + void OpenFindContactsWindow(wxCommandEvent& event); + void RevealContact( wxCommandEvent& event ); + void RemoveContactsWindowPointer(wxCommandEvent& event); + void RemoveContactEditorWindowPointer(wxCommandEvent& event); + void UpdateWindowList(wxCommandEvent& event); + void RemoveContactSearchWindows(wxCommandEvent& event); + void DeleteContact(wxCommandEvent& event); + void EmptyServerDialog(wxCommandEvent& event); + void DeleteContactSync(wxString &Account, wxString &Filename); + void SortFNLN( wxCommandEvent& event ); + void SortLNFN( wxCommandEvent& event ); + void SortNickname( wxCommandEvent& event ); + void SortDisplayAs( wxCommandEvent& event ); + void SortAscending( wxCommandEvent& event ); + void SortDescending( wxCommandEvent& event ); + void ToggleStatusBar( wxCommandEvent& event ); + void UpdateSBIconPlacement( wxSizeEvent& event ); + void WindowAdd( wxCommandEvent& event ); + void WindowEdit( wxCommandEvent& event ); + void WindowDelete( wxCommandEvent& event ); + void ShowContactWindow( wxCommandEvent& event ); + void ShowContactEditorWindow( wxCommandEvent& event ); + void ShowSearchWindow( wxCommandEvent& event ); + void ToggleConnectionStatus( wxCommandEvent& event ); + void ShowSSLCertificates( wxCommandEvent& event ); + void ShowSSLInfo( wxCommandEvent& event ); + void HideSSLInfo( wxCommandEvent& event ); + void UpdateConnectionStatus( wxCommandEvent& event ); + void SetupSSLStatus( int AccountID ); + void InvalidSSLCertificate( wxCommandEvent& event ); + void CheckUpdates( wxCommandEvent& event ); + void OpenImportDialog( wxCommandEvent& event ); + void OpenExportDialog( wxCommandEvent& event ); + void GetSelectedList( wxCommandEvent& event ); + void SyncAccount( wxCommandEvent& event ); + void ShowHelp( wxCommandEvent& event ); + public: + /** Constructor */ + frmMain( wxWindow* parent ); + int ShowConflictDialog(vCard *LocalObj, vCard *ServerObj); + void SetupPointers(void *ActMgr); + void SetupForm(); + void ActivityIconStart( wxCommandEvent& event ); + void ActivityIconShuffle( wxCommandEvent& event ); + void ActivityIconStop( wxCommandEvent& event ); + void PauseAllTimers(); + void ResumeAllTimers(); + void UpdateSSLAccountStatus(int AccountID, int SSLStatus, SSLCertCollection SSLCertInc); + void GetListControl(wxListCtrl *lstContactsPtr, wxArrayString *ContactsFileIndexPtr); + XABViewMode GetViewMode(); + DECLARE_EVENT_TABLE() + + //// end generated class members + +}; + +#endif // __frmMain__ diff --git a/source/frmMain.h~ b/source/frmMain.h~ new file mode 100644 index 0000000..41d120f --- /dev/null +++ b/source/frmMain.h~ @@ -0,0 +1,40 @@ +#ifndef __frmMain__ +#define __frmMain__ + +/** +@file +Subclass of frmMainADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" +#include "common/preferences.h" + +//// end generated include + +/** Implementing frmMainADT */ +class frmMain : public frmMainADT +{ + private: + XABPrefAccounts prefaccounts; + wxArrayString ContactsFileIndex; + protected: + // Handlers for frmMainADT events. + void QuitApp( wxCommandEvent& event ); + void QuitApp(); + void ShowAboutWindow( wxCommandEvent& event ); + void OpenPreferences( wxCommandEvent& event ); + void OpenNewABDialog( wxCommandEvent& event ); + void LoadPreferences( wxActivateEvent& event ); + void LoadContactList( wxTreeEvent& event ); + void ShowContactInfo( wxCommandEvent& event ); + void OpenContactInfo( wxCommandEvent& event ); + wxTreeItemId FindItemNamed(wxTreeCtrl &tree, + const std::wstring &name); + public: + /** Constructor */ + frmMain( wxWindow* parent ); + //// end generated class members + +}; + +#endif // __frmMain__ diff --git a/source/frmNewAccount.cpp b/source/frmNewAccount.cpp new file mode 100644 index 0000000..30c6fa2 --- /dev/null +++ b/source/frmNewAccount.cpp @@ -0,0 +1,490 @@ +#include "frmNewAccount.h" +#include +#include +#include +#include + +#include "carddav/carddav.h" +#include "common/dirs.h" + +frmNewAccount::frmNewAccount( wxWindow* parent ) +: +frmNewAccountADT( parent ) +{ + btnPrevious->Disable(); +} + +void frmNewAccount::CheckAccountName( wxCommandEvent& event ) +{ + + wxString CheckAccName = txtAccountName->GetValue(); + + if (txtAccountName->IsEmpty() && PageSeek == 2 || CheckAccName.Len() < 4){ + + btnNext->Disable(); + + } else { + + btnNext->Enable(); + + } + +} + +void frmNewAccount::ProcessPrevious( wxCommandEvent& event ) +{ + PageSeek--; + + if (PageSeek == 0){ + + // Currently at the Connection test screen. + + //tbkAccount->ChangeSelection(0); + tabConn->Hide(); + tabFinish->Hide(); + tabType->Show(); + szrNewAccount->RecalcSizes(); + + btnPrevious->Disable(); + btnNext->Enable(); + + } else if (PageSeek == 1){ + + if (cmbServerType->GetCurrentSelection() == 0){ + + tabConn->Hide(); + tabFinish->Hide(); + tabType->Show(); + PageSeek = 0; + btnPrevious->Disable(); + btnNext->Enable(); + btnNext->SetLabel(_("Next >")); + return; + + } + + // Currently at the Finish screen. + + tabType->Hide(); + tabConn->Show(); + tabFinish->Hide(); + szrNewAccount->RecalcSizes(); + + btnNext->SetLabel(_("Next >")); + btnNext->Enable(); + + } + +} + +void frmNewAccount::ProcessNext( wxCommandEvent& event ) +{ + PageSeek++; + + if (PageSeek == 1){ + + if (cmbServerType->GetCurrentSelection() == 0){ + + tabType->Hide(); + tabConn->Hide(); + tabFinish->Show(); + PageSeek = 2; + btnPrevious->Enable(); + szrNewAccount->RecalcSizes(); + btnNext->Disable(); + btnNext->SetLabel(_("Finish")); + return; + + } + + btnNext->Disable(); + + bool ServerResult = FALSE; + bool ServerAction = FALSE; + bool UseSSL = TRUE; + wxString ServerMessage; + + // Connection test screen. + + tabType->Hide(); + tabConn->Show(); + tabFinish->Hide(); + szrNewAccount->RecalcSizes(); + btnPrevious->Enable(); + + // Reset screen. + + lblServerConnResult->SetLabel(wxT("")); + lblServerResponse->SetLabel(wxT("")); + lblServerSSLResult->SetLabel(wxT("")); + lblServerSSLValid->SetLabel(wxT("")); + lblAbleToLoginResult->SetLabel(wxT("")); + lblCardDAVSupportResult->SetLabel(wxT("")); + + // Spawn a thread and check if server supports CardDAV. + + CardDAV CardDAVConn; + + lblServerConnResult->SetLabel(_("Testing...")); + + UseSSL = chkUseSSL->GetValue(); + + CardDAVConn.SetupConnection(txtServerAddress->GetValue(), + wxAtoi(txtServerPort->GetValue()), + txtUsername->GetValue(), + txtPassword->GetValue(), + UseSSL); + CardDAVConn.SetupResultBools(&ServerResult, &ServerAction); + + std::thread ConnTest(&CardDAV::Connect, &CardDAVConn); + + ConnTest.join(); + + if (ServerResult == FALSE){ + + lblServerConnResult->SetLabel(_("Failed")); + wxMessageBox(CardDAVConn.GetErrorMessage()); + return; + + } else { + + lblServerConnResult->SetLabel(_("Connected")); + + } + + if (CardDAVConn.HasValidResponse() == TRUE){ + + lblServerResponse->SetLabel(_("Yes")); + + } else { + + lblServerResponse->SetLabel(_("No")); + + } + + if (CardDAVConn.CanDoSSL() == TRUE){ + + lblCardDAVSupportResult->SetLabel(_("Used")); + + } else { + + lblServerSSLResult->SetLabel(_("Not Used")); + lblServerSSLValid->SetLabel(_("Not Applicable")); + + } + + if (CardDAVConn.SSLVerify() == TRUE && CardDAVConn.CanDoSSL() == TRUE){ + + lblCardDAVSupportResult->SetLabel(_("Verified")); + + } else if (CardDAVConn.SSLVerify() == FALSE && CardDAVConn.CanDoSSL() == TRUE) { + + lblServerSSLResult->SetLabel(_("Unable to verify")); + + } + + if (CardDAVConn.CanDoCardDAV() == TRUE){ + + lblCardDAVSupportResult->SetLabel(_("Supported")); + + } else { + + lblCardDAVSupportResult->SetLabel(_("Unsupported")); + + } + + if (CardDAVConn.AbleToLogin() == TRUE){ + + lblAbleToLoginResult->SetLabel(_("Yes")); + + } else { + + lblAbleToLoginResult->SetLabel(_("No")); + + } + + // Get the address to process CardDAV requests. + + ServerPrefix = CardDAVConn.GetDefaultAddressBookURL(); + + wxMessageBox(ServerPrefix); + + if (ServerResult == TRUE && CardDAVConn.HasValidResponse() == TRUE && + //CardDAVConn.CanDoSSL() == TRUE && CardDAVConn.SSLVerify() == TRUE && + CardDAVConn.CanDoCardDAV() == TRUE && CardDAVConn.AbleToLogin() == TRUE){ + + btnNext->Enable(); + + lblConnectionResultText->SetLabel(_("Click on Next to set the account name.")); + + } else { + + lblConnectionResultText->SetLabel(_("A problem has occured whilst connecting to the CardDAV server.\nPlease review the above information and change the server details if needed.\nIf there are still problems, please speak to your system administrator(s).")); + + } + + } else if (PageSeek == 2){ + + // Finish screen. + + tabType->Hide(); + tabConn->Hide(); + tabFinish->Show(); + szrNewAccount->RecalcSizes(); + + btnNext->Disable(); + btnNext->SetLabel(_("Finish")); + if (txtAccountName->IsEmpty() && PageSeek == 2){ + btnNext->Disable(); + } else { + btnNext->Enable(); + } + + } else if (PageSeek == 3){ + + // Finished. + + wxString XestiaABPrefDirectory; + wxString AccountSettingsFile; + //wxFile ASFile; + wxString RandomNumberSuffix = wxString::Format(wxT("%i"), rand() % 32767); + bool DirectoryCreated = FALSE; + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + XestiaABPrefDirectory = GetUserPrefDir(); + + AccountSettingsFile = XestiaABPrefDirectory + wxT("accounts"); + + // Open the file for writing. + + wxFileConfig *cfgfile = new wxFileConfig("", "", AccountSettingsFile); + + // Check if account name already exists and return an error message + // if this is the case. + + wxString AccountName; + long itemindex = 0; + bool ContinueAcc; + ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex); + + while (ContinueAcc){ + + if (txtAccountName->GetValue() == AccountName){ + + wxMessageBox(_("The selected account name is already used, please use another account name."), _("Account name already used"), wxICON_ERROR); + return; + + } + + cfgfile->SetPath(wxT("/")); + ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); + + } + + cfgfile->SetPath(txtAccountName->GetValue()); + cfgfile->Write(wxT("address"), txtServerAddress->GetValue()); + cfgfile->Write(wxT("port"), txtServerPort->GetValue()); + cfgfile->Write(wxT("username"), txtUsername->GetValue()); + cfgfile->Write(wxT("password"), txtPassword->GetValue()); + cfgfile->Write(wxT("prefix"), ServerPrefix); + + if (chkUseSSL->GetValue() == TRUE){ + + cfgfile->Write(wxT("ssl"), wxT("true")); + + } else { + + cfgfile->Write(wxT("ssl"), wxT("false")); + + } + + cfgfile->Write(wxT("refresh"), wxT("1800")); + + if (cmbServerType->GetCurrentSelection() == 1){ + + cfgfile->Write(wxT("type"), wxT("CardDAV")); + + while(DirectoryCreated == FALSE){ + + wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; + wxString XestiaABUserDirectory = GetUserDir(); + + if (wxMkdir(XestiaABUserDirectory + wxT("\\accounts\\") + DirectoryName + wxT(".carddav"), 0740) == TRUE){ + + DirectoryCreated = TRUE; + cfgfile->Write(wxT("accountdir"), DirectoryName); + + } else { + + + + } + + } + + } else if (cmbServerType->GetCurrentSelection() == 0){ + + // Create the account directory. + + cfgfile->Write(wxT("type"), wxT("Local")); + + while(DirectoryCreated == FALSE){ + + wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; + wxString XestiaABUserDirectory = GetUserDir(); + + if (wxMkdir(XestiaABUserDirectory + wxT("\\accounts\\") + DirectoryName + wxT(".local"), 0740) == TRUE){ + + DirectoryCreated = TRUE; + cfgfile->Write(wxT("accountdir"), DirectoryName); + + } + + } + + } + + delete cfgfile; + cfgfile = NULL; + + ReloadAccountConfig = TRUE; + +#else + + XestiaABUserDirectory = GetUserPrefDir(); + + AccountSettingsFile = XestiaABUserDirectory + wxT("accounts"); + + // Open the file for writing. + + wxFileConfig *cfgfile = new wxFileConfig("", "", AccountSettingsFile); + + // Check if account name already exists and return an error message + // if this is the case. + + wxString AccountName; + long itemindex = 0; + bool ContinueAcc; + ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex); + + while (ContinueAcc){ + + if (txtAccountName->GetValue() == AccountName){ + + wxMessageBox(_("The selected account name is already used, please use another account name."), _("Account name already used"), wxICON_ERROR); + return; + + } + + cfgfile->SetPath(wxT("/")); + ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); + + } + + cfgfile->SetPath(txtAccountName->GetValue()); + cfgfile->Write(wxT("address"), txtServerAddress->GetValue()); + cfgfile->Write(wxT("port"), txtServerPort->GetValue()); + cfgfile->Write(wxT("username"), txtUsername->GetValue()); + cfgfile->Write(wxT("password"), txtPassword->GetValue()); + cfgfile->Write(wxT("prefix"), ServerPrefix); + + if (chkUseSSL->GetValue() == TRUE){ + + cfgfile->Write(wxT("ssl"), wxT("true")); + + } else { + + cfgfile->Write(wxT("ssl"), wxT("false")); + + } + + cfgfile->Write(wxT("refresh"), wxT("1800")); + + if (cmbServerType->GetCurrentSelection() == 1){ + + while(DirectoryCreated == FALSE){ + + wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; + + if (wxMkdir(XestiaABUserDirectory + wxT("/accounts/") + DirectoryName + wxT(".carddav"), 0740) == TRUE){ + + DirectoryCreated = TRUE; + cfgfile->Write(wxT("accountdir"), DirectoryName); + + } + + } + + } else if (cmbServerType->GetCurrentSelection() == 0){ + + // Create the account directory. + + while(DirectoryCreated == FALSE){ + + wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix; + + if (wxMkdir(XestiaABUserDirectory + wxT("/accounts/") + DirectoryName + wxT(".carddav"), 0740) == TRUE){ + + DirectoryCreated = TRUE; + cfgfile->Write(wxT("accountdir"), DirectoryName); + + } + + } + + } + + delete cfgfile; + cfgfile = NULL; + + ReloadAccountConfig = TRUE; + +#endif + + this->Close(); + + } + +} + +void frmNewAccount::CloseWindow( wxCommandEvent& event ) +{ + ReloadAccountConfig = FALSE; + this->Close(); +} + +void frmNewAccount::UpdateRequirements( wxCommandEvent& event ) +{ + + // Update the options. + + if (cmbServerType->GetCurrentSelection() == 1){ + + txtServerAddress->Enable(); + txtServerPort->Enable(); + txtUsername->Enable(); + txtPassword->Enable(); + chkUseSSL->Enable(); + + } else if (cmbServerType->GetCurrentSelection() == 0){ + + txtServerAddress->Disable(); + txtServerPort->Disable(); + txtUsername->Disable(); + txtPassword->Disable(); + chkUseSSL->Disable(); + + } + +} + +void frmNewAccount::SetupPointers(bool *ReloadAccountInc){ + + ReloadAccountConfig = ReloadAccountInc; + +} \ No newline at end of file diff --git a/source/frmNewAccount.h b/source/frmNewAccount.h new file mode 100644 index 0000000..a94ee7c --- /dev/null +++ b/source/frmNewAccount.h @@ -0,0 +1,34 @@ +#ifndef __frmNewAccount__ +#define __frmNewAccount__ + +/** +@file +Subclass of frmNewAccountADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" + +//// end generated include + +/** Implementing frmNewAccountADT */ +class frmNewAccount : public frmNewAccountADT +{ + protected: + // Handlers for frmNewAccountADT events. + void CheckAccountName( wxCommandEvent& event ); + void ProcessPrevious( wxCommandEvent& event ); + void ProcessNext( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + void UpdateRequirements( wxCommandEvent& event ); + public: + /** Constructor */ + frmNewAccount( wxWindow* parent ); + void SetupPointers(bool *ReloadAccountInc); + //// end generated class members + private: + int PageSeek = 0; + wxString ServerPrefix; + bool ReloadAccountConfig = FALSE; +}; + +#endif // __frmNewAccount__ diff --git a/source/frmPreferences.cpp b/source/frmPreferences.cpp new file mode 100644 index 0000000..0244d49 --- /dev/null +++ b/source/frmPreferences.cpp @@ -0,0 +1,400 @@ +#include "frmPreferences.h" +#include "frmEditAccount.h" +#include "frmNewAccount.h" +#include "frmMain.h" +#include "common/preferences.h" +#include "common/dirs.h" +#include "bitmaps.h" + +#include "import/import.h" +#include "export/export.h" + +#include +#include +#include +#include +#include + + +frmPreferences::frmPreferences( wxWindow* parent ) +: +frmPreferencesADT( parent ) +{ + + wxMemoryInputStream astream(icons_accinet_png, sizeof(icons_accinet_png)); + wxMemoryInputStream bstream(icons_acclocal_png, sizeof(icons_acclocal_png)); + + wxImage icons_accinet_png(astream, wxBITMAP_TYPE_PNG); + wxBitmap AccInet(icons_accinet_png, -1); + wxIcon wxIAccInet; + wxIAccInet.CopyFromBitmap(AccInet); + + wxImage icons_acclocal_png(bstream, wxBITMAP_TYPE_PNG); + wxBitmap AccNIcon(icons_acclocal_png, -1); + wxIcon wxIAccNIcon; + wxIAccNIcon.CopyFromBitmap(AccNIcon); + + AccountID = AccImgList->Add(wxIAccNIcon); + AccountNetID = AccImgList->Add(wxIAccInet); + + NbtPreferences->RemovePage(1); + +} + +frmPreferences::~frmPreferences(){ + + delete AccImgList; + AccImgList = NULL; + +} + +void frmPreferences::EnableABButtons( wxListEvent& event ) +{ + btnAccountModify->Enable(TRUE); + btnAccountDelete->Enable(TRUE); +} + +void frmPreferences::DisableABButtons( wxListEvent& event ) +{ + btnAccountModify->Enable(FALSE); + btnAccountDelete->Enable(FALSE); +} + +void frmPreferences::AddABAccount(wxCommandEvent& event) +{ + + bool ReloadAccountsData = FALSE; + + frmNewAccount *frameNewAccount = new frmNewAccount(this); + frameNewAccount->SetupPointers(&ReloadAccountsData); + frameNewAccount->ShowModal(); + delete frameNewAccount; + frameNewAccount = NULL; + + if (ReloadAccountsData == TRUE){ + + // Reload the accounts as a change has been made within + // the application. + + ReloadAccounts(); + *ReloadAccountConfig = TRUE; + + } + +} + +void frmPreferences::ModifyABAccount( wxCommandEvent& event ) +{ + + // Get the settings for the account, setup the form for + // editing the account and then display the window + // with the settings. + + long lstAccountsIndex = -1; + wxString AccFilename = GetAccountsFile(); + wxString AccName; + + wxFileConfig *cfgfile = new wxFileConfig("", "", AccFilename); + + // Get the account name. + + lstAccountsIndex = lstAccounts->GetNextItem(lstAccountsIndex, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + AccName = preferences->accounts.GetAccountName(lstAccountsIndex); + + frmEditAccount *frameEditAccount = new frmEditAccount ( this ); + frameEditAccount->LoadPointers(cfgfile); + frameEditAccount->LoadSettings(AccName); + frameEditAccount->ShowModal(); + + delete frameEditAccount; + frameEditAccount = NULL; + delete cfgfile; + cfgfile = NULL; + + // Reload the account list in the preferences window. + + ReloadAccounts(); + *ReloadAccountConfig = TRUE; + +} + +void frmPreferences::DeleteABAccount( wxCommandEvent& event ) +{ + // Display a confirmation dialog to confirm deletion. + + long lstAccountsIndex = -1; + wxMessageDialog dlgdel(this, wxT("Are you sure you want to delete this account?\r\n\r\nAll data that is stored locally will be removed."), wxT("Delete account"), wxYES_NO | wxICON_EXCLAMATION); + + if (dlgdel.ShowModal() == wxID_YES){ + // Remove the selected item from the accounts list + // and mark in the accounts list as deleted (Don't write to + // accounts file). + + lstAccountsIndex = lstAccounts->GetNextItem(lstAccountsIndex, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + bool ContinueAcc = TRUE; + wxString AccountDir; + wxString AccountType; + wxString AccountDirFull; + wxString AccountDirDelFull; + wxString AccountName; + wxString AccName; + long itemindex = 0; + + wxString AccFilename = GetAccountsFile(); + + wxFileConfig *cfgfile = new wxFileConfig("", "", AccFilename); + + AccName = preferences->accounts.GetAccountName(lstAccountsIndex); + + // Get the account directory name and account type.. + + ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex); + + while (ContinueAcc){ + + if (AccountName == AccName){ + + cfgfile->SetPath(AccountName); + + cfgfile->Read("accountdir", &AccountDir); + cfgfile->Read("type", &AccountType); + + break; + + } + + cfgfile->SetPath(wxT("/")); + ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex); + + } + + AccountDirFull.Append(AccountDir); + AccountDirFull.Append(wxT(".")); + + if (AccountType == wxT("CardDAV")){ + + AccountDirFull.Append(wxT("local")); + + } else if (AccountType == wxT("Local")){ + + AccountDirFull.Append(wxT("carddav")); + + } + + lstAccounts->DeleteItem(lstAccountsIndex); + + // Delete the directory that contains the account information. + + if (!AccountDirFull.IsEmpty()){ + + AccountDirDelFull.Append(wxString::FromUTF8(getenv("HOME"))); + AccountDirDelFull.Append(wxT("/.xestiaab/accounts/")); + AccountDirDelFull.Append(AccountDirFull); + + wxRmDir(AccountDirDelFull); + + } + + // Delete the account from the configuration file. + + cfgfile->SetPath(wxT("/")); + cfgfile->DeleteGroup(AccountName); + cfgfile->Flush(); + + // Set flag for reloading accounts on window closure. + + *ReloadAccountConfig = TRUE; + + } + +} + +void frmPreferences::LoadPreferences( wxInitDialogEvent& event ) +{ + +// Setup the preferences filename string. Default is the +// *nix systems one (/home/$USER/.xestiaab/preferences) + + preffilename = GetUserPrefDir(); + + preferences = new XABPreferences(preffilename); + + // Setup the General Tab. + + bool SaveWindowPos = preferences->GetBoolData(wxT("SaveWindowPosition")); + bool HideLocalABs = preferences->GetBoolData(wxT("HideLocalAddressBooks")); + + if (SaveWindowPos == TRUE){ + + chkSaveWindowPosition->SetValue(TRUE); + + } + + if (HideLocalABs == TRUE){ + + chkHideLocal->SetValue(TRUE); + + } + + // Setup the Themes tab. + + wxListItem themecol0; + + themecol0.SetId(0); + themecol0.SetWidth(250); + themecol0.SetText(_("Theme")); + lstThemes->InsertColumn(0,themecol0); + + // Setup the Accounts tab. + + ReloadAccounts(); + +} + +void frmPreferences::ReloadAccounts(){ + + if (FirstLoad == FALSE){ + delete preferences; + preferences = NULL; + preferences = new XABPreferences(preffilename); + } else { + FirstLoad = FALSE; + } + + wxListItem accountscol0, accountscol1, accountscol2, accountscol3; + + lstAccounts->ClearAll(); + + accountscol0.SetId(0); + accountscol0.SetWidth(24); + lstAccounts->InsertColumn(0,accountscol0); + lstAccounts->SetImageList(AccImgList, wxIMAGE_LIST_SMALL); + + accountscol1.SetId(1); + accountscol1.SetText(_("Name")); + accountscol1.SetWidth(224); + lstAccounts->InsertColumn(1,accountscol1); + + accountscol2.SetId(2); + accountscol2.SetText(_("Type")); + accountscol2.SetWidth(96); + lstAccounts->InsertColumn(2,accountscol2); + + /*accountscol1.SetId(1); + accountscol1.SetText(_("")); + accountscol1.SetWidth(32); + lstAccounts->InsertColumn(1,accountscol1); + + accountscol2.SetId(2); + accountscol2.SetText(_("Name")); + accountscol2.SetWidth(224); + lstAccounts->InsertColumn(2,accountscol2); + + accountscol3.SetId(3); + accountscol3.SetText(_("Type")); + accountscol3.SetWidth(96); + lstAccounts->InsertColumn(3,accountscol3);*/ + + wxString AccType; + + for (int i = 0; i < preferences->accounts.GetCount() ; i++){ + + wxListItem col0; + col0.SetId(i); + if (preferences->accounts.GetAccountType(i) == wxT("CardDAV")){ + + col0.SetImage(AccountNetID); + + } else if (preferences->accounts.GetAccountType(i) == wxT("Local")){ + + col0.SetImage(AccountID); + + } + + //col0.SetText( wxString::Format(wxT("%i"),i) ); + //col0.SetText(preferences.accounts.GetAccountName(i)); + + long itemindex = lstAccounts->InsertItem( col0 ); + + //AccType = preferences.accounts.GetAccountType(i); + //AccType.Trim(); + + lstAccounts->SetItem(itemindex, 1, preferences->accounts.GetAccountName(i)); + lstAccounts->SetItem(itemindex, 2, preferences->accounts.GetAccountType(i)); + //lstAccounts->SetItem(itemindex, 3, AccType); + + } + +} + +void frmPreferences::SetupPointers(bool *ReloadAccountInc){ + + ReloadAccountConfig = ReloadAccountInc; + +} + +void frmPreferences::SavePreferences(wxCommandEvent &event){ + + // Load up the preferences file. + + wxString SetFilename = GetSettingsFile(); + + wxFileConfig *cfgfile = new wxFileConfig("", "", SetFilename); + + // Update the settings file. + + cfgfile->DeleteEntry(wxT("SaveWindowPosition")); + cfgfile->DeleteEntry(wxT("WindowPositionX")); + cfgfile->DeleteEntry(wxT("WindowPositionY")); + cfgfile->DeleteEntry(wxT("WindowPositionHeight")); + cfgfile->DeleteEntry(wxT("WindowPositionWidth")); + + if (chkSaveWindowPosition->GetValue() == TRUE){ + + cfgfile->Write(wxT("SaveWindowPosition"), wxT("true")); + + // Get parent window details. + + frmMain *frmMainPtr = (frmMain*)this->GetParent(); + + // Get main window position data and save it. + + wxRect frmMainPos = frmMainPtr->GetRect(); + + cfgfile->Write(wxT("WindowPositionX"), frmMainPos.GetX()); + cfgfile->Write(wxT("WindowPositionY"), frmMainPos.GetY()); + cfgfile->Write(wxT("WindowPositionHeight"), frmMainPos.GetHeight()); + cfgfile->Write(wxT("WindowPositionWidth"), frmMainPos.GetWidth()); + + } else { + + cfgfile->Write(wxT("SaveWindowPosition"), wxT("false")); + + } + + cfgfile->DeleteEntry(wxT("HideLocalAddressBooks")); + + if (chkHideLocal->GetValue() == TRUE){ + + cfgfile->Write(wxT("HideLocalAddressBooks"), wxT("true")); + *ReloadAccountConfig = TRUE; + + } else { + + cfgfile->Write(wxT("HideLocalAddressBooks"), wxT("false")); + *ReloadAccountConfig = TRUE; + + } + + delete cfgfile; + cfgfile = NULL; + + this->Close(); + +} \ No newline at end of file diff --git a/source/frmPreferences.h b/source/frmPreferences.h new file mode 100644 index 0000000..a563667 --- /dev/null +++ b/source/frmPreferences.h @@ -0,0 +1,43 @@ +#ifndef __frmPreferences__ +#define __frmPreferences__ + +/** +@file +Subclass of frmPreferencesADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" +#include "common/preferences.h" + +//// end generated include + +/** Implementing frmPreferencesADT */ +class frmPreferences : public frmPreferencesADT +{ + protected: + void LoadPreferences( wxInitDialogEvent& event ); + void EnableABButtons( wxListEvent& event ); + void DisableABButtons( wxListEvent& event ); + void DeleteABAccount( wxCommandEvent& event ); + void ModifyABAccount( wxCommandEvent& event ); + void SavePreferences( wxCommandEvent &event ); + void AddABAccount( wxCommandEvent &event ); + private: + void ReloadAccounts(); + wxImageList *AccImgList = new wxImageList(16,16,true,wxIMAGE_LIST_SMALL); + int AccountID = 0; + int AccountNetID = 0; + XABPreferences *preferences; + wxString preffilename; + bool FirstLoad = TRUE; + bool *ReloadAccountConfig; + public: + /** Constructor */ + frmPreferences( wxWindow* parent ); + ~frmPreferences(); + void SetupPointers( bool *ReloadAccountInc ); + //// end generated class members + +}; + +#endif // __frmPreferences__ diff --git a/source/frmSSLCertificate.cpp b/source/frmSSLCertificate.cpp new file mode 100644 index 0000000..2c2f9dd --- /dev/null +++ b/source/frmSSLCertificate.cpp @@ -0,0 +1,246 @@ +#include "frmSSLCertificate.h" +#include + +frmSSLCertificate::frmSSLCertificate( wxWindow* parent ) +: +frmSSLCertificateADT( parent ) +{ + +} + +void frmSSLCertificate::SetupCerts(SSLCertCollection SSLCertsInc) +{ + + /*// Grab the certificates, start from the one requested and show. + + lblValidityStatus->Hide(); + + std::map::iterator SCDIter; + SCDIter = SSLCertsInc.SSLCollection.find(StartFrom); + + // Setup the summary tab. + + // Split the subject data down. + + std::map::iterator SDIter = SCDIter->second.CertData.find(wxT("Subject")); + std::map SubjectData = GetSubjectData(SDIter->second); + + // Get the common name (CN). + + std::map::iterator CNiter = SubjectData.find(wxT("CN")); + + lblCertName->SetLabel(CNiter->second); + + // Split the issuer data down. + + // Attempt to grab the organisation name first then + // the common name if it doesn't exist. + + if (SubjectData.count(wxT("O")) == 1){ + + std::map::iterator Oiter = SubjectData.find(wxT("O")); + lblIssuedToData->SetLabel(Oiter->second); + + } else { + + lblIssuedToData->SetLabel(CNiter->second); + + } + + // Setup the valid from date. + + std::map::iterator Validiter = SCDIter->second.CertData.find(wxT("Start date")); + + wxDateTime ValidFromDate; + ValidFromDate.ParseDate(Validiter->second); + + lblValidFromData->SetLabel(ValidFromDate.FormatDate()); + + // Setup the expiry date. + + std::map::iterator Expiryiter = SCDIter->second.CertData.find(wxT("Expire date")); + + wxDateTime ExpiryDate; + ExpiryDate.ParseDate(Expiryiter->second); + + lblValidUntilData->SetLabel(ExpiryDate.FormatDate()); + + // Setup the detail tab. + + wxListItem ColumnDataName; + ColumnDataName.SetId(0); + ColumnDataName.SetText(wxT("Name")); + ColumnDataName.SetWidth(115); + lstValues->InsertColumn(0, ColumnDataName); + + wxListItem ColumnDataValue; + ColumnDataValue.SetId(0); + ColumnDataValue.SetText(wxT("Value")); + ColumnDataValue.SetWidth(115); + lstValues->InsertColumn(0, ColumnDataValue); + + int SSLIndex = 0; + + for (std::map::iterator iter = SCDIter->second.CertData.begin(); + iter != SCDIter->second.CertData.end(); ++iter){ + + // Ignore certificate data. + + if (iter->first == wxT("Cert")){ + + continue; + + } + + wxListItem SSLInfo; + + SSLInfo.SetId(0); + SSLInfo.SetText(_("Mooo")); + SSLIndex = lstValues->InsertItem(SSLInfo); + + lstValues->SetItem(SSLIndex, 0, iter->first); + lstValues->SetItem(SSLIndex, 1, iter->second); + + } + + // Setup the hierachy tab. + + wxTreeItemId CertTreeId; + wxTreeItemId PrevCertTreeId; + + for (std::map::reverse_iterator iter = SSLCertsInc.SSLCollection.rbegin(); + iter != SSLCertsInc.SSLCollection.rend(); ++iter){ + + if (iter->first < StartFrom){ + + continue; + + } + + // Get the common name of the certificate. (Fetch subject). + + std::map::iterator CSDIter = iter->second.CertData.find(wxT("Subject")); + std::map CertSubjectData = GetSubjectData(CSDIter->second); + + // Get the common name (CN). + + std::map::iterator CertCNiter = CertSubjectData.find(wxT("CN")); + + // Add to the hierachy. + + SSLCertItemData *SSLCertID = new SSLCertItemData((iter->first + 1)); + + CertTreeId = treHierarchy->AppendItem(PrevCertTreeId, CertCNiter->second, 0, -1, SSLCertID); + PrevCertTreeId = CertTreeId; + + } + + treHierarchy->ExpandAll(); + + SSLCertData = SSLCertsInc;*/ + +} + +std::map frmSSLCertificate::GetSubjectData(wxString SubjectData) +{ + + std::map SubjectDataFinal; + wxStringTokenizer SubjectDataToken(SubjectData, wxT(";")); + wxString StringData; + wxString SettingName; + wxString SettingValue; + + while(SubjectDataToken.HasMoreTokens()) + { + + StringData = SubjectDataToken.GetNextToken(); + + // Split the data down between the equals sign. + + wxStringTokenizer DataSplitToken(StringData, wxT("=")); + + while (DataSplitToken.HasMoreTokens()){ + + SettingName = DataSplitToken.GetNextToken(); + SettingValue = DataSplitToken.GetNextToken(); + SettingName.Trim(TRUE); + SettingName.Trim(FALSE); + SettingValue.Trim(TRUE); + SettingValue.Trim(FALSE); + + SubjectDataFinal.insert(std::make_pair(SettingName, SettingValue)); + + } + + StringData.Clear(); + SettingName.Clear(); + SettingValue.Clear(); + + } + + return SubjectDataFinal; + +} + +void frmSSLCertificate::LoadValueData( wxListEvent& event ) +{ + + // Get the value data and display it in the text at the bottom. + + long intSelected = -1; + int intSelectedData = 0; + long SSLDataSeekNum = -1; + wxString SSLSettingValue; + + intSelected = lstValues->GetNextItem(intSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + SSLSettingValue = lstValues->GetItemText(intSelected, 1); + + txtValueData->SetValue(SSLSettingValue); + + //SSLDataSeekNum = lstValues->GetItemData(intSelected); + +} + +void frmSSLCertificate::ViewCertificate( wxCommandEvent& event ) +{ + + // Get the internal certificate ID number. + + wxTreeItemId SelectedChild = treHierarchy->GetSelection(); + + SSLCertItemData *ActiveSSLData = (SSLCertItemData*)treHierarchy->GetItemData(SelectedChild); + + if (ActiveSSLData->GetCertID() == (StartFrom + 1)){ + + wxBell(); + + } else { + + frmSSLCertificate *frameSSLCert = new frmSSLCertificate ( this ); + frameSSLCert->StartCertFrom((ActiveSSLData->GetCertID() - 1)); + frameSSLCert->SetupCerts(SSLCertData); + frameSSLCert->ShowModal(); + + } + +} + +void frmSSLCertificate::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmSSLCertificate::StartCertFrom(int StartFromInc){ + StartFrom = StartFromInc; +} + +void frmSSLCertificate::CheckCertificate( wxTreeEvent& event ){ + + wxTreeItemId SelectedChild = treHierarchy->GetSelection(); + + SSLCertItemData *ActiveSSLData = (SSLCertItemData*)treHierarchy->GetItemData(SelectedChild); + +} \ No newline at end of file diff --git a/source/frmSSLCertificate.h b/source/frmSSLCertificate.h new file mode 100644 index 0000000..d01a043 --- /dev/null +++ b/source/frmSSLCertificate.h @@ -0,0 +1,51 @@ +#ifndef __frmSSLCertificate__ +#define __frmSSLCertificate__ + +/** +@file +Subclass of frmSSLCertificateADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" +#include "common/sslcertstructs.h" +#include +#include +#include + +//// end generated include + +/** Implementing frmSSLCertificateADT */ +class frmSSLCertificate : public frmSSLCertificateADT +{ + protected: + // Handlers for frmSSLCertificateADT events. + void LoadValueData( wxListEvent& event ); + void ViewCertificate( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + void CheckCertificate( wxTreeEvent& event ); + public: + void SetupCerts(SSLCertCollection SSLCertInc); + void StartCertFrom(int StartFromInc); + /** Constructor */ + frmSSLCertificate( wxWindow* parent ); + private: + int StartFrom = 0; + SSLCertCollection SSLCertData; + std::map GetSubjectData(wxString SubjectData); + class SSLCertItemData : public wxTreeItemData + { + + protected: + int SSLCertID; + public: + SSLCertItemData(int SSLCertIDInc){ SSLCertID = SSLCertIDInc; }; + int GetCertID(){ return SSLCertID; }; + ~SSLCertItemData(){}; + + + }; + //// end generated class members + +}; + +#endif // __frmSSLCertificate__ diff --git a/source/frmSearch.cpp b/source/frmSearch.cpp new file mode 100644 index 0000000..50d8b5c --- /dev/null +++ b/source/frmSearch.cpp @@ -0,0 +1,1668 @@ +#include "frmSearch.h" +#include "frmMain.h" +#include "search/XABSearchPanel.h" +#include "search/frmSearchAccounts.h" +#include "common/preferences.h" +#include "common/dirs.h" +#include "vcard/vcard.h" + +#include +/*#include +#include +#include */ +#include +#include + +DEFINE_EVENT_TYPE(SE_ADDSEARCHSETTING); +DEFINE_EVENT_TYPE(SE_REMOVESEARCHSETTING); +DEFINE_EVENT_TYPE(SE_RELOADACCOUNTS); +DEFINE_EVENT_TYPE(SE_ADDRESULT); +DEFINE_EVENT_TYPE(SE_SBUPDATE); +DEFINE_EVENT_TYPE(SE_SEARCHFINISHED); +DEFINE_EVENT_TYPE(SE_UPDATERESULT); +DEFINE_EVENT_TYPE(SE_DELETERESULT); + +BEGIN_EVENT_TABLE(frmSearch, wxFrame) + EVT_COMMAND(wxID_ANY, SE_ADDSEARCHSETTING, frmSearch::AddSearchSetting) + EVT_COMMAND(wxID_ANY, SE_REMOVESEARCHSETTING, frmSearch::RemoveSearchSetting) + EVT_COMMAND(wxID_ANY, SE_RELOADACCOUNTS, frmSearch::ReloadAccountList) + EVT_COMMAND(wxID_ANY, SE_ADDRESULT, frmSearch::AddResult) + EVT_COMMAND(wxID_ANY, SE_SBUPDATE, frmSearch::SearchBarUpdate) + EVT_COMMAND(wxID_ANY, SE_SEARCHFINISHED, frmSearch::SearchFinished) + EVT_COMMAND(wxID_ANY, SE_UPDATERESULT, frmSearch::UpdateResult) + EVT_COMMAND(wxID_ANY, SE_DELETERESULT, frmSearch::DeleteResult) +END_EVENT_TABLE() + +//namespace boostfs = boost::filesystem; + +frmSearch::frmSearch( wxWindow* parent ) +: +frmSearchADT( parent ) +{ + + XABSearchPanel *InitPanel = new XABSearchPanel( tabSearch ); + InitPanel->EnableButtons(TRUE, FALSE); + InitPanel->SetupPointers(this); + InitPanel->SetupInteger(ScrollGen); + szrSearch->Add(InitPanel, 1, wxEXPAND, 0); + szrSearch->Fit(tabSearch); + SearchFrames.insert(std::make_pair(ScrollGen, InitPanel)); + ScrollGen++; + + // Get the list of accounts and mark them as true. + + wxString preffilename = GetUserPrefDir(); + + XABPreferences preferences(preffilename); + + wxString AccDir; + wxString AccDirFull; + wxString AccDirFullSfx; + + for (int i = 0; i < preferences.accounts.GetCount(); i++){ + AccDir = preferences.accounts.GetAccountDirectory(i); + AccDirFull = preferences.accounts.GetAccountDirectory(i); + AccDirFull.Trim(); + AccDirFull.Append(wxT(".")); + AccDirFullSfx.Append(preferences.accounts.GetAccountType(i)); + AccDirFullSfx.LowerCase(); + AccDirFullSfx.Trim(); + AccDirFull.Append(AccDirFullSfx); + SearchAccountsPaths.insert(std::make_pair(AccDir, AccDirFull)); + SearchAccounts.insert(std::make_pair(AccDir, TRUE)); + SearchAccountsNames.insert(std::make_pair(AccDir, + preferences.accounts.GetAccountName(i))); + AccDirFull.clear(); + AccDirFullSfx.clear(); + AccDir.clear(); + } + + // Setup the columns. + + wxListItem item; + item.SetId(0); + item.SetText(_("Name")); + item.SetWidth(228); + + lstResults->InsertColumn(0, item); + + item.SetId(1); + item.SetText(_("Nickname")); + item.SetWidth(128); + + lstResults->InsertColumn(1, item); + + item.SetId(2); + item.SetText(_("Account")); + item.SetWidth(128); + + lstResults->InsertColumn(2, item); + +} + +void frmSearch::SelectAccounts( wxCommandEvent& event ) +{ + + // Create the form and display as modal. + + frmSearchAccounts *frameSAccount = new frmSearchAccounts ( this ); + frameSAccount->LoadSearchAccounts(&SearchAccounts, &SearchAccountsNames); + frameSAccount->ShowModal(); + delete frameSAccount; + frameSAccount = NULL; + +} + +void frmSearch::SearchContactsThread(){ + + // Go through each account and find contacts based on the + // matched settings. + + std::map::iterator SAiter; + std::map::iterator SAPiter; + int intResultFound = 0; + + for (std::map::iterator SALiter = SearchAccountsNames.begin(); + SALiter != SearchAccountsNames.end(); + SALiter++){ + + // Double check that we are searching in this account. + // If not, skip to the next one. + + SAiter = SearchAccounts.find(SALiter->first); + SAPiter = SearchAccountsPaths.find(SAiter->first); + + + if (SAiter->second == FALSE){ + + // Not looking in this account. Go to next account. + + continue; + + } + + wxCommandEvent sbupdate (SE_SBUPDATE); + + wxString *SBData = new wxString; + *SBData = _("Searching ") + SALiter->second + _("..."); + + sbupdate.SetClientData(SBData); + wxPostEvent(this, sbupdate); + + if (StopMode == FALSE){ + + wxCommandEvent sbstop (SE_SBUPDATE); + + wxString *SBStopStr = new wxString; + *SBStopStr = _("Search stopped."); + + sbstop.SetClientData(SBStopStr); + wxPostEvent(this, sbstop); + return; + + } + + // Get the list of contact files and process each + // one of them. + + wxString AccountDir = GetAccountDir(SAPiter->second, FALSE); + + //boostfs::path vcarddir(AccountDir.c_str()); + //boostfs::directory_iterator dir_end; + + //boostfs::path vcardfilename; + wxString vcardfilenamewxs; + wxStringTokenizer vcardfileline; + //std::string l; + wxString lwxs; + wxString setname, setvalue; + long ContactIndex = 1; + long ContactSeekPoint = 0; + wxString vCardFilename; + wxString vCardFilenameFull; + + //if (boostfs::exists(vcarddir)){ + if (wxDirExists(AccountDir)){ + + wxDir vcardaccdir(AccountDir); + + bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES); + while(ProcFiles){ + //for (boostfs::directory_iterator vcarddir_iter(vcarddir); + // vcarddir_iter != dir_end ; ++vcarddir_iter){ + + if (StopMode == FALSE){ + + wxCommandEvent sbstop(SE_SBUPDATE); + + wxString *SBStopStr = new wxString; + *SBStopStr = _("Search stopped."); + + sbstop.SetClientData(SBStopStr); + wxPostEvent(this, sbstop); + return; + + } + + if (vCardFilename.Right(4) == wxT(".vcf") || + vCardFilename.Right(4) == wxT(".VCF") || + vCardFilename.Right(5) == wxT(".vcard") || + vCardFilename.Right(5) == wxT(".VCARD")){ + + vCard Person; + vCardFilenameFull.Append(AccountDir); + vCardFilenameFull.Append(vCardFilename); + + + Person.LoadFile(vCardFilenameFull); + + /*if (boostfs::path(vcarddir_iter->path()).extension() == ".vcf" || + boostfs::path(vcarddir_iter->path()).extension() == ".VCF" || + boostfs::path(vcarddir_iter->path()).extension() == ".vcard" || + boostfs::path(vcarddir_iter->path()).extension() == ".VCARD"){*/ + + vcardfilenamewxs = vCardFilenameFull; + + /*vCard Person; + std::fstream vcardfile; + + vcardfilename = boostfs::path(vcarddir_iter->path()).filename(); + vcardfilenamewxs.Append(AccountDir); + vcardfilenamewxs.Append(wxString::FromUTF8(vcardfilename.c_str())); + + // Open the vCard file up and get the setting names and values from the + // file. + + vcardfile.open(vcardfilenamewxs.mb_str(), std::ios::in); + + while(getline(vcardfile, l)){ + + lwxs.Clear(); + setname.Clear(); + setvalue.Clear(); + lwxs.Append(wxString::FromUTF8(l.c_str())); + vcardfileline.SetString(lwxs, wxT(":")); + setname = vcardfileline.GetNextToken(); + setvalue = vcardfileline.GetString(); + + Person.Add(setname, setvalue, TRUE); + + } + + vcardfile.close();*/ + + // Check if file has version 4.0, first name (FN) + // begin and end vCard portions. + + // Don't search unless these conditions have been met. + + if (Person.MeetBaseSpecification()){ + + // Go through each of the search settings and check + // if they match with contact details. + + // If it matches then add to the search results. + + int SelOpt = 0; + bool chkOpt = FALSE; + wxString StrOpt; + int StrOptLen = 0; + ArrayvCardOutData ArrayData; + ArrayvCardOutData NicknameArrayData; + vCardName NameArray = Person.GetName(); + wxString ContactFinalNickname; + NicknameArrayData = Person.GetByPartial(wxT("NICKNAME")); + + if (NicknameArrayData.PropCount != 0){ + ContactFinalNickname = NicknameArrayData.PropValues[0]; + } + + for (std::map::iterator siter = SearchFrames.begin(); + siter != SearchFrames.end(); siter++){ + + // Get the settings from the form. + + XABSearchPanel *XABSPPtr = static_cast(siter->second); + + // Get Selected Option and Setting. + + SelOpt = XABSPPtr->GetSelectionOption(); + + if (SelOpt < 12){ + + StrOpt = XABSPPtr->GetStringSetting(); + StrOptLen = StrOpt.Len(); + + if (SelOpt == 0 || SelOpt == 4 || SelOpt == 8){ + + // Matching string that beings with... + + // Double check the std::map inserts for each section. + + if (SelOpt == 0){ + + // Get the forename from the first N. + + if (NameArray.Forename.Mid(0, StrOptLen) == StrOpt){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 4){ + + if (NameArray.Surname.Mid(0, StrOptLen) == StrOpt){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 8){ + + wxString NicknameData; + + for (int i = 0; i < NicknameArrayData.PropCount; i++){ + + NicknameData = NicknameArrayData.PropValues[i]; + + if (NicknameData.Mid(0, StrOptLen) == StrOpt){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + break; + + } + + } + + } + + } else if (SelOpt == 1 || SelOpt == 5 || SelOpt == 9){ + + // Matching string that ends with... + + if (SelOpt == 1){ + + // Check the forename. + + if (NameArray.Forename.Right(StrOptLen) == StrOpt){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 5){ + + if (NameArray.Surname.Right(StrOptLen) == StrOpt){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 9){ + + wxString NicknameData; + + for (int i = 0; i < NicknameArrayData.PropCount; i++){ + + NicknameData = NicknameArrayData.PropValues[i]; + NicknameData.Trim(); + + if (NicknameData.Right(StrOptLen) == StrOpt){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + break; + + } + + } + + } + + } else if (SelOpt == 2 || SelOpt == 6 || SelOpt == 10){ + + // Matching string that contains... + + if (SelOpt == 2){ + + if (NameArray.Forename.Find(StrOpt) != wxNOT_FOUND){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 6){ + + if (NameArray.Surname.Find(StrOpt) != wxNOT_FOUND){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 10){ + + wxString NicknameData; + + for (int i = 0; i < NicknameArrayData.PropCount; i++){ + + NicknameData = NicknameArrayData.PropValues[i]; + NicknameData.Trim(); + + if (NicknameData.Find(StrOpt) != wxNOT_FOUND){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + break; + + } + + } + + } + + } else if (SelOpt == 3 || SelOpt == 7 || SelOpt == 11){ + + // Matching String that doesn't contain... + + if (SelOpt == 3){ + + // Process the nickname data. + + if (NameArray.Forename.Find(StrOpt) == wxNOT_FOUND){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 7){ + + if (!NameArray.Surname.Find(StrOpt) == wxNOT_FOUND){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 11){ + + wxString NicknameData; + + for (int i = 0; i < NicknameArrayData.PropCount; i++){ + + NicknameData = NicknameArrayData.PropValues[i]; + NicknameData.Trim(); + + if (NicknameData.Find(StrOpt) == wxNOT_FOUND){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + break; + + } + + } + + } + + } + + } else { + + chkOpt = XABSPPtr->GetCheckboxSetting(); + + if (SelOpt == 12){ + + // Search should check if it has a photo or not. + + ArrayData = Person.GetByPartial(wxT("PHOTO")); + + if ((ArrayData.PropCount >= 1 && + chkOpt == TRUE) || + (ArrayData.PropCount == 0 && + chkOpt == FALSE)){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 13){ + + // Search should check if it has a logo or not. + + ArrayData = Person.GetByPartial(wxT("LOGO")); + + if ((ArrayData.PropCount >= 1 && + chkOpt == TRUE) || + (ArrayData.PropCount == 0 && + chkOpt == FALSE)){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } else if (SelOpt == 14){ + + // Search should check if it has sound or not. + + ArrayData = Person.GetByPartial(wxT("SOUND")); + + if ((ArrayData.PropCount >= 1 && + chkOpt == TRUE) || + (ArrayData.PropCount == 0 && + chkOpt == FALSE)){ + + if (CheckDuplicate(vcardfilenamewxs, + SAPiter->second, + &SearchResultAccount, + &SearchResultFilename) == TRUE){ + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + continue; + + } + + SRNotif *sradd = new SRNotif; + + sradd->ContactName = NameArray; + sradd->ContactNickname = ContactFinalNickname; + sradd->ContactAccount = SAPiter->second; + sradd->ContactAccountName = SALiter->second; + sradd->ContactFullFilename = vcardfilenamewxs; + sradd->SearchResultID = intResultFound; + + SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount)); + SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename)); + + intResultFound++; + + wxCommandEvent sraddenv(SE_ADDRESULT); + sraddenv.SetClientData(sradd); + wxPostEvent(this, sraddenv); + + } + + } + + } + + SelOpt = 0; + chkOpt = FALSE; + StrOpt.Clear(); + StrOptLen = 0; + ArrayData.PropData.Clear(); + ArrayData.PropValues.Clear(); + ArrayData.PropCount = 0; + + } + + } else { + + } + + } + + vCardFilename.Clear(); + vCardFilenameFull.Clear(); + ProcFiles = vcardaccdir.GetNext(&vCardFilename); + + } + + } else { + + } + + } + + // Finished searching... clear up. + + wxCommandEvent sbfinstr (SE_SBUPDATE); + + wxString *SBFinish = new wxString; + + if (intResultFound == 0){ + + *SBFinish = _("No contacts found."); + + } else if (intResultFound == 1){ + + *SBFinish = _("1 contact found."); + + } else { + + *SBFinish = wxString::Format(wxT("%i"), intResultFound) + _(" contacts found."); + + } + + sbfinstr.SetClientData(SBFinish); + wxPostEvent(this, sbfinstr); + + wxCommandEvent sbfinish (SE_SEARCHFINISHED); + wxPostEvent(this, sbfinish); + +} + +void frmSearch::SearchContacts( wxCommandEvent& event ) +{ + + // Change the button to stop. + + if (StopMode == FALSE){ + + // Clear the list of search results. + + lstResults->DeleteAllItems(); + SearchResultAccount.clear(); + SearchResultFilename.clear(); + + // Button clicked on as 'Search'. + + DisableAllSearchSettings(TRUE); + StopMode = TRUE; + btnSearch->SetLabel(_("Stop")); + + // Spawn a thread so that searching can proceed + // without blocking the GUI (and allow the + // search to stop when needed). + + std::thread SearchThread(&frmSearch::SearchContactsThread, this); + SearchThread.detach(); + + } else { + + // Button clicked on as 'Stop'. + + StopMode = FALSE; + btnSearch->SetLabel(_("Search")); + DisableAllSearchSettings(FALSE); + + } + +} + +void frmSearch::ResetContacts( wxCommandEvent& event ) +{ + + // Clear all the search settings. + + for (std::map::iterator iter = SearchFrames.begin(); + iter != SearchFrames.end(); ++iter){ + + XABSearchPanel *XABSPPtr; + + XABSPPtr = static_cast(iter->second); + szrSearch->Detach(XABSPPtr); + + // Remove the frame from the memory and the list. + + delete XABSPPtr; + XABSPPtr = NULL; + + SearchFrames.erase(iter->first); + + } + + // Clear the list of search results. + + lstResults->DeleteAllItems(); + + // Clear the account settings. + + for (std::map::iterator iter = SearchAccounts.begin(); + iter != SearchAccounts.end(); iter++){ + + iter->second = TRUE; + + } + + // Add a search settings with the default things. + + ScrollGen = 0; + + XABSearchPanel *NewPanel = new XABSearchPanel( tabSearch ); + NewPanel->EnableButtons(TRUE, FALSE); + NewPanel->SetupPointers(this); + NewPanel->SetupInteger(ScrollGen); + szrSearch->Add(NewPanel, 1, wxEXPAND, 0); + szrSearch->Fit(tabSearch); + SearchFrames.insert(std::make_pair(ScrollGen, NewPanel)); + ScrollGen++; + +} + +void frmSearch::AddSearchSetting( wxCommandEvent& event ) +{ + + // Add a search setting frame to the list. + + XABSearchPanel *NewPanel = new XABSearchPanel( tabSearch ); + NewPanel->EnableButtons(TRUE, TRUE); + NewPanel->SetupPointers(this); + NewPanel->SetupInteger(ScrollGen); + szrSearch->Add(NewPanel, 1, wxEXPAND|wxGROW, 5); + //szrSearch->Fit(tabSearch); + szrSearch->FitInside(tabSearch); + szrSearch->Layout(); + szrSearch->RecalcSizes(); + tabSearch->Layout(); + SearchFrames.insert(std::make_pair(ScrollGen, NewPanel)); + ScrollGen++; + + // Check if number of search settings is 15 (or over). + // If it is, disable the option of adding extra settings + // for all frames until one is removed. + + XABSearchPanel *XABSPPtr; + + if (SearchFrames.size() >= 15){ + + for (std::map::iterator iter = SearchFrames.begin(); + iter != SearchFrames.end(); ++iter){ + + XABSPPtr = static_cast(iter->second); + + XABSPPtr->EnableButtons(FALSE, TRUE); + + } + + } else if (SearchFrames.size() >= 2){ + + for (std::map::iterator iter = SearchFrames.begin(); + iter != SearchFrames.end(); ++iter){ + + XABSPPtr = static_cast(iter->second); + + XABSPPtr->EnableButtons(TRUE, TRUE); + + } + + } + + //tabSearch->SetScrollbar(wxVERTICAL, 32768, 25, 32768, false); + tabSearch->Update(); + //tabSearch->ScrollToLine(tabSearch->GetLineCount()); + +} + +void frmSearch::RemoveSearchSetting( wxCommandEvent& event ) +{ + + // Get the integer from the event. + + std::map::iterator iter; + iter = SearchFrames.find(event.GetInt()); + + // Remove a search setting frame from the list. + + XABSearchPanel *XABSPPtr; + XABSPPtr = static_cast(iter->second); + + szrSearch->Detach(XABSPPtr); + + // Remove the frame from the memory and the list. + + SearchFrames.erase(event.GetInt()); + + delete XABSPPtr; + XABSPPtr = NULL; + + //szrSearch->Fit(tabSearch); + + if (SearchFrames.size() < 15 && SearchFrames.size() > 1){ + + for (std::map::iterator iter = SearchFrames.begin(); + iter != SearchFrames.end(); ++iter){ + + XABSPPtr = static_cast(iter->second); + + XABSPPtr->EnableButtons(TRUE, TRUE); + + } + + } else if (SearchFrames.size() == 1){ + + for (std::map::iterator iter = SearchFrames.begin(); + iter != SearchFrames.end(); ++iter){ + + XABSPPtr = static_cast(iter->second); + + XABSPPtr->EnableButtons(TRUE, FALSE); + + } + + } + + szrSearch->FitInside(tabSearch); + szrSearch->Layout(); + szrSearch->RecalcSizes(); + tabSearch->Layout(); + +} + +void frmSearch::ReloadAccountList( wxCommandEvent& event ){ + +} + +void frmSearch::AddResult( wxCommandEvent& event ){ + + SRNotif *srnotif = (SRNotif*)event.GetClientData(); + + // Process Data and add to the list of results. + + wxListItem item; + + // Setup the contact name. + + wxString ContactNameFinal; + + if (!srnotif->ContactName.Title.IsEmpty()){ + + ContactNameFinal.append(srnotif->ContactName.Title); + ContactNameFinal.Trim(); + ContactNameFinal.append(wxT(" ")); + + } + + if (!srnotif->ContactName.Forename.IsEmpty()){ + + ContactNameFinal.append(srnotif->ContactName.Forename); + ContactNameFinal.Trim(); + ContactNameFinal.append(wxT(" ")); + + } + + if (!srnotif->ContactName.Surname.IsEmpty()){ + + ContactNameFinal.append(srnotif->ContactName.Surname); + ContactNameFinal.Trim(); + ContactNameFinal.append(wxT(" ")); + + } + + if (!srnotif->ContactName.Suffix.IsEmpty()){ + + ContactNameFinal.append(srnotif->ContactName.Suffix); + ContactNameFinal.Trim(); + + } + + item.SetId(0); + item.SetText(ContactNameFinal); + item.SetData(srnotif->SearchResultID); + + long ListCtrlIndex = lstResults->InsertItem(item); + + //SearchResultAccount.insert(std::make_pair(srnotif->SearchResultID, srnotif->ContactAccount)); + //SearchResultFilename.insert(std::make_pair(srnotif->SearchResultID, srnotif->ContactFullFilename)); + + srnotif->ContactNickname.Trim(); + + lstResults->SetItem(ListCtrlIndex, 1, srnotif->ContactNickname); + lstResults->SetItem(ListCtrlIndex, 2, srnotif->ContactAccountName); + + delete srnotif; + srnotif = NULL; + +} + +void frmSearch::SearchBarUpdate( wxCommandEvent& event ){ + + wxString *SBData = (wxString*)event.GetClientData(); + + stbBottom->SetStatusText(*SBData, 0); + + delete SBData; + SBData = NULL; + +} + +void frmSearch::SearchFinished( wxCommandEvent& event ){ + + StopMode = FALSE; + btnSearch->SetLabel(_("Search")); + DisableAllSearchSettings(FALSE); + +} + +void frmSearch::DisableAllSearchSettings(bool Enable){ + + for (std::map::iterator siter = SearchFrames.begin(); + siter != SearchFrames.end(); siter++){ + + XABSearchPanel *XABSPPtr = static_cast(siter->second); + + if (Enable == FALSE){ + + wxCommandEvent enboxes(XABSP_ENABLECONTROLS); + wxPostEvent(XABSPPtr, enboxes); + + } else if (Enable == TRUE){ + + wxCommandEvent disboxes(XABSP_DISABLECONTROLS); + wxPostEvent(XABSPPtr, disboxes); + + } + + } + +} + +void frmSearch::OpenContact( wxCommandEvent& event ){ + + // Check if a contact has been selected. + + long intSelected = -1; + int intSelectedData = 0; + long intContactSeekNum = -1; + + intSelected = lstResults->GetNextItem(intSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (intSelected == -1){ + return; + } + + intContactSeekNum = lstResults->GetItemData(intSelected); + + UCNotif *uc = new UCNotif; + + uc->ContactAccount = SearchResultAccount[intContactSeekNum]; + uc->ContactFilename = SearchResultFilename[intContactSeekNum]; + + wxCommandEvent oc(CE_OPENCONTACT); + oc.SetClientData(uc); + wxPostEvent(this->GetParent(), oc); + +} + +void frmSearch::EditContact( wxCommandEvent& event ){ + + // Check if a contact has been selected. + + long intSelected = -1; + int intSelectedData = 0; + long intContactSeekNum = -1; + + intSelected = lstResults->GetNextItem(intSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (intSelected == -1){ + return; + } + + intContactSeekNum = lstResults->GetItemData(intSelected); + + UCNotif *uc = new UCNotif; + + uc->ContactAccount = SearchResultAccount[intContactSeekNum]; + uc->ContactFilename = SearchResultFilename[intContactSeekNum]; + + wxCommandEvent ec(CE_EDITCONTACT); + ec.SetClientData(uc); + ec.SetInt(1); + wxPostEvent(this->GetParent(), ec); + +} + +void frmSearch::RevealContact( wxCommandEvent& event ){ + + // Check if a contact has been selected. + + long intSelected = -1; + int intSelectedData = 0; + long intContactSeekNum = -1; + + intSelected = lstResults->GetNextItem(intSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + + if (intSelected == -1){ + return; + } + + intContactSeekNum = lstResults->GetItemData(intSelected); + + UCNotif *uc = new UCNotif; + + uc->ContactAccount = SearchResultAccount[intContactSeekNum]; + uc->ContactFilename = SearchResultFilename[intContactSeekNum]; + + wxCommandEvent rc(CE_REVEALCONTACT); + rc.SetClientData(uc); + rc.SetInt(1); + wxPostEvent(this->GetParent(), rc); + +} + +void frmSearch::CloseWindow( wxCloseEvent& event ){ + + // Hide the window so users don't panic + // whilst clearing up. + + this->Hide(); + + // Clear up. + + for (std::map::iterator iter = SearchFrames.begin(); + iter != SearchFrames.end(); ++iter){ + + XABSearchPanel *XABSPPtr; + + XABSPPtr = static_cast(iter->second); + szrSearch->Detach(XABSPPtr); + + // Remove the frame from the memory and the list. + + delete XABSPPtr; + XABSPPtr = NULL; + + } + + SearchFrames.clear(); + + // Close window. + + WindowData *WData = new WindowData; + + WData->DataType = 2; + WData->WindowPointer = this; + WData->WindowID = SearchUID; + + wxCommandEvent delevent(WINDOW_CLOSE); + delevent.SetClientData(WData); + wxPostEvent(GetParent(), delevent); + + wxCommandEvent rs(CE_REMOVESEARCH); + wxPostEvent(this, rs); + + WData = NULL; + + this->Destroy(); + +} + +void frmSearch::CloseWindow( wxCommandEvent& event ){ + + this->Close(); + +} + +void frmSearch::UpdateResult( wxCommandEvent& event ){ + + UCNotif *uc = (UCNotif*)event.GetClientData(); + + long longSelected = -1; + int intSelectedData = 0; + + for (;;){ + + longSelected = lstResults->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_DONTCARE); + + if (longSelected == -1){ + + break; + + } + + // Get the filename/ID information. + + intSelectedData = lstResults->GetItemData(longSelected); + + if (uc->ContactFilename == SearchResultFilename[intSelectedData]){ + + // Process the contact name + + wxString ContactNameFinal; + + if (!uc->ContactNameArray.Title.IsEmpty()){ + + ContactNameFinal.append(uc->ContactNameArray.Title); + ContactNameFinal.Trim(); + ContactNameFinal.append(wxT(" ")); + + } + + if (!uc->ContactNameArray.Forename.IsEmpty()){ + + ContactNameFinal.append(uc->ContactNameArray.Forename); + ContactNameFinal.Trim(); + ContactNameFinal.append(wxT(" ")); + + } + + if (!uc->ContactNameArray.Surname.IsEmpty()){ + + ContactNameFinal.append(uc->ContactNameArray.Surname); + ContactNameFinal.Trim(); + ContactNameFinal.append(wxT(" ")); + + } + + if (!uc->ContactNameArray.Suffix.IsEmpty()){ + + ContactNameFinal.append(uc->ContactNameArray.Suffix); + ContactNameFinal.Trim(); + + } + + lstResults->SetItem(longSelected, 0, ContactNameFinal); + lstResults->SetItem(longSelected, 1, uc->ContactNickname); + + } + + } + + delete uc; + uc = NULL; + +} + +bool frmSearch::CheckDuplicate(wxString Filename, + wxString Account, + std::map *SRAcc, + std::map *SRFN){ + + std::map::iterator fniter; + + // Check comparison code. + + for (std::map::iterator aciter = SRAcc->begin(); + aciter != SRAcc->end(); aciter++){ + + fniter = SRFN->find(aciter->first); + + if (Filename == fniter->second && + Account == aciter->second){ + + return TRUE; + + } + + } + + return FALSE; + +} + +void frmSearch::DeleteResult(wxCommandEvent &event){ + + UCNotif *uc = (UCNotif*)event.GetClientData(); + + long longSelected = -1; + int intSelectedData = 0; + + for (;;){ + + longSelected = lstResults->GetNextItem(longSelected, + wxLIST_NEXT_ALL, + wxLIST_STATE_DONTCARE); + + if (longSelected == -1){ + + break; + + } + + // Get the filename/ID information. + + intSelectedData = lstResults->GetItemData(longSelected); + + if (uc->ContactFilename == SearchResultFilename[intSelectedData]){ + + // Delete the result from the search list and + // update the total search results. + + // Remove DeleteResultEvent and find out where the uc + // data is still being used as it crashes on delete. + + lstResults->DeleteItem(longSelected); + + // Update the number of search results. + + wxCommandEvent sbu(SE_SBUPDATE); + wxString *SBUpdate = new wxString; + + // Get the number of results. + + int intResultFound = lstResults->GetItemCount(); + + // Prepare the status bar message. + + if (intResultFound == 0){ + + *SBUpdate = _("No contacts found."); + + } else if (intResultFound == 1){ + + *SBUpdate = _("1 contact found."); + + } else { + + *SBUpdate = wxString::Format(wxT("%i"), intResultFound) + _(" contacts found."); + + } + + sbu.SetClientData(SBUpdate); + wxPostEvent(this, sbu); + + break; + + } + + } + + delete uc; + uc = NULL; + +} + +void frmSearch::SetUID(int UID){ + + SearchUID = UID; + +} \ No newline at end of file diff --git a/source/frmSearch.h b/source/frmSearch.h new file mode 100644 index 0000000..4153719 --- /dev/null +++ b/source/frmSearch.h @@ -0,0 +1,82 @@ +#ifndef __frmSearch__ +#define __frmSearch__ + +/** +@file +Subclass of frmSearchADT, which is generated by wxFormBuilder. +*/ + +#include "AppXestiaAddrBk.h" +#include "vcard/vcard.h" + +#include + + +//// end generated include + +DECLARE_EVENT_TYPE(SE_ADDSEARCHSETTING, wxID_ANY) +DECLARE_EVENT_TYPE(SE_REMOVESEARCHSETTING, wxID_ANY) +DECLARE_EVENT_TYPE(SE_RELOADACCOUNTS, wxID_ANY) +DECLARE_EVENT_TYPE(SE_ADDRESULT, wxID_ANY) +DECLARE_EVENT_TYPE(SE_SBUPDATE, wxID_ANY) +DECLARE_EVENT_TYPE(SE_SEARCHFINISHED, wxID_ANY) +DECLARE_EVENT_TYPE(SE_UPDATERESULT, wxID_ANY) +DECLARE_EVENT_TYPE(SE_DELETERESULT, wxID_ANY) + +struct SRNotif{ + vCardName ContactName; + wxString ContactNickname; + wxString ContactAccount; + wxString ContactAccountName; + wxString ContactFullFilename; + long SearchResultID; +}; + +/** Implementing frmSearchADT */ +class frmSearch : public frmSearchADT +{ + private: + std::map SearchFrames; + std::map SearchAccounts; + std::map SearchAccountsNames; + std::map SearchAccountsPaths; + std::map SearchResultAccount; + std::map SearchResultFilename; + int ScrollGen = 0; + int SearchUID = 0; + bool SearchEnabled = FALSE; + bool StopMode = FALSE; + bool CheckDuplicate(wxString Filename, + wxString Account, + std::map *SRAcc, + std::map *SRFN); + protected: + // Handlers for frmSearchADT events. + void SelectAccounts( wxCommandEvent& event ); + void SearchContacts( wxCommandEvent& event ); + void ResetContacts( wxCommandEvent& event ); + void AddSearchSetting( wxCommandEvent& event ); + void RemoveSearchSetting( wxCommandEvent& event ); + void ReloadAccountList( wxCommandEvent& event ); + void AddResult( wxCommandEvent& event ); + void SearchBarUpdate( wxCommandEvent& event ); + void SearchFinished( wxCommandEvent& event ); + void SearchContactsThread(); + void DisableAllSearchSettings(bool Enable); + void OpenContact( wxCommandEvent& event ); + void EditContact( wxCommandEvent& event ); + void RevealContact( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + void UpdateResult( wxCommandEvent& event ); + void DeleteResult( wxCommandEvent& event ); + void CloseWindow( wxCloseEvent& event ); + public: + /** Constructor */ + frmSearch( wxWindow* parent ); + void SetUID(int UID); + DECLARE_EVENT_TABLE() + //// end generated class members + +}; + +#endif // __frmSearch__ diff --git a/source/frmUpdate.cpp b/source/frmUpdate.cpp new file mode 100644 index 0000000..ded6244 --- /dev/null +++ b/source/frmUpdate.cpp @@ -0,0 +1,188 @@ +#include +#include + +#include "frmUpdate.h" +#include "version.h" + +size_t WritebackFuncUpdate(char *ptr, size_t size, size_t nmemb, wxString *stream){ + + wxString Data; + //wxString *PageInput; + Data = wxString::FromUTF8((char *)ptr); + + stream->Append(Data); + + return size * nmemb; + +} + +frmUpdate::frmUpdate( wxWindow* parent ) +: +frmUpdateADT( parent ) +{ + +} + +void frmUpdate::CloseWindow( wxCommandEvent& event ) +{ + + this->Close(); + +} + +void frmUpdate::FetchData() +{ + + // Connect to the update server and grab the + // build type information. + + CURL *conn; + conn = curl_easy_init(); + CURLcode conncode; + + wxString PageData; + wxString PageHeader; + + wxString UpdateAddress = wxT("http://update.xestia.co.uk/"); + UpdateAddress.Append(XSDAB_SOURCE); + + curl_easy_setopt(conn, CURLOPT_URL, (const char*)UpdateAddress.mb_str(wxConvUTF8)); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0); + curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY); + curl_easy_setopt(conn, CURLOPT_TIMEOUT, 3); + curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE); + curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); + curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFuncUpdate); + curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData); + curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader); + curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1); + curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1); + + conncode = (curl_easy_perform(conn)); + + // Split the data received. + + PageData.Trim(); + + wxString SupportCode = PageData.Left(1); + wxString VersionCode = PageData.Mid(1, wxString::npos); + wxString RunningVer = wxString::Format(wxT("%s"), XSDAB_VERSION); + double VersionCodeDouble; + double CurrentVerDouble; + + // Setup the running version. + + lblRunningVer->SetLabel(RunningVer); + + // Setup the build type. + + wxString BuildType = wxT(XSDAB_SOURCE); + lblBuildType->SetLabel(BuildType); + + if (conncode != CURLE_OK){ + + lblAvailableVer->SetLabel(wxT("Unable to determine.")); + curl_easy_cleanup(conn); + curl_global_cleanup(); + + lblUpdateMessage->SetLabel(wxT("An error has occurred. The error message is: ") + wxString::Format(wxT("%s"), curl_easy_strerror(conncode))); + + return; + + } + + // Cleanup connections. + + curl_easy_cleanup(conn); + curl_global_cleanup(); + + // Setup the avaiable version. + + RunningVer.ToDouble(&CurrentVerDouble); + + if (VersionCode.ToDouble(&VersionCodeDouble)){ + + lblAvailableVer->SetLabel(VersionCode); + + } else { + + lblAvailableVer->SetLabel(wxT("Unable to determine.")); + + lblUpdateMessage->SetLabel(wxT("Cannot determine the available version at this time. Please retry in a while.")); + + return; + + } + + // Set a message. + + if (BuildType == wxT("source")){ + + // Write message about getting the update + // from Xestia Gelforn. + + if (CurrentVerDouble >= VersionCodeDouble){ + + lblUpdateMessage->SetLabel(wxT("Xestia Address Book is up to date.\n\nFor a small yearly cost, prebuilt packages and support is available from Xestia PREMIUM (https://premium.xestia.co.uk).")); + + } else { + + lblUpdateMessage->SetLabel(wxT("An updated version of Xestia Address Book is available from Xestia Gelforn (https://gelforn.xestia.co.uk/).\n\nFor a small yearly cost, prebuilt packages and support is available from Xestia PREMIUM (https://premium.xestia.co.uk).")); + + } + + } else { + + btnVisitGelforn->Hide(); + + // Display message based on type returned. + + if (CurrentVerDouble >= VersionCodeDouble){ + + wxString UpdateMessage = wxT("Xestia Address Book is up to date.\n\n"); + + if (SupportCode == wxT("U")){ + + UpdateMessage.Append(wxT("An updated version of Xestia Address Book is available from Xestia PREMIUM (https://premium.xestia.co.uk) but will require your operating system to be updated.")); + + } else if (SupportCode == wxT("X")){ + + UpdateMessage.Append(wxT("Xestia Address Book is no longer supported on the operating system you are using. Please visit the Xestia PREMIUM website (https://premium.xestia.co.uk) for a list of supported operating systems.")); + + } + + lblUpdateMessage->SetLabel(UpdateMessage); + + + + } + + if (SupportCode == wxT("S")){ + + lblUpdateMessage->SetLabel(wxT("An updated version of Xestia Address Book for your system is available from Xestia PREMIUM (https://premium.xestia.co.uk)")); + + } else if (SupportCode == wxT("U")){ + + lblUpdateMessage->SetLabel(wxT("An updated version of Xestia Address Book is available from Xestia PREMIUM (https://premium.xestia.co.uk) but will require your operating system to be updated.")); + + } else if (SupportCode == wxT("X")){ + + lblUpdateMessage->SetLabel(wxT("Xestia Address Book is no longer supported on the operating system you are using. Please visit the Xestia PREMIUM website (https://premium.xestia.co.uk) for a list of supported operating systems.")); + + } + + } + +} + +void frmUpdate::VisitGelforn( wxCommandEvent &event ){ + + wxLaunchDefaultBrowser(wxT("https://gelforn.xestia.co.uk/")); + +} + +void frmUpdate::VisitPREMIUM( wxCommandEvent &event ){ + + wxLaunchDefaultBrowser(wxT("https://premium.xestia.co.uk/")); + +} \ No newline at end of file diff --git a/source/frmUpdate.h b/source/frmUpdate.h new file mode 100644 index 0000000..49faee6 --- /dev/null +++ b/source/frmUpdate.h @@ -0,0 +1,30 @@ +#ifndef __frmUpdate__ +#define __frmUpdate__ + +/** +@file +Subclass of frmUpdateADT, which is generated by wxFormBuilder. +*/ +#include +#include "AppXestiaAddrBk.h" + +//// end generated include + +/** Implementing frmUpdateADT */ +class frmUpdate : public frmUpdateADT +{ + + protected: + // Handlers for frmUpdateADT events. + void CloseWindow( wxCommandEvent& event ); + void VisitGelforn( wxCommandEvent& event ); + void VisitPREMIUM( wxCommandEvent& event ); + public: + /** Constructor */ + frmUpdate( wxWindow* parent ); + void FetchData(); + //// end generated class members + +}; + +#endif // __frmUpdate__ diff --git a/source/import/frmImportContacts.cpp b/source/import/frmImportContacts.cpp new file mode 100644 index 0000000..2c2e19e --- /dev/null +++ b/source/import/frmImportContacts.cpp @@ -0,0 +1,241 @@ +#include +#include + +#include "frmImportContacts.h" +#include "import-struct.h" +#include "../common/preferences.h" +#include "../bitmaps.h" +#include "../vcard/vcard.h" +#include "../common/dirs.h" + +frmImportContacts::frmImportContacts( wxWindow* parent ) +: +frmImportContactsADT( parent ) +{ + + // Setup the account selection control. + + AccControl->SetPopupMaxHeight(175); + AccControl->SetPopupControl(treAccounts); + + szrAccount->Insert(1, AccControl, 1, wxEXPAND, 5); + szrAccount->Layout(); + + wxMemoryInputStream astream(icons_accinet_png, sizeof(icons_accinet_png)); + wxMemoryInputStream bstream(icons_acclocal_png, sizeof(icons_acclocal_png)); + wxMemoryInputStream cstream(icons_accgroup_png, sizeof(icons_accgroup_png)); + + wxImage icons_accinet_png(astream, wxBITMAP_TYPE_PNG); + wxBitmap AccInet(icons_accinet_png, -1); + wxIcon wxIAccInet; + wxIAccInet.CopyFromBitmap(AccInet); + + wxImage icons_acclocal_png(bstream, wxBITMAP_TYPE_PNG); + wxBitmap AccNIcon(icons_acclocal_png, -1); + wxIcon wxIAccNIcon; + wxIAccNIcon.CopyFromBitmap(AccNIcon); + + wxImage icons_accgroup_png(cstream, wxBITMAP_TYPE_PNG); + wxBitmap AccGrp(icons_accgroup_png, -1); + wxIcon wxIAccGrp; + wxIAccGrp.CopyFromBitmap(AccGrp); + + AccountID = AccImgList->Add(wxIAccNIcon); + AccountNetID = AccImgList->Add(wxIAccInet); + AccountGrpID = AccImgList->Add(wxIAccGrp); + + treAccounts->AssignImageList(AccImgList); + + // Load the preferences. + + wxString preffilename = GetUserPrefDir(); + + XABPreferences preferences(preffilename); + + // Setup the main window position (if needed). + + bool SaveWindowPos = preferences.GetBoolData(wxT("SaveWindowPosition")); + bool HideLocalABs = preferences.GetBoolData(wxT("HideLocalAddressBooks")); + + if (SaveWindowPos == TRUE){ + + this->SetSize(preferences.GetMainWindowData()); + + } + + treAccounts->DeleteAllItems(); + + wxTreeItemId RootNode = treAccounts->AddRoot(wxT("Root Item")); + + /* + for (int i = (preferences.accounts.GetCount() - 1); i > 0; --i){ + treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i)); + } + */ + + wxString AccDir; + wxString AccDirFull; + wxString AccDirFullSfx; + wxString AccName; + wxString AccDirFinal; + wxTreeItemId AccountTreeId; + wxTreeItemId GroupTreeId; + int intGroupID = 0; + + for (int i = 0; i < preferences.accounts.GetCount(); i++){ + + if ((preferences.accounts.GetAccountType(i) == wxT("Local") || + preferences.accounts.GetAccountType(i) == wxT("local")) && HideLocalABs == TRUE){ + + continue; + + } + + AccDir = preferences.accounts.GetAccountDirectory(i); + AccDirFull = preferences.accounts.GetAccountDirectory(i); + AccDirFull.Trim(); + AccDirFull.Append(wxT(".")); + AccDirFullSfx.Append(preferences.accounts.GetAccountType(i)); + AccDirFullSfx.LowerCase(); + AccDirFullSfx.Trim(); + AccDirFull.Append(AccDirFullSfx); + AccName = preferences.accounts.GetAccountName(i); + AccName.Trim(); + AccountAccDirList.insert(std::make_pair(i, AccDirFull)); + + if (preferences.accounts.GetAccountType(i) == wxT("CardDAV") || + preferences.accounts.GetAccountType(i) == wxT("carddav")){ + + AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountNetID, -1); + + } else { + + AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountID, -1); + + } + + // Clearup for next account. + + AccDir.clear(); + AccDirFull.clear(); + AccDirFullSfx.clear(); + AccDirFinal.clear(); + AccName.clear(); + + } + +} + +void frmImportContacts::GetResult() +{ + +} + +void frmImportContacts::GetContacts() +{ + +} + +void frmImportContacts::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmImportContacts::ImportContacts( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmImportContacts::SetupList(std::map* ContactDataInc) +{ + + // Go through the list and setup each contact for the list. + + int Seek = 0; + + for (std::map::iterator iter = ContactDataInc->begin(); + iter != ContactDataInc->end(); iter++){ + + ImportDataContact *Moo = &iter->second; + + vCard ContactLoad; + ContactLoad.LoadString(Moo->ContactData); + + // Alter the data on this. (FN instead of Name?) + + wxString ContactName = ContactLoad.Get(wxT("FN")); + iter->second.FriendlyName = ContactName; + + lstContacts->InsertItems(1, &ContactName, Seek); + + Seek++; + + } + + for (int i = 0; i < lstContacts->GetCount(); i++){ + + lstContacts->Check(i, TRUE); + + } + +} + +void frmImportContacts::GetResults(std::map* ContactDataInc) +{ + + int ItemIndex = 0; + + for (std::map::iterator DataIter = ContactDataInc->begin(); + DataIter != ContactDataInc->end(); ++DataIter){ + + if (lstContacts->IsChecked(ItemIndex) == FALSE){ + + DataIter->second.ContactSelected = FALSE; + + } + + ItemIndex++; + + } + +} + +wxString frmImportContacts::GetAccount() +{ + + wxString preffilename = GetUserPrefDir(); + + XABPreferences preferences(preffilename); + + wxString AccountName; + + //XABPrefAccounts prefaccounts; + + wxTreeItemIdValue cookie; + wxTreeItemId next = treAccounts->GetRootItem(); + + wxTreeItemId selectedChild = treAccounts->GetSelection(); + wxTreeItemId nextChild; + + for (int i = 0; i < preferences.accounts.GetCount(); i++){ + + if (!nextChild){ + nextChild = treAccounts->GetFirstChild(next, cookie); + } else { + nextChild = treAccounts->GetNextSibling(nextChild); + } + + if (nextChild == selectedChild){ + + std::map::iterator AccNameIter = AccountAccDirList.find(i); + + AccountName = AccNameIter->second; + + } + + + } + + return AccountName; + +} \ No newline at end of file diff --git a/source/import/frmImportContacts.h b/source/import/frmImportContacts.h new file mode 100644 index 0000000..4ee0fcf --- /dev/null +++ b/source/import/frmImportContacts.h @@ -0,0 +1,44 @@ +#ifndef __frmImportContacts__ +#define __frmImportContacts__ + +/** +@file +Subclass of frmImportContactsADT, which is generated by wxFormBuilder. +*/ + +#include + +#include "../AppXestiaAddrBk.h" +#include "../widgets/XABAccountView.h" +#include "import-struct.h" + +//// end generated include + +/** Implementing frmImportContactsADT */ +class frmImportContacts : public frmImportContactsADT +{ + private: + wxComboCtrl* AccControl = new wxComboCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCB_READONLY|wxEXPAND); + XABAccountView* treAccounts = new XABAccountView(); + std::map AccountAccDirList; + wxImageList *AccImgList = new wxImageList(16,16,true); + int AccountID; + int AccountNetID; + int AccountGrpID; + protected: + // Handlers for frmImportContactsADT events. + void CloseWindow( wxCommandEvent& event ); + void ImportContacts( wxCommandEvent& event ); + void GetResult(); + void GetContacts(); + public: + /** Constructor */ + frmImportContacts( wxWindow* parent ); + void SetupList(std::map* ContactDataInc); + void GetResults(std::map* ContactDataInc); + wxString GetAccount(); + //// end generated class members + +}; + +#endif // __frmImportContacts__ diff --git a/source/import/frmImportResults.cpp b/source/import/frmImportResults.cpp new file mode 100644 index 0000000..3dc09d4 --- /dev/null +++ b/source/import/frmImportResults.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +#include + +#include "frmImportResults.h" + +frmImportResults::frmImportResults( wxWindow* parent ) +: +frmImportResultsADT( parent ) +{ + +} + +void frmImportResults::CopyClipboard( wxCommandEvent& event ) +{ + + if (wxTheClipboard->Open()){ + + wxTextDataObject ResultData; + + ResultData.SetText(txtResults->GetValue()); + + wxTheClipboard->SetData(&ResultData); + wxTheClipboard->Close(); + + wxMessageBox(_("The results have been copied to the clipboard."), _("Results copied to clipboard")); + + } else { + + wxMessageBox(_("The results have not been copied to the clipboard due to an error."), _("Results not copied to clipboard")); + + } + +} + +void frmImportResults::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} + +void frmImportResults::LoadData(std::map *ResultDataInc) +{ + + wxString ResultDataText; + + for (std::map::iterator iter = ResultDataInc->begin(); + iter != ResultDataInc->end(); iter++){ + + ResultDataText.Append(iter->second + wxT("\n")); + + } + +} \ No newline at end of file diff --git a/source/import/frmImportResults.h b/source/import/frmImportResults.h new file mode 100644 index 0000000..aa7bbab --- /dev/null +++ b/source/import/frmImportResults.h @@ -0,0 +1,28 @@ +#ifndef __frmImportResults__ +#define __frmImportResults__ + +/** +@file +Subclass of frmImportResultsADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" + +//// end generated include + +/** Implementing frmImportResultsADT */ +class frmImportResults : public frmImportResultsADT +{ + protected: + // Handlers for frmImportResultsADT events. + void CopyClipboard( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmImportResults( wxWindow* parent ); + void LoadData(std::map *ResultDataInc); + //// end generated class members + +}; + +#endif // __frmImportResults__ diff --git a/source/import/import-struct.h b/source/import/import-struct.h new file mode 100644 index 0000000..b35b335 --- /dev/null +++ b/source/import/import-struct.h @@ -0,0 +1,15 @@ +#include + +#ifndef IMPORT_STRUCT_H +#define IMPORT_STRUCT_H + +struct ImportDataContact{ + wxString Filename; + int FilenameIndex; + bool ContactSelected = TRUE; + wxString ContactData; + wxString UIDValue; + wxString FriendlyName; +}; + +#endif \ No newline at end of file diff --git a/source/import/import-vcard3.cpp b/source/import/import-vcard3.cpp new file mode 100644 index 0000000..0151004 --- /dev/null +++ b/source/import/import-vcard3.cpp @@ -0,0 +1,65 @@ +#include +#include + +#include "../vcard/vcard.h" +#include "../vcard/vcard34conv.h" +#include "import-struct.h" + +std::map ImportVCard3(wxArrayString *FileListInc){ + + std::map FinalData; + + // Go through each of the file names, load them up and collect the + // contact information. + + std::map* CardData; + + for (int i = 0; i < FileListInc->GetCount(); i++){ + + vCard ContactData; + + ContactData.LoadFile(FileListInc->Item(i)); + + CardData = ContactData.GetAllCards(); + int FileIndex = 0; + + for(std::map::iterator iter = CardData->begin(); + iter != CardData->end(); + iter++){ + + // Check if contact really is a vCard 4.0 contact. + + vCard ContactCheck; + ContactCheck.LoadString(iter->second); + + wxString ContactVer = ContactCheck.Get(wxT("VERSION")); + + if (ContactVer != wxT("3.0")){ + + continue; + + } + + wxString ContactDatav3; + vCard ContactDatav4; + + vCard34Conv vCardConvObj; + vCardConvObj.ConvertToV4(&ContactDatav3, &ContactDatav4); + + // Convert data from vCard 3.0 to vCard 4.0 + + ImportDataContact SelectedContact; + SelectedContact.Filename = FileListInc->Item(i); + SelectedContact.FilenameIndex = FileIndex; + SelectedContact.ContactData = ContactDatav4.WriteString(); + SelectedContact.UIDValue = ContactDatav4.Get(wxT("UID")); + + FileIndex++; + + } + + } + + return FinalData; + +} diff --git a/source/import/import-vcard3.h b/source/import/import-vcard3.h new file mode 100644 index 0000000..8106092 --- /dev/null +++ b/source/import/import-vcard3.h @@ -0,0 +1,11 @@ +#include +#include + +#include "import-struct.h" + +#ifndef IMPORT_VCARD3_H +#define IMPORT_VCARD3_H + +std::map ImportVCard3(wxArrayString *FileListInc); + +#endif diff --git a/source/import/import-vcard4.cpp b/source/import/import-vcard4.cpp new file mode 100644 index 0000000..fc28b6f --- /dev/null +++ b/source/import/import-vcard4.cpp @@ -0,0 +1,61 @@ +#include +#include + +#include "../vcard/vcard.h" +#include "import-struct.h" + +std::map ImportVCard4(wxArrayString *FileListInc){ + + std::map FinalData; + + // Go through each of the file names, load them up and collect the + // contact information. + + std::map* CardData; + + for (int i = 0; i < FileListInc->GetCount(); i++){ + + vCard ContactData; + + ContactData.LoadFile(FileListInc->Item(i)); + + CardData = ContactData.GetAllCards(); + int FileIndex = 0; + + for(std::map::iterator iter = CardData->begin(); + iter != CardData->end(); + iter++){ + + // Check if contact really is a vCard 4.0 contact. + + vCard ContactCheck; + ContactCheck.LoadString(iter->second); + + wxString ContactVer = ContactCheck.Get(wxT("VERSION")); + + if (ContactVer != wxT("4.0")){ + + continue; + + } + + // If contact is vCard 4.0 then continue otherwise + // go to the next contact. + + ImportDataContact SelectedContact; + SelectedContact.Filename = FileListInc->Item(i); + SelectedContact.FilenameIndex = FileIndex; + SelectedContact.ContactData = iter->second; + SelectedContact.UIDValue = ContactCheck.Get(wxT("UID")); + + FinalData.insert(std::make_pair(FileIndex, SelectedContact)); + + FileIndex++; + + } + + } + + return FinalData; + +} diff --git a/source/import/import-vcard4.h b/source/import/import-vcard4.h new file mode 100644 index 0000000..c6f0abb --- /dev/null +++ b/source/import/import-vcard4.h @@ -0,0 +1,12 @@ +#include +#include +#include + +#include "import.h" +#include "import-struct.h" + +#ifndef IMPORT_VCARD4_H +#define IMPORT_VCARD4_H + +std::map ImportVCard4(wxArrayString *FileListInc); +#endif diff --git a/source/import/import.cpp b/source/import/import.cpp new file mode 100644 index 0000000..416a39f --- /dev/null +++ b/source/import/import.cpp @@ -0,0 +1,302 @@ +#include +#include +#include +#include +#include +#include + +#include "import-vcard3.h" +#include "import-vcard4.h" +#include "import-struct.h" +#include "../frmMain.h" +#include "frmImportContacts.h" +#include "frmImportResults.h" +#include "../common/uuid.h" +#include "../common/dirs.h" + +void ImportRun(frmMain *frmMainPtrInc){ + + // Bring up a dialog selecting one or multiple + // files for processing based on type. + + struct ImportResultData{ + + }; + + frmMainPtrInc->PauseAllTimers(); + + wxString FileTypes; + + long ContactsExported = 0; + long ContactsCollected = 0; + int ExportType = 0; + int ExportCount = 0; + wxString FinalFilename; + wxArrayString SelectedFileList; + wxString SelectedFileDirectory; + wxString AccountName; + int ImportErrorCount = 0; + + std::map ResultData; + + FileTypes.Append(wxT("vCard 4.0 Contact(s) (*.vcf)")); + FileTypes.Append(wxT("|*.vcf|")); + FileTypes.Append(wxT("vCard 3.0 Contact(s) (*.vcf)")); + FileTypes.Append(wxT("|*.vcf")); + + // Open up the dialog to export file data. + + wxFileDialog ExportDlg(frmMainPtrInc, wxT("Import Contacts"), wxT(""), wxT(""), + FileTypes, wxFD_OPEN|wxFD_MULTIPLE); + + if (ExportDlg.ShowModal() == wxID_CANCEL){ + + frmMainPtrInc->ResumeAllTimers(); + return; + + } + + // Get the list of filenames. + + ExportDlg.GetPaths(SelectedFileList); + + // Find which data type is being used. + + ExportType = ExportDlg.GetFilterIndex(); + + std::map ContactData; + + if (ExportType == 0){ + + ContactData = ImportVCard4(&SelectedFileList); + + //ImportVCard4(DirMode, FinalFilename, FileListInc, &ExportCount); + + } + + // vCard 3.0 export + + if (ExportType == 1){ + + ContactData = ImportVCard3(&SelectedFileList); + + //ImportVCard3(DirMode, FinalFilename, FileListInc, &ExportCount); + + } + + // Check how many contacts are in the set. If zero, throw an error + // message and exit. + + if (ContactData.size() == 0){ + + wxMessageBox(_("No valid contacts within the file(s) selected."), _("Unable to import")); + + return; + + } + + // Show a form to let the user select the + // contacts needed to import and which account + // they go to. + + frmImportContacts *frmIC = new frmImportContacts(frmMainPtrInc); + + frmIC->SetupList(&ContactData); + frmIC->ShowModal(); + frmIC->GetResults(&ContactData); + AccountName = frmIC->GetAccount(); + + // Import the contacts into the selected account. + + int ImportCount = 0; + int ImportSeek = 0; + + // Setup the directory for writing into. + + wxString AccountDirFinal = GetAccountDir(AccountName, FALSE); + + wxString GeneratedFilename; + wxString OutputFilename; + wxString UIDValueFinal; + wxString UIDToken; + bool UIDFilterOK = FALSE; + int FilterCount = 0; + + GeneratedFilename.Clear(); + OutputFilename.Clear(); + + static wxString BadCharList = wxFileName::GetForbiddenChars(wxPATH_NATIVE); + wxString BadCharListFinal; + BadCharListFinal.Append(wxT("[")); + BadCharListFinal.Append(BadCharList); + BadCharListFinal.Append(wxT("]")); + + wxRegEx BadCharRex; + BadCharRex.Compile(BadCharListFinal); + + for(std::map::iterator iter = ContactData.begin(); + iter != ContactData.end(); iter++){ + + if (iter->second.ContactSelected == TRUE){ + + // Workout the file name. + // Get the UID value and check if it is empty. + // If it isn't empty, check it can be used for a valid + // filename other wise generate a file name for the purposes + // of storage. + + // Filter UID incase writing outside the + // directory is attempted. + +#if defined(__HAIKU__) + + //preffilename = wxT("noo"); + +#elif defined(__WIN32__) + + wxStringTokenizer UIDValueCheck(iter->second.UIDValue, wxT("\\")); + while (UIDValueCheck.HasMoreTokens()){ + UIDValueCheck.GetNextToken(); + FilterCount++; + } + +#else + + wxStringTokenizer UIDValueCheck(iter->second.UIDValue, wxT("/")); + while (UIDValueCheck.HasMoreTokens()){ + UIDValueCheck.GetNextToken(); + FilterCount++; + } + +#endif + + if (FilterCount == 1){ + UIDFilterOK = TRUE; + } + + if (BadCharRex.Matches(iter->second.UIDValue) && UIDFilterOK == TRUE){ + + bool NewFileExists = TRUE; + + while (NewFileExists){ + + // Generate the UID and check if it exists. + + wxString CheckFilename; + + UIDToken = GenerateUUID(); + + CheckFilename.Append(AccountDirFinal); + CheckFilename.Append(UIDToken); + CheckFilename.Append(wxT(".vcf")); + + if (!wxFileExists(CheckFilename)){ + + NewFileExists = FALSE; + + } + + } + + } else { + + UIDToken = iter->second.UIDValue; + + } + + //GenerateUUID(); + + /*if (iter->second.ContactSelected.UIDValue.IsEmpty()){ + + + + }*/ + + // Check if the file exists in the directory already. + + OutputFilename.Append(AccountDirFinal); + OutputFilename.Append(wxT("/")); + OutputFilename.Append(UIDToken); + OutputFilename.Append(wxT(".vcf")); + + if(wxFileExists(OutputFilename)){ + + // File already exists so mark as an error. + + ResultData.insert(std::make_pair(ImportSeek, wxString::Format(_("Unable to import '%s'(%s): "), iter->second.FriendlyName, UIDToken))); + ImportErrorCount++; + ImportSeek++; + GeneratedFilename.Clear(); + OutputFilename.Clear(); + UIDValueFinal.Clear(); + UIDFilterOK = FALSE; + FilterCount = 0; + continue; + + } else { + + // Write to the file. + + wxFFile OutputFile; + +#if wxABI_VERSION < 20900 + OutputFile.Open(OutputFilename, wxT("w")); +#else + OutputFile.Open(OutputFilename, wxT("w")); +#endif + + OutputFile.Write(iter->second.ContactData, wxConvAuto()); + + OutputFile.Close(); + + ResultData.insert(std::make_pair(ImportSeek, wxString::Format(_("Contact '%s'(%s) was successfully imported.")))); + + } + + // Check if there is a UID value set. If there is not a UID + // value set then generate a new one. + + ImportCount++; + + ImportSeek++; + + GeneratedFilename.Clear(); + OutputFilename.Clear(); + UIDValueFinal.Clear(); + UIDToken.Clear(); + UIDFilterOK = FALSE; + FilterCount = 0; + + } + + } + + // Check if the import error count is more than 0. If it is, then + // display the results dialog. + + frmImportResults *frmIR = new frmImportResults(frmMainPtrInc); + frmIR->LoadData(&ResultData); + frmIR->ShowModal(); + + delete frmIR; + frmIR = NULL; + + delete frmIC; + frmIC = NULL; + + // Syncronise the account which the contacts got imported to. + + wxString *AccNamePostEventPtr = new wxString; + + wxCommandEvent accevent(SYNCACCOUNT); + accevent.SetClientData(AccNamePostEventPtr); + + wxPostEvent(frmMainPtrInc, accevent); + + //wxPostEvent + + // Resume the timers. + + frmMainPtrInc->ResumeAllTimers(); + +} diff --git a/source/import/import.h b/source/import/import.h new file mode 100644 index 0000000..e459a62 --- /dev/null +++ b/source/import/import.h @@ -0,0 +1,11 @@ +#include +#include + +#include "../frmMain.h" + +#ifndef IMPORT_IMPORT_H +#define IMPORT_IMPORT_H + +void ImportRun(frmMain *frmMainPtrInc); + +#endif diff --git a/source/main.cpp b/source/main.cpp new file mode 100644 index 0000000..ed4e656 --- /dev/null +++ b/source/main.cpp @@ -0,0 +1,141 @@ +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "contacteditor/frmContactEditor.h" +#include "frmMain.h" +#include "bitmaps.h" +#include "version.h" +#include "frmActivityMgr.h" +#include "common/timers.h" +#include "common/defaults.h" + +class XestiaABApp: public wxApp +{ + virtual bool OnInit(); +}; + +IMPLEMENT_APP(XestiaABApp); + +bool XestiaABApp::OnInit() +{ + + // Check that on Win32 systems that. + +#if defined(__WIN32__) + +#include + + XCCVer XCCRequiredVer; + XCCRequiredVer.MajorVer = 1; + XCCRequiredVer.MinorVer = 0; + + XCCVer XCCRetrievedVer = GetXCCLibraryVersion(); + + if (XCCRetrievedVer < XCCRequiredVer){ + MessageBox(0, L"The version of Xestia Common Components installed is an older version not supported by this version of Xestia Address Book.\n\nPlease visit http://xestia.co.uk/commoncomponents and follow the page instructions to download the version required.", L"Older version of Xestia Common Components installed", MB_OK|MB_ICONSTOP); + this->Exit(); + } + +#endif + + static const wxCmdLineEntryDesc g_cmdLineDesc [] = + { + { wxCMD_LINE_SWITCH, wxT_2("h"), wxT_2("help"), wxTRANSLATE("Displays help on command line parameters"), + wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, + { wxCMD_LINE_OPTION, wxT_2("e"), wxT_2("edit"), wxTRANSLATE("Edit a vCard 4.0 formatted contact"), + wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, + { wxCMD_LINE_SWITCH, wxT_2("s"), wxT_2("search"), wxTRANSLATE("Display the search window instead of starting normally"), + wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL }, + { wxCMD_LINE_SWITCH, wxT_2("v"), wxT_2("version"), wxTRANSLATE("Displays version number"), + wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL }, + { wxCMD_LINE_NONE } + }; + + wxString wxSContactFilename; + wxCmdLineParser XABArgs (g_cmdLineDesc, argc, argv); + XABArgs.Parse(); + + if (XABArgs.Found(wxT("h"))){ + + return false; + + } + + if (XABArgs.Found(wxT("v"))){ + + exit(0); + + } + + wxInitAllImageHandlers(); + + if (XABArgs.Found(wxT("e"), &wxSContactFilename)){ + + // Check if the filename exists. + + //wxImage::AddHandler(new wxPNGHandler); + + wxFileName contactfile(wxSContactFilename); + + if (!contactfile.FileExists()){ + + return false; + + } + + curl_global_init(CURL_GLOBAL_ALL); + + wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png)); + wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG); + wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1); + wxIcon contacticon; + contacticon.CopyFromBitmap(contacticonbmp); + + // Get the filename of the selected contact. + + frmContactEditor *ContactEditor = new frmContactEditor( NULL ); + ContactEditor->SetupHeaders(); + ContactEditor->LoadContact(wxSContactFilename); + //ContactEditor->SetupContact(ActiveAccount); + ContactEditor->SetIcon(contacticon); + ContactEditor->Show(true); + + SetTopWindow(ContactEditor); + + return true; + + } + + // Setup default settings and accounts if they don't exist. + + SetupDirectories(); + SetupDefaultSettings(); + SetupDefaultAddressBook(); + + //wxImage::AddHandler(new wxPNGHandler); + wxMemoryInputStream istream(bigimgs_appicon48_png, sizeof(bigimgs_appicon_png)); + wxImage bigimgs_appicon48i(istream, wxBITMAP_TYPE_PNG); + wxBitmap appiconbmp(bigimgs_appicon48i, -1); + wxIcon appicon; + + appicon.CopyFromBitmap(appiconbmp); + frmMain *frame = new frmMain( NULL ); + frame->Show(true); + frmActivityMgr *frameActMgr = new frmActivityMgr ( frame ); + frame->SetupPointers(frameActMgr); + frame->SetupForm(); + frame->SetIcon(appicon); + + SetTopWindow(frame); + + return true; + +} + diff --git a/source/photo.log b/source/photo.log new file mode 100644 index 0000000..22427e9 --- /dev/null +++ b/source/photo.log @@ -0,0 +1,16 @@ +GNU gdb (GDB; openSUSE 13.2) 7.8 +Copyright (C) 2014 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. Type "show copying" +and "show warranty" for details. +This GDB was configured as "x86_64-suse-linux". +Type "show configuration" for configuration details. +For bug reporting instructions, please see: +. +Find the GDB manual and other documentation resources online at: +. +For help, type "help". +Type "apropos word" to search for commands related to "word"... +Reading symbols from ./xestiaab...done. +(gdb) ^C(gdb) ^C(gdb) quit diff --git a/source/search/XABSearchPanel.cpp b/source/search/XABSearchPanel.cpp new file mode 100644 index 0000000..d15fc36 --- /dev/null +++ b/source/search/XABSearchPanel.cpp @@ -0,0 +1,176 @@ +#include "XABSearchPanel.h" +#include "../bitmaps.h" + +#include + + + +DEFINE_EVENT_TYPE(XABSP_ENABLECONTROLS); +DEFINE_EVENT_TYPE(XABSP_DISABLECONTROLS); + +BEGIN_EVENT_TABLE(XABSearchPanel, wxPanel) + EVT_COMMAND(wxID_ANY, XABSP_ENABLECONTROLS, XABSearchPanel::EnableControls) + EVT_COMMAND(wxID_ANY, XABSP_DISABLECONTROLS, XABSearchPanel::DisableControls) +END_EVENT_TABLE() + +XABSearchPanel::XABSearchPanel( wxWindow* parent ) +: +XABSearchPanelADT( parent ) +{ + + // Setup the images for the add and delete buttons. + + wxMemoryInputStream astream(buttons_add_png, sizeof(buttons_add_png)); + wxImage buttons_add_png(astream, wxBITMAP_TYPE_PNG); + wxBitmap addbmp(buttons_add_png, -1); + + wxMemoryInputStream bstream(buttons_minus_png, sizeof(buttons_minus_png)); + wxImage buttons_minus_png(bstream, wxBITMAP_TYPE_PNG); + wxBitmap delbmp(buttons_minus_png, -1); + + btnAdd->SetBitmapLabel(addbmp); + btnDelete->SetBitmapLabel(delbmp); + + // Insert the options into the combo box. + + choOption->Append(_("Forename begins with")); + choOption->Append(_("Forename ends with")); + choOption->Append(_("Forename contains")); + choOption->Append(_("Forename doesn't contain")); + choOption->Append(_("Surname begins with")); + choOption->Append(_("Surname ends with")); + choOption->Append(_("Surname contains")); + choOption->Append(_("Surname doesn't contain")); + choOption->Append(_("Nickname begins with")); + choOption->Append(_("Nickname ends with")); + choOption->Append(_("Nickname contains")); + choOption->Append(_("Nickname doesn't contain")); + choOption->Append(_("Does/Doesn't have photo")); + choOption->Append(_("Does/Doesn't have logo")); + choOption->Append(_("Does/Doesn't have sound")); + + chkActive->Hide(); + chkActive->SetValue(FALSE); + txtSearch->Show(); + szrSSet->Layout(); + + choOption->SetSelection(0); + +} + +void XABSearchPanel::UpdateOptions( wxCommandEvent& event ) +{ + + if (choOption->GetSelection() == 12 || + choOption->GetSelection() == 13 || + choOption->GetSelection() == 14 ){ + + chkActive->Show(); + txtSearch->Hide(); + txtSearch->Clear(); + szrSSet->Layout(); + + } else { + + chkActive->Hide(); + chkActive->SetValue(FALSE); + txtSearch->Show(); + szrSSet->Layout(); + + } + +} + +void XABSearchPanel::AddSearchWidget( wxCommandEvent& event ) +{ + + frmSearch *SCHWin = static_cast(SCHWinPtr); + + wxCommandEvent eventsend(SE_ADDSEARCHSETTING); + wxPostEvent(SCHWin, eventsend); + +} + +void XABSearchPanel::RemoveSearchWidget( wxCommandEvent& event ) +{ + + frmSearch *SCHWin = static_cast(SCHWinPtr); + + wxCommandEvent eventsend(SE_REMOVESEARCHSETTING); + eventsend.SetInt(this->GetInteger()); + wxPostEvent(SCHWin, eventsend); + +} + +void XABSearchPanel::EnableButtons(bool AddButton, bool DeleteButton) +{ + + if (AddButton == TRUE){ + btnAdd->Enable(); + } else { + btnAdd->Disable(); + } + + if (DeleteButton == TRUE){ + btnDelete->Enable(); + } else { + btnDelete->Disable(); + } + +} + +void XABSearchPanel::SetupPointers(void* SCHWinPtrInc){ + + SCHWinPtr = SCHWinPtrInc; + +} + +void XABSearchPanel::SetupInteger(int IntInc){ + + SCHInt = IntInc; + +} + +int XABSearchPanel::GetInteger(){ + + return SCHInt; + +} + +void XABSearchPanel::DisableControls(wxCommandEvent &event){ + + choOption->Disable(); + chkActive->Disable(); + txtSearch->Disable(); + btnAdd->Disable(); + btnDelete->Disable(); + +} + +void XABSearchPanel::EnableControls(wxCommandEvent &event){ + + choOption->Enable(); + chkActive->Enable(); + txtSearch->Enable(); + btnAdd->Enable(); + btnDelete->Enable(); + +} + +int XABSearchPanel::GetSelectionOption(){ + + return choOption->GetSelection(); + +} + +bool XABSearchPanel::GetCheckboxSetting(){ + + return chkActive->IsChecked(); + +} + +wxString XABSearchPanel::GetStringSetting(){ + + return txtSearch->GetValue(); + +} \ No newline at end of file diff --git a/source/search/XABSearchPanel.h b/source/search/XABSearchPanel.h new file mode 100644 index 0000000..8a3f4ae --- /dev/null +++ b/source/search/XABSearchPanel.h @@ -0,0 +1,47 @@ +#ifndef __XABSearchPanel__ +#define __XABSearchPanel__ + +/** +@file +Subclass of XABSearchPanelADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" +#include "../frmSearch.h" + +//// end generated include + +DECLARE_EVENT_TYPE(XABSP_ENABLECONTROLS, wxID_ANY) +DECLARE_EVENT_TYPE(XABSP_DISABLECONTROLS, wxID_ANY) + +/** Implementing XABSearchPanelADT */ +class XABSearchPanel : public XABSearchPanelADT +{ + private: + void *SCHWinPtr; + int SCHInt; + protected: + // Handlers for XABSearchPanelADT events. + void UpdateOptions( wxCommandEvent& event ); + void AddSearchWidget( wxCommandEvent& event ); + void RemoveSearchWidget( wxCommandEvent& event ); + void DisableControls(wxCommandEvent &event); + void EnableControls(wxCommandEvent &event); + public: + /** Constructor */ + XABSearchPanel( wxWindow* parent ); + + void EnableButtons(bool AddButton, bool DeleteButton); + void SetupPointers(void* SCHWinPtrInc); + void SetupInteger(int IntInc); + int GetInteger(); + int GetSelectionOption(); + bool GetCheckboxSetting(); + wxString GetStringSetting(); + + DECLARE_EVENT_TABLE() + //// end generated class members + +}; + +#endif // __XABSearchPanel__ diff --git a/source/search/frmSearchAccounts.cpp b/source/search/frmSearchAccounts.cpp new file mode 100644 index 0000000..be4b9fe --- /dev/null +++ b/source/search/frmSearchAccounts.cpp @@ -0,0 +1,99 @@ +#include "frmSearchAccounts.h" +#include "../frmMain.h" + +frmSearchAccounts::frmSearchAccounts( wxWindow* parent ) +: +frmSearchAccountsADT( parent ) +{ + +} + +frmSearchAccounts::~frmSearchAccounts(){ + +} + +void frmSearchAccounts::LoadSearchAccounts(std::map *SearchAccounts, + std::map *SearchAccountsList) +{ + + SAPtr = SearchAccounts; + SALPtr = SearchAccountsList; + std::map::iterator SALiter; + wxString AccDir; + + // Load the search accounts into the Checklist. + + wxArrayString AccList; + + for (std::map::iterator iter = SAPtr->begin(); + iter != SAPtr->end(); ++iter){ + + SALiter = SALPtr->find(iter->first); + + AccList.Add(SALiter->second, 1); + + } + + chlAccounts->Append(AccList); + //chlAccounts->SetSelection(wxNOT_FOUND); + + // Check if each account is selected. + + for (int i = 0; i < chlAccounts->GetCount(); i++){ + + AccDir = chlAccounts->GetString(i); + + for (std::map::iterator iter = SAPtr->begin(); + iter != SAPtr->end(); ++iter){ + + SALiter = SALPtr->find(iter->first); + + if (AccDir == SALiter->second){ + + chlAccounts->Check(i, iter->second); + + } + + } + + } + +} + +void frmSearchAccounts::UpdateSelectedAccounts( wxCommandEvent& event ) +{ + + // Process each of the items in the Checklist box. + // Compare each with the ones in the std::map + // and adjust the bool value accordingly. + + wxString AccDir; + std::map::iterator SALiter; + + for (int i = 0; i < chlAccounts->GetCount(); i++){ + + AccDir = chlAccounts->GetString(i); + + for (std::map::iterator iter = SAPtr->begin(); + iter != SAPtr->end(); ++iter){ + + SALiter = SALPtr->find(iter->first); + + if (AccDir == SALiter->second){ + + iter->second = chlAccounts->IsChecked(i); + + } + + } + + } + + this->Close(); + +} + +void frmSearchAccounts::CloseWindow( wxCommandEvent& event ) +{ + this->Close(); +} diff --git a/source/search/frmSearchAccounts.h b/source/search/frmSearchAccounts.h new file mode 100644 index 0000000..76f54f0 --- /dev/null +++ b/source/search/frmSearchAccounts.h @@ -0,0 +1,34 @@ +#ifndef __frmSearchAccounts__ +#define __frmSearchAccounts__ + +/** +@file +Subclass of frmSearchAccountsADT, which is generated by wxFormBuilder. +*/ + +#include "../AppXestiaAddrBk.h" +#include + +//// end generated include + +/** Implementing frmSearchAccountsADT */ +class frmSearchAccounts : public frmSearchAccountsADT +{ + private: + std::map *SAPtr; + std::map *SALPtr; + protected: + // Handlers for frmSearchAccountsADT events. + void UpdateSelectedAccounts( wxCommandEvent& event ); + void CloseWindow( wxCommandEvent& event ); + public: + /** Constructor */ + frmSearchAccounts( wxWindow* parent ); + ~frmSearchAccounts(); + void LoadSearchAccounts(std::map *SearchAccounts, + std::map *SearchAccountsList); + //// end generated class members + +}; + +#endif // __frmSearchAccounts__ diff --git a/source/tools/bitmapcode.cpp b/source/tools/bitmapcode.cpp new file mode 100644 index 0000000..f7eecc1 --- /dev/null +++ b/source/tools/bitmapcode.cpp @@ -0,0 +1,563 @@ +//------------------------------------------------------------------- +// bitmapcode: Helper application which coverts PNG files into +// C++ code outputting binary code. +// +// This application also is a simple test if the wxWidgets & Boost +// header files and library files are there. +// +// This file is licenced under the GNU General Public License +// version 3 only. (GPLv3 only). +//------------------------------------------------------------------- + +#include +#include +#include +#include + +/*#include +#include +#include */ +#include +#include +#include +#include + +using namespace std; +//namespace boostfs = boost::filesystem; + +void CreateCPPFile(wxString dirfilename, wxString PNGFilename, int* counter) +{ +//------------------------------------------------------------------- +// CreateCPPFile: Create a CPP file from the filename given. +// +// dirfilename wxString of the directory name. +// filename wxString of the filename. +// counter Pointer to a integer counter. +//------------------------------------------------------------------- + char pngfile_char; + int pageseek = 0; + /*boostfs::path PNGFilename(filename.c_str()); + boostfs::path CPPFilename = PNGFilename; + boostfs::path CPPFilenameOnly(CPPFilename.filename()); + boostfs::path DirFilename(dirfilename.c_str()); + boostfs::path DirFilenameOnly(DirFilename.filename()); + CPPFilename.replace_extension(".cpp");*/ + wxString outname; + wxString CPPFilename; + CPPFilename = PNGFilename; + CPPFilename.RemoveLast(4); + CPPFilename.Append(wxT(".cpp")); + + wxString DirFilenameOnly; + wxString CPPFilenameOnly; + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + wxStringTokenizer CPPFilenameTokens(CPPFilename, wxT("\\")); + wxStringTokenizer DirFilenameTokens(dirfilename, wxT("\\")); + +#else + + wxStringTokenizer CPPFilenameTokens(CPPFilename, wxT("/")); + wxStringTokenizer DirFilenameTokens(dirfilename, wxT("/")); + +#endif + + while (CPPFilenameTokens.HasMoreTokens()){ + + CPPFilenameOnly = CPPFilenameTokens.GetNextToken(); + + } + + while (DirFilenameTokens.HasMoreTokens()){ + + DirFilenameOnly = DirFilenameTokens.GetNextToken(); + + } + + // Setup the PNG file reading and cpp file. + + fstream cppfile, pngfile; + pngfile.open(PNGFilename.wc_str(), ios::in | ios::binary ); + cppfile.open(CPPFilename.wc_str(), ios::out | ios::trunc ); + + outname.Append(wxString::FromUTF8(DirFilenameOnly.c_str())); + outname.Append(wxT("_")); + outname.Append(wxString::FromUTF8(CPPFilenameOnly.c_str())); + outname.MakeUpper(); + outname.RemoveLast(4); + + // Setup the inclusion guard. + + cppfile << "#include " << endl << endl; + cppfile << "#ifndef " << outname.c_str() << "_CPP" << endl; + cppfile << "#define " << outname.c_str() << "_CPP" << endl << endl; + + outname.Clear(); + outname.Append(wxString::FromUTF8(DirFilenameOnly.c_str())); + outname.Append(wxT("_")); + outname.Append(wxString::FromUTF8(CPPFilenameOnly.c_str())); + outname.RemoveLast(4); + outname.Append(wxT("_png")); + outname.MakeLower(); + + // Convert the PNG file into an unsigned char array. + + cppfile << "static unsigned char " << outname.c_str() << + "[] = {" << endl; + + while (pngfile){ + pngfile.get(pngfile_char); + cppfile << "0x"; + + if ((unsigned short)pngfile_char > 255){ + + cppfile << hex << setw(2) << setfill('0') << + ((unsigned short)pngfile_char - 65280); + + } else { + + cppfile << hex << setw(2) << setfill('0') << + (unsigned short)pngfile_char; + + } + + cppfile << ", "; + pageseek++; + + if (pageseek == 8){ + cppfile << endl; + pageseek = 0; + } + + } + + // End the file, close it and increment the counter. + + cppfile << "};" << endl << endl; + cppfile << "#endif" << endl << endl; + cppfile.close(); + + cout << "CPP\t" << CPPFilename.c_str() << endl; + + ++*counter; + +} + +void CreateHPPFileDir(wxString dirfilename, wxArrayString filelist, + int* counter) +{ +//------------------------------------------------------------------- +// CreateHPPFileDir: Create a HPP Directory with the directory +// filename and list of files in the directory +// given. +// +// dirfilename wxString of the directory name. +// filelist wxArrayString of the directory filelist. +// counter Pointer to a integer counter. +//------------------------------------------------------------------- + /* boostfs::path HPPFilename(dirfilename.c_str()); + boostfs::path CPPFile; + boostfs::path CPPFileOnly(CPPFile.filename()); + boostfs::path DirFilename(dirfilename.c_str()); + boostfs::path DirFilenameOnly(DirFilename.filename()); + HPPFilename.replace_extension(".h");*/ + fstream hppfile; + + bool fmatch = FALSE; + wxString finaldirname; + wxString HPPFilename = dirfilename.c_str(); + + wxString DirFilenameOnly; + wxString HPPFilenameOnly; + wxString CPPFilename; + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + wxStringTokenizer HPPFilenameTokens(HPPFilename, wxT("\\")); + wxStringTokenizer DirFilenameTokens(dirfilename, wxT("\\")); + +#else + + wxStringTokenizer HPPFilenameTokens(HPPFilename, wxT("/")); + wxStringTokenizer DirFilenameTokens(dirfilename, wxT("/")); + +#endif + + while (HPPFilenameTokens.HasMoreTokens()){ + + HPPFilenameOnly = HPPFilenameTokens.GetNextToken(); + + } + + while (DirFilenameTokens.HasMoreTokens()){ + + DirFilenameOnly = DirFilenameTokens.GetNextToken(); + + } + + // Make the directory filename upper case for writing to the + // header file. + + wxString CPPFileOnly; + + finaldirname.Append(wxString::FromUTF8(DirFilenameOnly.c_str())); + finaldirname.MakeUpper(); + + // Write out the header file inclusion guard. + + HPPFilename.Append(wxT(".h")); + + hppfile.open(HPPFilename.wc_str(), ios::out | ios::trunc ); + + hppfile << "#include " << endl << endl; + hppfile << "#ifndef " << finaldirname.c_str() << "_H" << endl; + hppfile << "#define " << finaldirname.c_str() << "_H" << endl << endl; + hppfile << "// List all CPP files in the directory." << endl << endl; + + // Write each CPP file into the header file. + + for (int f = 0; f < filelist.GetCount() ; f++){ + + CPPFilename = filelist[f]; + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + wxStringTokenizer CPPFilenameTokenizer(CPPFilename, wxT("\\")); + +#else + + wxStringTokenizer CPPFilenameTokenizer(CPPFilename, wxT("/")); + +#endif + + while (CPPFilenameTokenizer.HasMoreTokens()){ + + CPPFileOnly = CPPFilenameTokenizer.GetNextToken(); + + } + + CPPFileOnly.RemoveLast(4); + CPPFileOnly.Append(wxT(".cpp")); + + hppfile << "#include \"" << DirFilenameOnly.c_str() << + "/" << CPPFileOnly.c_str() << "\"" << endl; + + } + + /*for (int f = 0; f < filelist.GetCount(); f++){ + boostfs::path CPPFile(filelist[f].c_str()); + boostfs::path CPPFileOnly(CPPFile.filename()); + CPPFileOnly.replace_extension(".cpp"); + + for (boostfs::path::iterator filet = CPPFile.begin(); + filet != CPPFile.end(); ++filet){ + if (*filet == DirFilename.filename()){ + fmatch = TRUE; + + } + if (fmatch == TRUE){ + + } + } + + hppfile << "#include \"" << DirFilenameOnly.c_str() << + "/" << CPPFileOnly.c_str() << "\"" << endl; + }*/ + + // Write the end if and close the file. + + hppfile << endl << "#endif" << endl << endl; + hppfile.close(); + + // Increment the HPP file counter. + + cout << "HPPDIR\t" << HPPFilename.c_str() << endl; + ++*counter; + +} + +int main(int argc, char *argv[]) +{ + int fp = 0; + int cppg = 0; + int hppg = 0; + + wxArrayString dirlist; + wxArrayString filelist; + wxString BitmapHeaderFilename; + wxString DirFilenameWxS; + + // Check if completed file exists before doing anything + // else and write an error message if it does exist. + + if (wxFileExists(wxT("bitmapsdone"))){ + + std::cout << "Bitmap files have already been generated!" << std::endl << std::endl; + std::cout << "To regenerate the files simply delete the bitmapsdone file where this helper application is run." << std::endl; + + + return 0; + + } + + fstream finalhppfile; + + if (!argv[1]){ + std::cout << "Error: No directory name given!" << std::endl; + return -1; + } + + // Look in the subdirectories of the bitmaps directory and + // collect the names of the directories. + + std::cout << "Working out directories in bitmaps directory..." << + std::endl; + + const char *dirarg = argv[1]; + + wxString BitmapDirName = wxString(dirarg, wxConvUTF8); + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + BitmapHeaderFilename.Append(BitmapDirName); + BitmapHeaderFilename.Append(wxT("\\..\\bitmaps.h")); + +#else + + BitmapFilename.Append(BitmapDirName); + BitmapFilename.Append(wxT("/../bitmaps.h")); + +#endif + + /*boostfs::path BitmapsDir(argv[1]); + boostfs::path BitmapsDirSubName; + boostfs::path BitmapsFilename; + boostfs::directory_iterator dir_end;*/ + + if ( wxDirExists(BitmapDirName) ){ + + wxDir BitmapDir(BitmapDirName); + + wxString BitmapSubDir; + wxString BitmapSubDirFull; + + bool ContinueProcess = BitmapDir.GetFirst(&BitmapSubDir, wxEmptyString, wxDIR_DEFAULT); + + while (ContinueProcess){ + +#if defined(__HAIKU__) + + BitmapSubDirFull.Append(BitmapSubDir); + BitmapSubDirFull.Append(); + +#elif defined(__WIN32__) + + BitmapSubDirFull.Append(BitmapDirName); + BitmapSubDirFull.Append(wxT("\\")); + BitmapSubDirFull.Append(BitmapSubDir); + +#else + + BitmapSubDirFull.Append(BitmapDirName); + BitmapSubDirFull.Append(wxT("/")); + BitmapSubDirFull.Append(BitmapSubDirFull); + +#endif + + if (wxDirExists(BitmapSubDirFull)){ + dirlist.Add(BitmapSubDirFull); + } + + ContinueProcess = BitmapDir.GetNext(&BitmapSubDir); + + BitmapSubDirFull.Clear(); + + } + + /*for (boostfs::directory_iterator bitmapsidr_iter(BitmapsDir); + bitmapsidr_iter != dir_end; ++bitmapsidr_iter){ + + if (boostfs::is_directory(bitmapsidr_iter->status())){ + + BitmapsDirSubName = boostfs::path(bitmapsidr_iter->path()).filename(); + DirFilenameWxS.Append(wxString::FromUTF8(argv[1])); + DirFilenameWxS.Append(wxString::FromUTF8(BitmapsDirSubName.c_str())); + dirlist.Add(DirFilenameWxS, 1); + DirFilenameWxS = wxT(""); + + } + + }*/ + + } else { + std::cout << "Error: Bitmaps Directory doesn't exist!" << std::endl; + return 1; + } + + // Process each directory, generating a .cpp and .hpp file + // for each image and then a final .hpp for the directory + // containing the .hpp's for the directories. + + if (dirlist.GetCount() == 0){ + cout << "Error: No directories in the bitmaps folder. Unexpected behaviour!" << endl; + return 1; + } + + std::cout << "Looking in bitmaps folder for PNGs..." << std::endl; + + DirFilenameWxS.Empty(); + + std::cout << BitmapHeaderFilename.c_str() << std::endl; + + finalhppfile.open(BitmapHeaderFilename.wc_str(), ios::out | ios::trunc); + finalhppfile << "#include " << endl << endl; + finalhppfile << "#ifndef BITMAPS_H" << endl; + finalhppfile << "#define BITMAPS_H" << endl << endl; + + for (int bi = 0; bi < dirlist.GetCount(); bi++) + { + + wxString BitmapSubDirName = wxString::FromUTF8(dirlist[bi]); + wxString BitmapFilename; + wxDir BitmapSubDir(BitmapSubDirName); + + bool ContinueProcess = BitmapSubDir.GetFirst(&BitmapFilename, wxEmptyString, wxDIR_DEFAULT); + + while (ContinueProcess){ + + if (BitmapFilename.Right(4) == wxT(".PNG") || + BitmapFilename.Right(4) == wxT(".png")){ + +#if defined(__HAIKU__) + + BitmapSubDirFull.Append(BitmapSubDir); + BitmapSubDirFull.Append(); + +#elif defined(__WIN32__) + + DirFilenameWxS.Append(wxString::FromUTF8(dirlist[bi].c_str())); + DirFilenameWxS.Append(wxT("\\")); + DirFilenameWxS.Append(wxString::FromUTF8(BitmapFilename.c_str())); + +#else + + DirFilenameWxS.Append(wxString::FromUTF8(dirlist[bi].c_str())); + DirFilenameWxS.Append(wxString::FromUTF8("/")); + DirFilenameWxS.Append(wxString::FromUTF8(BitmapFilename.c_str())); + +#endif + + filelist.Add(DirFilenameWxS); + + } + + DirFilenameWxS.Clear(); + ContinueProcess = BitmapSubDir.GetNext(&BitmapFilename); + + } + + /*boostfs::path BitmapsSubDir(dirlist[bi].c_str()); + for (boostfs::directory_iterator bitmapsidr_iter(BitmapsSubDir); + bitmapsidr_iter != dir_end; + ++bitmapsidr_iter){ + + if (boostfs::path(bitmapsidr_iter->path()).extension() == ".png" || + boostfs::path(bitmapsidr_iter->path()).extension() == ".PNG"){ + + BitmapsFilename = boostfs::path(bitmapsidr_iter->path()).filename(); + DirFilenameWxS.Append(wxString::FromUTF8(dirlist[bi].mb_str())); + DirFilenameWxS.Append(wxString::FromUTF8("/")); + DirFilenameWxS.Append(wxString::FromUTF8(BitmapsFilename.c_str())); + + filelist.Add(DirFilenameWxS, 1); + DirFilenameWxS = wxT(""); + + + + } + + }*/ + + for (int fi = 0; fi < filelist.GetCount(); fi++) + { + CreateCPPFile(dirlist[bi].wc_str(), filelist[fi].wc_str(), &cppg); + fp++; + } + + if (filelist.GetCount() > 0) + { + CreateHPPFileDir(dirlist[bi].wc_str(), filelist, &hppg); + } + + filelist.Clear(); + + wxString DirNameSplit; + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + wxStringTokenizer DirListFile(dirlist[bi], wxT("\\")); + +#else + + wxStringTokenizer DirListFile(dirlist[bi], wxT("/")); + + +#endif + + while (DirListFile.HasMoreTokens()){ + + DirNameSplit = DirListFile.GetNextToken(); + + } + +#if defined(__HAIKU__) + +#elif defined(__WIN32__) + + finalhppfile << "#include \"bitmaps\\" << DirNameSplit.c_str() << + ".h\"" << endl; + +#else + + finalhppfile << "#include \"bitmaps/" << DirNameSplit.c_str() << + ".h\"" << endl; + +#endif + + } + + finalhppfile << endl << "#endif" << endl; + finalhppfile.close(); + ++hppg; + + // Print out the results. + + std::cout << "Finished processing PNGs into code." << std::endl; + std::cout << fp << " files processed." << std::endl; + std::cout << cppg << " .cpp files generated." << std::endl; + std::cout << hppg << " .hpp files generated." << std::endl; + + // Write a success flag so that future runs won't take + // place thus speeding up the compilation process as + // required. + + fstream bitmapflag; + + bitmapflag.open("bitmapsdone", ios::out | ios::trunc); + bitmapflag << "Bitmaps as code generated. To recreate, simply delete this file and run the bitmap code generation tool again." << endl; + bitmapflag.close(); + + return 0; + +} diff --git a/source/tools/bitmapcode.cpp~ b/source/tools/bitmapcode.cpp~ new file mode 100644 index 0000000..ea786c1 --- /dev/null +++ b/source/tools/bitmapcode.cpp~ @@ -0,0 +1,301 @@ +//------------------------------------------------------------------- +// bitmapcode: Helper application which coverts PNG files into +// C++ code outputting binary code. +// +// This application also is a simple test if the wxWidgets & Boost +// header files and library files are there. +// +// This file is licenced under the GNU General Public License +// version 3 only. (GPLv3 only). +//------------------------------------------------------------------- + +#include +#include +#include + +#include +#include +#include +#include +#include + +using namespace std; +namespace boostfs = boost::filesystem; + +void CreateCPPFile(wxString dirfilename, wxString filename, int* counter) +{ +//------------------------------------------------------------------- +// CreateCPPFile: Create a CPP file from the filename given. +// +// dirfilename wxString of the directory name. +// filename wxString of the filename. +// counter Pointer to a integer counter. +//------------------------------------------------------------------- + char pngfile_char; + int pageseek = 0; + boostfs::path PNGFilename(filename.c_str()); + boostfs::path CPPFilename = PNGFilename; + boostfs::path CPPFilenameOnly(CPPFilename.filename()); + boostfs::path DirFilename(dirfilename.c_str()); + boostfs::path DirFilenameOnly(DirFilename.filename()); + CPPFilename.replace_extension(".cpp"); + wxString outname; + + // Setup the PNG file reading and cpp file. + + fstream cppfile, pngfile; + pngfile.open(PNGFilename.c_str(), ios::in | ios::binary ); + cppfile.open(CPPFilename.c_str(), ios::out | ios::trunc ); + + CPPFilenameOnly.replace_extension(); + + outname.Append(wxString::FromUTF8(DirFilenameOnly.c_str())); + outname.Append(wxT("_")); + outname.Append(wxString::FromUTF8(CPPFilenameOnly.c_str())); + outname.MakeUpper(); + + // Setup the inclusion guard. + + cppfile << "#include " << endl << endl; + cppfile << "#ifndef " << outname.mb_str() << "_CPP" << endl; + cppfile << "#define " << outname.mb_str() << "_CPP" << endl << endl; + + outname.Clear(); + outname.Append(wxString::FromUTF8(DirFilenameOnly.c_str())); + outname.Append(wxT("_")); + outname.Append(wxString::FromUTF8(CPPFilenameOnly.c_str())); + outname.Append(wxT("_png")); + outname.MakeLower(); + + // Convert the PNG file into an unsigned char array. + + cppfile << "static unsigned char " << outname.mb_str() << + "[] = {" << endl; + + while(pngfile){ + pngfile.get(pngfile_char); + cppfile << "0x"; + + if ((unsigned short)pngfile_char > 255){ + + cppfile << hex << setw(2) << setfill('0') << + ((unsigned short)pngfile_char - 65280); + + } else { + + cppfile << hex << setw(2) << setfill('0') << + (unsigned short)pngfile_char; + + } + + cppfile << ", "; + pageseek++; + + if (pageseek == 8){ + cppfile << endl; + pageseek = 0; + } + } + + // End the file, close it and increment the counter. + + cppfile << "};" << endl << endl; + cppfile << "#endif" << endl << endl; + cppfile.close(); + + cout << "CPP\t" << CPPFilename.c_str() << endl; + + ++*counter; + +} + +int CreateHPPFileDir(wxString dirfilename, wxArrayString filelist, + int* counter) +{ +//------------------------------------------------------------------- +// CreateHPPFileDir: Create a HPP Directory with the directory +// filename and list of files in the directory +// given. +// +// dirfilename wxString of the directory name. +// filelist wxArrayString of the directory filelist. +// counter Pointer to a integer counter. +//------------------------------------------------------------------- + boostfs::path HPPFilename(dirfilename.c_str()); + boostfs::path CPPFile; + boostfs::path CPPFileOnly(CPPFile.filename()); + boostfs::path DirFilename(dirfilename.c_str()); + boostfs::path DirFilenameOnly(DirFilename.filename()); + HPPFilename.replace_extension(".h"); + fstream hppfile; + + bool fmatch = FALSE; + wxString finaldirname; + + // Make the directory filename upper case for writing to the + // header file. + + finaldirname.Append(wxString::FromUTF8(DirFilenameOnly.c_str())); + finaldirname.MakeUpper(); + + // Write out the header file inclusion guard. + + hppfile.open(HPPFilename.c_str(), ios::out | ios::trunc ); + + hppfile << "#include " << endl << endl; + hppfile << "#ifndef " << finaldirname.mb_str() << "_H" << endl; + hppfile << "#define " << finaldirname.mb_str() << "_H" << endl << endl; + hppfile << "// List all CPP files in the directory." << endl << endl; + + // Write each CPP file into the header file. + + for (int f = 0; f < filelist.GetCount() ; f++){ + boostfs::path CPPFile(filelist[f].c_str()); + boostfs::path CPPFileOnly(CPPFile.filename()); + CPPFileOnly.replace_extension(".cpp"); + + for (boostfs::path::iterator filet=CPPFile.begin(); + filet != CPPFile.end(); ++filet){ + if (*filet == DirFilename.filename()){ + fmatch = TRUE; + + } + if (fmatch == TRUE){ + + } + } + + hppfile << "#include \"" << DirFilenameOnly.c_str() << + "/" << CPPFileOnly.c_str() << "\"" << endl; + } + + // Write the end if and close the file. + + hppfile << endl << "#endif" << endl << endl; + hppfile.close(); + + // Increment the HPP file counter. + + cout << "HPPDIR\t" << HPPFilename.c_str() << endl; + ++*counter; + +} + +int main() +{ + int fp = 0; + int cppg = 0; + int hppg = 0; + + wxArrayString dirlist; + wxArrayString filelist; + wxString DirFilenameWxS; + + fstream finalhppfile; + + // Look in the subdirectories of the bitmaps directory and + // collect the names of the directories. + + std::cout << "Working out directories in bitmaps directory..." << + std::endl; + + boostfs::path BitmapsDir("../bitmaps"); + boostfs::path BitmapsDirSubName; + boostfs::path BitmapsFilename; + boostfs::directory_iterator dir_end; + + if ( boostfs::exists(BitmapsDir) ){ + + for (boostfs::directory_iterator bitmapsidr_iter(BitmapsDir); + bitmapsidr_iter != dir_end ; ++bitmapsidr_iter){ + + if (boostfs::is_directory(bitmapsidr_iter->status())){ + + BitmapsDirSubName = boostfs::path(bitmapsidr_iter->path()).filename(); + DirFilenameWxS.Append(wxString::FromUTF8("../bitmaps/")); + DirFilenameWxS.Append(wxString::FromUTF8(BitmapsDirSubName.c_str())); + dirlist.Add(DirFilenameWxS, 1); + DirFilenameWxS = wxT(""); + + } + + } + + } else { + std::cout << "Error: Bitmaps Directory doesn't exist!" << std::endl; + return 1; + } + + // Process each directory, generating a .cpp and .hpp file + // for each image and then a final .hpp for the directory + // containing the .hpp's for the directories. + + if (dirlist.GetCount() == 0){ + cout << "Error: No directories in the bitmaps folder. Unexpected behaviour!" << endl; + return 1; + } + + std::cout << "Looking in bitmaps folder for PNGs..." << std::endl; + + DirFilenameWxS.Empty(); + + finalhppfile.open("../bitmaps.h", ios::out | ios::trunc ); + finalhppfile << "#include " << endl << endl; + finalhppfile << "#ifndef BITMAPS_H" << endl; + finalhppfile << "#define BITMAPS_H" << endl << endl; + + for (int bi = 0; bipath()).extension() == ".png" || + boostfs::path(bitmapsidr_iter->path()).extension() == ".PNG" ){ + + BitmapsFilename = boostfs::path(bitmapsidr_iter->path()).filename(); + DirFilenameWxS.Append(wxString::FromUTF8(dirlist[bi].mb_str())); + DirFilenameWxS.Append(wxString::FromUTF8("/")); + DirFilenameWxS.Append(wxString::FromUTF8(BitmapsFilename.c_str())); + + filelist.Add(DirFilenameWxS, 1); + DirFilenameWxS = wxT(""); + + + + } + + } + + for (int fi = 0; fi < filelist.GetCount() ; fi++) + { + CreateCPPFile(dirlist[bi].c_str(), filelist[fi], &cppg); + fp++; + } + + if (filelist.GetCount() > 0) + { + CreateHPPFileDir(dirlist[bi].c_str(), filelist, &hppg); + } + + filelist.Clear(); + + finalhppfile << "#include \"bitmaps/"<< BitmapsSubDir.filename().c_str() << + ".h\"" << endl; + + } + + finalhppfile << endl << "#endif" << endl; + finalhppfile.close(); + ++hppg; + + // Print out the results. + + std::cout << "Finished processing PNGs into code." << std::endl; + std::cout << fp << " files processed." << std::endl; + std::cout << cppg << " .cpp files generated." << std::endl; + std::cout << hppg << " .hpp files generated." << std::endl; + + return 0; +} \ No newline at end of file diff --git a/source/vcard/vcard.cpp b/source/vcard/vcard.cpp new file mode 100644 index 0000000..1322c3a --- /dev/null +++ b/source/vcard/vcard.cpp @@ -0,0 +1,749 @@ +#include "vcard.h" +#include +#include +#include +#include + +// vcard.cpp - Deals with vCard 4.0 formatted files meeting the +// RFC 6350 specification. + +vCard::vCard(){ + vCardBegin = FALSE; + vCardEnd = FALSE; + vCardFN = FALSE; + vCardVersion = 0.0; + SettingCount = 0; +} + +void vCard::Add(wxString SettingName, wxString SettingValue, bool ReplaceMode){ + + // Check for backslashes used for commas, newlines and + // backslashes used for values. + + if (ReplaceMode == TRUE){ + + SettingValue.Replace(wxT("\\n"), wxT("\n")); + SettingValue.Replace(wxT("\\,"), wxT(",")); + SettingValue.Replace(wxT("\\:"), wxT(":")); + SettingValue.Replace(wxT("\\\\"), wxT("\\")); + + } else { + + SettingValue.Replace(wxT("\\"), wxT("\\\\")); + SettingValue.Replace(wxT("\n"), wxT("\\n")); + SettingValue.Replace(wxT(","), wxT("\\,")); + SettingValue.Replace(wxT(":"), wxT("\\:")); + SettingValue = SettingValue + wxT("\n"); + + } + + // Check data to make sure that it meets the required + // vCard 4.0 specifications. + + if (SettingName == wxT("BEGIN") && SettingValue == wxT("VCARD")){ + vCardBegin = TRUE; + } + + if (SettingName == wxT("END") && SettingValue == wxT("VCARD")){ + vCardEnd = TRUE; + } + + if (SettingName == wxT("FN")){ + vCardFN = TRUE; + } + + if (SettingName == wxT("VERSION") && SettingValue == wxT("4.0")){ + vCardVersion = 4.0; + } + + if (SettingName == wxT("VERSION") && SettingValue == wxT("3.0")){ + vCardVersion = 3.0; + } + + if (SettingName == wxT("VERSION") && SettingValue == wxT("3.0")){ + vCardVersion = 2.0; + } + + SettingValue.Trim(); + + if (SettingValue.Right(2) != wxT("\r\n")){ + + SettingValue.Append(wxT("\r\n")); + + } + + SettingNames.Add(SettingName, 1); + SettingValues.Add(SettingValue, 1); + + ++SettingCount; +} + +void vCard::AddRaw(wxString SettingName, wxString SettingValue){ + + // Check data to make sure that it meets the required + // vCard 4.0 specifications. + + if (SettingName == wxT("BEGIN") && SettingValue == wxT("VCARD")){ + vCardBegin = TRUE; + } + + if (SettingName == wxT("END") && SettingValue == wxT("VCARD")){ + vCardEnd = TRUE; + } + + if (SettingName == wxT("FN")){ + vCardFN = TRUE; + } + + if (SettingName == wxT("VERSION") && SettingValue == wxT("4.0")){ + vCardVersion = 4.0; + } + + if (SettingName == wxT("VERSION") && SettingValue == wxT("3.0")){ + vCardVersion = 3.0; + } + + if (SettingName == wxT("VERSION") && SettingValue == wxT("3.0")){ + vCardVersion = 2.0; + } + + SettingValue.Trim(); + + if (SettingValue.Right(2) != wxT("\r\n")){ + + SettingValue.Append(wxT("\r\n")); + + } + + SettingNames.Add(SettingName, 1); + SettingValues.Add(SettingValue, 1); + + ++SettingCount; +} + +wxString vCard::Get(wxString SettingName){ + + wxString SettingValue; + + // Look for the setting name. + + for (int i = 0; i < SettingCount; i++){ + + if (SettingNames[i] == SettingName){ + + SettingValue = SettingValues[i]; + SettingValue.Trim(TRUE); + + while (SettingValues[(i + 1)].Mid(0, 1) == wxT(" ") || SettingValues[(i + 1)].Mid(0, 1) == wxT("\t")){ + + SettingValue.Trim(); + SettingValue.Append(SettingValues[(i + 1)]); + + i++; + } + + return SettingValue; + } + } + + return wxEmptyString; + +} + +vCardName vCard::GetName(){ + + vCardName NameData; + ArrayvCardOutData NameArray = this->GetByPartial(wxT("N")); + //wxString NameDataGet = NameArray.PropValues[0]; + wxString NameDataGet = NameArray.PropValues[0]; + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + + // Process the name data to get the required information. + + int intPropertyLen = NameDataGet.Len(); + int intSplitSeek = 0; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 0; + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (NameDataGet.Mid(i, 1) == wxT(";") && NameDataGet.Mid((i - 1), 1) != wxT("\\")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 4){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } else { + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + intSplitSize = 0; + + } + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + if (intiter->first == 1){ + + // Deal with family name. + + SLiter = SplitLength.find(1); + + NameData.Surname = NameDataGet.Mid(0, SLiter->second); + intPrevValue = intiter->second; + + } else if (intiter->first == 2){ + + // Deal with given names. + + SLiter = SplitLength.find(2); + + NameData.Forename = NameDataGet.Mid(intPrevValue, SLiter->second); + intPrevValue = intiter->second; + + + } else if (intiter->first == 3){ + + // Deal with additional names. + + SLiter = SplitLength.find(3); + + NameData.OtherNames = NameDataGet.Mid(intPrevValue, SLiter->second); + intPrevValue = intiter->second; + + } else if (intiter->first == 4){ + + // Deal with honorifix prefixes and suffixes. + SLiter = SplitLength.find(4); + + NameData.Title = NameDataGet.Mid(intPrevValue, SLiter->second); + intPrevValue = intiter->second; + NameData.Suffix = NameDataGet.Mid(intPrevValue); + + } + + } + + return NameData; + + +} + +ArrayvCardOutData vCard::GetByPartial(wxString SettingName){ + + ArrayvCardOutData vCardOutData; + wxArrayString SettingList; + wxString SettingValueCurrent; + wxString SettingValue; + int SettingNameLen; + int SettingNameSeek; + bool FirstToken = TRUE; + + SettingNameLen = SettingName.Len(); + + for (int i = 0; i < SettingCount; i++){ + + if (SettingNames[i].Mid(0, SettingNameLen) == SettingName){ + + SettingValue = SettingValues[i]; + SettingNameSeek = i; + + while (SettingValues[(i + 1)].Mid(0, 1) == wxT(" ") || SettingValues[(i + 1)].Mid(0, 1) == wxT("\t")){ + + if (FirstToken == TRUE){ + + SettingValue.Trim(FALSE); + SettingValue.Trim(TRUE); + FirstToken = FALSE; + + } + + SettingValueCurrent = SettingValues[(i + 1)]; + SettingValueCurrent.Trim(FALSE); + SettingValueCurrent.Trim(TRUE); + + SettingValue.Append(SettingValueCurrent); + + i++; + + } + + //SettingList.Add(SettingNames[SettingNameSeek] + wxT(":") + SettingValue); + vCardOutData.PropData.Add(SettingNames[SettingNameSeek]); + vCardOutData.PropValues.Add(SettingValue); + vCardOutData.PropCount++; + + } + } + + /*for (int i = 0; i < SettingCount; i++){ + if (SettingNames[i].Mid(0, SettingNameLen) == SettingName){ + + SettingValue = SettingValues[i]; + SettingNameSeek = i; + + while (SettingValues[(i + 1)].Mid(0, 1) == wxT(" ") || SettingValues[(i + 1)].Mid(0, 1) == wxT("\t")){ + + SettingValueCurrent = SettingValues[(i + 1)]; + SettingValueCurrent.Trim(FALSE); + SettingValueCurrent.Trim(TRUE); + + SettingValue.Append(SettingValueCurrent); + + i++; + + } + + //SettingList.Add(SettingNames[SettingNameSeek] + wxT(":") + SettingValue); + vCardOutData.PropData.Add(SettingName); + vCardOutData.PropData.Add(SettingValue); + + } + }*/ + + return vCardOutData; + +} + +wxString vCard::GetById(int id){ + // Unimplemented. + return wxT(""); +} + +int vCard::WriteFile(wxString WriteFilename){ + + // Open the file and begin writing data into the file. + + wxString SettingName; + wxString SettingValue; + wxString SettingLine; + + SettingCount = SettingNames.GetCount(); + + wxFile ContactFile; + if (ContactFile.Create(WriteFilename, TRUE, wxS_DEFAULT) == FALSE){ + return 1; + } + + for (int i = 0; i < SettingCount; i++){ + + SettingLine = SettingNames[i] + wxT(":") + SettingValues[i]; + + int SettingLineLen = SettingLine.Len(); + int intDivider = 74; + int intTimes = floor((SettingLine.Len() / intDivider)); + int intSeek = 0; + int intLineSeek = 0; + int intPrevLine; + bool FirstLine = TRUE; + + // Remember to round down the calculation. + + while (intSeek < SettingLineLen){ + + if ((intLineSeek == intDivider && FirstLine == TRUE) || + (intLineSeek == (intDivider - 1) && FirstLine == FALSE)){ + + SettingLine.insert(intSeek, wxT("\r\n ")); + intSeek = intSeek + 3; + SettingLineLen = SettingLineLen + 3; + intLineSeek = 0; + intPrevLine = intSeek; + FirstLine = FALSE; + + } + + intSeek++; + intLineSeek++; + + } + + /* + + for (int x = 0; x < intTimes; x++){ + + if (x == 0){ + SettingLine.insert((intDivider - 1), wxT("\r\n ")); + } else if (x == intTimes){ + + } else { + if (x < intDivider){ + SettingLine.insert((intDivider * (x+1)) + (x * 3), wxT("\r\n ")); + } + } + + intTimes = floor(SettingLine.Len() / intDivider); + + } + + */ + + ContactFile.Write(SettingLine); + + } + + ContactFile.Close(); + + return 0; + +} + +int vCard::LoadFile(wxString LoadFilename){ + + wxFFile ContactFile; + + wxString wxSContactString; + + vCardFilename = LoadFilename; + + // Check if we are using wxWidgets version 2.8 or less and + // execute the required command accordingly. + +#if wxABI_VERSION < 20900 + ContactFile.Open(LoadFilename.c_str(), wxT("r")); +#else + ContactFile.Open(LoadFilename, wxT("r")); +#endif + + if (ContactFile.IsOpened() == FALSE){ + + return 1; + + } + + ContactFile.ReadAll(&wxSContactString, wxConvAuto()); + + ContactFile.Close(); + + ProcessString(&wxSContactString); + + return 0; + +} + +int vCard::LoadString(wxString ContactData){ + + ProcessString(&ContactData); + + return 0; + +} + +void vCard::ProcessString(wxString *ContactDataInc){ + + // Split the vCards (if there are more than one vCard in the file). + + wxString ContactLine; + + int ContactLineLen; + bool ExtraLineSeek = FALSE; + int QuoteBreakPoint = 0; + + bool PropertyFind = FALSE; + bool QuoteMode = FALSE; + + wxString wxSPropertyNextLine; + wxString wxSProperty; + wxString wxSPropertySeg1; + wxString wxSPropertySeg2; + + bool FoundBegin = FALSE; + bool FoundEnd = FALSE; + bool FirstContact = TRUE; + wxString FirstContactData; + wxString ContactData; + int ContactCount = 0; + + wxStringTokenizer wSTContactFileLines(*ContactDataInc, wxT("\r\n")); + + while(wSTContactFileLines.HasMoreTokens() == TRUE){ + + ContactLine = wSTContactFileLines.GetNextToken(); + + if (ContactLine == wxT("BEGIN:VCARD")){ + + if (FoundBegin == TRUE){ + + // No END:VCARD was found so discard current data. + + ContactData.Clear(); + + if (FirstContact == TRUE){ + + FirstContactData.Clear(); + + } + + } + + FoundBegin = TRUE; + + FirstContactData.Append(ContactLine + wxT("\r\n")); + ContactData.Append(ContactLine + wxT("\r\n")); + + } else if (ContactLine == wxT("END:VCARD") && FoundBegin == TRUE){ + + if (FirstContact == TRUE){ + + FirstContact = FALSE; + FirstContactData.Append(ContactLine + wxT("\r\n")); + + } + + ContactData.Append(ContactLine + wxT("\r\n")); + + Cards.insert(std::make_pair(ContactCount, ContactData)); + + ContactCount++; + + } else if (FoundBegin == TRUE){ + + if (FirstContact == TRUE){ + + FirstContactData.Append(ContactLine + wxT("\r\n")); + + } + + ContactData.Append(ContactLine + wxT("\r\n")); + + } + + } + + ContactLine.Clear(); + + // Split the lines. + + std::map ContactFileLines; + std::map::iterator striter; + + wxStringTokenizer wSTFirstContactLines(FirstContactData, wxT("\r\n")); + + int ContactLineSeek = 0; + + while (wSTFirstContactLines.HasMoreTokens() == TRUE){ + + ContactLine = wSTFirstContactLines.GetNextToken(); + ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLine)); + ContactLineSeek++; + + } + + for (std::map::iterator iter = ContactFileLines.begin(); + iter != ContactFileLines.end(); ++iter){ + + // Find the colon which splits the start bit from the data part. + + ContactLine = iter->second; + + while (ExtraLineSeek == TRUE){ + + // Check if there is extra data on the next line + // (indicated by space or tab at the start) and add data. + + iter++; + + if (iter == ContactFileLines.end()){ + + iter--; + break; + + } + + wxSPropertyNextLine = iter->second; + + + if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ + + wxSPropertyNextLine.Remove(0, 1); + //wxSPropertyNextLine.Trim(FALSE); + //ContactLine.Trim(); + ContactLine.Append(wxSPropertyNextLine); + + } else { + + iter--; + ExtraLineSeek = FALSE; + + } + + } + + ContactLineLen = ContactLine.Len(); + + // Make sure we are not in quotation mode. + // Make sure colon does not have \ or \\ before it. + + for (int i = 0; i <= ContactLineLen; i++){ + + if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){ + + PropertyFind = FALSE; + + } else if (PropertyFind == TRUE){ + + wxSProperty.Append(ContactLine.Mid(i, 1)); + + } + + if (ContactLine.Mid(i, 1) == wxT("\"")){ + + if (QuoteMode == TRUE){ + + QuoteMode = FALSE; + + } else { + + QuoteMode = TRUE; + + } + + } + + if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){ + + QuoteBreakPoint = i; + break; + + } + + } + + // Split that line at the point into two variables (ignore the colon). + + wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint); + wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1)); + + // Insert both into the vCard data file. + + AddRaw(wxSPropertySeg1, wxSPropertySeg2); + + QuoteMode = FALSE; + PropertyFind = TRUE; + ExtraLineSeek = TRUE; + ContactLineLen = 0; + QuoteBreakPoint = 0; + ContactLine.Clear(); + wxSProperty.Clear(); + + } + + +} + +wxString vCard::WriteString(){ + + // Open the file and begin writing data into the file. + + wxString SettingName; + wxString SettingValue; + wxString SettingLine; + wxString SettingFinal; + + SettingCount = SettingNames.GetCount(); + + for (int i = 0; i < SettingCount; i++){ + + SettingLine = SettingNames[i] + wxT(":") + SettingValues[i]; + + int SettingLineLen = SettingLine.Len(); + int intDivider = 74; + int intTimes = floor((SettingLine.Len() / intDivider)); + int intSeek = 0; + int intLineSeek = 0; + int intPrevLine; + bool FirstLine = TRUE; + + // Remember to round down the calculation. + + while (intSeek < SettingLineLen){ + + if ((intLineSeek == intDivider && FirstLine == TRUE) || + (intLineSeek == (intDivider - 1) && FirstLine == FALSE)){ + + SettingLine.insert(intSeek, wxT("\r\n ")); + intSeek = intSeek + 3; + SettingLineLen = SettingLineLen + 3; + intLineSeek = 0; + intPrevLine = intSeek; + FirstLine = FALSE; + + } + + intSeek++; + intLineSeek++; + + } + + SettingFinal.Append(SettingLine); + + } + + return SettingFinal; + +} + +bool vCard::MeetBaseSpecification(){ + // Check and see if the vCard object meets the base specification + // of vCard 4.0. + + if (vCardBegin == TRUE && vCardEnd == TRUE && vCardFN == TRUE && + vCardVersion == 4.0){ + return TRUE; + } else { + return FALSE; + } + +} + +wxString vCard::Convert(wxString SettingValue, bool ReplaceMode){ + + // Check for backslashes used for commas, newlines and + // backslashes used for values. + + if (ReplaceMode == TRUE){ + + SettingValue.Replace(wxT("\\n"), wxT("\n")); + SettingValue.Replace(wxT("\\,"), wxT(",")); + SettingValue.Replace(wxT("\\;"), wxT(";")); + SettingValue.Replace(wxT("\\\\"), wxT("\\")); + + } else { + + SettingValue.Replace(wxT("\\"), wxT("\\\\")); + SettingValue.Replace(wxT("\n"), wxT("\\n")); + SettingValue.Replace(wxT(","), wxT("\\,")); + SettingValue.Replace(wxT(";"), wxT("\\;")); + SettingValue = SettingValue + wxT("\n"); + + } + + return SettingValue; + +} + +wxString vCard::GetFilename(){ + + return vCardFilename; + +} + +std::map* vCard::GetAllCards(){ + + return &Cards; + +} \ No newline at end of file diff --git a/source/vcard/vcard.cpp~ b/source/vcard/vcard.cpp~ new file mode 100644 index 0000000..878c2b9 --- /dev/null +++ b/source/vcard/vcard.cpp~ @@ -0,0 +1,88 @@ +#include "vcard.h" + +// vcard.cpp - Deals with vCard 4.0 formatted files meeting the +// RFC 6350 specification. + +vCard::vCard(){ + vCardBegin = FALSE; + vCardEnd = FALSE; + vCardFN = FALSE; + vCardVersion = 0.0; + SettingCount = 0; +} + +void vCard::Add(wxString SettingName, wxString SettingValue){ + + // Check for backslashes used for commas, newlines and + // backslashes used for values. + + SettingValue.Replace(wxT("\\n"), wxT("\n")); + SettingValue.Replace(wxT("\\,"), wxT(",")); + SettingValue.Replace(wxT("\\\\"), wxT("\\")); + + // Check data to make sure that it meets the required + // vCard 4.0 specifications. + + //wxPuts(wxString::Format("%x", SettingValue)); + + if (SettingName == wxT("BEGIN") && SettingValue == wxT("VCARD")){ + vCardBegin = TRUE; + } + + if (SettingName == wxT("END") && SettingValue == wxT("VCARD")){ + vCardEnd = TRUE; + } + + if (SettingName == wxT("FN")){ + vCardFN = TRUE; + } + + if (SettingName == wxT("VERSION") && SettingValue == wxT("4.0")){ + vCardVersion = 4.0; + } + + SettingNames.Add(SettingName, 1); + SettingValues.Add(SettingValue, 1); + + ++SettingCount; +} + +wxString vCard::Get(wxString SettingName){ + + wxString SettingValue; + + wxPuts(wxT("IN THAR")); + + // Look for the setting name. + + for (int i = 0; i < SettingCount; i++){ + wxPuts(wxT("Looking")); + + if (SettingNames[i] == SettingName){ + SettingValue = SettingValues[i]; + wxPuts(wxT("Here we are")); + wxPuts(SettingValue); + SettingValue.Trim(TRUE); + wxPuts(SettingValue); + return SettingValue; + } + } + +} + +wxString vCard::GetById(int id){ + +} + +bool vCard::MeetBaseSpecification(){ + // Check and see if the vCard object meets the base specification + // of vCard 4.0. + + if (vCardBegin == TRUE && vCardEnd == TRUE && vCardFN == TRUE && + vCardVersion == 4.0){ + return TRUE; + } else { + return FALSE; + } + +} \ No newline at end of file diff --git a/source/vcard/vcard.h b/source/vcard/vcard.h new file mode 100644 index 0000000..b7c4e02 --- /dev/null +++ b/source/vcard/vcard.h @@ -0,0 +1,53 @@ +#include +#include +#include +#include + +#ifndef VCARD_H +#define VCARD_H + +struct ArrayvCardOutData { + wxArrayString PropData; + wxArrayString PropValues; + int PropCount = 0; +}; + +struct vCardName{ + wxString Forename; + wxString Surname; + wxString OtherNames; + wxString Title; + wxString Suffix; +}; + +class vCard{ +private: + wxArrayString SettingNames; + wxArrayString SettingValues; + int SettingCount; + bool vCardBegin; + bool vCardEnd; + bool vCardFN; + float vCardVersion; + wxString vCardFilename; + std::map Cards; + void ProcessString(wxString *ContactData); +public: + vCard(); + void Add(wxString SettingName, wxString SettingValue, bool ReplaceMode); + void AddRaw(wxString SettingName, wxString SettingValue); + wxString Get(wxString SettingName); + vCardName GetName(); + wxString GetById(int id); + ArrayvCardOutData GetByPartial(wxString SettingName); + int WriteFile(wxString WriteFilename); + int LoadFile(wxString LoadFilename); + int LoadString(wxString ContactData); + wxString WriteString(); + bool MeetBaseSpecification(); + wxString Convert(wxString SettingValue, bool ReplaceMode); + wxString GetFilename(); + std::map* GetAllCards(); +}; + +#endif \ No newline at end of file diff --git a/source/vcard/vcard.hpp~ b/source/vcard/vcard.hpp~ new file mode 100644 index 0000000..d4202a9 --- /dev/null +++ b/source/vcard/vcard.hpp~ @@ -0,0 +1,20 @@ + +class vCard{ +private: + +public: + vCard(int settingsize); + ~vCard(); +} + +class vCardSetting{ +private: + wxString SettingName; + wxString SettingValue; +public: + vCardSetting( + wxString SettingName, + wxString SettingValue + ); + ~vCardSetting(); +} diff --git a/source/vcard/vcard.h~ b/source/vcard/vcard.h~ new file mode 100644 index 0000000..3ab41a1 --- /dev/null +++ b/source/vcard/vcard.h~ @@ -0,0 +1,27 @@ +#include +#include +#include + +#ifndef VCARD_H +#define VCARD_H + +class vCard{ +private: + wxArrayString SettingNames; + wxArrayString SettingValues; + int SettingCount; + bool vCardBegin; + bool vCardEnd; + bool vCardFN; + float vCardVersion; +public: + vCard(); + void Add(wxString SettingName, wxString SettingValue); + wxString Get(wxString SettingName); + wxString GetById(int id); + wxArrayString GetByPartial(wxString SettingName); + int WriteFile(wxString Filename); + bool MeetBaseSpecification(); +}; + +#endif \ No newline at end of file diff --git a/source/vcard/vcard34conv.cpp b/source/vcard/vcard34conv.cpp new file mode 100644 index 0000000..62efc90 --- /dev/null +++ b/source/vcard/vcard34conv.cpp @@ -0,0 +1,9973 @@ +#include "vcard34conv.h" +#include "vcard.h" +#include "../version.h" +#include "../common/textprocessing.h" +#include +#include +#include + +#include +#include +#include +#include + +// vcard.cpp - Deals with vCard 4.0 formatted files meeting the +// RFC 6350 specification. + +vCard34Conv::vCard34Conv(){ + vCardBegin = FALSE; + vCardEnd = FALSE; + vCardFN = FALSE; + vCardVersion = 0.0; + SettingCount = 0; +} + +bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ + + wxString V3Data; + wxString V4Data; + + // Load the contact into the contact editor. + + wxFFile ContactFile; + wxString wxSContactString; + wxString ContactLine; + vCard ContactData; + + vCard ContactDatav3; + + //wxSContactFilename = Filename; + + // Check if we are using wxWidgets version 2.8 or less and + // execute the required command accordingly. + +#if wxABI_VERSION < 20900 + ContactFile.Open(Filename.c_str(), wxT("r")); +#else + ContactFile.Open(Filename, wxT("r")); +#endif + + if (ContactFile.IsOpened() == FALSE){ + + return FALSE; + + } + + ContactFile.ReadAll(&wxSContactString, wxConvAuto()); + + // Split the lines. + + std::map ContactFileLines; + std::map::iterator striter; + + wxStringTokenizer wSTContactFileLines(wxSContactString, wxT("\r\n")); + + int ContactLineSeek = 0; + + while (wSTContactFileLines.HasMoreTokens() == TRUE){ + + ContactLine = wSTContactFileLines.GetNextToken(); + ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLine)); + ContactLineSeek++; + + } + + // Get the line. + + bool QuoteMode = FALSE; + bool PropertyFind = TRUE; + bool HasExtraNicknames = FALSE; + bool IgnoreGender = FALSE; + bool ExtraLineSeek = TRUE; + bool BirthdayProcessed = FALSE; + bool AnniversaryProcessed = FALSE; + bool FNProcessed = FALSE; + bool GenderProcessed = FALSE; + bool NameProcessed = FALSE; + bool KindProcessed = FALSE; + bool FNFirst = FALSE; + bool NicknameFirst = FALSE; + bool TitleFirst = FALSE; + bool OrganisationFirst = FALSE; + bool NoteFirst = FALSE; + bool PhotoFirst = FALSE; + bool LogoFirst = FALSE; + int intExtraNickname = 0; + wxString wxSProperty; + wxString wxSPropertySeg1; + wxString wxSPropertySeg2; + wxString wxSPropertyNextLine; + int ContactLineLen = 0; + int QuoteBreakPoint = 0; + int FNCount = 0; + int NameCount = 0; + int NicknameCount = 0; + int ADRCount = 0; + int EmailCount = 0; + int IMPPCount = 0; + int TelCount = 0; + int LangCount = 0; + int TZCount = 0; + int GeoCount = 0; + int URLCount = 0; + int RelatedCount = 0; + int TitleCount = 0; + int RoleCount = 0; + int OrgCount = 0; + int NoteCount = 0; + int CategoryCount = 0; + int PhotoCount = 0; + int LogoCount = 0; + int SoundCount = 0; + int CalAdrCount = 0; + int CalReqAdrCount = 0; + int FreeBusyCount = 0; + int KeyCount = 0; + int VendorCount = 0; + int XTokenCount = 0; + int ItemSeek = 1; + //int intValueSeek = 1; + + wxString strVer; + + // Setup the version string. + + strVer.Append(wxT("-//Xestia//Address Book Version ")); + strVer.Append(wxT(XSDAB_VERSION)); + strVer.Append(wxT("//KW")); + + ContactDatav3.AddRaw(wxT("BEGIN"), wxT("VCARD")); + ContactDatav3.AddRaw(wxT("VERSION"), wxT("3.0")); + ContactDatav3.AddRaw(wxT("PRODID"), strVer); + + for (std::map::iterator iter = ContactFileLines.begin(); + iter != ContactFileLines.end(); ++iter){ + + // Find the colon which splits the start bit from the data part. + + ContactLine = iter->second; + + while (ExtraLineSeek == TRUE){ + + // Check if there is extra data on the next line + // (indicated by space or tab at the start) and add data. + + iter++; + + if (iter == ContactFileLines.end()){ + + iter--; + break; + + } + + wxSPropertyNextLine = iter->second; + + + if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ + + wxSPropertyNextLine.Remove(0, 1); + //wxSPropertyNextLine.Trim(FALSE); + //ContactLine.Trim(); + ContactLine.Append(wxSPropertyNextLine); + + } else { + + iter--; + ExtraLineSeek = FALSE; + + } + + } + + ContactLineLen = ContactLine.Len(); + + // Make sure we are not in quotation mode. + // Make sure colon does not have \ or \\ before it. + + wxSProperty.Clear(); + + for (int i = 0; i <= ContactLineLen; i++){ + + if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){ + + PropertyFind = FALSE; + + } else if (PropertyFind == TRUE){ + + wxSProperty.Append(ContactLine.Mid(i, 1)); + + } + + if (ContactLine.Mid(i, 1) == wxT("\"")){ + + if (QuoteMode == TRUE){ + + QuoteMode = FALSE; + + } else { + + QuoteMode = TRUE; + + } + + } + + if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){ + + QuoteBreakPoint = i; + break; + + } + + } + + // Split that line at the point into two variables (ignore the colon). + + wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint); + wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1)); + + // Add the data into the contact editor depending on what it is. + + if (wxSProperty == wxT("FN")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 4; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + //SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 3; + + if (FNFirst == FALSE){ + + ContactDatav3.AddRaw(wxT("FN"), wxSPropertySeg2); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-FN;X-FIRST=TRUE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + FNFirst = TRUE; + + } else { + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-FN"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-FN;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), + wxSPropertySeg2); + + } + + } + + } else if (wxSProperty == wxT("N") && NameProcessed == FALSE){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 3; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 2; + + ContactDatav3.AddRaw(wxT("N"), wxSPropertySeg2); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-N;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT("")); + + } + + NameProcessed = TRUE; + + } else if (wxSProperty == wxT("KIND") && KindProcessed == FALSE){ + + // Process Data. + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 4; + + ContactDatav3.AddRaw(wxT("X-ADDRESSBOOKSERVER-KIND"), wxSPropertySeg2); + + KindProcessed = TRUE; + + } else if (wxSProperty == wxT("MEMBER")){ + + // Process Data. + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 6; + + ContactDatav3.AddRaw(wxT("X-ADDRESSBOOKSERVER-MEMBER"), wxSPropertySeg2); + + } else if (wxSProperty == wxT("NICKNAME")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 10; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 9; + + if (NicknameFirst == FALSE){ + + ContactDatav3.AddRaw(wxT("NICKNAME"), wxSPropertySeg2); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-NICKNAME;X-FIRST=TRUE;") + + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT("")); + + } + NicknameFirst = TRUE; + ItemSeek++; + + } else { + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-NICKNAME"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-NICKNAME;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), + wxSPropertySeg2); + + } + + } + + + } else if (wxSProperty == wxT("GENDER") && GenderProcessed == FALSE){ + + // Do PID/ALTID/LANG things. + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE;; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 8; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 7; + + if (wxSPropertySeg2.Mid(1, 1) == wxT(";")){ + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER;X-GENDERTEXT=\"") + wxSPropertySeg2.Mid(2) + wxT("\""), wxSPropertySeg2.Mid(0, 1)); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER;X-GENDERTEXT=\"") + wxSPropertySeg2.Mid(2) + wxT("\";") + + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), + wxSPropertySeg2.Mid(0, 1)); + + } + + } else { + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } + + GenderProcessed = TRUE; + + } else if (wxSProperty == wxT("BDAY") && BirthdayProcessed == FALSE){ + + // Process date. Preserve the remainder in the string. + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool BirthdayText = FALSE; + bool FirstToken = TRUE; + bool NoYear = FALSE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + wxString strResults; + + intPrevValue = 5; + + // Look for type before continuing. + + if (wxSPropertySeg2.Mid(0, 2) == wxT("--")){ + + strResults.Append(wxT("1604-")); + NoYear = TRUE; + + strResults.Append(wxSPropertySeg2.Mid(2, 2) + wxT("-")); + strResults.Append(wxSPropertySeg2.Mid(4, 2)); + + } else { + + strResults.Append(wxSPropertySeg2.Mid(0, 4) + wxT("-")); + strResults.Append(wxSPropertySeg2.Mid(4, 2) + wxT("-")); + strResults.Append(wxSPropertySeg2.Mid(6, 2)); + + } + + + + if (NoYear == TRUE){ + + ContactDatav3.AddRaw(wxT("BDAY;X-APPLE-OMIT-YEAR=1604"), strResults); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else { + + ContactDatav3.AddRaw(wxT("BDAY"), strResults); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } + + BirthdayProcessed = TRUE; + + } else if (wxSProperty == wxT("ANNIVERSARY") && AnniversaryProcessed == FALSE){ + + // Process date. Preserve the remainder in the string. + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool AnniversaryText = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 13; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + wxString strResults; + bool NoYear = FALSE; + + intPrevValue = 12; + + // Look for type before continuing. + + if (wxSPropertySeg2.Mid(0, 2) == wxT("--")){ + + strResults.Append(wxT("1604-")); + NoYear = TRUE; + + strResults.Append(wxSPropertySeg2.Mid(2, 2) + wxT("-")); + strResults.Append(wxSPropertySeg2.Mid(4, 2)); + + } else { + + strResults.Append(wxSPropertySeg2.Mid(0, 4) + wxT("-")); + strResults.Append(wxSPropertySeg2.Mid(4, 2) + wxT("-")); + strResults.Append(wxSPropertySeg2.Mid(6, 2)); + + } + + + + if (NoYear == TRUE){ + + ContactDatav3.AddRaw(wxT("ANNIVERSARY;X-APPLE-OMIT-YEAR=1604"), strResults); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else { + + ContactDatav3.AddRaw(wxT("ANNIVERSARY"), strResults); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } + + AnniversaryProcessed = TRUE; + + } else if (wxSProperty == wxT("TZ")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 4; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 3; + + // Look for type before continuing. + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-TZ"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-TZ;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("ADR")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString AddressLabel; + wxString AddressLang; + wxString AddressAltID; + wxString AddressPID; + wxString AddressTokens; + wxString AddressGeo; + wxString AddressTimezone; + wxString AddressType; + wxString AddressMediatype; + wxString AddressPOBox; + wxString AddressExtended; + wxString AddressStreet; + wxString AddressLocality; + wxString AddressCity; + wxString AddressRegion; + wxString AddressPostalCode; + wxString AddressCountry; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 4; + + // TODO: Check in value for X-ABLabel and use it if it is there. + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".ADR"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Address")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-ADR"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".ADR"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Address")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-ADR;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + ItemSeek++; + + } else if (wxSProperty == wxT("EMAIL")){ + + // TODO: Continue from here! See ADR for good example (Replace initer with intPrevValue). + // Remove inserted comma for Extra Tokens in frmContactEditor.cpp + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator SPoint; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString AddressLabel; + wxString AddressLang; + wxString AddressAltID; + wxString AddressPID; + wxString AddressTokens; + wxString AddressGeo; + wxString AddressTimezone; + wxString AddressType; + wxString AddressMediatype; + wxString AddressPOBox; + wxString AddressExtended; + wxString AddressStreet; + wxString AddressLocality; + wxString AddressCity; + wxString AddressRegion; + wxString AddressPostalCode; + wxString AddressCountry; + bool AfterFirstProperty = FALSE; + bool FirstToken = TRUE; + int intSplitSeek = 0; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitPoint = 0; + + + intPrevValue = 6; + + // TODO: Check in value for X-ABLabel and use it if it is there. + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + ItemSeek++; + + } else if (wxSProperty == wxT("IMPP")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator SPoint; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString IMPPType; + wxString IMPPAddress; + bool AfterFirstProperty = FALSE; + bool FirstToken = TRUE; + int intSplitSeek = 0; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitPoint = 0; + + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + intPrevValue = 5; + + // TODO: Check in value for X-ABLabel and use it if it is there. + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".IMPP"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Instant Message")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-IMPP"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".IMPP"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Instant Message")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-IMPP;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + ItemSeek++; + + } else if (wxSProperty == wxT("TEL")){ + + // Check TEL and make sure it is functioning properly. + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map TypeSplitPoints; + std::map TypeSplitLength; + std::map::iterator SLiter; + std::map::iterator SPoint; + std::map::iterator TSLiter; + std::map::iterator TSPoint; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString TelType; + wxString TelNumber; + wxString TelTypeUI; + wxString TelTypeDetail; + wxString TelTypeOut; + wxString FinalFriendlyString; + bool AfterFirstProperty = FALSE; + bool FirstToken = TRUE; + bool SkipFirst = TRUE; + int intSplitSeek = 0; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitPoint = 0; + + + intPrevValue = 4; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + // Look for type before continuing. + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("TYPE")){ + + // Process each value in type and translate each + // part. + + // Strip out the quotes if they are there. + + int intPropertyValueLen = PropertyValue.Len(); + + if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){ + + PropertyValue.Trim(); + PropertyValue.RemoveLast(); + + } + + if (PropertyValue.Mid(0, 1) == wxT("\"")){ + + PropertyValue.Remove(0, 1); + + } + + TelTypeDetail = PropertyValue; + + intSplitSize = 0; + intSplitsFound = 0; + intSplitPoint = 0; + + for (int i = 0; i <= intPropertyValueLen; i++){ + + intSplitSize++; + + if (PropertyValue.Mid(i, 1) == wxT(",") && PropertyValue.Mid((i - 1), 1) != wxT("\\")){ + + if (intSplitsFound == 0){ + + TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint)); + TypeSplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } else { + + TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint)); + TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize)); + + } + + intSplitsFound++; + i++; + intSplitPoint = i; + intSplitSize = 0; + + } + + } + + TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint)); + TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize)); + + int intTypeSeek = 0; + + for (std::map::iterator typeiter = TypeSplitPoints.begin(); + typeiter != TypeSplitPoints.end(); ++typeiter){ + + wxString TypePropertyName; + + TSLiter = TypeSplitLength.find(typeiter->first); + + TypePropertyName = PropertyValue.Mid(typeiter->second, TSLiter->second); + + if (intTypeSeek == 0){ + + + } else { + + TelTypeUI.Append(wxT(",")); + + } + + if (TypePropertyName == wxT("home")){ + + intType = 1; + + } else if (TypePropertyName == wxT("work")){ + + intType = 2; + + } + + if (TypePropertyName == wxT("text")){ + + if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Text")); } else { FinalFriendlyString.Append(_("Text")); } + + TelTypeOut.Append(wxT(";")); + TelTypeOut.Append(wxT("type=TEXT")); + + } else if (TypePropertyName == wxT("voice")){ + + if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Voice")); } else { FinalFriendlyString.Append(_("Voice")); } + + TelTypeOut.Append(wxT(";")); + TelTypeOut.Append(wxT("type=VOICE")); + + intTypeSeek++; + + } else if (TypePropertyName == wxT("fax")){ + + if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Fax")); } else { FinalFriendlyString.Append(_("Fax")); } + + TelTypeOut.Append(wxT(";")); + TelTypeOut.Append(wxT("type=FAX")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("cell")){ + + if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Mobile")); } else { FinalFriendlyString.Append(_("Mobile")); } + + TelTypeOut.Append(wxT(";")); + TelTypeOut.Append(wxT("type=CELL")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("video")){ + + if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Video")); } else { FinalFriendlyString.Append(_("Video")); } + + TelTypeOut.Append(wxT(";")); + TelTypeOut.Append(wxT("type=VIDEO")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("pager")){ + + if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Pager")); } else { FinalFriendlyString.Append(_("Pager")); } + + TelTypeOut.Append(wxT(";")); + TelTypeOut.Append(wxT("type=PAGER")); + intTypeSeek++; + + } else if (TypePropertyName == wxT("textphone")){ + + //if (!TelTypeOut.IsEmpty()){ TelTypeOut.Append(wxT(";")); } + + if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Textphone")); } else { FinalFriendlyString.Append(_("Textphone")); } + + TelTypeOut.Append(wxT(";")); + TelTypeOut.Append(wxT("type=TEXTPHONE")); + intTypeSeek++; + + } + + + + } + + } + + + + } + + wxString FinalTel; + + // Remove 'tel:' if it is being used. + + if (wxSPropertySeg2.Mid(0, 4) == wxT("tel:")){ + + FinalTel = wxSPropertySeg2.Mid(4); + + } else { + + FinalTel = wxSPropertySeg2; + + } + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".TEL") + TelTypeOut, FinalTel); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), FinalFriendlyString); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-TEL"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".TEL") + TelTypeOut, FinalTel); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), FinalFriendlyString); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-TEL;") + wxSPropertySeg1.Mid(4), wxSPropertySeg2); + + } + + ItemSeek++; + + } else if (wxSProperty == wxT("LANG")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 5; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-LANG"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-LANG;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("GEO")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString GeoType; + wxString GeoData; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 4; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + wxString strFinalGeoValue; + wxString strFinalType; + + if (wxSPropertySeg2.Mid(0, 3) == wxT("geo")){ + + strFinalGeoValue = wxSPropertySeg2.Mid(5); + strFinalType = wxT("geo"); + + } else { + + wxStringTokenizer wSTSplit(wxSPropertySeg2, wxT(":")); + strFinalType = wSTSplit.GetNextToken(); + strFinalGeoValue = wSTSplit.GetNextToken(); + + } + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType, wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("RELATED")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString RelatedType; + wxString RelatedTypeOriginal; + wxString RelatedName; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 9; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 8; + + SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); + + wxString strDetail; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second - 1)); + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + if (PropertyName == wxT("TYPE") && FirstToken == TRUE){ + + if (PropertyValue == wxT("contact")){ + + strDetail = _("Contact"); + + } else if (PropertyValue == wxT("acquaintance")){ + + strDetail = _("Acquaintance"); + + } else if (PropertyValue == wxT("friend")){ + + strDetail = _("Friend"); + + } else if (PropertyValue == wxT("met")){ + + strDetail = _("Met"); + + } else if (PropertyValue == wxT("co-worker")){ + + strDetail = _("Co-worker"); + + } else if (PropertyValue == wxT("colleague")){ + + strDetail = _("Colleague"); + + } else if (PropertyValue == wxT("co-resident")){ + + strDetail = _("Co-resident"); + + } else if (PropertyValue == wxT("neighbor")){ + + strDetail = _("Neighbour"); + + } else if (PropertyValue == wxT("child")){ + + strDetail = _("Child"); + + } else if (PropertyValue == wxT("parent")){ + + strDetail = _("Parent"); + + } else if (PropertyValue == wxT("sibling")){ + + strDetail = _("Sibling"); + + } else if (PropertyValue == wxT("spouse")){ + + strDetail = _("Spouse"); + + } else if (PropertyValue == wxT("kin")){ + + strDetail = _("Kin"); + + } else if (PropertyValue == wxT("muse")){ + + strDetail = _("Muse"); + + } else if (PropertyValue == wxT("crush")){ + + strDetail = _("Crush"); + + } else if (PropertyValue == wxT("date")){ + + strDetail = _("Date"); + + } else if (PropertyValue == wxT("sweetheart")){ + + strDetail = _("Sweetheart"); + + } else if (PropertyValue == wxT("me")){ + + strDetail = _("Me"); + + } else if (PropertyValue == wxT("agent")){ + + strDetail = _("Agent"); + + } else if (PropertyValue == wxT("emergency")){ + + strDetail = _("Emergency"); + + } else { + + strDetail = PropertyValue; + + } + + FirstToken = FALSE; + + } + + } + + if (strDetail.IsEmpty()){ + + strDetail = _("Relation"); + + } + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABRELATEDNAMES"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), strDetail); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-RELATED"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABRELATEDNAMES"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), strDetail); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-RELATED;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + ItemSeek++; + + } else if (wxSProperty == wxT("URL")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 4; + + // Todo: Check for X-ABLabel. + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".URL"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("URL")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-URL"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".URL"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("URL")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-URL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + ItemSeek++; + + } else if (wxSProperty == wxT("TITLE")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 6; + + // Look for type before continuing. + + if (TitleFirst == FALSE){ + + ContactDatav3.AddRaw(wxT("TITLE"), wxSPropertySeg2); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-TITLE;X-FIRST=TRUE;") + + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT("")); + + } + TitleFirst = TRUE; + ItemSeek++; + + } else { + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-TITLE"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-TITLE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), + wxSPropertySeg2); + + } + + } + + } else if (wxSProperty == wxT("ROLE")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 5; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-ROLE"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-ROLE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("ORG")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 4; + + if (OrganisationFirst == FALSE){ + + ContactDatav3.AddRaw(wxT("ORG"), wxSPropertySeg2); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-ORG;X-FIRST=TRUE;") + + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT("")); + + } + OrganisationFirst = TRUE; + ItemSeek++; + + } else { + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-ORG"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-ORG;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), + wxSPropertySeg2); + + } + + } + + } else if (wxSProperty == wxT("NOTE")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 5; + + if (NoteFirst == FALSE){ + + ContactDatav3.AddRaw(wxT("NOTE"), wxSPropertySeg2); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-NOTE;X-FIRST=TRUE;") + + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT("")); + + } + NoteFirst = TRUE; + ItemSeek++; + + } else { + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-NOTE"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-NOTE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), + wxSPropertySeg2); + + } + + } + + } else if (wxSProperty == wxT("CATEGORIES")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyType; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 12; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 11; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("PHOTO")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPropertyLen = wxSPropertySeg2.Len(); + SplitPoints.clear(); + SplitLength.clear(); + intSplitsFound = 0; + intSplitSize = 0; + + CaptureString(&wxSPropertySeg2, FALSE); + + for (int i = 0; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (wxSPropertySeg2.Mid(i, 1) == wxT(";")){ + + intSplitsFound++; + SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1))); + + if (intSplitsFound == 6){ + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + break; + + } else { + + SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + intSplitSize = 0; + + } + + } + + wxString wxSPhotoURI; + wxString wxSPhotoMIME; + wxString wxSPhotoEncoding; + wxString wxSPhotoData; + std::string base64enc; + + if (intSplitsFound = 0){ + + } else { + + std::map::iterator striter; + + striter = SplitLength.find(1); + + wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":")); + + while (wSTDataType.HasMoreTokens() == TRUE){ + + wxSPhotoURI = wSTDataType.GetNextToken(); + wxSPhotoMIME = wSTDataType.GetNextToken(); + break; + + } + + wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 1)), wxT(",")); + + while (wSTDataInfo.HasMoreTokens() == TRUE){ + + wxSPhotoEncoding = wSTDataInfo.GetNextToken(); + wxSPhotoData = wSTDataInfo.GetNextToken(); + base64enc = wxSPhotoData.mb_str(); + break; + + } + + } + + + if (PhotoFirst == FALSE){ + + bool PhotoKeepData = FALSE; + + wxString wxSPhotoMIMEF; + + if (wxSPhotoMIME == wxT("image/png")){ + wxSPhotoMIMEF = wxT("PNG"); + } else if (wxSPhotoMIME == wxT("image/jpeg")){ + wxSPhotoMIMEF = wxT("JPEG"); + } else if (wxSPhotoMIME == wxT("image/gif")){ + wxSPhotoMIMEF = wxT("GIF"); + } else if (wxSPhotoMIME == wxT("image/bmp")){ + wxSPhotoMIMEF = wxT("BMP"); + } else { + wxSPhotoMIMEF = wxT("UNKNOWN"); + PhotoKeepData = TRUE; + } + + ContactDatav3.AddRaw(wxT("PHOTO;ENCODING=b;TYPE=") + wxSPhotoMIMEF, wxSPhotoData); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + } else { + + if (PhotoKeepData == TRUE){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO;X-FIRST=TRUE;") + + ContactLine.Mid((intPrevValue - 1), ((QuoteBreakPoint + 1) - (intPrevValue))), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO;X-FIRST=TRUE;") + + ContactLine.Mid((intPrevValue - 1), ((QuoteBreakPoint + 1) - (intPrevValue))), wxT("")); + + } + + } + PhotoFirst = TRUE; + ItemSeek++; + + } else { + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), + wxSPropertySeg2); + } + + } + + } else if (wxSProperty == wxT("LOGO")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 5; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-LOGO"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-LOGO;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("SOUND")) { + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 6; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-SOUND"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-SOUND;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("CALURI")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 8; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 7; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("CALADRURI")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 11; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 10; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("FBURL")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 6; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("KEY")){ + + int intPropertyLen = wxSPropertySeg1.Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + intPrevValue = 4; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-KEY"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-KEY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty == wxT("UID")){ + + ContactDatav3.AddRaw(wxT("UID"), wxSPropertySeg2); + + } else if (wxSProperty.Mid(0, 3) == wxT("VND")){ + + // Split the Vendor three ways. + + wxStringTokenizer wSTVendorDetails(wxSPropertySeg1, wxT("-")); + + wxString wxSVNDID; + wxString wxSVNDPropName; + + + int intPrevValue = (wxSProperty.Len() + 1); + + while (wSTVendorDetails.HasMoreTokens() == TRUE){ + + wSTVendorDetails.GetNextToken(); + wxSVNDID = wSTVendorDetails.GetNextToken(); + wxSVNDPropName = wSTVendorDetails.GetNextToken(); + break; + + } + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty, wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty.Mid(0, 2) == wxT("X-")){ + + + + int intPrevValue = (wxSProperty.Len() + 1); + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxSProperty, wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } + + // Reset the variables. + + QuoteMode = FALSE; + PropertyFind = TRUE; + ExtraLineSeek = TRUE; + ContactLineLen = 0; + QuoteBreakPoint = 0; + ContactLine.Clear(); + wxSProperty.Clear(); + + } + + ContactDatav3.AddRaw(wxT("END"), wxT("VCARD")); + *wxSData = ContactDatav3.WriteString(); + + return TRUE; + +} + +bool vCard34Conv::ConvertToV4(wxString *wxSData, vCard *vCardOut){ + + std::map ContactFileLines; + std::map ContactFileProcessed; + std::map ContactFileProcessedWorking; + std::map::iterator striter; + std::map::iterator iterbool; + std::map::iterator iterboolsub; + wxString ContactLineRec; + + // Process the received data. + + wxStringTokenizer wSTContactFileLines(*wxSData, wxT("\r\n")); + + int ContactLineSeek = 0; + + while (wSTContactFileLines.HasMoreTokens() == TRUE){ + + ContactLineRec = wSTContactFileLines.GetNextToken(); + ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLineRec)); + ContactFileProcessed.insert(std::make_pair(ContactLineSeek, FALSE)); + ContactLineSeek++; + + } + + bool QuoteMode = FALSE; + bool PropertyFind = TRUE; + bool HasExtraNicknames = FALSE; + bool IgnoreGender = FALSE; + bool ExtraLineSeek = TRUE; + bool ExtraLineSeekSub = TRUE; + bool BirthdayProcessed = FALSE; + bool AnniversaryProcessed = FALSE; + bool FNProcessed = FALSE; + bool GenderProcessed = FALSE; + bool NameProcessed = FALSE; + bool FNFirst = FALSE; + bool NicknameFirst = FALSE; + bool TitleFirst = FALSE; + bool OrganisationFirst = FALSE; + bool NoteFirst = FALSE; + bool PhotoFirst = FALSE; + bool LogoFirst = FALSE; + bool NameFirst = FALSE; + bool FoundData = FALSE; + int intExtraNickname = 0; + wxString wxSProperty; + wxString wxSPropertyVCARD4; + wxString wxSPropertySeg1; + wxString wxSPropertySeg2; + wxString wxSPropertyNextLine; + wxString ContactLine; + wxString ContactLineSub; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyDataStr; + int ContactLineLen = 0; + int ContactLineSubLen = 0; + int QuoteBreakPoint = 0; + int intPrevValueSub = 0; + + std::map PropertyData; + std::map PropertyLock; + std::map TempPropertyData; + std::map TempPropertyLock; + std::map TempSplitPoints; + std::map TempSplitLength; + std::map::iterator SLiter; + + wxString PropertFindSub; + wxString wxSPropertySub; + wxString wxSPropertySeg1Sub; + wxString wxSPropertySeg2Sub; + wxString wxSPropertyValues; + wxString wxSPropertyData; + wxString wxSPropertyNameConv; + wxString wxSPropertyXVCard4Value; + wxString ItemProcString; + + bool XVCard4Value = FALSE; + bool VCard3Value = FALSE; + bool SeekItemData = FALSE; + + wxString strVer; + + // Setup the version string. + + strVer.Append(wxT("-//Xestia//Address Book Version ")); + strVer.Append(wxT(XSDAB_VERSION)); + strVer.Append(wxT("//KW")); + + vCardOut->AddRaw(wxT("BEGIN"), wxT("VCARD")); + vCardOut->AddRaw(wxT("VERSION"), wxT("4.0")); + vCardOut->AddRaw(wxT("PRODID"), strVer); + + // FN + // NICKNAME + // TITLE + // ORG + // NOTE + // PHOTO + + // Process the properties which have X-FIRST. + + // Clone the ContactFileProcessed into ContactFileProcessedWorking. + + ContactFileProcessedWorking.insert(ContactFileProcessed.begin(), ContactFileProcessed.end()); + + for (std::map::iterator iter = ContactFileLines.begin(); + iter != ContactFileLines.end(); ++iter){ + + ExtraLineSeek = TRUE; + + iterbool = ContactFileProcessed.find(iter->first); + + ContactLine = iter->second; + + // Ignore certain variables as they are not needed. + + if (ContactLine == wxT("BEGIN:VCARD") || + ContactLine == wxT("END:VCARD") || + ContactLine.Mid(0, 8) == wxT("VERSION:") || + ContactLine.Mid(0, 7) == wxT("PRODID:") || + ContactLine.Mid(0, 5) == wxT("X-AIM") || + ContactLine.Mid(0, 5) == wxT("X-MSN") || + ContactLine.Mid(0, 5) == wxT("X-ICQ") || + ContactLine.Mid(0, 10) == wxT("X-GADUGADU") || + ContactLine.Mid(0, 7) == wxT("X-YAHOO") || + ContactLine.Mid(0, 7) == wxT("X-SKYPE") || + ContactLine.Mid(0, 8) == wxT("X-JABBER") || + ContactLine.Mid(0, 4) == wxT("REV:")){ + + iterbool->second = TRUE; + continue; + + } + + if (iterbool->second == TRUE){ + + continue; + + } + + if (ContactLine.Mid(0, 1) == wxT(" ") || ContactLine.Mid(0, 1) == wxT("\t")){ + + continue; + + } + + if (ContactLine.Mid(0, 4) == wxT("item")){ + + // Line is a itemn... so ignore. + + continue; + + } + + std::map DataLineProcess; + std::map::iterator DLSLiter; + std::map DataLineProcessOriginal; + int DataLineSeek = 0; + int DataLineSeekOrig = 0; + + std::map::iterator itersub = iter; + DataLineProcessOriginal.insert(std::make_pair(DataLineSeekOrig, iterbool->first)); + DataLineSeekOrig++; + + while (ExtraLineSeek == TRUE){ + + // Check if there is extra data on the next line + // (indicated by space or tab at the start) and add data. + + itersub++; + + if (itersub == ContactFileLines.end()){ + + break; + + } + + iterboolsub = ContactFileProcessed.find(itersub->first); + + if (iterboolsub == ContactFileProcessed.end()){ + + break; + + } + + if (iterboolsub->second == TRUE){ + + continue; + + } + + wxSPropertyNextLine = itersub->second; + + if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ + + wxSPropertyNextLine.Remove(0, 1); + //wxSPropertyNextLine.Trim(FALSE); + //ContactLine.Trim(); + ContactLine.Append(wxSPropertyNextLine); + DataLineProcessOriginal.insert(std::make_pair(DataLineSeekOrig, iterboolsub->first)); + DataLineSeekOrig++; + //iterboolsub->second = TRUE; + + } else { + + ExtraLineSeek = FALSE; + + } + + } + + ContactLineLen = ContactLine.Len(); + + for (int i = 0; i <= ContactLineLen; i++){ + + if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){ + + PropertyFind = FALSE; + + } else if (PropertyFind == TRUE){ + + wxSProperty.Append(ContactLine.Mid(i, 1)); + + } + + if (ContactLine.Mid(i, 1) == wxT("\"")){ + + if (QuoteMode == TRUE){ + + QuoteMode = FALSE; + + } else { + + QuoteMode = TRUE; + + } + + } + + if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){ + + QuoteBreakPoint = i; + break; + + } + + } + + wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint); + wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1)); + + wxStringTokenizer wxSPropertySegSplit(wxSPropertySeg1, wxT(";")); + wxSProperty = wxSPropertySegSplit.GetNextToken(); + + // Check what type of property it is. + + FoundData = FALSE; + + if ((wxSProperty == wxT("PHOTO") && PhotoFirst == FALSE) || + (wxSProperty == wxT("NICKNAME") && NicknameFirst == FALSE) || + (wxSProperty == wxT("TITLE") && TitleFirst == FALSE) || + (wxSProperty == wxT("FN") && FNFirst == FALSE) || + (wxSProperty == wxT("ORG") && OrganisationFirst == FALSE) || + (wxSProperty == wxT("NOTE") && NoteFirst == FALSE)){ + + wxSPropertyVCARD4 = wxT("X-VCARD4-") + wxSProperty; + intPrevValueSub = (wxSPropertyVCARD4.Len() + 2); + + for (std::map::iterator itersub = ContactFileLines.begin(); + itersub != ContactFileLines.end(); ++itersub){ + + //DataLineProcess = DataLineProcessOriginal; + //DataLineSeek = DataLineSeekOrig; + + ContactLineSub = itersub->second; + + ExtraLineSeekSub = TRUE; + + iterboolsub = ContactFileProcessed.find(itersub->first); + std::map::iterator iterorig = ContactFileProcessed.find(itersub->first); + //std::map::iterator itersuborig; + + // Ignore certain variables as they are not needed. + + if (ContactLineSub == wxT("BEGIN:VCARD") || + ContactLineSub == wxT("END:VCARD") || + ContactLineSub.Mid(0, 8) == wxT("VERSION:") || + ContactLineSub.Mid(0, 7) == wxT("PRODID:") || + ContactLineSub.Mid(0, 5) == wxT("X-AIM") || + ContactLineSub.Mid(0, 5) == wxT("X-MSN") || + ContactLineSub.Mid(0, 5) == wxT("X-ICQ") || + ContactLineSub.Mid(0, 10) == wxT("X-GADUGADU") || + ContactLineSub.Mid(0, 7) == wxT("X-YAHOO") || + ContactLineSub.Mid(0, 7) == wxT("X-SKYPE") || + ContactLineSub.Mid(0, 8) == wxT("X-JABBER") || + ContactLineSub.Mid(0, 4) == wxT("REV:")){ + + iterboolsub->second = TRUE; + continue; + + } + + if (iterboolsub->second == TRUE){ + + continue; + + } + + if (ContactLineSub.Mid(0, 1) == wxT(" ") || ContactLineSub.Mid(0, 1) == wxT("\t")){ + + continue; + + } + + if (ContactLineSub.Mid(0, 4) == wxT("item")){ + + // Line is a itemn... so ignore. + + continue; + + } + + //std::map::iterator itersub = iter; + + DataLineProcess.insert(std::make_pair(DataLineSeek, itersub->first)); + DataLineSeek++; + + + + while (ExtraLineSeekSub == TRUE){ + + if (itersub == ContactFileLines.end()){ + ExtraLineSeekSub; + continue; + } else { + itersub++; + + } + + iterboolsub = ContactFileProcessedWorking.find(itersub->first); + + wxSPropertyNextLine = itersub->second; + + if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ + + wxSPropertyNextLine.Remove(0, 1); + //wxSPropertyNextLine.Trim(FALSE); + //ContactLine.Trim(); + ContactLineSub.Append(wxSPropertyNextLine); + //iterboolsub->second = TRUE; + DataLineProcess.insert(std::make_pair(DataLineSeek, itersub->first)); + DataLineSeek++; + + } else { + + itersub--; + ExtraLineSeekSub = FALSE; + + } + + } + + /*while (ExtraLineSeekSub == TRUE && iterboolsub != ContactFileProcessedWorking.end()){ + + // Check if there is extra data on the next line + // (indicated by space or tab at the start) and add data. + + itersub++; + + iterboolsub = ContactFileProcessedWorking.find(itersub->first); + + if (iterboolsub->second == TRUE){ + + continue; + + } + + if (itersub == ContactFileLines.end()){ + + break; + + } + + wxSPropertyNextLine = itersub->second; + + if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ + + wxSPropertyNextLine.Remove(0, 1); + //wxSPropertyNextLine.Trim(FALSE); + //ContactLine.Trim(); + ContactLineSub.Append(wxSPropertyNextLine); + //iterboolsub->second = TRUE; + DataLineProcess.insert(std::make_pair(DataLineSeek, itersub->first)); + DataLineSeek++; + + } else { + + itersub--; + ExtraLineSeekSub = FALSE; + + } + + if (iterboolsub == ContactFileProcessedWorking.end()){ + + break; + ExtraLineSeekSub = FALSE; + + } + + }*/ + + ContactLineSubLen = ContactLineSub.Len(); + PropertyFind = TRUE; + wxSPropertySub.clear(); + + for (int i = 0; i <= ContactLineSubLen; i++){ + + if ((ContactLineSub.Mid(i, 1) == wxT(";") || ContactLineSub.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){ + + PropertyFind = FALSE; + + } else if (PropertyFind == TRUE){ + + wxSPropertySub.Append(ContactLineSub.Mid(i, 1)); + + } + + if (ContactLineSub.Mid(i, 1) == wxT("\"")){ + + if (QuoteMode == TRUE){ + + QuoteMode = FALSE; + + } else { + + QuoteMode = TRUE; + + } + + } + + if (ContactLineSub.Mid(i, 1) == wxT(":") && ContactLineSub.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){ + + QuoteBreakPoint = i; + break; + + } + + } + + if (wxSPropertySub != wxSPropertyVCARD4){ + + wxSPropertySub.clear(); + DataLineSeek = 0; + DataLineProcess.clear(); + continue; + + } + + wxSPropertySeg1Sub = ContactLineSub.Mid(0, QuoteBreakPoint); + wxSPropertySeg2Sub = ContactLineSub.Mid((QuoteBreakPoint + 1)); + + // Split the property name data. + + // Strip the X-VCARD4- from the variable. + + wxString wxSPropertyChopped = wxSPropertySeg1Sub.Mid(9); + + intPrevValueSub = (wxSProperty.Len() + 2); + + SplitValuesData(&wxSPropertyChopped, &TempSplitPoints, &TempSplitLength, intPrevValueSub, &TempPropertyData); + + // Process the splitted data into temporary property data. + + bool FirstToken = TRUE; + + // Look for certain property names and the X-FIRST + // property name. + + bool ProcessData = FALSE; + + // Check for X-FIRST. + + for (std::map::iterator xfiter = TempPropertyData.begin(); + xfiter != TempPropertyData.end(); ++xfiter){ + + PropertyName = xfiter->first; + PropertyValue = xfiter->second; + + if (PropertyName == wxT("X-FIRST") && PropertyValue == wxT("TRUE")){ + + ProcessData = TRUE; + + if (wxSProperty == wxT("PHOTO")){ PhotoFirst = TRUE; } + else if (wxSProperty == wxT("NICKNAME")){ NicknameFirst = TRUE; } + else if (wxSProperty == wxT("TITLE")){ TitleFirst = TRUE; } + else if (wxSProperty == wxT("FN")){ FNFirst = TRUE; } + else if (wxSProperty == wxT("ORG")){ OrganisationFirst = TRUE; } + else if (wxSProperty == wxT("NOTE")){ NoteFirst = TRUE; } + break; + + } + + } + + if (ProcessData == FALSE){ + + DataLineProcess.clear(); + DataLineSeek = 0; + TempPropertyData.clear(); + + } else { + + wxT("PHOTODANCEMATCH!"); + + for (std::map::iterator xfiter = TempPropertyData.begin(); + xfiter != TempPropertyData.end(); ++xfiter){ + + PropertyName = xfiter->first; + PropertyValue = xfiter->second; + + if (PropertyName == wxT("X-FIRST")){ + + continue; + + } + + PropertyData.insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLock.insert(std::make_pair(PropertyName, FALSE)); + + } + + // Mark all lines as processed. + + for (std::map::iterator dpiter = DataLineProcess.begin(); + dpiter != DataLineProcess.end(); ++dpiter){ + + DLSLiter = ContactFileProcessed.find(dpiter->second); + DLSLiter->second = TRUE; + + } + + for (std::map::iterator dpoiter = DataLineProcessOriginal.begin(); + dpoiter != DataLineProcessOriginal.end(); ++dpoiter){ + + DLSLiter = ContactFileProcessed.find(dpoiter->second); + DLSLiter->second = TRUE; + + } + + DataLineProcess.clear(); + DataLineProcessOriginal.clear(); + DataLineSeek = 0; + DataLineSeekOrig = 0; + TempSplitPoints.clear(); + TempSplitLength.clear(); + TempPropertyData.clear(); + FoundData = TRUE; + + break; + + } + + } + + } else { + + wxSProperty.clear(); + wxSPropertySub.Clear(); + wxSPropertySeg1.Clear(); + wxSPropertySeg2.Clear(); + wxSPropertySeg1Sub.Clear(); + wxSPropertySeg2Sub.Clear(); + wxSPropertyValues.Clear(); + wxSPropertyData.Clear(); + wxSPropertyXVCard4Value.Clear(); + wxSPropertyNameConv.Clear(); + PropertyData.clear(); + PropertyLock.clear(); + ContactLine.clear(); + ContactLineSub.clear(); + DataLineProcess.clear(); + DataLineProcessOriginal.clear(); + TempSplitPoints.clear(); + TempSplitLength.clear(); + wxSPropertyVCARD4.clear(); + DataLineSeek = 0; + DataLineSeekOrig = 0; + XVCard4Value = FALSE; + VCard3Value = FALSE; + + } + + if (FoundData == FALSE){ + + wxSProperty.clear(); + wxSPropertySub.Clear(); + wxSPropertySeg1.Clear(); + wxSPropertySeg2.Clear(); + wxSPropertySeg1Sub.Clear(); + wxSPropertySeg2Sub.Clear(); + wxSPropertyValues.Clear(); + wxSPropertyData.Clear(); + wxSPropertyXVCard4Value.Clear(); + wxSPropertyNameConv.Clear(); + PropertyData.clear(); + PropertyLock.clear(); + ContactLine.clear(); + ContactLineSub.clear(); + DataLineProcess.clear(); + DataLineProcessOriginal.clear(); + TempSplitPoints.clear(); + TempSplitLength.clear(); + wxSPropertyVCARD4.clear(); + DataLineSeek = 0; + DataLineSeekOrig = 0; + XVCard4Value = FALSE; + VCard3Value = FALSE; + + } + + ConvertV4PropertyProc(&wxSProperty, &wxSPropertySeg1, &wxSPropertySeg2, + &wxSPropertyValues, &wxSPropertyData, &wxSPropertyXVCard4Value, + &wxSPropertyNameConv, &PropertyData, &PropertyLock, FALSE, &VCard3Value, &XVCard4Value); + + wxString FinalPropertyData; + + FinalPropertyData.Append(wxSPropertyNameConv); + + for (std::map::iterator striter = PropertyData.begin(); + striter != PropertyData.end(); ++striter){ + + FinalPropertyData.Append(wxT(";")); + FinalPropertyData.Append(striter->first); + FinalPropertyData.Append(wxT("=")); + FinalPropertyData.Append(striter->second); + + } + + wxString FinalPropValue; + + if (wxSPropertyXVCard4Value.IsEmpty()){ + + FinalPropValue = wxSPropertyData; + + } else { + + if (wxSPropertyXVCard4Value != wxSPropertyData){ + + FinalPropValue = wxSPropertyXVCard4Value; + + } + + } + + if (FinalPropertyData.IsEmpty() && FinalPropValue.IsEmpty()){ + + continue; + + } + + vCardOut->AddRaw(FinalPropertyData, FinalPropValue); + + wxSProperty.clear(); + wxSPropertySub.Clear(); + wxSPropertySeg1.Clear(); + wxSPropertySeg2.Clear(); + wxSPropertySeg1Sub.Clear(); + wxSPropertySeg2Sub.Clear(); + wxSPropertyValues.Clear(); + wxSPropertyData.Clear(); + wxSPropertyXVCard4Value.Clear(); + wxSPropertyNameConv.Clear(); + //FinalPropertyData.clear(); + //FinalPropValue.clear(); + PropertyData.clear(); + PropertyLock.clear(); + ContactLine.clear(); + ContactLineSub.clear(); + DataLineProcess.clear(); + DataLineProcessOriginal.clear(); + wxSPropertyVCARD4.clear(); + DataLineSeek = 0; + DataLineSeekOrig = 0; + XVCard4Value = FALSE; + VCard3Value = FALSE; + + } + + // Process the non-itemn values. + + for (std::map::iterator iter = ContactFileLines.begin(); + iter != ContactFileLines.end(); ++iter){ + + ExtraLineSeek = TRUE; + + iterbool = ContactFileProcessed.find(iter->first); + + ContactLine = iter->second; + + // Ignore certain variables as they are not needed. + + if (ContactLine == wxT("BEGIN:VCARD") || + ContactLine == wxT("END:VCARD") || + ContactLine.Mid(0, 8) == wxT("VERSION:") || + ContactLine.Mid(0, 7) == wxT("PRODID:") || + ContactLine.Mid(0, 5) == wxT("X-AIM") || + ContactLine.Mid(0, 5) == wxT("X-MSN") || + ContactLine.Mid(0, 5) == wxT("X-ICQ") || + ContactLine.Mid(0, 10) == wxT("X-GADUGADU") || + ContactLine.Mid(0, 7) == wxT("X-YAHOO") || + ContactLine.Mid(0, 7) == wxT("X-SKYPE") || + ContactLine.Mid(0, 8) == wxT("X-JABBER") || + ContactLine.Mid(0, 4) == wxT("REV:")){ + + iterbool->second = TRUE; + continue; + + } + + if (iterbool->second == TRUE){ + + continue; + + } + + if (ContactLine.Mid(0, 1) == wxT(" ") || ContactLine.Mid(0, 1) == wxT("\t")){ + + continue; + + } + + if (ContactLine.Mid(0, 4) == wxT("item")){ + + // Line is a itemn... so ignore. + + continue; + + } + + std::map::iterator itersub = iter; + + while (ExtraLineSeek == TRUE){ + + // Check if there is extra data on the next line + // (indicated by space or tab at the start) and add data. + + if (itersub == ContactFileLines.end()){ + ExtraLineSeekSub; + continue; + } + else { + itersub++; + + } + + iterboolsub = ContactFileProcessedWorking.find(itersub->first); + + if (iterboolsub == ContactFileProcessedWorking.end()){ + + break; + + } + + if (iterboolsub->second == TRUE){ + + continue; + + } + + if (itersub == ContactFileLines.end()){ + + break; + + } + + wxSPropertyNextLine = itersub->second; + + if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ + + wxSPropertyNextLine.Remove(0, 1); + //wxSPropertyNextLine.Trim(FALSE); + //ContactLine.Trim(); + ContactLine.Append(wxSPropertyNextLine); + iterboolsub->second = TRUE; + + } else { + + ExtraLineSeek = FALSE; + + } + + } + + ContactLineLen = ContactLine.Len(); + + for (int i = 0; i <= ContactLineLen; i++){ + + if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){ + + PropertyFind = FALSE; + + } else if (PropertyFind == TRUE){ + + wxSProperty.Append(ContactLine.Mid(i, 1)); + + } + + if (ContactLine.Mid(i, 1) == wxT("\"")){ + + if (QuoteMode == TRUE){ + + QuoteMode = FALSE; + + } else { + + QuoteMode = TRUE; + + } + + } + + if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){ + + QuoteBreakPoint = i; + break; + + } + + } + + wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint); + wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1)); + + wxStringTokenizer wxSPropertySegSplit(wxSPropertySeg1, wxT(";")); + wxSProperty = wxSPropertySegSplit.GetNextToken(); + + std::map DataLineProcess; + std::map::iterator DLSLiter; + int DataLineSeek = 0; + + // Look for the X-VCARD4-(variablename) equivilant. + + wxSPropertyVCARD4 = wxT("X-VCARD4-") + wxSProperty; + + // Sort out remainder of the types. + + ConvertV4PropertyProc(&wxSProperty, &wxSPropertySeg1, &wxSPropertySeg2, + &wxSPropertyValues, &wxSPropertyData, &wxSPropertyXVCard4Value, + &wxSPropertyNameConv, &PropertyData, &PropertyLock, FALSE, &VCard3Value, &XVCard4Value); + + wxString FinalPropertyData; + + FinalPropertyData.Append(wxSPropertyNameConv); + + for (std::map::iterator striter = PropertyData.begin(); + striter != PropertyData.end(); ++striter){ + + FinalPropertyData.Append(wxT(";")); + FinalPropertyData.Append(striter->first); + FinalPropertyData.Append(wxT("=")); + FinalPropertyData.Append(striter->second); + + } + + wxString FinalPropValue; + + if (wxSPropertyXVCard4Value.IsEmpty()){ + + FinalPropValue = wxSPropertyData; + + } else { + + if (wxSPropertyXVCard4Value != wxSPropertyData){ + + FinalPropValue = wxSPropertyXVCard4Value; + + } + + } + + vCardOut->AddRaw(FinalPropertyData, FinalPropValue); + + wxSProperty.clear(); + wxSPropertySub.Clear(); + wxSPropertySeg1.Clear(); + wxSPropertySeg2.Clear(); + wxSPropertyValues.Clear(); + wxSPropertyData.Clear(); + wxSPropertyXVCard4Value.Clear(); + wxSPropertyNameConv.Clear(); + //FinalPropertyData.clear(); + //FinalPropValue.clear(); + PropertyData.clear(); + PropertyLock.clear(); + ContactLine.clear(); + XVCard4Value = FALSE; + VCard3Value = FALSE; + + } + + int FNCount = 0; + int NameCount = 0; + int NicknameCount = 0; + int ADRCount = 0; + int EmailCount = 0; + int IMPPCount = 0; + int TelCount = 0; + int LangCount = 0; + int TZCount = 0; + int GeoCount = 0; + int URLCount = 0; + int RelatedCount = 0; + int TitleCount = 0; + int RoleCount = 0; + int OrgCount = 0; + int NoteCount = 0; + int CategoryCount = 0; + int PhotoCount = 0; + int LogoCount = 0; + int SoundCount = 0; + int CalAdrCount = 0; + int CalReqAdrCount = 0; + int FreeBusyCount = 0; + int KeyCount = 0; + int VendorCount = 0; + int XTokenCount = 0; + int ItemSeek = 1; + int MaxItemNumber = 0; + int ItemOrdered = 0; + int ItemUnordered = 0; + int ItemNumber = 0; + int ItemStringSeekLen = 0; + int ItemSeekSub = 0; + int ItemSeekSecSub = 0; + //int intValueSeek = 1; + + std::map NumberedName; + std::map NumberedData; + std::map NumberedPropValues; + std::map NumberedPropOldValue; + + std::map UnNumberedName; + std::map UnNumberedData; + std::map UnNumberedPropValues; + std::map UnNumberedPropOldValue; + + // Part 1: Get the itemn number. + + std::map::iterator iterboolsecsub; + std::map::iterator itersub; + std::map TempData; + PropertyData.clear(); + PropertyLock.clear(); + wxString ItemString; + wxString ItemStringSeek; + wxString ItemPropName; + ContactLineSeek = 0; + + ContactLineSub.clear(); + ExtraLineSeekSub = 0; + wxString wxSPropertyNextLineSub; + ContactLineSubLen = 0; + int ContactLineSeekSub = 0; + int ItemIndex = 0; + PropertFindSub.clear(); + wxSPropertySub.clear(); + wxSPropertySeg1Sub.clear(); + wxSPropertySeg2Sub.clear(); + wxSPropertyValues.clear(); + wxSPropertyData.clear(); + wxSPropertyNameConv.clear(); + wxSPropertyXVCard4Value.clear(); + ItemProcString.clear(); + + XVCard4Value = FALSE; + VCard3Value = FALSE; + SeekItemData = FALSE; + + std::map ItemMapIndex; + //std::map ItemNameIndex; + + // Look for item in the initial line, process into a proper line then + // look for other lines with the same item association. + + for (std::map::iterator iter = ContactFileLines.begin(); + iter != ContactFileLines.end(); ++iter){ + + ExtraLineSeek = TRUE; + + iterbool = ContactFileProcessed.find(iter->first); + + if (iterbool->second == TRUE){ + + continue; + + } + + ContactLine = iter->second; + + if (ContactLine.Mid(0, 1) == wxT(" ") || ContactLine.Mid(0, 1) == wxT("\t")){ + + continue; + + } + + if (ContactLine.Mid(0, 4) != wxT("item")){ + + continue; + + } + + // Get Item data. + + //ContactLineSeekSub = ContactLineSeek; + std::map::iterator itersub = iter; + + while (ExtraLineSeek == TRUE){ + + // Check if there is extra data on the next line + // (indicated by space or tab at the start) and add data. + + itersub++; + iterboolsub = ContactFileProcessed.find(itersub->first); + + if (iterboolsub == ContactFileProcessed.end()){ + + break; + + } + + if (iterboolsub->second == TRUE){ + + continue; + + } + + if (itersub == ContactFileLines.end()){ + + break; + + } + + wxSPropertyNextLine = itersub->second; + + if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ + + wxSPropertyNextLine.Remove(0, 1); + //wxSPropertyNextLine.Trim(FALSE); + //ContactLine.Trim(); + ContactLine.Append(wxSPropertyNextLine); + iterboolsub->second = TRUE; + + } else { + + ExtraLineSeek = FALSE; + + } + + } + + ContactLineLen = ContactLine.Len(); + + for (int i = 0; i <= ContactLineLen; i++){ + + if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){ + + PropertyFind = FALSE; + + } else if (PropertyFind == TRUE){ + + wxSProperty.Append(ContactLine.Mid(i, 1)); + + } + + if (ContactLine.Mid(i, 1) == wxT("\"")){ + + if (QuoteMode == TRUE){ + + QuoteMode = FALSE; + + } else { + + QuoteMode = TRUE; + + } + + } + + if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){ + + QuoteBreakPoint = i; + break; + + } + + } + + wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint); + wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1)); + + // Go through the lines and collect the lines like itemn. + + std::map *ItemListData; + ItemListData = new std::map; + + wxStringTokenizer ItemData(wxSPropertySeg1, wxT(".")); + + ItemString = ItemData.GetNextToken(); + ItemStringSeek = wxT("item") + ItemString.Mid(4); + + wxStringTokenizer ItemPropSplit(ItemData.GetNextToken(), wxT(";")); + + ItemPropName = ItemPropSplit.GetNextToken(); + + ItemStringSeekLen = ItemStringSeek.Len(); + + ItemIndex = 0; + + for (std::map::iterator itersec = ContactFileLines.begin(); + itersec != ContactFileLines.end(); ++itersec){ + + ExtraLineSeek = TRUE; + + iterboolsub = ContactFileProcessed.find(itersec->first); + + if (iterboolsub->second == TRUE){ + + continue; + + } + + ContactLineSub = itersec->second; + + wxStringTokenizer ItemProcData(ContactLineSub, wxT(".")); + ItemProcString = ItemData.GetNextToken(); + + if (ItemStringSeek != ContactLineSub.Mid(0, ItemStringSeekLen)){ + + continue; + + } + + ItemIndex++; + + ItemListData->insert(std::make_pair(ItemIndex, ContactLineSub)); + + iterboolsub->second = TRUE; + + } + + //ItemNameIndex.insert(std::make_pair(ItemStringSeek, ItemPropName)); + ItemListData->insert(std::make_pair(ItemIndex, ContactLineSub)); + ItemMapIndex.insert(std::make_pair(ItemStringSeek, ItemListData)); + + } + + // Process each itemn set. + + for (std::map::iterator iter = ItemMapIndex.begin(); + iter != ItemMapIndex.end(); ++iter){ + + std::map *ItemDataPtr; + + ItemDataPtr = (std::map*)iter->second; + + for (std::map::iterator itersub = ItemDataPtr->begin(); + itersub != ItemDataPtr->end(); ++itersub){ + + ContactLine = itersub->second; + + ContactLineLen = ContactLine.Len(); + + for (int i = 0; i <= ContactLineLen; i++){ + + if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){ + + PropertyFind = FALSE; + + } else if (PropertyFind == TRUE){ + + wxSProperty.Append(ContactLine.Mid(i, 1)); + + } + + if (ContactLine.Mid(i, 1) == wxT("\"")){ + + if (QuoteMode == TRUE){ + + QuoteMode = FALSE; + + } else { + + QuoteMode = TRUE; + + } + + } + + if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){ + + QuoteBreakPoint = i; + break; + + } + + } + + wxSPropertySeg1Sub = ContactLine.Mid(0, QuoteBreakPoint); + wxSPropertySeg2Sub = ContactLine.Mid((QuoteBreakPoint + 1)); + + wxStringTokenizer wxSPropertySegSplit(wxSPropertySeg1Sub, wxT(";")); + wxSProperty = wxSPropertySegSplit.GetNextToken(); + + // Sort out remainder of the types. + + // Skip certain X-* IM variables as they are processed via + // IMPP. + + if (wxSProperty == wxT("X-AIM") || wxSProperty == wxT("X-MSN") || + wxSProperty == wxT("X-ICQ") || wxSProperty == wxT("X-GADUGADU") || + wxSProperty == wxT("X-YAHOO") || wxSProperty == wxT("X-SKYPE") || + wxSProperty == wxT("X-JABBER")){ + + wxSProperty.clear(); + wxSPropertySub.Clear(); + wxSPropertySeg1.Clear(); + wxSPropertySeg2.Clear(); + wxSPropertyValues.Clear(); + wxSPropertyData.Clear(); + wxSPropertyXVCard4Value.Clear(); + wxSPropertyNameConv.Clear(); + //FinalPropertyData.clear(); + //FinalPropValue.clear(); + PropertyData.clear(); + PropertyLock.clear(); + ContactLine.clear(); + XVCard4Value = FALSE; + VCard3Value = FALSE; + continue; + + } + + ConvertV4PropertyProc(&wxSProperty, &wxSPropertySeg1Sub, &wxSPropertySeg2Sub, + &wxSPropertyValues, &wxSPropertyData, &wxSPropertyXVCard4Value, + &wxSPropertyNameConv, &PropertyData, &PropertyLock, TRUE, &VCard3Value, &XVCard4Value); + + } + + if (wxSPropertyNameConv.IsEmpty()){ + + wxSProperty.clear(); + wxSPropertySub.Clear(); + wxSPropertySeg1.Clear(); + wxSPropertySeg2.Clear(); + wxSPropertyValues.Clear(); + wxSPropertyData.Clear(); + wxSPropertyXVCard4Value.Clear(); + wxSPropertyNameConv.Clear(); + //FinalPropertyData.clear(); + //FinalPropValue.clear(); + PropertyData.clear(); + PropertyLock.clear(); + ContactLine.clear(); + XVCard4Value = FALSE; + VCard3Value = FALSE; + continue; + + } + + wxString FinalPropertyData; + + FinalPropertyData.Append(wxSPropertyNameConv); + + for (std::map::iterator striter = PropertyData.begin(); + striter != PropertyData.end(); ++striter){ + + FinalPropertyData.Append(wxT(";")); + FinalPropertyData.Append(striter->first); + FinalPropertyData.Append(wxT("=")); + FinalPropertyData.Append(striter->second); + + } + + wxString FinalPropValue; + + if (wxSPropertyXVCard4Value.IsEmpty()){ + + FinalPropValue = wxSPropertyData; + + } else { + + if (wxSPropertyXVCard4Value != wxSPropertyData){ + + FinalPropValue = wxSPropertyData; + + } else { + + FinalPropValue = wxSPropertyXVCard4Value; + + } + + } + + vCardOut->AddRaw(FinalPropertyData, FinalPropValue); + + wxSProperty.clear(); + wxSPropertySub.Clear(); + wxSPropertySeg1Sub.Clear(); + wxSPropertySeg2Sub.Clear(); + wxSPropertyValues.Clear(); + wxSPropertyData.Clear(); + wxSPropertyXVCard4Value.Clear(); + wxSPropertyNameConv.Clear(); + FinalPropertyData.clear(); + FinalPropValue.clear(); + PropertyData.clear(); + PropertyLock.clear(); + ContactLine.clear(); + XVCard4Value = FALSE; + VCard3Value = FALSE; + + TempData.clear(); + //PropertyData.clear(); + //PropertyLock.clear(); + + } + + // Delete data. + + std::map *ItemEraseData; + + for (std::map::iterator iter = ItemMapIndex.begin(); + iter != ItemMapIndex.end(); ++iter){ + + ItemEraseData = (std::map*)iter->second; + + delete ItemEraseData; + ItemEraseData = NULL; + + } + + ItemMapIndex.clear(); + + vCardOut->AddRaw(wxT("END"), wxT("VCARD")); + + return TRUE; + +} + +void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName, + wxString *wxSPropertySeg1Ptr, wxString *wxSPropertySeg2Ptr, + wxString *wxSPropertyPropValuesOut, wxString *wxSPropertyDataOut, + wxString *wxSPropertyXVCard4Value, wxString *wxSPropertyDataNameOut, + std::map *PropertyDataMap, + std::map *PropertyLockMap, + bool ProcessItemData, bool *VCardV3Value, bool *XVCardV4Value){ + + wxString wxSProperty; + wxString wxSPropertySeg1Chopped; + + if (ProcessItemData == TRUE){ + + wxStringTokenizer wxSPropertySplit(*wxSPropertyName, wxT(".")); + + wxSPropertySplit.GetNextToken(); + wxSProperty = wxSPropertySplit.GetNextToken(); + + // Look for . in wxSPropertySeg1Ptr and remove all data before + // the . + + int ItemSeek = wxSPropertySeg1Ptr->Find(wxT(".")); + wxSPropertySeg1Chopped = wxSPropertySeg1Ptr->Mid((ItemSeek + 1)); + + + } else { + + wxSProperty = *wxSPropertyName; + + } + + + // Go through each of the vCard 3.0 properties. + + // EMAIL + + if (wxSProperty == wxT("EMAIL")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("EMAIL"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("type") && PropertyValue == wxT("INTERNET")){ + continue; + } + + if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){ + + if (ProcessItemData == FALSE){ + PropertyName = wxT("PREF"); + PropertyValue = wxT("50"); + } else { + continue; + } + + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){ + PropertyValue = wxT("home"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){ + PropertyValue = wxT("work"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){ + PropertyName = wxT("X-TYPE"); + PropertyValue = wxT("other"); + } + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // ADR + + if (wxSProperty == wxT("ADR")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("ADR"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){ + + if (ProcessItemData == FALSE){ + PropertyName = wxT("PREF"); + PropertyValue = wxT("50"); + } else { + continue; + } + + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){ + PropertyValue = wxT("home"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){ + PropertyValue = wxT("work"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){ + PropertyName = wxT("X-TYPE"); + PropertyValue = wxT("other"); + } + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // LABEL + + if (wxSProperty == wxT("LABEL")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("ADR"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){ + continue; + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){ + PropertyValue = wxT("home"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){ + PropertyValue = wxT("work"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){ + PropertyName = wxT("X-TYPE"); + PropertyValue = wxT("other"); + } + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + PropertyDataMap->insert(std::make_pair(wxT("X-LABEL"), wxT("TRUE"))); + + } + + // IMPP + + if (wxSProperty == wxT("IMPP")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxStringTokenizer IMPPSplit(*wxSPropertySeg2Ptr, wxT(":")); + wxString IMPPType; + wxString IMPPData; + + IMPPType = IMPPSplit.GetNextToken(); + + if (IMPPSplit.HasMoreTokens()){ + + IMPPData = IMPPSplit.GetNextToken(); + + if (IMPPType == wxT("ymsgr")){ + + IMPPType = wxT("yahoo"); + + } + + *wxSPropertySeg2Ptr = IMPPType + wxT(":") + IMPPData; + + } + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("IMPP"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){ + continue; + } + + if (PropertyName == wxT("X-SERVICE-TYPE")){ + continue; + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){ + PropertyValue = wxT("home"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){ + PropertyValue = wxT("work"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){ + PropertyName = wxT("X-TYPE"); + PropertyValue = wxT("other"); + } + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // TEL + + if (wxSProperty == wxT("TEL")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map TelType; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(wxT("tel:")); + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("TEL"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){ + continue; + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){ + TelType.insert(std::make_pair(wxT("home"), wxT("home"))); + continue; + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){ + TelType.insert(std::make_pair(wxT("work"), wxT("work"))); + continue; + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){ + PropertyName = wxT("X-TYPE"); + PropertyValue = wxT("other"); + } + + // Process the telephone type options. + + // text + + if (PropertyName == wxT("type") && (PropertyValue == wxT("TEXT") || PropertyValue == wxT("text"))){ + TelType.insert(std::make_pair(wxT("text"), wxT("text"))); + continue; + } + + // voice + + if (PropertyName == wxT("type") && (PropertyValue == wxT("VOICE") || PropertyValue == wxT("voice"))){ + TelType.insert(std::make_pair(wxT("voice"), wxT("voice"))); + continue; + } + + // fax + + if (PropertyName == wxT("type") && (PropertyValue == wxT("FAX") || PropertyValue == wxT("fax"))){ + TelType.insert(std::make_pair(wxT("fax"), wxT("fax"))); + continue; + } + + // cell + + if (PropertyName == wxT("type") && (PropertyValue == wxT("CELL") || PropertyValue == wxT("cell"))){ + TelType.insert(std::make_pair(wxT("cell"), wxT("cell"))); + continue; + } + + // video + + if (PropertyName == wxT("type") && (PropertyValue == wxT("VIDEO") || PropertyValue == wxT("video"))){ + TelType.insert(std::make_pair(wxT("video"), wxT("video"))); + continue; + } + + // pager + + if (PropertyName == wxT("type") && (PropertyValue == wxT("PAGER") || PropertyValue == wxT("pager"))){ + TelType.insert(std::make_pair(wxT("pager"), wxT("pager"))); + continue; + } + + // textphone + + if (PropertyName == wxT("type") && (PropertyValue == wxT("TEXTPHONE") || PropertyValue == wxT("textphone"))){ + TelType.insert(std::make_pair(wxT("textphone"), wxT("textphone"))); + continue; + } + + if (PropertyName == wxT("type") && PropertyValue.Find(wxT(",")) != wxNOT_FOUND){ + wxStringTokenizer TypeSplit(PropertyValue, wxT(",")); + wxString TypeSplitData; + while (TypeSplit.HasMoreTokens()){ + + TypeSplitData = TypeSplit.GetNextToken(); + TelType.insert(std::make_pair(TypeSplitData, TypeSplitData)); + TypeSplitData.clear(); + + } + + } + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + wxString TelFinalString; + bool TelFirstToken = TRUE; + + for (std::map::iterator intiter = TelType.begin(); + intiter != TelType.end(); ++intiter){ + + // Process the type data into a single value. (e.g. TYPE="work,voice,cell"). + + if (TelFirstToken == TRUE){ + + TelFinalString.Append(wxT("\"")); + TelFinalString.Append(intiter->first); + TelFirstToken = FALSE; + + } else { + + TelFinalString.Append(wxT(",")); + TelFinalString.Append(intiter->first); + + } + + } + + if (TelFirstToken == FALSE){ + + TelFinalString.Append(wxT("\"")); + + } + + if (!TelFinalString.IsEmpty()){ + + if (PropertyDataMap->find(wxT("TYPE")) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(wxT("type"), TelFinalString)); + PropertyLockMap->insert(std::make_pair(wxT("type"), TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(wxT("type"), TelFinalString)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(wxT("type"), TRUE)); + + } + + } + + } + + // RELATED + + if (wxSProperty == wxT("X-ABRELATEDNAMES")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 18; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("RELATED"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){ + continue; + } + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // URL + + if (wxSProperty == wxT("URL")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("URL"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){ + continue; + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){ + PropertyValue = wxT("home"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){ + PropertyValue = wxT("work"); + } + + if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){ + PropertyName = wxT("X-TYPE"); + PropertyValue = wxT("other"); + } + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // TITLE + + if (wxSProperty == wxT("TITLE")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("TITLE"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // FN + + if (wxSProperty == wxT("FN")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 4; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("FN"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // N + + if (wxSProperty == wxT("N")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 3; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("N"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // UID + + if (wxSProperty == wxT("UID")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("UID"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // NICKNAME + + if (wxSProperty == wxT("NICKNAME")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 10; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("NICKNAME"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // GENDER + + if (wxSProperty == wxT("GENDER")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 8; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("GENDER"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // BDAY + + if (wxSProperty == wxT("BDAY")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyXOmitYear; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + *wxSPropertyDataNameOut = wxT("BDAY"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("X-APPLE-OMIT-YEAR")){ + PropertyXOmitYear = PropertyValue; + } + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + // Convert the date from YYYY-MM-DD to YYYYMMDD or --MMDD depending on if the + // year matches the X-APPLE-OMIT-YEAR value. + + wxStringTokenizer DateSplit(*wxSPropertySeg2Ptr, wxT("-")); + + wxString DateProc; + wxString FinalDate; + + DateProc = DateSplit.GetNextToken(); + + if (DateProc == PropertyXOmitYear){ + + FinalDate.Append(wxT("--")); + + } else { + + FinalDate.Append(DateProc); + + } + + DateProc.clear(); + DateProc = DateSplit.GetNextToken(); + + FinalDate.Append(DateProc); + + DateProc.clear(); + DateProc = DateSplit.GetNextToken(); + + FinalDate.Append(DateProc); + + wxSPropertyDataOut->Append(FinalDate); + + } + + // ANNIVERSARY + + if (wxSProperty == wxT("ANNIVERSARY")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyXOmitYear; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 13; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + *wxSPropertyDataNameOut = wxT("ANNIVERSARY"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + if (PropertyName == wxT("X-APPLE-OMIT-YEAR")){ + PropertyXOmitYear = PropertyValue; + } + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + // Convert the date from YYYY-MM-DD to YYYYMMDD or --MMDD depending on if the + // year matches the X-APPLE-OMIT-YEAR value. + + wxStringTokenizer DateSplit(*wxSPropertySeg2Ptr, wxT("-")); + + wxString DateProc; + wxString FinalDate; + + DateProc = DateSplit.GetNextToken(); + + if (DateProc == PropertyXOmitYear){ + + FinalDate.Append(wxT("--")); + + } else { + + FinalDate.Append(DateProc); + + } + + DateProc.clear(); + DateProc = DateSplit.GetNextToken(); + + FinalDate.Append(DateProc); + + DateProc.clear(); + DateProc = DateSplit.GetNextToken(); + + FinalDate.Append(DateProc); + + wxSPropertyDataOut->Append(FinalDate); + + } + + // TZ - Not sure how to process this correctly. So data + // is kept as X-VCARD3-TZ for the time being. + + if (wxSProperty == wxT("TZ")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyXOmitYear; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 4; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("X-VCARD3-TZ"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // ROLE + + if (wxSProperty == wxT("ROLE")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyXOmitYear; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("ROLE"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // ORG + + if (wxSProperty == wxT("ORG")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyXOmitYear; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 5; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("ORG"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // NOTE + + if (wxSProperty == wxT("NOTE")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyXOmitYear; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 6; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + *wxSPropertyDataNameOut = wxT("NOTE"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + } + + // PHOTO + + if (wxSProperty == wxT("PHOTO")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map SplitData; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyXOmitYear; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + *wxSPropertyDataNameOut = wxT("PHOTO"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValuesData(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue, &SplitData); + + } else { + + SplitValuesData(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue, &SplitData); + + } + + wxString wxSMIMEType; + wxString wxSEncType; + + for (std::map::iterator intiter = SplitData.begin(); + intiter != SplitData.end(); ++intiter){ + + PropertyName = intiter->first; + PropertyValue = intiter->second; + + if (PropertyName == wxT("ENCODING") && PropertyValue == wxT("b")){ + wxSEncType = wxT("base64"); + continue; + } + + if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type")) && PropertyValue == wxT("PNG")){ + wxSMIMEType = wxT("image/png"); + continue; + } else if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type")) && PropertyValue == wxT("JPEG")){ + wxSMIMEType = wxT("image/jpeg"); + continue; + } else if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type")) && PropertyValue == wxT("GIF")){ + wxSMIMEType = wxT("image/gif"); + continue; + } else if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type")) && PropertyValue == wxT("BMP")){ + wxSMIMEType = wxT("image/bmp"); + continue; + } else if (PropertyName == wxT("TYPE") || PropertyName == wxT("type")) { + wxSMIMEType = wxT("image/unknown"); + continue; + } + + //intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + wxSPropertyDataOut->Append(wxT("data:")); + wxSPropertyDataOut->Append(wxSMIMEType); + wxSPropertyDataOut->Append(wxT(";")); + wxSPropertyDataOut->Append(wxSEncType); + wxSPropertyDataOut->Append(wxT(",")); + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + + } + + // SOUND + + if (wxSProperty == wxT("SOUND")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + wxString PropertyXOmitYear; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 7; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + *wxSPropertyDataNameOut = wxT("SOUND"); + *VCardV3Value = TRUE; + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + wxString wxSMIMEType; + wxString wxSEncType; + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + if (PropertyName == wxT("ENCODING") && PropertyValue == wxT("b")){ + wxSEncType = wxT("base64"); + continue; + } + + if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type"))){ + wxSMIMEType = PropertyValue; + continue; + } + + intPrevValue = intiter->second; + + // Process properties. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + PropertyLockMap->erase(PropertyName); + PropertyLockMap->insert(std::make_pair(PropertyName, TRUE)); + + } + + } + + wxSPropertyDataOut->Append(wxT("data:")); + wxSPropertyDataOut->Append(wxSMIMEType); + wxSPropertyDataOut->Append(wxT(";")); + wxSPropertyDataOut->Append(wxSEncType); + wxSPropertyDataOut->Append(wxT(",")); + wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr); + + } + + // Look for backward compatability vCard 4.0 properties. + + // X-VCARD4-FN + + if (wxSProperty == wxT("X-VCARD4-FN")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + *wxSPropertyDataNameOut = wxT("FN"); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 13; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-N + + if (wxSProperty == wxT("X-VCARD4-N")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 12; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("N"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-NICKNAME + + if (wxSProperty == wxT("X-VCARD4-NICKNAME")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 19; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("NICKNAME"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-GENDER + + if (wxSProperty == wxT("X-VCARD4-GENDER")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 17; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("GENDER"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-BDAY + + if (wxSProperty == wxT("X-VCARD4-BDAY")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 15; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("BDAY"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-ANNIVERSARY + + if (wxSProperty == wxT("X-VCARD4-ANNIVERSARY")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 22; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("ANNIVERSARY"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-TZ + + if (wxSProperty == wxT("X-VCARD4-TZ")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 13; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("TZ"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-ADR + + if (wxSProperty == wxT("X-VCARD4-ADR")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 14; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("ADR"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-EMAIL + + if (wxSProperty == wxT("X-VCARD4-EMAIL")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 16; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("EMAIL"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-IMPP + + if (wxSProperty == wxT("X-VCARD4-IMPP")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 15; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("IMPP"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-TEL + + if (wxSProperty == wxT("X-VCARD4-TEL")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 14; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("TEL"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-LANG + + if (wxSProperty == wxT("X-VCARD4-LANG")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 15; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("LANG"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-GEO + + if (wxSProperty == wxT("X-VCARD4-GEO")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 14; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("GEO"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-RELATED + + if (wxSProperty == wxT("X-VCARD4-RELATED")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 18; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("RELATED"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-URL + + if (wxSProperty == wxT("X-VCARD4-URL")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 14; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("URL"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-TITLE + + if (wxSProperty == wxT("X-VCARD4-TITLE")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 16; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("TITLE"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-ROLE + + if (wxSProperty == wxT("X-VCARD4-ROLE")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 15; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("ROLE"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-ORG + + if (wxSProperty == wxT("X-VCARD4-ORG")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 14; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("ORG"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-NOTE + + if (wxSProperty == wxT("X-VCARD4-NOTE")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 15; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("NOTE"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-CATEGORIES + + if (wxSProperty == wxT("X-VCARD4-CATEGORIES")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 21; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("CATEGORIES"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-PHOTO + + if (wxSProperty == wxT("X-VCARD4-PHOTO")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 16; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("PHOTO"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-LOGO + + if (wxSProperty == wxT("X-VCARD4-LOGO")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 15; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("LOGO"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-SOUND + + if (wxSProperty == wxT("X-VCARD4-SOUND")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 16; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("SOUND"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-CALURI + + if (wxSProperty == wxT("X-VCARD4-CALURI")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 17; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("CALURI"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-CALADRURI + + if (wxSProperty == wxT("X-VCARD4-CALADRURI")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 20; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("CALADRURI"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-FBURL + + if (wxSProperty == wxT("X-VCARD4-FBURL")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 16; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("FBURL"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-KEY + + if (wxSProperty == wxT("X-VCARD4-KEY")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 14; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxT("KEY"); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-VCARD4-VND-* + + if (wxSProperty.Mid(0, 12) == wxT("X-VCARD4-VND")){ + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 14; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + *wxSPropertyDataNameOut = wxSProperty.Mid(9); + + } + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-ADDRESSBOOKSERVER-KIND + + if (wxSProperty == wxT("X-ADDRESSBOOKSERVER-KIND")){ + + // Process Data. + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 26; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + *wxSPropertyDataNameOut = wxT("KIND"); + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + } + + // X-ADDRESSBOOKSERVER-MEMBER + + if (wxSProperty == wxT("X-ADDRESSBOOKSERVER-MEMBER")){ + + // Process Data. + + int intPropertyLen; + + if (ProcessItemData == TRUE){ + + intPropertyLen = wxSPropertySeg1Chopped.Len(); + + } else { + + intPropertyLen = wxSPropertySeg1Ptr->Len(); + + } + + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + std::map::iterator BIter;; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 28; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + if (ProcessItemData == TRUE){ + + SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue); + + } else { + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + } + + *wxSPropertyDataNameOut = wxT("MEMBER"); + + for (std::map::iterator intiter = SplitPoints.begin(); + intiter != SplitPoints.end(); ++intiter){ + + SLiter = SplitLength.find(intiter->first); + + if (ProcessItemData == TRUE){ + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second)); + + } + + } else { + + if (FirstToken == TRUE){ + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second)); + FirstToken = FALSE; + + } else { + + PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second)); + + } + + } + + wxStringTokenizer PropertyElement (PropertyData, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + + //ProcessCaptureStrings(&PropertyValue); + + intPrevValue = intiter->second; + + // Process properties. + + // Check if there is a lock on the property value. If there is a lock then + // the property value cannot be changed. + + if (PropertyName.IsEmpty()){ + + continue; + + } + + if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){ + + if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){ + + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } else { + + PropertyDataMap->erase(PropertyName); + PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + } + + //wxSPropertyPropValuesOut->Append(wxT(";")); + //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue); + + } + + wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr); + *XVCardV4Value = TRUE; + + + } + + // Deal with X-ABLabel specifically. + + if (wxSProperty == wxT("X-ABLabel") && ProcessItemData == TRUE){ + + int intPropertyLen = wxSPropertySeg1Ptr->Len(); + std::map SplitPoints; + std::map SplitLength; + std::map::iterator SLiter; + wxString PropertyData; + wxString PropertyName; + wxString PropertyValue; + wxString PropertyTokens; + bool AfterFirstToken = FALSE; + bool FirstToken = TRUE; + int intSplitsFound = 0; + int intSplitSize = 0; + int intPrevValue = 11; + int intPref = 0; + int intType = 0; + int intSplitSeek = 0; + + + SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue); + + //EscapeString(wxSPropertySeg2Ptr, FALSE); + PropertyDataMap->insert(std::make_pair(wxT("X-ABLabel"), *wxSPropertySeg2Ptr)); + + } + +} + +void vCard34Conv::ProcessCaptureStringsProc(wxString *strCapture){ + + CaptureString(strCapture, FALSE); + +} + +void vCard34Conv::SplitValues(wxString *PropertyLine, + std::map *SplitPoints, + std::map *SplitLength, + int intSize){ + + int intPropertyLen = PropertyLine->Len(); + int intSplitsFound = 0; + int intSplitSize = 0; + int intSplitSeek = 0; + + for (int i = intSize; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (PropertyLine->Mid(i, 1) == wxT(";") && + PropertyLine->Mid((i - 1), 1) != wxT("\\")){ + + if (intSplitsFound == 0){ + + SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize))); + + } else { + + SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1))); + + intSplitsFound++; + intSplitSeek = i; + intSplitSize = 0; + + } + + } + + if (intSplitsFound == 0){ + + SplitPoints->insert(std::make_pair(intSplitsFound, (8 + 1))); + SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize)); + + } else { + + SplitPoints->insert(std::make_pair(intSplitsFound, (intSplitSeek + 1))); + SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize)); + + } + +} + +void vCard34Conv::SplitValuesData(wxString *PropertyLine, + std::map *SplitPoints, + std::map *SplitLength, + int intSize, + std::map *SplitData){ + + wxString DataStr; + wxStringTokenizer PropertyElement; + wxString PropertyName; + wxString PropertyValue; + int intPropertyLen = PropertyLine->Len(); + int intSplitsFound = 0; + int intSplitSize = 0; + int intSplitSeek = (intSize - 1); + + for (int i = intSize; i <= intPropertyLen; i++){ + + intSplitSize++; + + if (PropertyLine->Mid(i, 1) == wxT(";") && + PropertyLine->Mid((i - 1), 1) != wxT("\\")){ + + if (intSplitsFound == 0){ + + DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize)); + SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize))); + + } else { + + DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize - 1)); + SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1))); + + } + + SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1))); + + intSplitsFound++; + intSplitSeek = (i + 1); + intSplitSize = 0; + + if (!DataStr.IsEmpty()){ + + PropertyElement.SetString(DataStr, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + SplitData->insert(std::make_pair(PropertyName, PropertyValue)); + + } + + DataStr.clear(); + PropertyName.clear(); + PropertyValue.clear(); + + } + + } + + if (intSplitsFound == 0){ + + DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize)); + + SplitPoints->insert(std::make_pair(intSplitsFound, (8 + 1))); + SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize)); + + } else { + + DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize - 1)); + + SplitPoints->insert(std::make_pair(intSplitsFound, (intSplitSeek + 1))); + SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize)); + + } + + if (!DataStr.IsEmpty()){ + + PropertyElement.SetString(DataStr, wxT("=")); + PropertyName = PropertyElement.GetNextToken(); + PropertyValue = PropertyElement.GetNextToken(); + SplitData->insert(std::make_pair(PropertyName, PropertyValue)); + + } + +} \ No newline at end of file diff --git a/source/vcard/vcard34conv.h b/source/vcard/vcard34conv.h new file mode 100644 index 0000000..e916b8a --- /dev/null +++ b/source/vcard/vcard34conv.h @@ -0,0 +1,61 @@ +#include +#include +#include +#include +#include "vcard.h" + +#ifndef VCARD34CONV_H +#define VCARD34CONV_H + +class vCard34Conv{ +private: + wxArrayString SettingNames; + wxArrayString SettingValues; + int SettingCount; + bool vCardBegin; + bool vCardEnd; + bool vCardFN; + float vCardVersion; +public: + vCard34Conv(); + bool ConvertToV3(wxString Filename, wxString *wxSData); + bool ConvertToV4(wxString *wxSData, vCard *vCardOut); +private: + void SplitValues(wxString *PropertyLine, + std::map *SplitPoints, + std::map *SplitLength, + int intSize); + void SplitValuesData(wxString *PropertyLine, + std::map *SplitPoints, + std::map *SplitLength, + int intSize, + std::map *SplitData); + void ConvertV4PropertyProc(wxString *wxSPropertyName, + wxString *wxSPropertySeg1Ptr, wxString *wxSPropertySeg2Ptr, + wxString *wxSPropertyPropValuesOut, wxString *wxSPropertyDataOut, + wxString *wxSPropertyXVCard4Value, wxString *wxSPropertyDataNameOut, + std::map *PropertyData, + std::map *PropertyLock, + bool ProcessItemData, bool *VCardV3Value, bool *XVCardV4Value); + void ProcessCaptureStringsB () {} ; + void ProcessCaptureStringsProc(wxString *strCapture); + + template + void ProcessCaptureStringsB(StringCapture *string, Args*... args) { + + ProcessCaptureStringsProc(string); + ProcessCaptureStringsB(args...); + + } + + template + void ProcessCaptureStrings(Args*... args) { + + //int intSeekSelectedData = 0; + + ProcessCaptureStringsB(args...); + + } +}; + +#endif \ No newline at end of file diff --git a/source/version.h b/source/version.h new file mode 100644 index 0000000..5d814f1 --- /dev/null +++ b/source/version.h @@ -0,0 +1,12 @@ +// IMPORTANT FRIENDLY REMINDER THAT IS MOSTLY IN UPPERCASE! +// +// IF YOU CHANGE ANY AND - WE MEAN ANY - OF THESE SETTINGS +// IT IS STRONGLY RECOMMENDED THAT YOU RUN 'make clean' AND +// THEN 'make' AFTERWARDS. +// +// THANK YOU FOR YOUR ATTENTION! + +#define XSDAB_VERSION "0.01" +#define XSDAB_USERAGENT "XestiaAddressBook/0.01" +#define XSDAB_SOURCE "source" +#define XSDAB_RELEASE 0 \ No newline at end of file diff --git a/source/widgets/XABAccountView.cpp b/source/widgets/XABAccountView.cpp new file mode 100644 index 0000000..7020a4d --- /dev/null +++ b/source/widgets/XABAccountView.cpp @@ -0,0 +1,97 @@ +#include "XABAccountView.h" + +BEGIN_EVENT_TABLE(XABAccountView, wxTreeCtrl) + //EVT_LEFT_UP(XABAccountView::OnMouseClick) + EVT_LEFT_DCLICK(XABAccountView::OnMouseClick) + EVT_TREE_ITEM_EXPANDED(-1, XABAccountView::ExpColProc) + EVT_TREE_ITEM_COLLAPSED(-1, XABAccountView::ExpColProc) +END_EVENT_TABLE() + +void XABAccountView::Init(){ + + idx = -1; + +} + +bool XABAccountView::Create(wxWindow* parent){ + + return wxTreeCtrl::Create(parent, 1, wxPoint(0,0), wxSize(100,100), wxTR_DEFAULT_STYLE|wxTR_HIDE_ROOT); + +} + +wxWindow* XABAccountView::GetControl(){ + + return this; + +} + +void XABAccountView::SetStringValue(const wxString& s){ + + tid = wxTreeCtrl::GetSelection(); + +} + +wxString XABAccountView::GetStringValue() const{ + + if (tid.IsOk()){ + wxString wxStrName = wxTreeCtrl::GetItemText(tid); + return wxStrName; + } + return wxEmptyString; + +} + +void XABAccountView::OnMouseClick(wxMouseEvent& WXUNUSED(event)){ + + // Update control. + + // Check if item expanding or collapsed + // has occured before dismissing. + + if (ixp == FALSE){ + + // Item expansion/collapsing didn't occur. + + tid = wxTreeCtrl::GetSelection(); + Dismiss(); + + } + + ixp = FALSE; + +} + +void XABAccountView::SetAccount(){ + + tid = wxTreeCtrl::GetSelection(); + Dismiss(); + +} + +// Needed by SetStringValue +wxTreeItemId XABAccountView::FindItemByText(wxTreeItemId parent, const wxString& text) +{ + wxTreeItemIdValue cookie; + wxTreeItemId child = GetFirstChild(parent, cookie); + while (child.IsOk()) + { + if (GetItemText(child) == text) + { + return child; + } + if (ItemHasChildren(child)) + { + wxTreeItemId found = FindItemByText(child, text); + if (found.IsOk()) + return found; + } + child = GetNextChild(parent, cookie); + } + return wxTreeItemId(); +} + +void XABAccountView::ExpColProc(wxTreeEvent& event){ + + ixp = TRUE; + +} \ No newline at end of file diff --git a/source/widgets/XABAccountView.h b/source/widgets/XABAccountView.h new file mode 100644 index 0000000..fa44082 --- /dev/null +++ b/source/widgets/XABAccountView.h @@ -0,0 +1,38 @@ +#include +#include +#include +#include + +#ifndef __WIDGETS_XABACCOUNTVIEW_H__ +#define __WIDGETS_XABACCOUNTVIEW_H__ + +class XABAccountView : public wxTreeCtrl, public wxComboPopup +{ + +protected: + + int idx; + bool ixp = FALSE; + wxTreeItemId tid; + +public: + + virtual void Init(); + virtual bool Create(wxWindow* parent); + virtual wxWindow* GetControl(); + + // Process wxString into a list selection. + virtual void SetStringValue(const wxString& s); + + // Get list selection as a wxString. + virtual wxString GetStringValue() const; + wxTreeItemId FindItemByText(wxTreeItemId parent, const wxString& text); + void OnMouseClick(wxMouseEvent& WXUNUSED(event)); + void ExpColProc(wxTreeEvent& event); + void SetAccount(); +private: + DECLARE_EVENT_TABLE(); + +}; + +#endif \ No newline at end of file -- 2.39.2