--- /dev/null
+[Dolphin]
+AdditionalInfoV2=CustomizedDetails,Details_Size,Details_Date,Details_Type
+Timestamp=2012,8,19,9,34,5
+Version=2
+ViewMode=1
--- /dev/null
+///////////////////////////////////////////////////////////////////////////
+// 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 );
+
+}
--- /dev/null
+///////////////////////////////////////////////////////////////////////////
+// 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 <wx/artprov.h>
+#include <wx/xrc/xmlres.h>
+#include <wx/string.h>
+#include <wx/bitmap.h>
+#include <wx/image.h>
+#include <wx/icon.h>
+#include <wx/menu.h>
+#include <wx/gdicmn.h>
+#include <wx/font.h>
+#include <wx/colour.h>
+#include <wx/settings.h>
+#include <wx/statbmp.h>
+#include <wx/combo.h>
+#include <wx/sizer.h>
+#include <wx/listctrl.h>
+#include <wx/panel.h>
+#include <wx/html/htmlwin.h>
+#include <wx/splitter.h>
+#include <wx/statusbr.h>
+#include <wx/frame.h>
+#include <wx/stattext.h>
+#include <wx/statline.h>
+#include <wx/button.h>
+#include <wx/dialog.h>
+#include <wx/scrolwin.h>
+#include <wx/notebook.h>
+#include <wx/checkbox.h>
+#include <wx/choice.h>
+#include <wx/textctrl.h>
+#include <wx/combobox.h>
+#include <wx/datectrl.h>
+#include <wx/dateevt.h>
+#include <wx/bmpbuttn.h>
+#include <wx/slider.h>
+#include <wx/gauge.h>
+#include <wx/checklst.h>
+#include <wx/filepicker.h>
+#include <wx/treectrl.h>
+
+///////////////////////////////////////////////////////////////////////////
+
+#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__
--- /dev/null
+CPP=g++\r
+STRIP=strip\r
+CPPFLAGS=`xml2-config --cflags` `wx-config --cxxflags --libs` `curl-config --libs` -lossp-uuid++ -lmagic -lsfml-audio -lxml2 -std=c++11 -Os -ggdb\r
+\r
+XAB_OUT=xestiaab\r
+\r
+BMCO_HELP=tools/bitmapcode.helper\r
+BMCO_DIR=../bitmaps\r
+\r
+MAINOBJS=main.o\r
+CEOBJS=contacteditor/frmContactEditor.o \\r
+ contacteditor/frmContactEditor-Load.o \\r
+ contacteditor/frmContactEditorNickname.o \\r
+ contacteditor/frmContactEditorAddress.o \\r
+ contacteditor/frmContactEditorEmail.o \\r
+ contacteditor/frmContactEditorIM.o \\r
+ contacteditor/frmContactEditorTelephone.o \\r
+ contacteditor/frmContactEditorLanguages.o \\r
+ contacteditor/frmContactEditorTimezones.o \\r
+ contacteditor/frmContactEditorRelated.o \\r
+ contacteditor/frmContactEditorWebsites.o \\r
+ contacteditor/frmContactEditorGeoposition.o \\r
+ contacteditor/frmContactEditorTitles.o \\r
+ contacteditor/frmContactEditorRoles.o \\r
+ contacteditor/frmContactEditorOrganisations.o \\r
+ contacteditor/frmContactEditorNotes.o \\r
+ contacteditor/frmContactEditorGroups.o \\r
+ contacteditor/frmContactEditorPicture.o \\r
+ contacteditor/frmContactEditorSound.o \\r
+ contacteditor/frmContactEditorCategory.o \\r
+ contacteditor/frmContactEditorCalAdr.o \\r
+ contacteditor/frmContactEditorKey.o \\r
+ contacteditor/frmContactEditorVendor.o \\r
+ contacteditor/frmContactEditorXToken.o\r
+CARDDAVOBJS=carddav/carddav.o\r
+COMMONOBJS=common/base64.o common/preferences.o common/getcontactinfo.o \\r
+ common/etag.o common/textprocessing.o common/timers.o common/events.o \\r
+ common/filename.o common/defaults.o common/uuid.o common/svrblist.o\r
+IMEXOBJS=import/import.o import/import-vcard3.o import/import-vcard4.o \\r
+ import/frmImportContacts.o import/frmImportResults.o \\r
+ export/export.o export/export-vcard3.o export/export-vcard4.o\r
+SEARCHOBJS=search/XABSearchPanel.o search/frmSearchAccounts.o frmSearch.o\r
+VCARDOBJS=vcard/vcard.o vcard/vcard34conv.o\r
+FORMOBJS=AppXestiaAddrBk.o frmActivityMgr.o frmAbout.o frmMain.o \\r
+ frmNewAccount.o frmPreferences.o frmContact.o frmConflictResolution.o \\r
+ frmEditAccount.o frmInvalidSSLCertificate.o frmSSLCertificate.o \\r
+ frmUpdate.o\r
+WIDGETOBJS=widgets/XABAccountView.o\r
+BMCOOBJS=tools/bitmapcode.o\r
+\r
+debug: bitmaphelper formobjs widgetobjs commonobjs vcardobjs carddavobjs \\r
+ ceobjs mainobjs searchobjs imexobjs\r
+ $(CPP) $(CPPFLAGS) $(FORMOBJS) $(WIDGETOBJS) $(COMMONOBJS) \\r
+ $(VCARDOBJS) $(CEOBJS) $(CARDDAVOBJS) $(SEARCHOBJS) $(MAINOBJS) $(IMEXOBJS) -o $(XAB_OUT)\r
+\r
+xestiaab: bitmaphelper formobjs widgetobjs commonobjs vcardobjs carddavobjs \\r
+ ceobjs mainobjs searchobjs imexobjs \r
+ $(CPP) $(CPPFLAGS) $(FORMOBJS) $(WIDGETOBJS) $(COMMONOBJS) \ \r
+ $(VCARDOBJS) $(CEOBJS) $(CARDDAVOBJS) $(SEARCHOBJS) $(MAINOBJS) $(IMEXOBJS) -o $(XAB_OUT)\r
+ $(STRIP) -s $(XAB_OUT)\r
+\r
+carddavobjs: $(CARDDAVOBJS)\r
+\r
+mainobjs: $(MAINOBJS)\r
+\r
+commonobjs: $(COMMONOBJS)\r
+\r
+vcardobjs: $(VCARDOBJS)\r
+\r
+ceobjs: $(CEOBJS) \r
+\r
+formobjs: $(FORMOBJS)\r
+\r
+searchobjs: $(SEARCHOBJS)\r
+\r
+widgetobjs: $(WIDGETOBJS)\r
+\r
+imexobjs: $(IMEXOBJS)\r
+\r
+clean:\r
+ rm -f $(XAB_OUT) $(BMCO_HELP) tools/bitmapcode.o *.o \\r
+ vcard/*.o common/*.o carddav/*.o contacteditor/*.o search/*.o \\r
+ widgets/*.o export/*.o import/*.o\r
+\r
+distclean: clean\r
+ rm -f Makefile config.status config.log\r
+\r
+bitmaphelperobjs: $(BMCOOBJS)\r
+\r
+bitmaphelper: bitmaphelperobjs\r
+ $(CPP) $(CPPFLAGS) -lboost_filesystem -lboost_system $(BMCOOBJS) -o $(BMCO_HELP)\r
+ $(BMCO_HELP) bitmaps/\r
--- /dev/null
+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
--- /dev/null
+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
+])
--- /dev/null
+@%:@! /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 <bugs@xestia.co.uk>.
+@%:@
+@%:@
+@%:@ 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 </dev/null
+exec 6>&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 <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#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<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ 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 <bugs@xestia.co.uk>.
+_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 <stdio.h>
+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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@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 <ac_nonexistent.h>
+_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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@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 <ac_nonexistent.h>
+_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 <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+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 <string.h>
+
+_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 <stdlib.h>
+
+_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 <ctype.h>
+#include <stdlib.h>
+#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 <stdbool.h>
+#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 <bugs@xestia.co.uk>."
+
+_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 2>/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
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$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 = "\a"
+
+}
+{
+ 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
+
--- /dev/null
+@%:@! /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 <bugs@xestia.co.uk>.
+@%:@
+@%:@
+@%:@ 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 </dev/null
+exec 6>&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 <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#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<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ 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 <bugs@xestia.co.uk>.
+_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 <stdio.h>
+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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@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 <ac_nonexistent.h>
+_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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@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 <ac_nonexistent.h>
+_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 <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+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 <string.h>
+
+_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 <stdlib.h>
+
+_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 <ctype.h>
+#include <stdlib.h>
+#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 <stdbool.h>
+#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 <bugs@xestia.co.uk>."
+
+_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 2>/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
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$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 = "\a"
+
+}
+{
+ 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
+
--- /dev/null
+@%:@! /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 <bugs@xestia.co.uk>.
+@%:@
+@%:@
+@%:@ 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 </dev/null
+exec 6>&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 <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#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<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ 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 <bugs@xestia.co.uk>.
+_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 <stdio.h>
+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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@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 <ac_nonexistent.h>
+_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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@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 <ac_nonexistent.h>
+_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 <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+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 <string.h>
+
+_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 <stdlib.h>
+
+_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 <ctype.h>
+#include <stdlib.h>
+#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 <stdbool.h>
+#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 <bugs@xestia.co.uk>."
+
+_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 2>/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
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$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 = "\a"
+
+}
+{
+ 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
+
--- /dev/null
+# 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' )
+ );
+
--- /dev/null
+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 <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_WX_WX_H], [/* Define to 1 if you have the <wx/wx.h> 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 <sys/types.h> 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 <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> 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])
--- /dev/null
+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 <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_WX_WX_H], [/* Define to 1 if you have the <wx/wx.h> 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 <sys/types.h> 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 <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> 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])
--- /dev/null
+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 <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> 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 <sys/types.h> 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 <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> 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])
--- /dev/null
+#include <iostream>
+
+#ifndef BITMAPS_H
+#define BITMAPS_H
+
+#include "bitmaps/misc.h"
+#include "bitmaps/bigimgs.h"
+#include "bitmaps/buttons.h"
+#include "bitmaps/icons.h"
+
+#endif
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+[Dolphin]
+PreviewsShown=true
+Timestamp=2014,12,31,18,24,36
+Version=3
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+[Dolphin]
+PreviewsShown=true
+Timestamp=2013,10,2,20,18,2
+Version=3
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include "carddav.h"\r
+#include "../version.h"\r
+#include <wx/wx.h>\r
+#include <wx/tokenzr.h>\r
+#include <wx/ffile.h>\r
+#include <libxml/parser.h>\r
+#include <libxml/tree.h>\r
+#include <map>\r
+#include <thread>\r
+#include "../vcard/vcard.h"\r
+#include "../common/dirs.h"\r
+\r
+size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, wxString *stream){\r
+ \r
+ wxString Data;\r
+ wxString *PageInput;\r
+ Data = wxString::FromUTF8((char *)ptr);\r
+ \r
+ stream->Append(Data);\r
+ \r
+ return size * nmemb;\r
+\r
+}\r
+\r
+struct UploadDataStruc{\r
+ wxString *readptr;\r
+ long sizeleft;\r
+ int seek = 0;\r
+};\r
+\r
+int ProgressFunc(void *clientdata, double TTDown, double NDown, double TTUp, double NUp){\r
+\r
+ int ProgressRet;\r
+ \r
+ CardDAV *IncCardDAV = static_cast<CardDAV*>(clientdata);\r
+ ProgressRet = IncCardDAV->ProgressFuncProc(clientdata, TTDown, NDown, TTUp, NUp);\r
+ if (ProgressRet != 0){\r
+ return 1;\r
+ }\r
+ return 0;\r
+\r
+}\r
+\r
+wxString CardDAV::ServerAddress;\r
+int CardDAV::ServerPort;\r
+wxString CardDAV::ServerUser;\r
+wxString CardDAV::ServerPass;\r
+wxString CardDAV::ServerPrefix;\r
+wxString CardDAV::ServerAccount;\r
+bool CardDAV::ServerSSL;\r
+bool *CardDAV::ServerResult;\r
+bool *CardDAV::ServerMonitor;\r
+bool CardDAV::SSLStatus;\r
+bool CardDAV::SSLVerified;\r
+bool CardDAV::ValidResponse;\r
+bool CardDAV::AuthPassed;\r
+bool CardDAV::HasCalDAVSupport;\r
+bool CardDAV::AbortConnection;\r
+wxString CardDAV::ServerResponse;\r
+wxString CardDAV::ServerMethod;\r
+wxString CardDAV::ServerFilenameLocation;\r
+wxString CardDAV::ServerUploadData;\r
+wxString CardDAV::ETagData;\r
+wxString CardDAV::ETagResult;\r
+bool CardDAV::UploadMode;\r
+bool CardDAV::EditMode;\r
+long CardDAV::ItemIndex;\r
+std::map<int, int> *CardDAV::ActivityListPtr;\r
+char CardDAV::curlerrbuffer[CURL_ERROR_SIZE];\r
+SSLCertCollection CardDAV::SSLCertCol;\r
+int CardDAV::SSLErrorCode;\r
+int CardDAV::ConnectionErrorCode;\r
+wxString CardDAV::PageHeader;\r
+wxString CardDAV::PageData;\r
+CURLcode CardDAV::claconncode;\r
+int CardDAV::HTTPErrorCode;\r
+wxString CardDAV::ErrorMessage;\r
+\r
+CardDAV::CardDAV(){\r
+ ServerPort = 8080;\r
+ SSLStatus = FALSE;\r
+ SSLVerified = FALSE;\r
+ AuthPassed = FALSE;\r
+ ValidResponse = FALSE;\r
+ HasCalDAVSupport = FALSE;\r
+ SSLCertCol.SuccessCode = 0;\r
+\r
+ AbortConnection = FALSE;\r
+ UploadMode = FALSE;\r
+ EditMode = FALSE;\r
+ HTTPErrorCode = 0;\r
+}\r
+\r
+CardDAV::~CardDAV(){\r
+\r
+}\r
+\r
+size_t UploadReadFunc(void *ptr, size_t size, size_t nmemb, void *userdata){\r
+\r
+ struct UploadDataStruc *UploadPtr = (struct UploadDataStruc *)userdata;\r
+\r
+ if (UploadPtr->sizeleft){\r
+\r
+ //MeepMoop->sizeleft--;\r
+ //return 1;\r
+\r
+ UploadPtr->sizeleft--;\r
+ wxString wxSChar;\r
+\r
+ wxSChar = UploadPtr->readptr->Mid(UploadPtr->seek,1);\r
+\r
+ //*(char *)ptr = (char)wxSChar.mb_str();\r
+\r
+ strncpy((char *)ptr, (const char*)wxSChar.mb_str(wxConvUTF8), 1);\r
+\r
+ UploadPtr->seek++;\r
+\r
+ return 1;\r
+\r
+ }\r
+\r
+ return 0;\r
+\r
+}\r
+\r
+bool CardDAV::SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL){\r
+\r
+ ServerAddress = SvrAddress;\r
+ ServerPort = SvrPort;\r
+ ServerUser = SvrUser;\r
+ ServerPass = SvrPass;\r
+ ServerSSL = SvrSSL;\r
+ \r
+ return TRUE;\r
+\r
+}\r
+\r
+bool CardDAV::SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL, wxString SvrPrefix, wxString SvrAccount){\r
+\r
+ ServerAddress = SvrAddress;\r
+ ServerPort = SvrPort;\r
+ ServerUser = SvrUser;\r
+ ServerPass = SvrPass;\r
+ ServerSSL = SvrSSL;\r
+ ServerPrefix = SvrPrefix;\r
+ ServerAccount = SvrAccount;\r
+\r
+ return TRUE;\r
+\r
+}\r
+\r
+bool CardDAV::SetupResultBools(bool *SvrResult, bool *SvrMonitor){\r
+\r
+ ServerResult = SvrResult;\r
+ ServerMonitor = SvrMonitor;\r
+\r
+ return TRUE;\r
+\r
+}\r
+\r
+bool CardDAV::HasValidResponse(){\r
+\r
+ return ValidResponse;\r
+\r
+}\r
+\r
+bool CardDAV::CanDoCardDAV(){\r
+\r
+ return HasCalDAVSupport;\r
+\r
+}\r
+\r
+bool CardDAV::CanDoSSL(){\r
+\r
+ return SSLStatus;\r
+\r
+}\r
+\r
+bool CardDAV::SSLVerify(){\r
+\r
+ return SSLVerified;\r
+\r
+}\r
+\r
+bool CardDAV::AbleToLogin(){\r
+\r
+ return AuthPassed;\r
+\r
+}\r
+\r
+/*\r
+\r
+size_t CardDAV::WritebackFunc(char *ptr, size_t size, size_t nmemb, FILE *stream){\r
+\r
+ wxString Data;\r
+ Data = wxString::FromUTF8((char *)ptr);\r
+ if ((bool)stream == TRUE){\r
+ PageHeader.Append(Data);\r
+ } else {\r
+ PageData.Append(Data);\r
+ }\r
+ return size * nmemb;\r
+\r
+}\r
+\r
+*/\r
+\r
+int CardDAV::ProgressFuncProc(void *clientdata, double TTUp, double NUp, double TTDown, double NDown){\r
+\r
+ if (AbortConnection == TRUE){\r
+ \r
+ return -1;\r
+ \r
+ } else {\r
+ \r
+ return 0;\r
+ \r
+ }\r
+\r
+}\r
+\r
+void CardDAV::Abort(){\r
+\r
+ AbortConnection = TRUE;\r
+\r
+}\r
+\r
+bool CardDAV::Connect(){\r
+\r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+\r
+ SSLStatus = TRUE;\r
+ AuthPassed = TRUE;\r
+ AbortConnection = FALSE;\r
+\r
+ CURL *conn;\r
+ CURLcode conncode;\r
+ wxString ServerAddressURL;\r
+ wxString ServerAuth;\r
+ wxString ServerAddressSSL;\r
+ wxString ServerAddressNormal; \r
+\r
+ conn = curl_easy_init();\r
+ \r
+ struct CardDAVCURLPasser {\r
+ \r
+ CardDAV *Data;\r
+ bool HeaderMode = TRUE;\r
+ \r
+ } CardDAVHeader, CardDAVFooter;\r
+\r
+ CardDAVHeader.Data = this;\r
+ CardDAVHeader.HeaderMode = TRUE;\r
+ \r
+ CardDAVFooter.Data = this;\r
+ CardDAVFooter.HeaderMode = FALSE;\r
+\r
+ wxString Data1;\r
+ wxString Data2;\r
+ \r
+ ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+ ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+ ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+ \r
+ ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+ \r
+ // Try SSL first.\r
+\r
+\r
+ /*\r
+ char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)];\r
+ //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length());\r
+ strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1));\r
+ \r
+ char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)];\r
+ //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length()); \r
+ strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1));\r
+\r
+ char *ServerAuthChar = new char[(ServerAuth.Length() - 1)];\r
+ //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); \r
+ strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1));\r
+ \r
+ */\r
+ \r
+ if (ServerSSL){\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); \r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+\r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ union {\r
+ struct curl_slist *certdata;\r
+ struct curl_certinfo *certinfo;\r
+ } ptr;\r
+ \r
+ ptr.certdata = NULL;\r
+\r
+ curl_easy_getinfo(conn, CURLINFO_CERTINFO, &ptr.certdata);\r
+ \r
+ if (conncode == CURLE_OK){\r
+\r
+ *ServerResult = TRUE;\r
+ AuthPassed = TRUE;\r
+ SSLStatus = TRUE;\r
+ return TRUE;\r
+\r
+ } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ \r
+ ErrorMessage = wxString::Format(wxT("%s"), curl_easy_strerror(conncode));\r
+\r
+ *ServerResult = TRUE;\r
+ ValidResponse = FALSE;\r
+ AuthPassed = FALSE;\r
+ SSLStatus = TRUE;\r
+ return TRUE;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+\r
+ ErrorMessage = wxString::Format(wxT("%s"), curl_easy_strerror(conncode));\r
+\r
+ *ServerResult = FALSE;\r
+ return FALSE; \r
+\r
+ }\r
+\r
+ } else {\r
+ \r
+ // No SSL.\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60); \r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ // Process the server header response and look for\r
+ // 'addressbook' within the DAV header.\r
+ \r
+ wxStringTokenizer wxSHeaderLines(PageHeader, wxT("\r\n"));\r
+ wxString wxSHeaderLine;\r
+ std::map<int, wxString> DAVHeaderLines;\r
+ \r
+ while (wxSHeaderLines.HasMoreTokens()){\r
+ \r
+ wxSHeaderLine = wxSHeaderLines.GetNextToken();\r
+ \r
+ if (wxSHeaderLine.Mid(0, 4) == wxT("DAV:")){\r
+ \r
+ // Look for address book in the line.\r
+ \r
+ if (wxSHeaderLine.Find(wxT("addressbook")) != wxNOT_FOUND){\r
+ \r
+ HasCalDAVSupport = TRUE;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ *ServerResult = TRUE;\r
+ ValidResponse = TRUE; \r
+ AuthPassed = TRUE;\r
+ SSLStatus = FALSE;\r
+ return TRUE;\r
+\r
+ } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ \r
+ *ServerResult = TRUE;\r
+ ValidResponse = FALSE;\r
+ AuthPassed = FALSE;\r
+ SSLStatus = FALSE;\r
+ return TRUE;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ \r
+ *ServerResult = FALSE;\r
+ return FALSE;\r
+\r
+ }\r
+ \r
+ // TODO: Double check and make sure HTTP Authentication is possible.\r
+ \r
+ } \r
+ \r
+ *ServerResult = TRUE;\r
+ return TRUE; \r
+\r
+}\r
+\r
+void CardDAV::GetSSLResults(){\r
+\r
+ \r
+\r
+}\r
+\r
+void CardDAV::ProcessDataThread(){\r
+\r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+\r
+ SSLStatus = TRUE;\r
+ AuthPassed = TRUE;\r
+ AbortConnection = FALSE;\r
+\r
+ CURL *conn;\r
+ CURLcode conncode;\r
+ wxString ServerAddressURL;\r
+ wxString ServerAuth;\r
+ wxString ServerAddressSSL;\r
+ wxString ServerAddressNormal; \r
+\r
+ conn = curl_easy_init();\r
+ \r
+ struct CardDAVCURLPasser {\r
+ \r
+ CardDAV *Data;\r
+ bool HeaderMode = TRUE;\r
+ \r
+ } CardDAVHeader, CardDAVFooter;\r
+\r
+ CardDAVHeader.Data = this;\r
+ CardDAVHeader.HeaderMode = TRUE;\r
+ \r
+ CardDAVFooter.Data = this;\r
+ CardDAVFooter.HeaderMode = FALSE;\r
+\r
+ wxString Data1;\r
+ wxString Data2;\r
+ \r
+ wxString ETag;\r
+ wxString ETagOriginal;\r
+ wxString ETagServer;\r
+ \r
+ ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation;\r
+ ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+ ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+ \r
+ ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+ \r
+ // Try SSL first.\r
+\r
+\r
+ /*\r
+ char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)];\r
+ //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length());\r
+ strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1));\r
+ \r
+ char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)];\r
+ //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length()); \r
+ strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1));\r
+\r
+ char *ServerAuthChar = new char[(ServerAuth.Length() - 1)];\r
+ //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); \r
+ strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1));\r
+ \r
+ */\r
+\r
+ //std::string WriteDataString = std::string(ServerUploadData.mb_str());\r
+\r
+ std::map<int,int>::iterator ActIter;\r
+ struct UploadDataStruc UploadData;\r
+ \r
+ \r
+ ActIter = ActivityListPtr->find(ItemIndex);\r
+ \r
+ // Update result flag.\r
+\r
+ ActIter->second = 1;\r
+ \r
+ // Setup the request mode if it is not empty.\r
+ \r
+ if (!ServerMethod.IsEmpty()){\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, (const char*)ServerMethod.mb_str(wxConvUTF8));\r
+\r
+ }\r
+\r
+ if (ServerSSL){\r
+\r
+ wxString ServerCertFilename;\r
+ bool MatchingCert = FALSE;\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ \r
+ if (UploadMode == TRUE){\r
+ \r
+ UploadData.readptr = &ServerUploadData;\r
+ UploadData.sizeleft = ServerUploadData.Len();\r
+ curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ }\r
+\r
+ ServerCertFilename = GetAccountDir(ServerAccount, TRUE);\r
+\r
+ if (wxFile::Exists(ServerCertFilename) == TRUE){\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);\r
+ curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));\r
+ \r
+ }\r
+\r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+\r
+ // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without\r
+ // the local certificate in use.\r
+\r
+ if (claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+ \r
+ curl_easy_cleanup(conn);\r
+ conn = curl_easy_init();\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+ if (UploadMode == TRUE){\r
+\r
+ UploadData.readptr = &ServerUploadData;\r
+ UploadData.sizeleft = ServerUploadData.Len();\r
+ curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ }\r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+ \r
+ // If claconncode is CURLE_OK then delete the certificate file as that\r
+ // is no longer needed.\r
+ \r
+ if (claconncode == CURLE_OK){\r
+ \r
+ // Delete the certificate file.\r
+ \r
+ wxRemoveFile(ServerCertFilename);\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ // Check if it fails with a CURLE_SSL_CACERT then compare\r
+ // the certificates as PEM files.\r
+ \r
+ if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){\r
+ \r
+ //curl_easy_cleanup(conn);\r
+ //conn = curl_easy_init();\r
+\r
+ CURL *sslerrconn;\r
+ sslerrconn = curl_easy_init();\r
+ CURLcode sslerrconncode;\r
+\r
+ //claconncode = (curl_easy_perform(conn));\r
+\r
+ wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+\r
+ curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+ \r
+ wxString SSLLocalData;\r
+ wxString SSLServerData;\r
+ \r
+ sslerrconncode = (curl_easy_perform(sslerrconn));\r
+ \r
+ SSLCertCol = BuildSSLCollection(sslerrconn);\r
+ std::map<int, SSLCertData>::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0);\r
+ std::multimap<wxString,wxString>::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert"));\r
+ \r
+ wxFFile SSLLocalFile;\r
+ \r
+#if wxABI_VERSION < 20900\r
+ SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r"));\r
+#else\r
+ SSLLocalFile.Open(ServerCertFilename, wxT("r"));\r
+#endif \r
+ \r
+ // Load the recovery database for tasks not done.\r
+ \r
+ if (SSLLocalFile.IsOpened() == TRUE){\r
+\r
+ // Check if we are using wxWidgets version 2.8 or less and\r
+ // execute the required command accordingly.\r
+ \r
+ SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto());\r
+ \r
+ \r
+ }\r
+ \r
+ SSLServerData = SSLDataIter->second;\r
+ \r
+ if (SSLLocalData == SSLServerData){\r
+ \r
+ // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER\r
+ // and CURLOPT_SSL_VERIFYHOST off.\r
+ \r
+ curl_easy_cleanup(conn);\r
+ conn = curl_easy_init();\r
+ \r
+ PageData.clear();\r
+ PageHeader.clear();\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+ if (UploadMode == TRUE){\r
+\r
+ UploadData.readptr = &ServerUploadData;\r
+ UploadData.sizeleft = ServerUploadData.Len();\r
+ curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ }\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+ \r
+ MatchingCert = TRUE;\r
+ \r
+ }\r
+ \r
+ if (MatchingCert == FALSE){\r
+ \r
+ claconncode = CURLE_SSL_CACERT;\r
+ return;\r
+ \r
+ }\r
+ \r
+ curl_easy_cleanup(sslerrconn);\r
+ \r
+ }\r
+\r
+ // Sort out SSL error.\r
+ \r
+ // When SSL cert error occurs, connect again and fetch certificates.\r
+ // Display a message to the user explaining that an invalid\r
+ // certificate has been given and let the user decide what\r
+ // to do next.\r
+\r
+ if (claconncode == CURLE_OK){\r
+\r
+ } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+ \r
+ CURL *sslerrconn;\r
+ sslerrconn = curl_easy_init();\r
+ CURLcode sslerrconncode;\r
+ \r
+ wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+ \r
+ // Replace conn with sslerrconn!\r
+ \r
+ curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+ \r
+ sslerrconncode = (curl_easy_perform(sslerrconn));\r
+\r
+ SSLCertCol = BuildSSLCollection(sslerrconn);\r
+ SSLCertCol.SuccessCode = 1;\r
+\r
+ return;\r
+ \r
+ } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %d\n", http_code);\r
+ \r
+ return;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %d\n", http_code);\r
+\r
+ return;\r
+\r
+ }\r
+\r
+ } else {\r
+ \r
+ // No SSL.\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ \r
+ if (UploadMode == TRUE){\r
+ \r
+ UploadData.readptr = &ServerUploadData;\r
+ UploadData.sizeleft = ServerUploadData.Len();\r
+ curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ }\r
+ \r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ // Process the server header response and look for\r
+ // 'addressbook' within the DAV header.\r
+ \r
+ wxStringTokenizer wxSHeaderLines(PageHeader, wxT("\r\n"));\r
+ wxString wxSHeaderLine;\r
+ std::map<int, wxString> DAVHeaderLines;\r
+ \r
+ while (wxSHeaderLines.HasMoreTokens()){\r
+ \r
+ wxSHeaderLine = wxSHeaderLines.GetNextToken();\r
+ \r
+ if (wxSHeaderLine.Mid(0, 5) == wxT("ETag:")){\r
+ \r
+ ETagData = wxSHeaderLine.Mid(5);\r
+ ETagData.Trim();\r
+ ETagData.Trim(FALSE);\r
+ \r
+ // Check for commas.\r
+ \r
+ if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){\r
+ \r
+ ETagData.Remove(0, 1);\r
+ ETagData.RemoveLast();\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ if (wxSHeaderLine.Mid(0, 4) == wxT("DAV:")){\r
+ \r
+ // Look for address book in the line.\r
+ \r
+ if (wxSHeaderLine.Find(wxT("addressbook")) != wxNOT_FOUND){\r
+ \r
+ HasCalDAVSupport = TRUE;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ // Get the ETag from the header.\r
+ \r
+ if (UploadMode == TRUE){\r
+ \r
+ wxString PageHeaderLine;\r
+ \r
+ wxStringTokenizer PageHeaderSplit(PageHeader, wxT("\r\n"));\r
+ \r
+ if (PageHeaderSplit.HasMoreTokens()){\r
+ \r
+ PageHeaderLine = PageHeaderSplit.GetNextToken();\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ ActIter->second = 4;\r
+ return;\r
+\r
+ } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+\r
+ fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+ GetHTTPCode());\r
+\r
+ ActIter->second = 2;\r
+ return;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ \r
+ ActIter->second = 2;\r
+ return;\r
+\r
+ }\r
+ \r
+ }\r
+ \r
+ /*\r
+ \r
+ }\r
+ \r
+ */\r
+ \r
+ // Connection was successful \r
+ /* \r
+ \r
+ if (conn){\r
+ \r
+ wxString ServerAddressURL;\r
+ \r
+ // Try secure connection first.\r
+ \r
+ \r
+ \r
+\r
+ ServerAddressURL = wxT("http://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+ \r
+ ServerAddressURL.Trim();\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressURL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, NULL);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, NULL);\r
+ \r
+\r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ if (conncode == CURLE_OK){\r
+ *ServerResult = TRUE;\r
+ return TRUE;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode)); \r
+\r
+ *ServerResult = FALSE;\r
+ return FALSE; \r
+ }\r
+\r
+ // Failed. So use unsecure connection.\r
+ UseSSL = FALSE;\r
+ \r
+ ServerAddress = wxT("http://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort);\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, ServerAddress.c_str());\r
+ \r
+ conncode = (curl_easy_perform(conn)); \r
+ \r
+ if (conncode != CURLE_OK){\r
+ *ServerResult = FALSE;\r
+ return FALSE;\r
+ } else {\r
+ *ServerResult = TRUE;\r
+ return TRUE;\r
+ }\r
+ \r
+ } else {\r
+ \r
+ *ServerResult = FALSE;\r
+ return FALSE;\r
+ \r
+ }\r
+ \r
+ */\r
+ \r
+ // Catch all.\r
+ \r
+ ActIter->second = 1;\r
+ *ServerResult = TRUE;\r
+ return;\r
+\r
+}\r
+\r
+void CardDAV::ProcessData(){\r
+\r
+ std::thread ConnectThread(&CardDAV::ProcessDataThread, this);\r
+ ConnectThread.detach();\r
+\r
+}\r
+\r
+void CardDAV::SetServerFilename(wxString Filename){\r
+\r
+ ServerFilenameLocation = Filename;\r
+\r
+}\r
+\r
+void CardDAV::GetServerContactData()\r
+{\r
+\r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+\r
+ SSLStatus = TRUE;\r
+ AuthPassed = TRUE;\r
+ AbortConnection = FALSE;\r
+ \r
+ wxString ServerCertFilename;\r
+ bool MatchingCert = FALSE;\r
+\r
+ CURL *conn;\r
+ CURLcode conncode;\r
+ wxString ServerAddressURL;\r
+ wxString ServerAuth;\r
+ wxString ServerAddressSSL;\r
+ wxString ServerAddressNormal; \r
+\r
+ conn = curl_easy_init();\r
+ \r
+ struct CardDAVCURLPasser {\r
+ \r
+ CardDAV *Data;\r
+ bool HeaderMode = TRUE;\r
+ \r
+ } CardDAVHeader, CardDAVFooter;\r
+\r
+ CardDAVHeader.Data = this;\r
+ CardDAVHeader.HeaderMode = TRUE;\r
+ \r
+ CardDAVFooter.Data = this;\r
+ CardDAVFooter.HeaderMode = FALSE;\r
+\r
+ wxString Data1;\r
+ wxString Data2;\r
+ \r
+ ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation;\r
+ ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+ ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+ \r
+ ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+ \r
+ // Try SSL first.\r
+\r
+\r
+ /*\r
+ char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)];\r
+ //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length());\r
+ strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1));\r
+ \r
+ char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)];\r
+ //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length()); \r
+ strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1));\r
+\r
+ char *ServerAuthChar = new char[(ServerAuth.Length() - 1)];\r
+ //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); \r
+ strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1));\r
+ \r
+ */\r
+\r
+ //std::string WriteDataString = std::string(ServerUploadData.mb_str());\r
+\r
+ std::map<int,int>::iterator ActIter;\r
+ struct UploadDataStruc UploadData;\r
+ \r
+ \r
+ ActIter = ActivityListPtr->find(ItemIndex);\r
+\r
+ //ActIter->second = 1;\r
+\r
+ /*wxString CardDAVDataQuery = wxT("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");\r
+ CardDAVDataQuery.Append(wxT("<C:addressbook-multiget xmlns:D=\"DAV:\"\r\n"));\r
+ CardDAVDataQuery.Append(wxT(" xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\r\n"));\r
+ CardDAVDataQuery.Append(wxT("<D:prop><D:getetag/>\r\n"));\r
+ CardDAVDataQuery.Append(wxT("<C:address-data>\r\n"));\r
+ CardDAVDataQuery.Append(wxT(" <C:allprop/>\r\n"));\r
+ CardDAVDataQuery.Append(wxT("</C:address-data></D:prop>\r\n"));\r
+ CardDAVDataQuery.Append(wxT("</C:addressbook-multiget>"));*/\r
+\r
+ if (ServerSSL){\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); \r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ \r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+\r
+ ServerCertFilename = GetAccountDir(ServerAccount, TRUE);\r
+\r
+ if (wxFile::Exists(ServerCertFilename) == TRUE){\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);\r
+ curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));\r
+ \r
+ }\r
+\r
+ claconncode = (curl_easy_perform(conn));\r
+\r
+ // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without\r
+ // the local certificate in use.\r
+\r
+ if (claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+ \r
+ curl_easy_cleanup(conn);\r
+ conn = curl_easy_init();\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); \r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ \r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+ \r
+ // If claconncode is CURLE_OK then delete the certificate file as that\r
+ // is no longer needed.\r
+ \r
+ if (claconncode == CURLE_OK){\r
+ \r
+ // Delete the certificate file.\r
+ \r
+ wxRemoveFile(ServerCertFilename);\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ // Check if it fails with a CURLE_SSL_CACERT then compare\r
+ // the certificates as PEM files.\r
+ \r
+ if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){\r
+ \r
+ //curl_easy_cleanup(conn);\r
+ //conn = curl_easy_init();\r
+\r
+ CURL *sslerrconn;\r
+ sslerrconn = curl_easy_init();\r
+ CURLcode sslerrconncode;\r
+\r
+ //claconncode = (curl_easy_perform(conn));\r
+\r
+ wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); \r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ \r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+ \r
+ wxString SSLLocalData;\r
+ wxString SSLServerData;\r
+ \r
+ sslerrconncode = (curl_easy_perform(sslerrconn));\r
+ \r
+ SSLCertCol = BuildSSLCollection(sslerrconn);\r
+ std::map<int, SSLCertData>::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0);\r
+ std::multimap<wxString,wxString>::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert"));\r
+ \r
+ wxFFile SSLLocalFile;\r
+ \r
+#if wxABI_VERSION < 20900\r
+ SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r"));\r
+#else\r
+ SSLLocalFile.Open(ServerCertFilename, wxT("r"));\r
+#endif \r
+ \r
+ // Load the recovery database for tasks not done.\r
+ \r
+ if (SSLLocalFile.IsOpened() == TRUE){\r
+\r
+ // Check if we are using wxWidgets version 2.8 or less and\r
+ // execute the required command accordingly.\r
+ \r
+ SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto());\r
+ \r
+ \r
+ }\r
+ \r
+ SSLServerData = SSLDataIter->second;\r
+ \r
+ if (SSLLocalData == SSLServerData){\r
+ \r
+ // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER\r
+ // and CURLOPT_SSL_VERIFYHOST off.\r
+ \r
+ curl_easy_cleanup(conn);\r
+ conn = curl_easy_init();\r
+ \r
+ PageData.clear();\r
+ PageHeader.clear();\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); \r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ \r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+ \r
+ MatchingCert = TRUE;\r
+ \r
+ }\r
+ \r
+ if (MatchingCert == FALSE){\r
+ \r
+ claconncode = CURLE_SSL_CACERT;\r
+ return;\r
+ \r
+ }\r
+ \r
+ curl_easy_cleanup(sslerrconn);\r
+ \r
+ }\r
+ \r
+ // Sort out SSL error.\r
+ \r
+ // When SSL cert error occurs, connect again and fetch certificates.\r
+ // Display a message to the user explaining that an invalid\r
+ // certificate has been given and let the user decide what\r
+ // to do next.\r
+\r
+ if (claconncode == CURLE_OK){\r
+\r
+ } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+ \r
+ CURL *sslerrconn;\r
+ sslerrconn = curl_easy_init();\r
+ CURLcode sslerrconncode;\r
+ \r
+ wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+ \r
+ // Replace conn with sslerrconn!\r
+ \r
+ curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+ \r
+ sslerrconncode = (curl_easy_perform(sslerrconn));\r
+\r
+ SSLCertCol = BuildSSLCollection(sslerrconn);\r
+ SSLCertCol.SuccessCode = 1;\r
+\r
+ return;\r
+ \r
+ } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %d\n", http_code);\r
+ \r
+ return;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %d\n", http_code);\r
+\r
+ return;\r
+\r
+ }\r
+ } else {\r
+ \r
+ // No SSL.\r
+ \r
+ wxString EmptyString;\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); \r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ \r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+\r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc); \r
+ \r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+ \r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ \r
+ fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+ GetHTTPCode());\r
+ \r
+ return;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ \r
+ return;\r
+\r
+ }\r
+ \r
+ }\r
+ \r
+ return;\r
+\r
+}\r
+\r
+wxString CardDAV::GetPageData()\r
+{\r
+\r
+ return PageData;\r
+\r
+}\r
+\r
+void CardDAV::GetServerETagValueThread()\r
+{\r
+\r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+\r
+ SSLStatus = TRUE;\r
+ AuthPassed = TRUE;\r
+ AbortConnection = FALSE;\r
+\r
+ CURL *conn;\r
+ CURLcode conncode;\r
+ wxString ServerAddressURL;\r
+ wxString ServerAuth;\r
+ wxString ServerAddressSSL;\r
+ wxString ServerAddressNormal; \r
+\r
+ conn = curl_easy_init();\r
+ \r
+ struct CardDAVCURLPasser {\r
+ \r
+ CardDAV *Data;\r
+ bool HeaderMode = TRUE;\r
+ \r
+ } CardDAVHeader, CardDAVFooter;\r
+\r
+ CardDAVHeader.Data = this;\r
+ CardDAVHeader.HeaderMode = TRUE;\r
+ \r
+ CardDAVFooter.Data = this;\r
+ CardDAVFooter.HeaderMode = FALSE;\r
+\r
+ wxString Data1;\r
+ wxString Data2;\r
+ \r
+ ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation;\r
+ ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+ ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+ \r
+ ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+ \r
+ // Try SSL first.\r
+\r
+\r
+ /*\r
+ char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)];\r
+ //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length());\r
+ strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1));\r
+ \r
+ char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)];\r
+ //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length()); \r
+ strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1));\r
+\r
+ char *ServerAuthChar = new char[(ServerAuth.Length() - 1)];\r
+ //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); \r
+ strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1));\r
+ \r
+ */\r
+\r
+ //std::string WriteDataString = std::string(ServerUploadData.mb_str());\r
+\r
+ std::map<int,int>::iterator ActIter;\r
+ struct UploadDataStruc UploadData;\r
+ \r
+ \r
+ ActIter = ActivityListPtr->find(ItemIndex);\r
+ \r
+ static const char* query =\r
+ "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"\r
+ "<C:addressbook-query xmlns:D=\"DAV:\""\r
+ " xmlns:C=\"urn:ietf:params:xml:ns:carddav\">"\r
+ "<D:prop><D:getetag/>"\r
+ //"<C:address-data>"\r
+ //" <C:allprop/>"\r
+ //"</C:address-data></D:prop>"\r
+ "</D:prop>"\r
+ "<C:filter/>"\r
+ "</C:addressbook-query>";\r
+\r
+ if (ServerSSL){\r
+\r
+ wxString ServerCertFilename;\r
+ bool MatchingCert = FALSE;\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+\r
+ ServerCertFilename = GetAccountDir(ServerAccount, TRUE);\r
+\r
+ if (wxFile::Exists(ServerCertFilename) == TRUE){\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);\r
+ curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));\r
+ \r
+ }\r
+\r
+ claconncode = (curl_easy_perform(conn));\r
+\r
+ // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without\r
+ // the local certificate in use.\r
+\r
+ if (claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+ \r
+ curl_easy_cleanup(conn);\r
+ conn = curl_easy_init();\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); \r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+ \r
+ // If claconncode is CURLE_OK then delete the certificate file as that\r
+ // is no longer needed.\r
+ \r
+ if (claconncode == CURLE_OK){\r
+ \r
+ // Delete the certificate file.\r
+ \r
+ wxRemoveFile(ServerCertFilename);\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ // Check if it fails with a CURLE_SSL_CACERT then compare\r
+ // the certificates as PEM files.\r
+ \r
+ if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){\r
+ \r
+ //curl_easy_cleanup(conn);\r
+ //conn = curl_easy_init();\r
+\r
+ CURL *sslerrconn;\r
+ sslerrconn = curl_easy_init();\r
+ CURLcode sslerrconncode;\r
+\r
+ //claconncode = (curl_easy_perform(conn));\r
+\r
+ wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+\r
+ curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+ \r
+ wxString SSLLocalData;\r
+ wxString SSLServerData;\r
+ \r
+ sslerrconncode = (curl_easy_perform(sslerrconn));\r
+ \r
+ SSLCertCol = BuildSSLCollection(sslerrconn);\r
+ std::map<int, SSLCertData>::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0);\r
+ std::multimap<wxString,wxString>::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert"));\r
+ \r
+ wxFFile SSLLocalFile;\r
+ \r
+#if wxABI_VERSION < 20900\r
+ SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r"));\r
+#else\r
+ SSLLocalFile.Open(ServerCertFilename, wxT("r"));\r
+#endif \r
+ \r
+ // Load the recovery database for tasks not done.\r
+ \r
+ if (SSLLocalFile.IsOpened() == TRUE){\r
+\r
+ // Check if we are using wxWidgets version 2.8 or less and\r
+ // execute the required command accordingly.\r
+ \r
+ SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto());\r
+ \r
+ \r
+ }\r
+ \r
+ SSLServerData = SSLDataIter->second;\r
+ \r
+ if (SSLLocalData == SSLServerData){\r
+ \r
+ // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER\r
+ // and CURLOPT_SSL_VERIFYHOST off.\r
+ \r
+ curl_easy_cleanup(conn);\r
+ conn = curl_easy_init();\r
+ \r
+ PageData.clear();\r
+ PageHeader.clear();\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); \r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+ \r
+ MatchingCert = TRUE;\r
+ \r
+ }\r
+ \r
+ if (MatchingCert == FALSE){\r
+ \r
+ claconncode = CURLE_SSL_CACERT;\r
+ return;\r
+ \r
+ }\r
+ \r
+ curl_easy_cleanup(sslerrconn);\r
+ \r
+ }\r
+\r
+\r
+\r
+ // Sort out SSL error.\r
+ \r
+ // When SSL cert error occurs, connect again and fetch certificates.\r
+ // Display a message to the user explaining that an invalid\r
+ // certificate has been given and let the user decide what\r
+ // to do next.\r
+\r
+ if (claconncode == CURLE_OK){\r
+\r
+ } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+ \r
+ CURL *sslerrconn;\r
+ sslerrconn = curl_easy_init();\r
+ CURLcode sslerrconncode;\r
+ \r
+ wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+ \r
+ // Replace conn with sslerrconn!\r
+ \r
+ curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+ \r
+ sslerrconncode = (curl_easy_perform(sslerrconn));\r
+\r
+ SSLCertCol = BuildSSLCollection(sslerrconn);\r
+ SSLCertCol.SuccessCode = 1;\r
+\r
+ return;\r
+ \r
+ } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %d\n", http_code);\r
+ \r
+ return;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %d\n", http_code);\r
+\r
+ return;\r
+\r
+ }\r
+\r
+ } else {\r
+ \r
+ // No SSL.\r
+ \r
+ wxString EmptyString;\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); \r
+ \r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+ \r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ \r
+ return;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ \r
+ return;\r
+\r
+ }\r
+ \r
+ }\r
+ \r
+ xmlDocPtr xmlCardDAVDoc;\r
+\r
+ xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+\r
+ xmlNodePtr nodeLevel1;\r
+ xmlNodePtr nodeLevel2;\r
+ xmlNodePtr nodeLevel3;\r
+ xmlNodePtr nodeLevel4;\r
+ xmlNodePtr nodeLevel5;\r
+ xmlNodePtr nodeLevel6;\r
+\r
+ std::map<wxString,wxString> xmlDataMap;\r
+\r
+ wxString DataFilename;\r
+ wxString ETagData;\r
+\r
+ std::string xmlStringSafe;\r
+\r
+ // Tranverse through the catacombs of the response to get our ETag for the file.\r
+\r
+ for (nodeLevel1 = xmlCardDAVDoc->children;\r
+ nodeLevel1 != NULL;\r
+ nodeLevel1 = nodeLevel1->next)\r
+ {\r
+\r
+ for (nodeLevel2 = nodeLevel1->children;\r
+ nodeLevel2 != NULL;\r
+ nodeLevel2 = nodeLevel2->next)\r
+ {\r
+\r
+ for (nodeLevel3 = nodeLevel2->children;\r
+ nodeLevel3 != NULL;\r
+ nodeLevel3 = nodeLevel3->next)\r
+ {\r
+\r
+ bool HREFFound = FALSE;\r
+ bool ETagFound = FALSE;\r
+\r
+ if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href")\r
+ ){\r
+\r
+ // Get the filename.\r
+ \r
+ for (nodeLevel4 = nodeLevel3->children;\r
+ nodeLevel4 != NULL;\r
+ nodeLevel4 = nodeLevel4->next)\r
+ {\r
+ \r
+ if (!xmlStrcmp(nodeLevel4->name, (const xmlChar *)"text") ||\r
+ !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"d:text") ||\r
+ !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"D:text")\r
+ ){\r
+\r
+ DataFilename = wxString::FromUTF8((const char*)nodeLevel4->content);\r
+ wxStringTokenizer wSTDFilename(DataFilename, wxT("/"));\r
+ \r
+ while (wSTDFilename.HasMoreTokens()){\r
+ \r
+ DataFilename = wSTDFilename.GetNextToken();\r
+ \r
+ }\r
+ \r
+ HREFFound = TRUE;\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+\r
+ } else {\r
+\r
+ for (nodeLevel4 = nodeLevel3->children;\r
+ nodeLevel4 != NULL;\r
+ nodeLevel4 = nodeLevel4->next)\r
+ {\r
+ \r
+ for (nodeLevel5 = nodeLevel4->children;\r
+ nodeLevel5 != NULL;\r
+ nodeLevel5 = nodeLevel5->next)\r
+ {\r
+\r
+ if (!xmlStrcmp(nodeLevel5->name, (const xmlChar *)"getetag") ||\r
+ !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"d:getetag") ||\r
+ !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"D:getetag")\r
+ ){\r
+\r
+ for (nodeLevel6 = nodeLevel5->children;\r
+ nodeLevel6 != NULL;\r
+ nodeLevel6 = nodeLevel6->next)\r
+ {\r
+ \r
+ // Strip the quotes from the ETag.\r
+ \r
+ ETagData = wxString::FromUTF8((const char*)nodeLevel6->content);\r
+ if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){\r
+ \r
+ ETagData.Remove(0, 1);\r
+ ETagData.RemoveLast();\r
+ \r
+ }\r
+ \r
+ ETagFound = TRUE;\r
+\r
+ }\r
+ \r
+ }\r
+\r
+ } \r
+\r
+ }\r
+\r
+ }\r
+\r
+ if (HREFFound = TRUE && ETagFound == TRUE){\r
+ \r
+ // Add to the map data.\r
+ \r
+ xmlDataMap.insert(std::make_pair(DataFilename, ETagData));\r
+ \r
+ }\r
+ \r
+ // Reset the values.\r
+ \r
+ HREFFound = FALSE;\r
+ ETagFound = FALSE;\r
+\r
+ }\r
+\r
+ }\r
+\r
+\r
+ }\r
+\r
+ xmlFreeDoc(xmlCardDAVDoc);\r
+\r
+ // Get the first result.\r
+ \r
+\r
+ for (std::map<wxString,wxString>::iterator iter = xmlDataMap.begin(); \r
+ iter != xmlDataMap.end(); ++iter){\r
+ \r
+ ETagResult = iter->second;\r
+ break;\r
+ \r
+ }\r
+ \r
+ if (ETagResult.IsEmpty()){\r
+ \r
+ return;\r
+ \r
+ }\r
+ \r
+ return;\r
+ \r
+}\r
+\r
+wxString CardDAV::ETagValueResult(){\r
+\r
+ return ETagResult;\r
+\r
+}\r
+\r
+void CardDAV::GetServerETagValue(){\r
+\r
+ std::thread ConnectThread(&CardDAV::GetServerETagValueThread, this);\r
+ ConnectThread.detach();\r
+\r
+}\r
+\r
+void CardDAV::SetupData(wxString Method, wxString FilenameLocation, wxString UploadData){\r
+\r
+ ServerMethod = Method;\r
+ ServerFilenameLocation = FilenameLocation;\r
+ ServerUploadData = UploadData;\r
+\r
+ // Check if ServerFilenameLocation has a / at \r
+ // the start and if not then append it.\r
+ \r
+ if (ServerFilenameLocation.Left(1) != wxT("/")){\r
+ \r
+ // Not there so insert.\r
+ \r
+ ServerFilenameLocation = wxT("/") + ServerFilenameLocation;\r
+ \r
+ }\r
+\r
+}\r
+\r
+void CardDAV::SetupVariables(std::map<int, int> *actlist, int actindex){\r
+\r
+ ActivityListPtr = actlist;\r
+ ItemIndex = actindex;\r
+\r
+}\r
+\r
+wxString CardDAV::GetETagData(){\r
+\r
+ return ETagData;\r
+\r
+}\r
+\r
+void CardDAV::SetUploadMode(bool IncMode){\r
+\r
+ UploadMode = IncMode;\r
+\r
+}\r
+\r
+void CardDAV::SetEditMode(bool EditModeInc){\r
+\r
+ EditMode = EditModeInc;\r
+\r
+}\r
+\r
+ContactListData CardDAV::GetContactList(wxString SyncTokenInc){\r
+\r
+ ContactListData ContactListFinal;\r
+ std::map<wxString,FileSyncData> ContactList;\r
+ \r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+\r
+ SSLStatus = TRUE;\r
+ AuthPassed = TRUE;\r
+ AbortConnection = FALSE;\r
+\r
+ CURL *conn;\r
+ CURLcode conncode;\r
+ wxString ServerAddressURL;\r
+ wxString ServerAuth;\r
+ wxString ServerAddressSSL;\r
+ wxString ServerAddressNormal; \r
+\r
+\r
+ conn = curl_easy_init();\r
+ \r
+ struct CardDAVCURLPasser {\r
+ \r
+ CardDAV *Data;\r
+ bool HeaderMode = TRUE;\r
+ \r
+ } CardDAVHeader, CardDAVFooter;\r
+\r
+ CardDAVHeader.Data = this;\r
+ CardDAVHeader.HeaderMode = TRUE;\r
+ \r
+ CardDAVFooter.Data = this;\r
+ CardDAVFooter.HeaderMode = FALSE;\r
+\r
+ wxString Data1;\r
+ wxString Data2;\r
+ \r
+ ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + wxT("/");\r
+ ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+ ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+ \r
+ ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+ \r
+ // Load the sync token file (if it exists).\r
+ \r
+ wxCharBuffer SyncDataBuffer;\r
+ wxString SyncData;\r
+ \r
+ SyncData.Clear();\r
+ \r
+ SyncTokenInc.Trim();\r
+ \r
+ if (!SyncTokenInc.IsEmpty()){\r
+ \r
+ SyncData = wxT("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n");\r
+ SyncData.Append(wxT("<D:sync-collection xmlns:D=\"DAV:\"\n"));\r
+ SyncData.Append(wxT(" xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n"));\r
+ SyncData.Append(wxT("<D:sync-token>"));\r
+ //SyncData.Trim();\r
+ //SyncData.Append(wxT("data:,00378c55-1f44-44a2-a255-84f6560b5cac_580"));\r
+ SyncData.Append(SyncTokenInc);\r
+ //SyncData.Trim();\r
+ SyncData.Append(wxT("</D:sync-token>\n"));\r
+ SyncData.Append(wxT("<D:sync-level>1</D:sync-level>\n"));\r
+ SyncData.Append(wxT("<D:prop>\n"));\r
+ SyncData.Append(wxT(" <D:getetag/>\n"));\r
+ SyncData.Append(wxT("</D:prop>\n"));\r
+ SyncData.Append(wxT("</D:sync-collection>"));\r
+ \r
+ SyncDataBuffer = SyncData.ToUTF8();\r
+ \r
+ } else {\r
+ \r
+ SyncData = wxT("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");\r
+ SyncData.Append(wxT("<D:sync-collection xmlns:D=\"DAV:\""));\r
+ SyncData.Append(wxT(" xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n"));\r
+ SyncData.Append(wxT("<D:sync-token/>\n"));\r
+ SyncData.Append(wxT("<D:sync-level>1</D:sync-level>\n"));\r
+ SyncData.Append(wxT("<D:prop>\n"));\r
+ SyncData.Append(wxT(" <D:getetag/>\n"));\r
+ SyncData.Append(wxT("</D:prop>\n"));\r
+ SyncData.Append(wxT("</D:sync-collection>\n"));\r
+ \r
+ SyncDataBuffer = SyncData.ToUTF8();\r
+\r
+ }\r
+ \r
+ //static const char* query = SyncData.mb_str();\r
+ \r
+ /*char *query = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\\r
+ <D:sync-collection xmlns:D=\"DAV:\"\n\\r
+ xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n\\r
+ <D:sync-token>data:,00378c55-1f44-44a2-a255-84f6560b5cac_580</D:sync-token>\n\\r
+ <D:sync-level>1</D:sync-level>\n\\r
+ <D:prop>\n\\r
+ <D:getetag/>\n\\r
+ </D:prop>\n\\r
+ </D:sync-collection>\n";*/\r
+ const char* query = SyncDataBuffer.data();\r
+ \r
+ // Try SSL first.\r
+\r
+ std::map<int,int>::iterator ActIter;\r
+ struct UploadDataStruc UploadData;\r
+ \r
+ ActIter = ActivityListPtr->find(ItemIndex);\r
+\r
+ curl_slist *slist = NULL; \r
+\r
+ slist = curl_slist_append(slist, "Depth: 1");\r
+\r
+ if (ServerSSL){\r
+\r
+ wxString ServerCertFilename;\r
+ bool MatchingCert = FALSE;\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist);\r
+ curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+\r
+ ServerCertFilename = GetAccountDir(ServerAccount, TRUE);\r
+\r
+ if (wxFile::Exists(ServerCertFilename) == TRUE){\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);\r
+ curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));\r
+ \r
+ }\r
+\r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+\r
+ claconncode = (curl_easy_perform(conn));\r
+\r
+ // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without\r
+ // the local certificate in use.\r
+\r
+ if (claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+ \r
+ curl_easy_cleanup(conn);\r
+ conn = curl_easy_init();\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist);\r
+ curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+ \r
+ // If claconncode is CURLE_OK then delete the certificate file as that\r
+ // is no longer needed.\r
+ \r
+ if (claconncode == CURLE_OK){\r
+ \r
+ // Delete the certificate file.\r
+ \r
+ wxRemoveFile(ServerCertFilename);\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ // Check if it fails with a CURLE_SSL_CACERT then compare\r
+ // the certificates as PEM files.\r
+ \r
+ if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){\r
+ \r
+ //curl_easy_cleanup(conn);\r
+ //conn = curl_easy_init();\r
+\r
+ CURL *sslerrconn;\r
+ sslerrconn = curl_easy_init();\r
+ CURLcode sslerrconncode;\r
+\r
+ //claconncode = (curl_easy_perform(conn));\r
+\r
+ wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+\r
+ curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+ \r
+ wxString SSLLocalData;\r
+ wxString SSLServerData;\r
+ \r
+ sslerrconncode = (curl_easy_perform(sslerrconn));\r
+ \r
+ SSLCertCol = BuildSSLCollection(sslerrconn);\r
+ std::map<int, SSLCertData>::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0);\r
+ std::multimap<wxString,wxString>::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert"));\r
+ \r
+ wxFFile SSLLocalFile;\r
+ \r
+#if wxABI_VERSION < 20900\r
+ SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r"));\r
+#else\r
+ SSLLocalFile.Open(ServerCertFilename, wxT("r"));\r
+#endif \r
+ \r
+ // Load the recovery database for tasks not done.\r
+ \r
+ if (SSLLocalFile.IsOpened() == TRUE){\r
+\r
+ // Check if we are using wxWidgets version 2.8 or less and\r
+ // execute the required command accordingly.\r
+ \r
+ SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto());\r
+ \r
+ \r
+ }\r
+ \r
+ SSLServerData = SSLDataIter->second;\r
+ \r
+ if (SSLLocalData == SSLServerData){\r
+ \r
+ // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER\r
+ // and CURLOPT_SSL_VERIFYHOST off.\r
+ \r
+ curl_easy_cleanup(conn);\r
+ conn = curl_easy_init();\r
+ \r
+ PageHeader.clear();\r
+ PageData.clear();\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist);\r
+ curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0);\r
+ curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+ \r
+ MatchingCert = TRUE;\r
+ \r
+ }\r
+ \r
+ if (MatchingCert == FALSE){\r
+ \r
+ claconncode = CURLE_SSL_CACERT;\r
+ return ContactListFinal;\r
+ \r
+ }\r
+ \r
+ curl_easy_cleanup(sslerrconn);\r
+ \r
+ }\r
+\r
+ // Sort out SSL error.\r
+ \r
+ // When SSL cert error occurs, connect again and fetch certificates.\r
+ // Display a message to the user explaining that an invalid\r
+ // certificate has been given and let the user decide what\r
+ // to do next.\r
+\r
+ if (claconncode == CURLE_OK){\r
+\r
+ } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+ \r
+ CURL *sslerrconn;\r
+ sslerrconn = curl_easy_init();\r
+ CURLcode sslerrconncode;\r
+ \r
+ wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+ \r
+ // Replace conn with sslerrconn!\r
+ \r
+ curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+ curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+ \r
+ sslerrconncode = (curl_easy_perform(sslerrconn));\r
+\r
+ SSLCertCol = BuildSSLCollection(sslerrconn);\r
+ SSLCertCol.SuccessCode = 1;\r
+\r
+ return ContactListFinal;\r
+ \r
+ } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %d\n", http_code);\r
+ \r
+ return ContactListFinal;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %d\n", http_code);\r
+\r
+ return ContactListFinal;\r
+\r
+ }\r
+\r
+ SSLCertCol = BuildSSLCollection(conn);\r
+\r
+ } else {\r
+ \r
+ // No SSL.\r
+ \r
+ wxString EmptyString;\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist);\r
+\r
+ //UploadData.readptr = &CardDAVDataQuery;\r
+ //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+ //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query)); \r
+ \r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+ \r
+ claconncode = (curl_easy_perform(conn));\r
+\r
+ if (claconncode == CURLE_OK){\r
+\r
+\r
+\r
+ } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %l\n", http_code);\r
+ \r
+ return ContactListFinal;\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(claconncode));\r
+ long http_code = 0;\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+ fprintf(stderr, "Error code was: %l\n", http_code);\r
+ \r
+ return ContactListFinal;\r
+\r
+ }\r
+ \r
+ }\r
+\r
+ xmlDocPtr xmlCardDAVDoc;\r
+ xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+\r
+ xmlNodePtr nodeLevel1;\r
+ xmlNodePtr nodeLevel2;\r
+ xmlNodePtr nodeLevel3;\r
+ xmlNodePtr nodeLevel4;\r
+ xmlNodePtr nodeLevel5;\r
+ xmlNodePtr nodeLevel6;\r
+ \r
+ xmlNodePtr nodeStatusLv1;\r
+ xmlNodePtr nodeStatusLv2;\r
+\r
+ std::map<wxString,wxString> xmlDataMap;\r
+ std::map<wxString,wxString> ServerETagData;\r
+\r
+ wxString DataFilename;\r
+ wxString DataSyncToken;\r
+ int DataFileStatus;\r
+ wxString ETagData;\r
+ bool SyncTokenFound = FALSE;\r
+\r
+ std::string xmlStringSafe;\r
+\r
+ // Tranverse through the catacombs of the response to get our ETag for the file and\r
+ // the server syncronisation token.\r
+\r
+ // Start by getting all the server ETag data.\r
+\r
+ for (nodeLevel1 = xmlCardDAVDoc->children;\r
+ nodeLevel1 != NULL;\r
+ nodeLevel1 = nodeLevel1->next)\r
+ {\r
+\r
+ for (nodeLevel2 = nodeLevel1->children;\r
+ nodeLevel2 != NULL;\r
+ nodeLevel2 = nodeLevel2->next)\r
+ {\r
+\r
+ printf("\t%s:%s\n", nodeLevel2->name, nodeLevel2->content);\r
+\r
+ for (nodeLevel3 = nodeLevel2->children;\r
+ nodeLevel3 != NULL;\r
+ nodeLevel3 = nodeLevel3->next)\r
+ {\r
+\r
+ DataFileStatus = 0;\r
+ bool HREFFound = FALSE;\r
+ bool ETagFound = FALSE;\r
+ bool HTTPStatus = FALSE;\r
+\r
+ printf("\t\t%s:%s\n", nodeLevel3->name, nodeLevel3->content);\r
+\r
+ if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href")\r
+ ){\r
+\r
+ // Get the filename.\r
+ \r
+ for (nodeLevel4 = nodeLevel3->children;\r
+ nodeLevel4 != NULL;\r
+ nodeLevel4 = nodeLevel4->next)\r
+ {\r
+ \r
+ if (!xmlStrcmp(nodeLevel4->name, (const xmlChar *)"text") ||\r
+ !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"d:text") ||\r
+ !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"D:text")\r
+ ){\r
+ \r
+ DataFilename = wxString::FromUTF8((const char*)nodeLevel4->content);\r
+ wxStringTokenizer wSTDFilename(DataFilename, wxT("/"));\r
+ \r
+ while (wSTDFilename.HasMoreTokens()){\r
+ \r
+ DataFilename = wSTDFilename.GetNextToken();\r
+ \r
+ }\r
+ \r
+ HREFFound = TRUE;\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+\r
+ } else {\r
+\r
+ for (nodeLevel4 = nodeLevel3->children;\r
+ nodeLevel4 != NULL;\r
+ nodeLevel4 = nodeLevel4->next)\r
+ {\r
+\r
+ for (nodeStatusLv1 = nodeLevel3->children;\r
+ nodeStatusLv1 != NULL;\r
+ nodeStatusLv1 = nodeStatusLv1->next)\r
+ {\r
+\r
+ if (wxString::FromUTF8((const char*)nodeStatusLv1->content) == wxT("HTTP/1.1 404 Not Found")){\r
+ \r
+ DataFileStatus = 2;\r
+ \r
+ HTTPStatus = TRUE;\r
+ \r
+ }\r
+ \r
+ if ((!xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"status") ||\r
+ !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"d:status") ||\r
+ !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status") && HTTPStatus == FALSE)\r
+ ){\r
+\r
+ // Get the filename.\r
+ \r
+ for (nodeStatusLv2 = nodeStatusLv1->children;\r
+ nodeStatusLv2 != NULL;\r
+ nodeStatusLv2 = nodeStatusLv2->next)\r
+ {\r
+ \r
+ if (!xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"text") ||\r
+ !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"d:text") ||\r
+ !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"D:text")\r
+ ){\r
+\r
+ if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 200 OK")){\r
+ \r
+ DataFileStatus = 1;\r
+ \r
+ HTTPStatus = TRUE;\r
+ \r
+ // This is currently in a WebDAV draft and may hopefully be enabled when this changes.\r
+ \r
+ //} else if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 201 Created")){\r
+ \r
+ // DataFileStatus = 0;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ \r
+ }\r
+ \r
+ for (nodeLevel5 = nodeLevel4->children;\r
+ nodeLevel5 != NULL;\r
+ nodeLevel5 = nodeLevel5->next)\r
+ {\r
+\r
+ if (!xmlStrcmp(nodeLevel5->name, (const xmlChar *)"getetag") ||\r
+ !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"d:getetag") ||\r
+ !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"D:getetag")\r
+ ){\r
+\r
+ for (nodeLevel6 = nodeLevel5->children;\r
+ nodeLevel6 != NULL;\r
+ nodeLevel6 = nodeLevel6->next)\r
+ {\r
+\r
+ // Strip the quotes from the ETag.\r
+ \r
+ ETagData = wxString::FromUTF8((const char*)nodeLevel6->content);\r
+ if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){\r
+ \r
+ ETagData.Remove(0, 1);\r
+ ETagData.RemoveLast();\r
+ \r
+ }\r
+ \r
+ ETagFound = TRUE;\r
+\r
+ }\r
+ \r
+ }\r
+\r
+ } \r
+\r
+ }\r
+\r
+ }\r
+\r
+ if (HREFFound == TRUE && ETagFound == TRUE && HTTPStatus == TRUE){\r
+ \r
+ // Add to the map data.\r
+ \r
+ FileSyncData SData;\r
+ \r
+ SData.ETagData = ETagData;\r
+ SData.DataFlag = DataFileStatus;\r
+ \r
+ ContactListFinal.ListData.insert(std::make_pair(DataFilename, SData));\r
+ \r
+ }\r
+ \r
+ // Reset the values.\r
+ \r
+ HREFFound = FALSE;\r
+ ETagFound = FALSE;\r
+ HTTPStatus = FALSE;\r
+\r
+ }\r
+\r
+ if ((!xmlStrcmp(nodeLevel2->name, (const xmlChar *)"sync-token") ||\r
+ !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"d:sync-token") ||\r
+ !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"D:sync-token")) &&\r
+ SyncTokenFound == FALSE\r
+ ){\r
+\r
+ for (nodeLevel3 = nodeLevel2->children;\r
+ nodeLevel3 != NULL;\r
+ nodeLevel3 = nodeLevel3->next)\r
+ {\r
+\r
+ if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"text") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:text") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:text")\r
+ ){\r
+ \r
+ DataSyncToken = wxString::FromUTF8((const char*)nodeLevel3->content);\r
+\r
+ SyncTokenFound = TRUE;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ }\r
+\r
+ }\r
+ \r
+ for (nodeLevel1 = xmlCardDAVDoc->children;\r
+ nodeLevel1 != NULL;\r
+ nodeLevel1 = nodeLevel1->next)\r
+ {\r
+\r
+ for (nodeLevel2 = nodeLevel1->children;\r
+ nodeLevel2 != NULL;\r
+ nodeLevel2 = nodeLevel2->next)\r
+ {\r
+\r
+ printf("\t%s:%s\n", nodeLevel2->name, nodeLevel2->content);\r
+\r
+ DataFileStatus = 0;\r
+ bool HREFFound = FALSE;\r
+ bool ETagFound = FALSE;\r
+ bool HTTPStatus = FALSE;\r
+\r
+ for (nodeLevel3 = nodeLevel2->children;\r
+ nodeLevel3 != NULL;\r
+ nodeLevel3 = nodeLevel3->next)\r
+ {\r
+\r
+ printf("\t\t%s:%s\n", nodeLevel3->name, nodeLevel3->content);\r
+\r
+ if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href")\r
+ ){\r
+\r
+ // Get the filename.\r
+ \r
+ for (nodeLevel4 = nodeLevel3->children;\r
+ nodeLevel4 != NULL;\r
+ nodeLevel4 = nodeLevel4->next)\r
+ {\r
+ \r
+ if (!xmlStrcmp(nodeLevel4->name, (const xmlChar *)"text") ||\r
+ !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"d:text") ||\r
+ !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"D:text")\r
+ ){\r
+ \r
+ DataFilename = wxString::FromUTF8((const char*)nodeLevel4->content);\r
+ wxStringTokenizer wSTDFilename(DataFilename, wxT("/"));\r
+ \r
+ while (wSTDFilename.HasMoreTokens()){\r
+ \r
+ DataFilename = wSTDFilename.GetNextToken();\r
+ \r
+ }\r
+ \r
+ HREFFound = TRUE;\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+\r
+ } else {\r
+\r
+ for (nodeLevel4 = nodeLevel3->children;\r
+ nodeLevel4 != NULL;\r
+ nodeLevel4 = nodeLevel4->next)\r
+ {\r
+\r
+ for (nodeStatusLv1 = nodeLevel3->children;\r
+ nodeStatusLv1 != NULL;\r
+ nodeStatusLv1 = nodeStatusLv1->next)\r
+ {\r
+\r
+ if (wxString::FromUTF8((const char*)nodeStatusLv1->content) == wxT("HTTP/1.1 404 Not Found")){\r
+ \r
+ DataFileStatus = 2;\r
+\r
+ HTTPStatus = TRUE;\r
+ \r
+ }\r
+ \r
+ if ((!xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"status") ||\r
+ !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"d:status") ||\r
+ !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status") && HTTPStatus == FALSE)\r
+ ){\r
+\r
+ // Get the filename.\r
+ \r
+ for (nodeStatusLv2 = nodeStatusLv1->children;\r
+ nodeStatusLv2 != NULL;\r
+ nodeStatusLv2 = nodeStatusLv2->next)\r
+ {\r
+ \r
+ if (!xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"text") ||\r
+ !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"d:text") ||\r
+ !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"D:text")\r
+ ){\r
+\r
+ if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 200 OK")){\r
+\r
+ DataFileStatus = 1;\r
+ \r
+ HTTPStatus = TRUE;\r
+ \r
+ // This is currently in a WebDAV draft and may hopefully be enabled when this changes.\r
+ \r
+ //} else if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 201 Created")){\r
+ \r
+ // DataFileStatus = 0;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ \r
+ }\r
+ \r
+ for (nodeLevel5 = nodeLevel4->children;\r
+ nodeLevel5 != NULL;\r
+ nodeLevel5 = nodeLevel5->next)\r
+ {\r
+\r
+ if (!xmlStrcmp(nodeLevel5->name, (const xmlChar *)"getetag") ||\r
+ !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"d:getetag") ||\r
+ !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"D:getetag")\r
+ ){\r
+\r
+ for (nodeLevel6 = nodeLevel5->children;\r
+ nodeLevel6 != NULL;\r
+ nodeLevel6 = nodeLevel6->next)\r
+ {\r
+\r
+ // Strip the quotes from the ETag.\r
+ \r
+ ETagData = wxString::FromUTF8((const char*)nodeLevel6->content);\r
+ if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){\r
+ \r
+ ETagData.Remove(0, 1);\r
+ ETagData.RemoveLast();\r
+ \r
+ }\r
+ \r
+ ETagFound = TRUE;\r
+\r
+ }\r
+ \r
+ }\r
+\r
+ } \r
+\r
+ }\r
+\r
+ }\r
+\r
+ }\r
+\r
+ if (HREFFound == TRUE && HTTPStatus == TRUE && DataFileStatus == 2){\r
+ \r
+ FileSyncData SData;\r
+ \r
+ SData.ETagData = wxT("");\r
+ SData.DataFlag = DataFileStatus;\r
+ \r
+ ContactListFinal.ListData.insert(std::make_pair(DataFilename, SData)); \r
+ \r
+ }\r
+\r
+ if (HREFFound == TRUE && ETagFound == TRUE && HTTPStatus == TRUE){\r
+ \r
+ // Add to the map data.\r
+ \r
+ FileSyncData SData;\r
+ \r
+ SData.ETagData = ETagData;\r
+ SData.DataFlag = DataFileStatus;\r
+ \r
+ ContactListFinal.ListData.insert(std::make_pair(DataFilename, SData));\r
+ \r
+ }\r
+ \r
+ // Reset the values.\r
+ \r
+ HREFFound = FALSE;\r
+ ETagFound = FALSE;\r
+ HTTPStatus = FALSE;\r
+ DataFilename.Clear();\r
+\r
+ if ((!xmlStrcmp(nodeLevel2->name, (const xmlChar *)"sync-token") ||\r
+ !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"d:sync-token") ||\r
+ !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"D:sync-token")) &&\r
+ SyncTokenFound == FALSE\r
+ ){\r
+\r
+ for (nodeLevel3 = nodeLevel2->children;\r
+ nodeLevel3 != NULL;\r
+ nodeLevel3 = nodeLevel3->next)\r
+ {\r
+\r
+ if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"text") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:text") ||\r
+ !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:text")\r
+ ){\r
+ \r
+ DataSyncToken = wxString::FromUTF8((const char*)nodeLevel3->content);\r
+\r
+ SyncTokenFound = TRUE;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ }\r
+\r
+ }\r
+ \r
+ // Get the sync token.\r
+ \r
+ if (SyncTokenFound == TRUE){\r
+ \r
+ ContactListFinal.SyncToken = DataSyncToken;\r
+ \r
+ } else {\r
+ \r
+ }\r
+\r
+ SleepFor(2000000000);\r
+\r
+ /*timespec n1, n2;\r
+ \r
+ n1.tv_sec = 0;\r
+ n1.tv_nsec = 2000000000L;\r
+ \r
+ nanosleep(&n1, &n2);*/\r
+\r
+ xmlFreeDoc(xmlCardDAVDoc);\r
+ curl_easy_cleanup(conn);\r
+\r
+ SyncDataBuffer.reset();\r
+\r
+ // Get the first result.\r
+\r
+ return ContactListFinal;\r
+\r
+}\r
+\r
+int CardDAV::GetResultCode(){\r
+\r
+ return (int)claconncode;\r
+\r
+}\r
+\r
+int CardDAV::GetHTTPCode(){\r
+\r
+ return HTTPErrorCode;\r
+\r
+}\r
+\r
+wxString CardDAV::GetErrorBuffer(){\r
+\r
+ wxString ErrorBuffer = wxString::FromUTF8(curlerrbuffer);\r
+\r
+ return ErrorBuffer;\r
+\r
+}\r
+\r
+wxString CardDAV::GetDefaultAddressBookURL(){\r
+\r
+ // First: Get the principal UID address.\r
+ \r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+\r
+ SSLStatus = TRUE;\r
+ AuthPassed = TRUE;\r
+ AbortConnection = FALSE;\r
+\r
+ CURL *conn;\r
+ CURLcode conncode;\r
+ wxString ServerAddressURL;\r
+ wxString ServerAuth;\r
+ wxString ServerAddressSSL;\r
+ wxString ServerAddressNormal; \r
+\r
+ conn = curl_easy_init();\r
+ \r
+ struct curl_slist *connhd = NULL;\r
+ struct curl_slist *connhd2 = NULL;\r
+ struct curl_slist *connhd3 = NULL;\r
+\r
+ connhd = curl_slist_append(connhd, "Depth: 0");\r
+ connhd = curl_slist_append(connhd, "Prefer: return-minimal");\r
+ connhd = curl_slist_append(connhd, "Content-Type: application/xml; charset=utf-8");\r
+\r
+ connhd2 = curl_slist_append(connhd2, "Depth: 0");\r
+ connhd2 = curl_slist_append(connhd2, "Prefer: return-minimal");\r
+ connhd2 = curl_slist_append(connhd2, "Content-Type: application/xml; charset=utf-8");\r
+\r
+ connhd3 = curl_slist_append(connhd3, "Depth: 1");\r
+ connhd3 = curl_slist_append(connhd3, "Prefer: return-minimal");\r
+ connhd3 = curl_slist_append(connhd3, "Content-Type: application/xml; charset=utf-8");\r
+\r
+ struct CardDAVCURLPasser {\r
+ \r
+ CardDAV *Data;\r
+ bool HeaderMode = TRUE;\r
+ \r
+ } CardDAVHeader, CardDAVFooter;\r
+\r
+ CardDAVHeader.Data = this;\r
+ CardDAVHeader.HeaderMode = TRUE;\r
+ \r
+ CardDAVFooter.Data = this;\r
+ CardDAVFooter.HeaderMode = FALSE;\r
+\r
+ wxString Data1;\r
+ wxString Data2;\r
+ \r
+ wxString ETag;\r
+ wxString ETagOriginal;\r
+ wxString ETagServer;\r
+ \r
+ ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+ ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+ ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+ \r
+ ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+ \r
+ wxString SAURLPrincipals = ServerAddressURL + wxT("principals/");\r
+ wxString SAURLPrincipalURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort);\r
+ wxString SAURLAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort);\r
+ wxString FinalPrefix;\r
+\r
+ struct UploadDataStruc UploadData;\r
+ \r
+ // Setup the first query finding out where the principal URL is.\r
+ \r
+ const char* query = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"\r
+ "<D:propfind xmlns:D=\"DAV:\">\n"\r
+ " <D:prop>"\r
+ " <D:current-user-principal/>\n"\r
+ " </D:prop>"\r
+ "</D:propfind>";\r
+\r
+ // Setup the second query finding out where the address book home URL is.\r
+ \r
+ const char* query2 = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"\r
+ "<D:propfind xmlns:D=\"DAV:\""\r
+ " xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n"\r
+ " <D:prop>\n"\r
+ " <C:addressbook-home-set/>\n"\r
+ " </D:prop>\n"\r
+ "</D:propfind>";\r
+ \r
+ // Setup the third query finding out where the default address book URL is.\r
+ \r
+ const char* query3 = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"\r
+ "<D:propfind xmlns:D=\"DAV:\""\r
+ " xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n"\r
+ " <D:prop>\n"\r
+ " <C:default-addressbook-URL/>\n" \r
+ " </D:prop>\n"\r
+ "</D:propfind>";\r
+ \r
+ if (ServerSSL){\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipals.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); \r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+ if (UploadMode == TRUE){\r
+\r
+ UploadData.readptr = &ServerUploadData;\r
+ UploadData.sizeleft = ServerUploadData.Len();\r
+ curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ }\r
+\r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ *ServerResult = TRUE;\r
+ AuthPassed = TRUE;\r
+ SSLStatus = TRUE;\r
+ return wxT("");\r
+\r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode)); \r
+ \r
+ *ServerResult = FALSE;\r
+ \r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+ \r
+ return wxT(""); \r
+\r
+ }\r
+\r
+ } else {\r
+ \r
+ // No SSL.\r
+\r
+ // Do an initial connection (incase of Digest authentication).\r
+\r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipals.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND");\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd);\r
+ \r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ // If the ETag is different to the non-matching X-XAB-ETAG and X-XAB-ETAG-ORIG,\r
+ // then bring up the conflict resolution form.\r
+ \r
+ if (EditMode == TRUE){\r
+ \r
+ }\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+\r
+ fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+ GetHTTPCode());\r
+\r
+ return wxT("");\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ return wxT("");\r
+\r
+ }\r
+\r
+ }\r
+ \r
+ // Process the XML data from the application.\r
+ \r
+ xmlDocPtr xmlCardDAVDoc;\r
+ xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+\r
+ xmlNodePtr nodeLevel1;\r
+ xmlNodePtr nodeLevel2;\r
+ xmlNodePtr nodeLevel3;\r
+ xmlNodePtr nodeLevel4;\r
+ xmlNodePtr nodeLevel5;\r
+ xmlNodePtr nodeLevel6;\r
+ xmlNodePtr nodeLevel7;\r
+ \r
+ for (nodeLevel1 = xmlCardDAVDoc->children;\r
+ nodeLevel1 != NULL;\r
+ nodeLevel1 = nodeLevel1->next)\r
+ {\r
+\r
+ for (nodeLevel2 = nodeLevel1->children;\r
+ nodeLevel2 != NULL;\r
+ nodeLevel2 = nodeLevel2->next)\r
+ {\r
+\r
+\r
+ for (nodeLevel3 = nodeLevel2->children;\r
+ nodeLevel3 != NULL;\r
+ nodeLevel3 = nodeLevel3->next)\r
+ {\r
+ \r
+ for (nodeLevel4 = nodeLevel3->children;\r
+ nodeLevel4 != NULL;\r
+ nodeLevel4 = nodeLevel4->next)\r
+ {\r
+ \r
+ for (nodeLevel5 = nodeLevel4->children;\r
+ nodeLevel5 != NULL;\r
+ nodeLevel5 = nodeLevel5->next)\r
+ {\r
+ \r
+ for (nodeLevel6 = nodeLevel5->children;\r
+ nodeLevel6 != NULL;\r
+ nodeLevel6 = nodeLevel6->next)\r
+ {\r
+ \r
+ if (!xmlStrcmp(nodeLevel6->name, (const xmlChar *)"href") ||\r
+ !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"d:href") ||\r
+ !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"D:href")\r
+ ){\r
+ \r
+ // Found the <href> part so extract the principal URL address.\r
+ \r
+ for (nodeLevel7 = nodeLevel6->children;\r
+ nodeLevel7 != NULL;\r
+ nodeLevel7 = nodeLevel7->next)\r
+ {\r
+ \r
+ SAURLPrincipalURL.Append(wxString::FromUTF8((const char*)nodeLevel7->content));\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ xmlFreeDoc(xmlCardDAVDoc);\r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+ \r
+ // Second: Get the addressbook-home-set \r
+\r
+ curl_easy_reset(conn);\r
+\r
+ if (ServerSSL){\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); \r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+ if (UploadMode == TRUE){\r
+\r
+ UploadData.readptr = &ServerUploadData;\r
+ UploadData.sizeleft = ServerUploadData.Len();\r
+ curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ }\r
+\r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ *ServerResult = TRUE;\r
+ AuthPassed = TRUE;\r
+ SSLStatus = TRUE;\r
+ return wxT("");\r
+\r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode)); \r
+ \r
+ *ServerResult = FALSE;\r
+ \r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+ \r
+ return wxT(""); \r
+\r
+ }\r
+\r
+ } else {\r
+ \r
+ // No SSL.\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipalURL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND");\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query2);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query2));\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd2);\r
+ \r
+ conncode = (curl_easy_perform(conn));\r
+ \r
+ // If the ETag is different to the non-matching X-XAB-ETAG and X-XAB-ETAG-ORIG,\r
+ // then bring up the conflict resolution form.\r
+ \r
+ if (EditMode == TRUE){\r
+ \r
+ }\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+\r
+ fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+ GetHTTPCode());\r
+ return wxT("");\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ return wxT("");\r
+\r
+ }\r
+ \r
+ }\r
+\r
+ xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+ \r
+ for (nodeLevel1 = xmlCardDAVDoc->children;\r
+ nodeLevel1 != NULL;\r
+ nodeLevel1 = nodeLevel1->next)\r
+ {\r
+\r
+ for (nodeLevel2 = nodeLevel1->children;\r
+ nodeLevel2 != NULL;\r
+ nodeLevel2 = nodeLevel2->next)\r
+ {\r
+\r
+\r
+ for (nodeLevel3 = nodeLevel2->children;\r
+ nodeLevel3 != NULL;\r
+ nodeLevel3 = nodeLevel3->next)\r
+ {\r
+ \r
+ for (nodeLevel4 = nodeLevel3->children;\r
+ nodeLevel4 != NULL;\r
+ nodeLevel4 = nodeLevel4->next)\r
+ {\r
+ \r
+ for (nodeLevel5 = nodeLevel4->children;\r
+ nodeLevel5 != NULL;\r
+ nodeLevel5 = nodeLevel5->next)\r
+ {\r
+ \r
+ for (nodeLevel6 = nodeLevel5->children;\r
+ nodeLevel6 != NULL;\r
+ nodeLevel6 = nodeLevel6->next)\r
+ {\r
+ \r
+ if (!xmlStrcmp(nodeLevel6->name, (const xmlChar *)"href") ||\r
+ !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"d:href") ||\r
+ !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"D:href")\r
+ ){\r
+ \r
+ // Found the <href> part so extract the principal URL address.\r
+ \r
+ for (nodeLevel7 = nodeLevel6->children;\r
+ nodeLevel7 != NULL;\r
+ nodeLevel7 = nodeLevel7->next)\r
+ {\r
+ \r
+ SAURLAddressURL.Append(wxString::FromUTF8((const char*)nodeLevel7->content));\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ xmlFreeDoc(xmlCardDAVDoc);\r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+\r
+ // Finally: Get the default-addressbook-URL from the addressbook-home-set address.\r
+ \r
+ curl_easy_reset(conn);\r
+\r
+ if (ServerSSL){\r
+\r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT); \r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+ if (UploadMode == TRUE){\r
+\r
+ UploadData.readptr = &ServerUploadData;\r
+ UploadData.sizeleft = ServerUploadData.Len();\r
+ curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+ curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+ curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+ \r
+ }\r
+\r
+ conncode = (curl_easy_perform(conn));\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ *ServerResult = TRUE;\r
+ AuthPassed = TRUE;\r
+ SSLStatus = TRUE;\r
+ return wxT("");\r
+\r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode)); \r
+ \r
+ *ServerResult = FALSE;\r
+ \r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+ \r
+ return wxT(""); \r
+\r
+ }\r
+\r
+ } else {\r
+ \r
+ // No SSL.\r
+ \r
+ curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLAddressURL.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+ curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+ curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+ curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+ curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+ curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+ curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+ curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+ curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+ curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+ curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND");\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query3);\r
+ curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query3));\r
+ curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd3);\r
+ \r
+ conncode = (curl_easy_perform(conn));\r
+ \r
+ // If the ETag is different to the non-matching X-XAB-ETAG and X-XAB-ETAG-ORIG,\r
+ // then bring up the conflict resolution form.\r
+ \r
+ if (EditMode == TRUE){\r
+ \r
+ }\r
+\r
+ if (conncode == CURLE_OK){\r
+\r
+ } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+\r
+ curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+ \r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+\r
+ fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+ GetHTTPCode());\r
+ return wxT("");\r
+ \r
+ } else {\r
+\r
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+ curl_easy_strerror(conncode));\r
+ return wxT("");\r
+\r
+ }\r
+ \r
+ }\r
+ \r
+ xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+ \r
+ for (nodeLevel1 = xmlCardDAVDoc->children;\r
+ nodeLevel1 != NULL;\r
+ nodeLevel1 = nodeLevel1->next)\r
+ {\r
+\r
+ for (nodeLevel2 = nodeLevel1->children;\r
+ nodeLevel2 != NULL;\r
+ nodeLevel2 = nodeLevel2->next)\r
+ {\r
+\r
+\r
+ for (nodeLevel3 = nodeLevel2->children;\r
+ nodeLevel3 != NULL;\r
+ nodeLevel3 = nodeLevel3->next)\r
+ {\r
+ \r
+ for (nodeLevel4 = nodeLevel3->children;\r
+ nodeLevel4 != NULL;\r
+ nodeLevel4 = nodeLevel4->next)\r
+ {\r
+ \r
+ for (nodeLevel5 = nodeLevel4->children;\r
+ nodeLevel5 != NULL;\r
+ nodeLevel5 = nodeLevel5->next)\r
+ {\r
+ \r
+ for (nodeLevel6 = nodeLevel5->children;\r
+ nodeLevel6 != NULL;\r
+ nodeLevel6 = nodeLevel6->next)\r
+ {\r
+ \r
+ if (!xmlStrcmp(nodeLevel6->name, (const xmlChar *)"href") ||\r
+ !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"d:href") ||\r
+ !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"D:href")\r
+ ){\r
+ \r
+ // Found the <href> part so extract the principal URL address.\r
+ \r
+ for (nodeLevel7 = nodeLevel6->children;\r
+ nodeLevel7 != NULL;\r
+ nodeLevel7 = nodeLevel7->next)\r
+ {\r
+ \r
+ FinalPrefix = wxString::FromUTF8((const char*)nodeLevel7->content);\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ }\r
+\r
+ xmlFreeDoc(xmlCardDAVDoc);\r
+ PageData.Clear();\r
+ PageHeader.Clear();\r
+\r
+ return FinalPrefix;\r
+\r
+}\r
+\r
+SSLCertCollection CardDAV::BuildSSLCollection(CURL *conn){\r
+\r
+ SSLCertCollection SSLCertInfo;\r
+\r
+ // Grab the certificate data.\r
+\r
+ union {\r
+ struct curl_slist *certdata;\r
+ struct curl_certinfo *certinfo;\r
+ } certptr;\r
+\r
+ certptr.certdata = NULL;\r
+ \r
+ curl_easy_getinfo(conn, CURLINFO_CERTINFO, &certptr.certinfo);\r
+\r
+ wxString CertPropName;\r
+ wxString CertPropValue;\r
+\r
+ for (int i = 0; i < certptr.certinfo->num_of_certs; i++){\r
+\r
+ struct curl_slist *slist;\r
+ SSLCertData SSLCertDataInc;\r
+ \r
+ for (slist = certptr.certinfo->certinfo[i]; slist; slist = slist->next){\r
+ \r
+ wxStringTokenizer CertDataInc(wxString::FromUTF8(slist->data), ":");\r
+ \r
+ // Get first token as the property name.\r
+ \r
+ CertPropName = CertDataInc.GetNextToken();\r
+ \r
+ // Get remaining tokens as the property value.\r
+ \r
+ while(CertDataInc.HasMoreTokens()){\r
+ \r
+ CertPropValue.Append(CertDataInc.GetNextToken());\r
+ \r
+ }\r
+ \r
+ SSLCertDataInc.CertData.insert(std::make_pair(CertPropName, CertPropValue));\r
+ CertPropName.clear();\r
+ CertPropValue.clear();\r
+ \r
+ }\r
+ \r
+ SSLCertInfo.SSLCollection.insert(std::make_pair(i, SSLCertDataInc));\r
+ \r
+ }\r
+ \r
+ return SSLCertInfo;\r
+\r
+}\r
+\r
+SSLCertCollection CardDAV::GetCertificateData(){\r
+\r
+ // Pass on the collected certificate data.\r
+\r
+ return SSLCertCol;\r
+\r
+}\r
+\r
+wxString CardDAV::GetErrorMessage(){\r
+\r
+ return ErrorMessage;\r
+\r
+}
\ No newline at end of file
--- /dev/null
+#include <iostream>
+#include <map>
+#include <wx/wx.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <curl/curl.h>
+#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<wxString,FileSyncData> ListData;
+};
+
+/*struct CertificateData{
+ std::multimap<wxString,wxString> CertificateData;
+ bool CertValid;
+ int CertError;
+};
+
+struct CertificateCollection{
+ std::map<int,CertificateData> Certificates;
+ std::map<int,int> ParentCerticiate;
+ bool AllCertsValid;
+ std::map<int,int> 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<int, int> *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<int, int> *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
--- /dev/null
+[Dolphin]
+Timestamp=2013,9,10,19,57,41
+Version=3
+ViewMode=1
--- /dev/null
+/*
+ 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 <iostream>
+
+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;
+}
+
--- /dev/null
+#include <string>
+
+std::string base64_encode(unsigned char const* , unsigned int len);
+std::string base64_decode(std::string const& s);
--- /dev/null
+#include <wx/wx.h>
+#include <wx/ffile.h>
+
+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
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef COMMON_DEFAULTS_H
+#define COMMON_DEFAULTS_H
+
+void SetupDefaultAddressBook();
+void SetupDefaultSettings();
+void SetupDirectories();
+
+#endif
\ No newline at end of file
--- /dev/null
+#include <wx/wx.h>
+
+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
--- /dev/null
+#include <wx/wx.h>
+
+#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
--- /dev/null
+#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<wxString,wxString>::iterator IterWxS;
+ IterWxS = FilenameETagOriginal.find(Filename);
+ NeedsWrite = TRUE;
+
+ // Unlock.
+
+ ProcessLock->unlock();
+
+}
+
+std::map<wxString,wxString>* ETagDB::GetFilenamePointer(){
+
+ return &FilenameETag;
+
+}
+
+wxString ETagDB::GetETag(wxString Filename){
+
+ // Lock or wait if it is already locked.
+
+ wxString ETagOut;
+ std::map<wxString,wxString>::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<wxString,wxString>::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<wxString,wxString>::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<wxString,wxString>::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<wxString,ETagData> ETagDB::GetETagData(){
+
+ // Lock the database.
+
+ ProcessLock->lock();
+
+ // Go through each of the ETags and process them accordingly.
+
+ std::map<wxString,ETagData> DataSet;
+
+ for (std::map<wxString,wxString>::iterator iter = FilenameETag.begin();
+ iter != FilenameETag.end(); ++iter){
+
+ std::map<wxString,wxString>::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
--- /dev/null
+#include <mutex>
+#include <map>
+#include <wx/wx.h>
+#include <wx/textfile.h>
+#include <wx/filefn.h>
+#include <wx/tokenzr.h>
+#include <SFML/System/Lock.hpp>
+
+#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<wxString, wxString>* 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<wxString, ETagData> GetETagData();
+ //void *ProcessLock = new std::mutex;
+
+private:
+ std::map<wxString, wxString> FilenameETag;
+ std::map<wxString, wxString> 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<wxString, wxString> FilenameETag;
+ std::map<wxString, wxString> FilenameETagOriginal;
+ bool NeedsWrite = FALSE;
+ bool MarkedDeleted = FALSE;
+ /*
+ std::mutex ProcessLock;
+ wxString AccountDir;
+};
+*/
+
+
+#endif
\ No newline at end of file
--- /dev/null
+#include "events.h"
+
+//const wxEventType ContactConflictCmdEnv = wxNewEventType();
+//const wxEventType MyFooCommandEvent = wxNewEventType();
\ No newline at end of file
--- /dev/null
+#include <wx/wx.h>
+#include <wx/event.h>
+#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
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+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
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef COMMON_FILENAME_H
+#define COMMON_FILENAME_H
+
+wxString CreateFilenamePath(wxString Path, wxString Filename);
+
+#endif
\ No newline at end of file
--- /dev/null
+#include <iostream>
+#include <map>
+#include <utility>
+#include <wx/wx.h>
+#include <wx/tokenzr.h>
+#include <wx/fs_mem.h>
+#include <wx/mstream.h>
+#include <wx/filesys.h>
+#include <wx/datetime.h>
+//#include <b64/decode.h>
+#include <string>
+
+#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<wxString, wxString> *MemoryFSList){
+
+ // Show message to user that the contact information is loading.
+
+ wxString PageData;
+
+ wxFileSystem::AddHandler(new wxMemoryFSHandler);
+ //wxMemoryFSHandler::AddFile();
+
+ PageData.append(wxT("<html>"));
+ PageData.append(wxT("<head>"));
+ PageData.append(wxT("<title>Page Loading</title>"));
+ PageData.append(wxT("</head>"));
+ PageData.append(wxT("<body>"));
+ PageData.append(wxT("<h2>"));
+ PageData.append(_("Loading contact information..."));
+ PageData.append(wxT("</h2>"));
+ PageData.append(wxT("</body>"));
+ PageData.append(wxT("</html>"));
+
+ HTMLObj->SetPage(PageData);
+
+ PageData.clear();
+
+ // Delete the information from the old session.
+
+ if (!OldSID.IsEmpty()){
+
+ if (MemoryFSList->find(OldSID) == MemoryFSList->end()){
+
+
+ } else {
+
+ std::map<wxString, wxString>::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<wxString, wxString>::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("<html>"));
+ PageData.append(wxT("<head>"));
+ PageData.append(wxT("<title>Contact Information</title>"));
+ PageData.append(wxT("</head>"));
+ PageData.append(wxT("<body>"));
+
+ // Process the data in the vCard object.
+
+ // Name (Display As)
+
+ PageData.append(wxT("<table>"));
+ PageData.append(wxT("<tr>"));
+ PageData.append(wxT("<td>"));
+ PageData.append(wxT("<h2>"));
+ PageData.append(vCardObj->Get(wxT("FN")));
+ PageData.append(wxT("</h2>"));
+ PageData.append(wxT("</td>"));
+ PageData.append(wxT("<td>"));
+
+ // Define common variables for ADR.
+
+ std::map<int,int> SplitPoints;
+ std::map<int,int> SplitLength;
+ std::map<int,int>::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<int,int> SplitPts;
+ std::map<int,int> SplitLen;
+ std::map<wxString,wxString> SplitData;
+ int intSize = 0;
+
+ SplitPropertyData(&ContactData.PropData[0],
+ &SplitPts,
+ &SplitLen,
+ 0,
+ &SplitData);
+
+ for (std::map<wxString, wxString>::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("<img src=\"memory:") + SIDFilename + 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("<img src=\"memory:") + SIDFilename + wxT("\">"));
+
+ }
+
+ PageData.append(wxT("</td>"));
+ PageData.append(wxT("</tr>"));
+ PageData.append(wxT("</table>"));
+
+ // 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("<img src=\"memory:cipto.png\" alt=\""));
+ PageData.append(_("This contact has multiple photos."));
+ PageData.append(wxT("\">"));
+ AddBreak = TRUE;
+
+ }
+
+ ContactData = vCardObj->GetByPartial(wxT("LOGO"));
+
+ if (ContactData.PropCount > 1){
+
+ PageData.append(wxT("<img src=\"memory:cilog.png\" alt=\""));
+ PageData.append(_("This contact has multiple logos."));
+ PageData.append(wxT("\">"));
+ AddBreak = TRUE;
+
+ }
+
+ ContactData = vCardObj->GetByPartial(wxT("SOUND"));
+
+ if (ContactData.PropCount >= 1){
+
+ PageData.append(wxT("<img src=\"memory:cisnd.png\" alt=\""));
+ PageData.append(_("This contact has audio information."));
+ PageData.append(wxT("\">"));
+ AddBreak = TRUE;
+
+ }
+
+ ContactData = vCardObj->GetByPartial(wxT("KEY"));
+
+ if (ContactData.PropCount >= 1){
+
+ PageData.append(wxT("<img src=\"memory:cikey.png\" alt=\""));
+ PageData.append(_("This contact has crytographic keys."));
+ PageData.append(wxT("\">"));
+ AddBreak = TRUE;
+
+ }
+
+ ContactData = vCardObj->GetByPartial(wxT("VND-"));
+
+ if (ContactData.PropCount >= 1){
+
+ PageData.append(wxT("<img src=\"memory:civen.png\" alt=\""));
+ PageData.append(_("This contact has vendor-specific information."));
+ PageData.append(wxT("\">"));
+ AddBreak = TRUE;
+
+ }
+
+ ContactData = vCardObj->GetByPartial(wxT("X-"));
+
+ if (ContactData.PropCount >= 1){
+
+ PageData.append(wxT("<img src=\"memory:ciext.png\" alt=\""));
+ PageData.append(_("This contact has extended information."));
+ PageData.append(wxT("\">"));
+ AddBreak = TRUE;
+
+ }
+
+ if (AddBreak == TRUE){
+
+ PageData.append(wxT("<br><br>"));
+
+ }
+
+ 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("<b>"));
+ PageData.append(_("Birthday:"));
+ PageData.append(wxT("</b> "));
+ PageData.append(DataLines);
+ PageData.append(wxT("<br>"));
+
+ }
+
+ // 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("<b>"));
+ PageData.append(_("Anniversary:"));
+ PageData.append(wxT("</b> "));
+ PageData.append(DataLines);
+ PageData.append(wxT("<br>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Nickname:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(NicknameLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Nicknames"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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<int, int>::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(",<br>"));
+ FinalAddressLine.append(AddressLocality);
+
+ } else {
+
+ FinalAddressLine.append(AddressLocality);
+ AddressFirst = FALSE;
+
+ }
+
+ }
+
+ if (!AddressRegion.IsEmpty()){
+
+ AddressRegion.Trim();
+ ConvertToHTML(&AddressRegion);
+
+ if (AddressFirst == FALSE){
+
+ FinalAddressLine.append(wxT(",<br>"));
+ FinalAddressLine.append(AddressRegion);
+
+ } else {
+
+ FinalAddressLine.append(AddressRegion);
+ AddressFirst = FALSE;
+
+ }
+
+ }
+
+ if (!AddressPostalCode.IsEmpty()){
+
+ AddressPostalCode.Trim();
+ ConvertToHTML(&AddressPostalCode);
+
+ if (AddressFirst == FALSE){
+
+ FinalAddressLine.append(wxT(",<br>"));
+ FinalAddressLine.append(AddressPostalCode);
+
+ } else {
+
+ FinalAddressLine.append(AddressPostalCode);
+ AddressFirst = FALSE;
+
+ }
+
+ }
+
+ if (!AddressCountry.IsEmpty()){
+
+ AddressCountry.Trim();
+ ConvertToHTML(&AddressCountry);
+
+ if (AddressFirst == FALSE){
+
+ FinalAddressLine.append(wxT(",<br>"));
+ FinalAddressLine.append(AddressCountry);
+
+ } else {
+
+ FinalAddressLine.append(AddressCountry);
+ AddressFirst = FALSE;
+
+ }
+
+ }
+
+ CaptureString(&FinalAddressLine, FALSE);
+
+ DataLines.append(wxT("<tr><td><b>"));
+ DataLines.append(_("Address:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(FinalAddressLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Addresses"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("E-mail Address:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(EmailLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Email Addresses"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Telephone:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(TelLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Telephones"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("IM Address"));
+ DataLines.append(_(" ("));
+ DataLines.append(IMTypeFriendly);
+ DataLines.append(_("):"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(IMLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ IMTypeFriendly.clear();
+ IMType.clear();
+ IMLine.clear();
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Instant Messaging Addresses"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Website:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(URLLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Website Addresses"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Language:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(NicknameLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Languages"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Timezone:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(NicknameLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Timezones"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Geoposition:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(GeoLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Geopositioning"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Title:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(TitleLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Titles"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Role:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(RoleLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Roles"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Organisation:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(OrgLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Organisations"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Category:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(CatLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Categories"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Calendar Address:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(CalURILine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Calendar Addresses"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Calendar Request Address:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(CalAdrURILine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Calendar Request Addresses"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Free/Busy Address:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(FBURLLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ DataLines.Trim();
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Free/Busy Addresses"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // 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("<tr><td><b>"));
+ DataLines.append(_("Note:"));
+ DataLines.append(wxT(" </b></td><td>"));
+ DataLines.append(NoteLine);
+ DataLines.append(wxT("</td></tr>"));
+
+ }
+
+ DataDisplay = TRUE;
+
+ }
+
+ if (DataDisplay == TRUE){
+
+ PageData.append(wxT("<h4>"));
+ PageData.append(_("Notes"));
+ PageData.append(wxT("</h4>"));
+ PageData.append(wxT("<br>"));
+ PageData.append(wxT("<table>"));
+ PageData.append(DataLines);
+ PageData.append(wxT("</table>"));
+
+ }
+
+ // Display the HTML document on the screen.
+
+ PageData.append(wxT("</body>"));
+ PageData.append(wxT("</html>"));
+
+ HTMLObj->SetPage(PageData);
+
+}
+
+void SplitPropertyData(wxString *PropertyLine,
+ std::map<int,int> *SplitPoints,
+ std::map<int,int> *SplitLength,
+ int intSize,
+ std::map<wxString,wxString> *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
--- /dev/null
+#include <iostream>
+#include "getcontactinfo.h"
+#include <wx/wx.h>
+
+void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj){
+
+ wxString strPageHeader;
+ wxString strPageFooter;
+ wxString strPageData;
+ wxString strFinal;
+ wxString strvCardData;
+
+ strPageHeader = wxT("<html>\n\t<body>");
+ strPageFooter = wxT("\n\t</body>\n</html>");
+
+ // Get the full name of the contact.
+
+ strvCardData = vCardObj->Get(wxT("FN"));
+
+ strPageData = wxT("<h2>") + strvCardData + wxT("</h2>");
+ strPageData.Append(wxT("<br><br>"));
+
+ // Get nickname.
+
+ strvCardData = vCardObj->Get(wxT("NICKNAME"));
+
+ if (!strvCardData.IsEmpty()){
+
+ strPageData.Append(wxT("Nickname: "));
+ strPageData.Append(strvCardData);
+ strPageData.Append(wxT("<br><br>"));
+
+ }
+
+ strvCardData = vCardObj->Get(wxT("TITLE"));
+
+ if (!strvCardData.IsEmpty()){
+
+ strPageData.Append(wxT("Title: "));
+ strPageData.Append(strvCardData);
+ strPageData.Append(wxT("<br><br>"));
+
+ }
+
+ strvCardData = vCardObj->Get(wxT("ROLE"));
+
+ if (!strvCardData.IsEmpty()){
+
+ strPageData.Append(wxT("Role: "));
+ strPageData.Append(strvCardData);
+ strPageData.Append(wxT("<br><br>"));
+
+ }
+
+ 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("<br><br>"));
+
+ }
+
+ strFinal = strPageHeader + strPageData + strPageFooter;
+
+ HTMLObj->SetPage(strFinal);
+
+}
\ No newline at end of file
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/html/htmlwin.h>
+#include <wx/mstream.h>
+#include "../vcard/vcard.h"
+
+#ifndef GETCONTACTINFO_H
+#define GETCONTACTINFO_H
+
+void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj, wxString SID,
+ wxString OldSID, std::map<wxString, wxString> *MemoryFSList);
+void ProcessIMPPType(wxString *PageData, wxString *IMPPType, bool PreferredContact);
+void SplitPropertyData(wxString *PropertyLine, std::map<int,int> *SplitPoints, std::map<int,int> *SplitLength,
+ int intSize, std::map<wxString,wxString> *SplitData);
+
+WX_DECLARE_STRING_HASH_MAP(int, vCardOrderInt);
+WX_DECLARE_STRING_HASH_MAP(wxString, vCardOrderStr);
+
+#endif
\ No newline at end of file
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/html/htmlwin.h>
+#include "../vcard/vcard.h"
+
+#ifndef GETCONTACTINFO_H
+#define GETCONTACTINFO_H
+
+void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj);
+
+#endif
\ No newline at end of file
--- /dev/null
+#include <wx/wx.h>
+
+wxString GetMIME(wxString FilenameInc){
+
+ wxString MIMEResult;
+
+#ifdef __WIN32__
+
+#include <urlmon.h>
+
+ /*char *;
+ unsigned long Buffersize;
+ FindMimeFromData(NULL, NULL, , , NULL, FMFD_DEFAULT, , 0);*/
+
+#else
+
+#include <magic.h>
+
+ 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
--- /dev/null
+#include <wx/wx.h>
+
+#ifndef MIME_H
+#define MIME_H
+
+wxString GetMIME(wxString FilenameInc);
+
+#endif
\ No newline at end of file
--- /dev/null
+#include <iostream>
+#include <iomanip>
+#include <ios>
+#include <string>
+#include <wx/fileconf.h>
+
+#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
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+#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
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+#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
--- /dev/null
+#include <map>
+
+#ifndef __COMMON_SSLCERTSTRUCTS_H__
+#define __COMMON_SSLCERTSTRUCTS_H__
+
+
+struct SSLCertData{
+
+ std::multimap<wxString, wxString> CertData;
+
+};
+
+struct SSLCertCollection{
+
+ int SuccessCode = 0;
+
+ //std::map<int, int> SSLCollection;
+ std::map<int, SSLCertData> SSLCollection;
+
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+#include <wx/wx.h>
+#include <wx/tokenzr.h>
+
+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
--- /dev/null
+#include <wx/wx.h>
+
+#ifndef COMMON_SVRBLIST_H
+#define COMMON_SVRBLIST_H
+
+bool CheckBlacklist(wxString ServerAddress);
+
+#endif
\ No newline at end of file
--- /dev/null
+#include <wx/wx.h>
+#include <iostream>
+#include <iomanip>
+#include <string.h>
+#include <map>
+#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("<br>"), TRUE);
+
+}
+
+void DeleteMapDataProcess(int IndexNum, std::map<int, std::string>* MapData){
+ MapData->erase(IndexNum);
+}
+
+void DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData){
+ MapData->erase(IndexNum);
+}
+
+void DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData){
+ MapData->erase(IndexNum);
+}
+
+void DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData){
+ MapData->erase(IndexNum);
+}
+
+/*
+template <typename ArgMap, typename... Args>
+void DeleteMapData(ArgMap* ArgMapPtr, Args*... ArgsList){
+
+ //DeleteMapDataProcess(ArgMapPtr);
+
+ DeleteMapData(ArgsList...);
+
+}
+*/
+/*
+void test(int* x) {
+
+}
+*/
\ No newline at end of file
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+#include <map>
+
+#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<int, std::string>* MapData);
+void DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData);
+void DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData);
+void DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData);
+
+//void DeleteMapDataB() {};
+
+//void DeleteMapData() {};
+
+
+/*
+template <typename ArgMap, typename... Args>
+void DeleteMapData(ArgMap* ArgMapPtr, Args*... ArgsList){
+
+}
+*/
+
+
+
+/*
+template<class T>
+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<class T, class U, class... Args>
+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<typename... Args>
+void DeleteMapData(int IndexNum, Args*... args) {
+
+ //DeleteMapDataProcess(IndexNum, t);
+
+ intSeekSelectedData = IndexNum;
+ DeleteMapDataB(args...);
+
+ //throw std::logic_error("Too many arguments!");
+}
+
+*/
+
+//void DeleteMapDataB() { };
+
+template<typename MapData, typename... Args>
+void DeleteMapDataB(MapData* mapdata, Args*... args) {
+
+ DeleteMapDataB(args...);
+
+}
+
+template<typename... Args>
+void DeleteMapData(int IndexNum, Args*... args) {
+
+ //int intSeekSelectedData = 0;
+
+ //DeleteMapDataProcess(IndexNum, Moo);
+
+ //intSeekSelectedData = IndexNum;
+ DeleteMapDataB(args...);
+
+}
+
+//void DeleteMapData<ArgMap, Args>(ArgMap* ArgMapPtr, Args*... ArgsList);
+
+#endif
--- /dev/null
+#include "../frmActivityMgr.h"
+#include "../frmContact.h"
+#include "../frmMain.h"
+#include <wx/mstream.h>
+#include <wx/file.h>
+#include <wx/ffile.h>
+#include <wx/filename.h>
+#include <wx/tokenzr.h>
+#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<frmMain*>(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<frmMain*>(frmMainPtr);
+
+ wxCommandEvent actstop(ACTMGR_STOP);
+ wxPostEvent(frmMainPtrProc, actstop);
+ //frmMainPtrProc->ActivityIconStop();
+
+ this->Stop();
+ bmpActivity->SetBitmap(*SleepBitmapPtr);
+}
+
+void wxActTimer::StartAnimation()
+{
+
+ frmMain *frmMainPtrProc = static_cast<frmMain*>(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<frmActivityMgr*>(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<int,int>::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<int,long>::iterator LongIter = ActListUIPtr->find(iter->first);
+ std::map<int,wxString>::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<int,int> *ActList, std::map<int,long> *ActListUI,
+ std::map<int,wxString> *ActListDetail, bool *TasksActive,
+ wxListCtrl *lstActivity, wxStaticText *lblDetails, wxGauge *GauProgress,
+ void *ActMgr, wxActTimer *ActTimer, wxActProcessTimer *ActProcessTimer,
+ std::map<int,wxDateTime> *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<wxString,ETagDB>::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<wxString,ETagDB> 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<wxString,ETagDB>::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<wxString, void*>::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<wxString, void*> *ContactWindowListPtrInc){
+
+ ContactWindowListPtr = ContactWindowListPtrInc;
+
+}
+
+void wxAccountSyncTimer::Notify(){
+
+ frmActivityMgr *ActMgrPtrProc = static_cast<frmActivityMgr*>(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
--- /dev/null
+#include <map>
+#include <wx/timer.h>
+#include <wx/wx.h>
+#include <mutex>
+#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<int,int> *ActListPtr;
+ std::map<int,long> *ActListUIPtr;
+ std::map<int,wxString> *ActListDetailPtr;
+ wxListCtrl *lstActivityPtr;
+ wxStaticText *lblDetailsPtr;
+ bool *TasksActivePtr;
+ wxGauge *GauProgressPtr;
+ void *ActMgrPtr;
+ int intActivityTotal = 0;
+ int intActivityCompleted = 0;
+ wxActTimer *ActTimerPtr;
+ wxActProcessTimer *ActProcessTimerPtr;
+ std::map<int,wxDateTime> *ActListFinDTPtr;
+ bool ClearupProcessed = FALSE;
+ public:
+ wxActListProcTimer():wxTimer()
+ {
+ }
+ void Notify();
+ void SetupPointers(std::map<int,int> *ActList, std::map<int,long> *ActListUI,
+ std::map<int,wxString> *ActListDetail, bool *TasksActive,
+ wxListCtrl *lstActivity, wxStaticText *lblDetails, wxGauge *GauProgress,
+ void *ActMgr, wxActTimer *ActTimer, wxActProcessTimer *ActProcessTimer,
+ std::map<int,wxDateTime> *ActListFinDT);
+ void EnableClearup();
+
+};
+
+class wxETagProcessTimer : public wxTimer
+{
+ private:
+ int intActivityProgress = 0;
+ std::map<wxString,ETagDB> ETagDBList;
+ //std::map<int,ETagDB2> 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<wxString, void*> *ContactWindowListPtr;
+ public:
+ wxContactWindowMonitor():wxTimer()
+ {
+ }
+ void Notify();
+ void SetupPointers(std::map<wxString, void*> *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
--- /dev/null
+#include <wx/wx.h>
+
+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 <ossp/uuid++.hh>
+
+ 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
--- /dev/null
+#include <wx/wx.h>
+
+#ifndef COMMON_UUID_H
+#define COMMON_UUID_H
+
+wxString GenerateUUID();
+bool CheckUUID(wxString UUIDInc);
+
+#endif
\ No newline at end of file
--- /dev/null
+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 <ac_nonexistent.h>
+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 <ac_nonexistent.h>
+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 <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| # include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| # include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #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
--- /dev/null
+#! /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 <bugs@xestia.co.uk>."
+
+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 2>/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 = "\a"
+
+}
+{
+ 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
--- /dev/null
+#! /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 <bugs@xestia.co.uk>.
+#
+#
+# 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 </dev/null
+exec 6>&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 <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#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<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ 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 <bugs@xestia.co.uk>.
+_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 <stdio.h>
+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 <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+#else
+# include <assert.h>
+#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 <ac_nonexistent.h>
+_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 <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> 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 <limits.h>
+#else
+# include <assert.h>
+#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 <ac_nonexistent.h>
+_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 <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+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 <string.h>
+
+_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 <stdlib.h>
+
+_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 <ctype.h>
+#include <stdlib.h>
+#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 <stdbool.h>
+#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 <bugs@xestia.co.uk>."
+
+_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 2>/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
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$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 = "\a"
+
+}
+{
+ 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
+
--- /dev/null
+# -*- 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
--- /dev/null
+#include <map>
+
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <wx/datetime.h>
+#include <wx/dir.h>
+
+#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<int, wxString> ContactFileLines;
+ std::map<int, wxString>::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<int,wxString>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<wxString, wxString, std::greater<wxString>>;
+ std::multimap<wxString, wxString, std::greater<wxString>> vCardNamesAsc;
+ std::multimap<wxString, wxString, std::less<wxString>> 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<wxString,wxString>::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<wxString,wxString>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int> TypeSplitPoints;
+ std::map<int, int> TypeSplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<int, int>::iterator SPoint;
+ std::map<int, int>::iterator TSLiter;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int>::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<int,int> *SplitPoints,
+ std::map<int,int> *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
--- /dev/null
+#include <map>
+#include <string>
+#include <thread>
+#include <vector>
+#include <stdlib.h>
+
+#include <wx/wx.h>
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <wx/mstream.h>
+#include <wx/fs_mem.h>
+#include <wx/datetime.h>
+
+#include <SFML/Audio.hpp>
+
+#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<int,std::string>::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<int,std::string>::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<int, std::string>::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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString>::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<int,wxString>::iterator iter = GeneralAddressList.begin();
+ iter != GeneralAddressList.end(); ++iter){
+
+ int intSeekValue = iter->first;
+
+ wxString strAddressString;
+ wxString strAddressFinalValue;
+ std::map<int, wxString>::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<int,wxString>::iterator iter = HomeAddressList.begin();
+ iter != HomeAddressList.end(); ++iter){
+
+ int intSeekValue = iter->first;
+
+ wxString strAddressString;
+ wxString strAddressFinalValue;
+ std::map<int, wxString>::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<int,wxString>::iterator iter = BusinessAddressList.begin();
+ iter != BusinessAddressList.end(); ++iter){
+
+ int intSeekValue = iter->first;
+
+ wxString strAddressString;
+ wxString strAddressFinalValue;
+ std::map<int, wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::iterator iter = GeneralEmailList.begin();
+ iter != GeneralEmailList.end(); ++iter){
+
+ //strValue3 = ContactData.Convert(GeneralAddressList, FALSE);
+ //strValue2 =
+
+ wxString strAddressFinalValue;
+ std::map<int, wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int, std::string>::iterator iter = PicturesList.begin();
+ iter != PicturesList.end(); ++iter){
+
+ int intValueIndex = iter->first;
+
+ std::map<int, std::string>::iterator stdstriter;
+ std::map<int, wxString>::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<int, std::string>::iterator iter = LogosList.begin();
+ iter != LogosList.end(); ++iter){
+
+ int intValueIndex = iter->first;
+
+ std::map<int, std::string>::iterator stdstriter;
+ std::map<int, wxString>::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<int, std::string>::iterator iter = SoundsList.begin();
+ iter != SoundsList.end(); ++iter){
+
+ int intValueIndex = iter->first;
+
+ std::map<int, std::string>::iterator stdstriter;
+ std::map<int, wxString>::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<int,wxString>::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<int,wxString>::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<int,wxString>::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<int, wxString>::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<int, wxString>::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<int,wxString>::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<int,wxString>::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<int, wxString>::iterator iter = FullNamesList.begin();
+ iter != FullNamesList.end(); ++iter){
+
+ if (FNFirst == TRUE){
+
+ iter->second = cmbDisplayAs->GetValue();
+ FNFirst = FALSE;
+
+ }
+
+ std::map<int,wxString>::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<int,wxString>::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<int, wxString> *MapData){
+
+ /*
+ int intResult = 0;
+
+ std::map<int,wxString>::iterator iwxsit;
+
+ for( iwxsit=(*MapData).begin(); iwxsit != (*MapData).end(); iwxsit++){
+ intResult = (*iwxsit).first;
+ }
+
+ return intResult;
+ */
+
+ intValueSeek++;
+ return intValueSeek;
+
+}
+
+int frmContactEditor::GetLastInt(std::map<int, std::string> *MapData){
+
+ /* int intResult = 0;
+
+ std::map<int,std::string>::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<int, std::string>* MapData){
+ MapData->erase(IndexNum);
+}
+
+void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData){
+ MapData->erase(IndexNum);
+}
+
+void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData){
+ MapData->erase(IndexNum);
+}
+
+void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData){
+ MapData->erase(IndexNum);
+}
+
+void frmContactEditor::ProcessSaveDataProc( wxString PropName,
+ std::map<int,int>* MapData){
+
+ int intIterVal = (*iterDataPtr)->first;
+
+ std::map<int,int>::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<int,wxString>* MapData){
+
+ int intIterVal;
+
+ intIterVal = (*iterDataPtr)->first;
+
+ std::map<int,wxString>::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<int,std::string>* MapData){
+
+ int intIterVal = (*iterDataStringPtr)->first;
+
+ //std::map<int,wxString>::iterator strIter;
+
+ std::map<int,std::string>::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<int,int>* MapData){
+
+ int intIterVal = (*iterDataStringPtr)->first;
+
+ std::map<int,int>::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<int,wxString>* MapData){
+
+ int intIterVal;
+
+ intIterVal = (*iterDataStringPtr)->first;
+
+ std::map<int,wxString>::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<int, wxString> ExtraFullNames;*/
+ /*std::map<int, wxString> 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
--- /dev/null
+#ifndef __frmContactEditor__
+#define __frmContactEditor__
+
+#include <wx/wx.h>
+
+#include <map>
+#include <string>
+
+#include <SFML/Audio.hpp>
+
+/**
+@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<std::size_t>(TimeOffset.asSeconds() * getSampleRate() * getChannelCount());
+ }
+
+ std::vector<sf::Int16> 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<int, wxString> *MapData);
+ int GetLastInt(std::map<int, std::string> *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<int, std::string>* MapData);
+ void DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData);
+ void DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData);
+ void DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData);
+
+ void DeleteMapDataB () {} ;
+
+ template<typename MapData, typename... Args>
+ void DeleteMapDataB(MapData* mapdata, Args*... args) {
+
+ DeleteMapDataProcess(intSeekSelectedData, mapdata);
+ DeleteMapDataB(args...);
+
+ }
+
+ template<typename... Args>
+ void DeleteMapData(int IndexNum, Args*... args) {
+
+ //int intSeekSelectedData = 0;
+
+ //DeleteMapDataProcess(IndexNum, Moo);
+
+ intSeekSelectedData = IndexNum;
+ DeleteMapDataB(args...);
+
+ }
+
+ void ProcessSaveDataProc(wxString PropName,
+ std::map<int,int>* MapData);
+ void ProcessSaveDataProc(wxString PropName,
+ std::map<int,wxString>* MapData);
+ void ProcessSaveDataStrProc(wxString PropName,
+ std::map<int,int>* MapData);
+ void ProcessSaveDataStrProc(wxString PropName,
+ std::map<int,wxString>* MapData);
+ void ProcessSaveDataStrProc(wxString PropName,
+ std::map<int,std::string>* MapData);
+
+
+ void ProcessSaveDataB () { } ;
+ void ProcessSaveDataC () { } ;
+
+ template<typename PropName, typename MapData, typename... Args>
+ void ProcessSaveDataB(PropName propname, MapData* mapdata, Args*... args) {
+
+ ProcessSaveDataProc(propname, mapdata);
+ ProcessSaveDataB(args...);
+
+ }
+
+ template<typename PropName, typename MapData, typename... Args>
+ void ProcessSaveDataC(PropName propname, MapData* mapdata, Args*... args) {
+
+ ProcessSaveDataStrProc(propname, mapdata);
+ ProcessSaveDataC(args...);
+
+ }
+
+ template<typename... Args>
+ void ProcessSaveData(wxString strPropertyName,
+ wxString *strPropertyInc,
+ bool *boolAdditionalInc, bool *boolExtraInc,
+ std::map<int,wxString>::iterator *iterDataInc,
+ std::map<int,wxString> *MainMapData,
+ std::map<int,wxString>::iterator *iterFileTypeInc,
+ std::map<int,wxString>::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<int,wxString>::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<typename... Args>
+ void ProcessSaveData(wxString strPropertyName,
+ wxString *strPropertyInc,
+ bool *boolAdditionalInc, bool *boolExtraInc,
+ std::map<int,std::string>::iterator *iterDataInc,
+ std::map<int,std::string> *MainMapData,
+ std::map<int,wxString>::iterator *iterFileTypeInc,
+ std::map<int,wxString>::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<int,std::string>::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<typename... Args>
+ void ProcessSaveData(wxString strPropertyName,
+ wxString *strPropertyInc,
+ bool *boolAdditionalInc, bool *boolExtraInc,
+ std::map<int,wxString>::iterator *iterDataInc,
+ std::map<int,wxString> *MainMapData,
+ vCard *vCardData,
+ Args*... args) {
+
+ //int intSeekSelectedData = 0;
+
+ //DeleteMapDataProcess(IndexNum, Moo);
+ strPropertyPtr = strPropertyInc;
+ boolAdditionalPtr = boolAdditionalInc;
+ boolExtraPtr = boolExtraInc;
+ iterDataPtr = iterDataInc;
+ ProcessSaveDataB(args...);
+
+ std::map<int,wxString>::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<typename... Args>
+ void ProcessSaveData(wxString strPropertyName,
+ wxString *strPropertyInc,
+ bool *boolAdditionalInc, bool *boolExtraInc,
+ std::map<int,wxString>::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<int,wxString>::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<typename StringCapture, typename... Args>
+ void ProcessCaptureStringsB(StringCapture *string, Args*... args) {
+
+ ProcessCaptureStringsProc(string);
+ ProcessCaptureStringsB(args...);
+
+ }
+
+ template<typename... Args>
+ 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<int, wxString> ExtraFullNames;*/
+ /*std::map<int, wxString> ExtraNicknames;*/
+
+ std::map<int, wxString> FullNamesList;
+ std::map<int, wxString> FullNamesListType;
+ std::map<int, wxString> FullNamesListLanguage;
+ std::map<int, wxString> FullNamesListAltID;
+ std::map<int, wxString> FullNamesListPID;
+ std::map<int, wxString> FullNamesListTokens;
+ std::map<int, int> FullNamesListPref;
+
+ std::map<int, wxString> GeneralNicknamesList;
+ std::map<int, wxString> GeneralNicknamesListType;
+ std::map<int, wxString> GeneralNicknamesListLanguage;
+ std::map<int, wxString> GeneralNicknamesListAltID;
+ std::map<int, wxString> GeneralNicknamesListPID;
+ std::map<int, wxString> GeneralNicknamesListTokens;
+ std::map<int, int> GeneralNicknamesListPref;
+
+ std::map<int, wxString> GeneralAddressList;
+ std::map<int, wxString> GeneralAddressListTown;
+ std::map<int, wxString> GeneralAddressListCounty;
+ std::map<int, wxString> GeneralAddressListPostCode;
+ std::map<int, wxString> GeneralAddressListCountry;
+ std::map<int, wxString> GeneralAddressListLabel;
+ std::map<int, wxString> GeneralAddressListLang;
+ std::map<int, wxString> GeneralAddressListAltID;
+ std::map<int, wxString> GeneralAddressListPID;
+ std::map<int, wxString> GeneralAddressListTokens;
+ std::map<int, wxString> GeneralAddressListGeo;
+ std::map<int, wxString> GeneralAddressListTimezone;
+ std::map<int, wxString> GeneralAddressListType;
+ std::map<int, wxString> GeneralAddressListMediatype;
+ std::map<int, int> GeneralAddressListPref;
+
+ std::map<int, wxString> GeneralEmailList;
+ std::map<int, wxString> GeneralEmailListAltID;
+ std::map<int, wxString> GeneralEmailListPID;
+ std::map<int, wxString> GeneralEmailListType;
+ std::map<int, wxString> GeneralEmailListTokens;
+ std::map<int, int> GeneralEmailListPref;
+
+ std::map<int, wxString> GeneralIMList;
+ std::map<int, wxString> GeneralIMListAltID;
+ std::map<int, wxString> GeneralIMListPID;
+ std::map<int, wxString> GeneralIMListType;
+ std::map<int, wxString> GeneralIMListTokens;
+ std::map<int, wxString> GeneralIMListMediatype;
+ std::map<int, int> GeneralIMListPref;
+
+ std::map<int, wxString> GeneralTelephoneList;
+ std::map<int, wxString> GeneralTelephoneListAltID;
+ std::map<int, wxString> GeneralTelephoneListPID;
+ std::map<int, wxString> GeneralTelephoneListType;
+ std::map<int, wxString> GeneralTelephoneListTokens;
+ std::map<int, int> GeneralTelephoneListPref;
+
+ std::map<int, wxString> GeneralLanguageList;
+ std::map<int, wxString> GeneralLanguageListAltID;
+ std::map<int, wxString> GeneralLanguageListPID;
+ std::map<int, wxString> GeneralLanguageListType;
+ std::map<int, wxString> GeneralLanguageListTokens;
+ std::map<int, int> GeneralLanguageListPref;
+
+ std::map<int, wxString> GeneralTZList;
+ std::map<int, wxString> GeneralTZListAltID;
+ std::map<int, wxString> GeneralTZListPID;
+ std::map<int, wxString> GeneralTZListType;
+ std::map<int, wxString> GeneralTZListTokens;
+ std::map<int, wxString> GeneralTZListMediatype;
+ std::map<int, int> GeneralTZListPref;
+
+ std::map<int, wxString> GeneralGeographyList;
+ std::map<int, wxString> GeneralGeographyListAltID;
+ std::map<int, wxString> GeneralGeographyListPID;
+ std::map<int, wxString> GeneralGeographyListType;
+ std::map<int, wxString> GeneralGeographyListTokens;
+ std::map<int, wxString> GeneralGeographyListMediatype;
+ std::map<int, int> GeneralGeographyListPref;
+
+ std::map<int, wxString> GeneralRelatedList;
+ std::map<int, wxString> GeneralRelatedListRelType;
+ std::map<int, wxString> GeneralRelatedListLanguage;
+ std::map<int, wxString> GeneralRelatedListAltID;
+ std::map<int, wxString> GeneralRelatedListPID;
+ std::map<int, wxString> GeneralRelatedListType;
+ std::map<int, wxString> GeneralRelatedListTokens;
+ std::map<int, int> GeneralRelatedListPref;
+
+ std::map<int, wxString> GeneralWebsiteList;
+ std::map<int, wxString> GeneralWebsiteListAltID;
+ std::map<int, wxString> GeneralWebsiteListPID;
+ std::map<int, wxString> GeneralWebsiteListType;
+ std::map<int, wxString> GeneralWebsiteListTokens;
+ std::map<int, wxString> GeneralWebsiteListMediatype;
+ std::map<int, int> GeneralWebsiteListPref;
+
+ std::map<int, wxString> GeneralTitleList;
+ std::map<int, wxString> GeneralTitleListLanguage;
+ std::map<int, wxString> GeneralTitleListAltID;
+ std::map<int, wxString> GeneralTitleListPID;
+ std::map<int, wxString> GeneralTitleListType;
+ std::map<int, wxString> GeneralTitleListTokens;
+ std::map<int, int> GeneralTitleListPref;
+
+ std::map<int, wxString> GeneralRoleList;
+ std::map<int, wxString> GeneralRoleListLanguage;
+ std::map<int, wxString> GeneralRoleListAltID;
+ std::map<int, wxString> GeneralRoleListPID;
+ std::map<int, wxString> GeneralRoleListType;
+ std::map<int, wxString> GeneralRoleListTokens;
+ std::map<int, int> GeneralRoleListPref;
+
+ std::map<int, wxString> GeneralOrganisationsList;
+ std::map<int, wxString> GeneralOrganisationsListLanguage;
+ std::map<int, wxString> GeneralOrganisationsListAltID;
+ std::map<int, wxString> GeneralOrganisationsListPID;
+ std::map<int, wxString> GeneralOrganisationsListType;
+ std::map<int, wxString> GeneralOrganisationsListTokens;
+ std::map<int, wxString> GeneralOrganisationsListSortAs;
+ std::map<int, int> GeneralOrganisationsListPref;
+
+ std::map<int, wxString> GeneralNoteList;
+ std::map<int, wxString> GeneralNoteListLanguage;
+ std::map<int, wxString> GeneralNoteListAltID;
+ std::map<int, wxString> GeneralNoteListPID;
+ std::map<int, wxString> GeneralNoteListType;
+ std::map<int, wxString> GeneralNoteListTokens;
+ std::map<int, int> GeneralNoteListPref;
+
+ /* Items on Home Tab */
+
+ std::map<int, wxString> HomeNicknamesList;
+ std::map<int, wxString> HomeNicknamesListType;
+ std::map<int, wxString> HomeNicknamesListLanguage;
+ std::map<int, wxString> HomeNicknamesListAltID;
+ std::map<int, wxString> HomeNicknamesListPID;
+ std::map<int, wxString> HomeNicknamesListTokens;
+ std::map<int, int> HomeNicknamesListPref;
+
+ std::map<int, wxString> HomeAddressList;
+ std::map<int, wxString> HomeAddressListTown;
+ std::map<int, wxString> HomeAddressListCounty;
+ std::map<int, wxString> HomeAddressListPostCode;
+ std::map<int, wxString> HomeAddressListCountry;
+ std::map<int, wxString> HomeAddressListLabel;
+ std::map<int, wxString> HomeAddressListLang;
+ std::map<int, wxString> HomeAddressListAltID;
+ std::map<int, wxString> HomeAddressListPID;
+ std::map<int, wxString> HomeAddressListTokens;
+ std::map<int, wxString> HomeAddressListGeo;
+ std::map<int, wxString> HomeAddressListTimezone;
+ std::map<int, wxString> HomeAddressListType;
+ std::map<int, wxString> HomeAddressListMediatype;
+ std::map<int, int> HomeAddressListPref;
+
+ std::map<int, wxString> HomeEmailList;
+ std::map<int, wxString> HomeEmailListAltID;
+ std::map<int, wxString> HomeEmailListPID;
+ std::map<int, wxString> HomeEmailListType;
+ std::map<int, wxString> HomeEmailListTokens;
+ std::map<int, int> HomeEmailListPref;
+
+ std::map<int, wxString> HomeIMList;
+ std::map<int, wxString> HomeIMListAltID;
+ std::map<int, wxString> HomeIMListPID;
+ std::map<int, wxString> HomeIMListType;
+ std::map<int, wxString> HomeIMListTokens;
+ std::map<int, wxString> HomeIMListMediatype;
+ std::map<int, int> HomeIMListPref;
+
+ std::map<int, wxString> HomeTelephoneList;
+ std::map<int, wxString> HomeTelephoneListAltID;
+ std::map<int, wxString> HomeTelephoneListPID;
+ std::map<int, wxString> HomeTelephoneListType;
+ std::map<int, wxString> HomeTelephoneListTokens;
+ std::map<int, int> HomeTelephoneListPref;
+
+ std::map<int, wxString> HomeLanguageList;
+ std::map<int, wxString> HomeLanguageListAltID;
+ std::map<int, wxString> HomeLanguageListPID;
+ std::map<int, wxString> HomeLanguageListType;
+ std::map<int, wxString> HomeLanguageListTokens;
+ std::map<int, int> HomeLanguageListPref;
+
+ std::map<int, wxString> HomeTZList;
+ std::map<int, wxString> HomeTZListAltID;
+ std::map<int, wxString> HomeTZListPID;
+ std::map<int, wxString> HomeTZListType;
+ std::map<int, wxString> HomeTZListTokens;
+ std::map<int, wxString> HomeTZListMediatype;
+ std::map<int, int> HomeTZListPref;
+
+ std::map<int, wxString> HomeGeographyList;
+ std::map<int, wxString> HomeGeographyListAltID;
+ std::map<int, wxString> HomeGeographyListPID;
+ std::map<int, wxString> HomeGeographyListType;
+ std::map<int, wxString> HomeGeographyListTokens;
+ std::map<int, wxString> HomeGeographyListMediatype;
+ std::map<int, int> HomeGeographyListPref;
+
+ std::map<int, wxString> HomeRelatedList;
+ std::map<int, wxString> HomeRelatedListRelType;
+ std::map<int, wxString> HomeRelatedListLanguage;
+ std::map<int, wxString> HomeRelatedListAltID;
+ std::map<int, wxString> HomeRelatedListPID;
+ std::map<int, wxString> HomeRelatedListType;
+ std::map<int, wxString> HomeRelatedListTokens;
+ std::map<int, int> HomeRelatedListPref;
+
+ std::map<int, wxString> HomeWebsiteList;
+ std::map<int, wxString> HomeWebsiteListAltID;
+ std::map<int, wxString> HomeWebsiteListPID;
+ std::map<int, wxString> HomeWebsiteListType;
+ std::map<int, wxString> HomeWebsiteListTokens;
+ std::map<int, wxString> HomeWebsiteListMediatype;
+ std::map<int, int> HomeWebsiteListPref;
+
+ std::map<int, wxString> HomeTitleList;
+ std::map<int, wxString> HomeTitleListLanguage;
+ std::map<int, wxString> HomeTitleListAltID;
+ std::map<int, wxString> HomeTitleListPID;
+ std::map<int, wxString> HomeTitleListType;
+ std::map<int, wxString> HomeTitleListTokens;
+ std::map<int, int> HomeTitleListPref;
+
+ std::map<int, wxString> HomeRoleList;
+ std::map<int, wxString> HomeRoleListLanguage;
+ std::map<int, wxString> HomeRoleListAltID;
+ std::map<int, wxString> HomeRoleListPID;
+ std::map<int, wxString> HomeRoleListType;
+ std::map<int, wxString> HomeRoleListTokens;
+ std::map<int, int> HomeRoleListPref;
+
+ std::map<int, wxString> HomeOrganisationsList;
+ std::map<int, wxString> HomeOrganisationsListLanguage;
+ std::map<int, wxString> HomeOrganisationsListAltID;
+ std::map<int, wxString> HomeOrganisationsListPID;
+ std::map<int, wxString> HomeOrganisationsListType;
+ std::map<int, wxString> HomeOrganisationsListTokens;
+ std::map<int, wxString> HomeOrganisationsListSortAs;
+ std::map<int, int> HomeOrganisationsListPref;
+
+ std::map<int, wxString> HomeNoteList;
+ std::map<int, wxString> HomeNoteListLanguage;
+ std::map<int, wxString> HomeNoteListAltID;
+ std::map<int, wxString> HomeNoteListPID;
+ std::map<int, wxString> HomeNoteListType;
+ std::map<int, wxString> HomeNoteListTokens;
+ std::map<int, int> HomeNoteListPref;
+
+ /* Items on the Business tab */
+
+ std::map<int, wxString> BusinessNicknamesList;
+ std::map<int, wxString> BusinessNicknamesListType;
+ std::map<int, wxString> BusinessNicknamesListLanguage;
+ std::map<int, wxString> BusinessNicknamesListAltID;
+ std::map<int, wxString> BusinessNicknamesListPID;
+ std::map<int, wxString> BusinessNicknamesListTokens;
+ std::map<int, int> BusinessNicknamesListPref;
+
+ std::map<int, wxString> BusinessAddressList;
+ std::map<int, wxString> BusinessAddressListTown;
+ std::map<int, wxString> BusinessAddressListCounty;
+ std::map<int, wxString> BusinessAddressListPostCode;
+ std::map<int, wxString> BusinessAddressListCountry;
+ std::map<int, wxString> BusinessAddressListLabel;
+ std::map<int, wxString> BusinessAddressListLang;
+ std::map<int, wxString> BusinessAddressListAltID;
+ std::map<int, wxString> BusinessAddressListPID;
+ std::map<int, wxString> BusinessAddressListTokens;
+ std::map<int, wxString> BusinessAddressListGeo;
+ std::map<int, wxString> BusinessAddressListTimezone;
+ std::map<int, wxString> BusinessAddressListType;
+ std::map<int, wxString> BusinessAddressListMediatype;
+ std::map<int, int> BusinessAddressListPref;
+
+ std::map<int, wxString> BusinessEmailList;
+ std::map<int, wxString> BusinessEmailListAltID;
+ std::map<int, wxString> BusinessEmailListPID;
+ std::map<int, wxString> BusinessEmailListType;
+ std::map<int, wxString> BusinessEmailListTokens;
+ std::map<int, int> BusinessEmailListPref;
+
+ std::map<int, wxString> BusinessIMList;
+ std::map<int, wxString> BusinessIMListAltID;
+ std::map<int, wxString> BusinessIMListPID;
+ std::map<int, wxString> BusinessIMListType;
+ std::map<int, wxString> BusinessIMListTokens;
+ std::map<int, wxString> BusinessIMListMediatype;
+ std::map<int, int> BusinessIMListPref;
+
+ std::map<int, wxString> BusinessTelephoneList;
+ std::map<int, wxString> BusinessTelephoneListAltID;
+ std::map<int, wxString> BusinessTelephoneListPID;
+ std::map<int, wxString> BusinessTelephoneListType;
+ std::map<int, wxString> BusinessTelephoneListTokens;
+ std::map<int, int> BusinessTelephoneListPref;
+
+ std::map<int, wxString> BusinessLanguageList;
+ std::map<int, wxString> BusinessLanguageListAltID;
+ std::map<int, wxString> BusinessLanguageListPID;
+ std::map<int, wxString> BusinessLanguageListType;
+ std::map<int, wxString> BusinessLanguageListTokens;
+ std::map<int, int> BusinessLanguageListPref;
+
+ std::map<int, wxString> BusinessTZList;
+ std::map<int, wxString> BusinessTZListAltID;
+ std::map<int, wxString> BusinessTZListPID;
+ std::map<int, wxString> BusinessTZListType;
+ std::map<int, wxString> BusinessTZListTokens;
+ std::map<int, wxString> BusinessTZListMediatype;
+ std::map<int, int> BusinessTZListPref;
+
+ std::map<int, wxString> BusinessGeographyList;
+ std::map<int, wxString> BusinessGeographyListAltID;
+ std::map<int, wxString> BusinessGeographyListPID;
+ std::map<int, wxString> BusinessGeographyListType;
+ std::map<int, wxString> BusinessGeographyListTokens;
+ std::map<int, wxString> BusinessGeographyListMediatype;
+ std::map<int, int> BusinessGeographyListPref;
+
+ std::map<int, wxString> BusinessRelatedList;
+ std::map<int, wxString> BusinessRelatedListRelType;
+ std::map<int, wxString> BusinessRelatedListLanguage;
+ std::map<int, wxString> BusinessRelatedListAltID;
+ std::map<int, wxString> BusinessRelatedListPID;
+ std::map<int, wxString> BusinessRelatedListType;
+ std::map<int, wxString> BusinessRelatedListTokens;
+ std::map<int, int> BusinessRelatedListPref;
+
+ std::map<int, wxString> BusinessWebsiteList;
+ std::map<int, wxString> BusinessWebsiteListAltID;
+ std::map<int, wxString> BusinessWebsiteListPID;
+ std::map<int, wxString> BusinessWebsiteListType;
+ std::map<int, wxString> BusinessWebsiteListTokens;
+ std::map<int, wxString> BusinessWebsiteListMediatype;
+ std::map<int, int> BusinessWebsiteListPref;
+
+ std::map<int, wxString> BusinessTitleList;
+ std::map<int, wxString> BusinessTitleListLanguage;
+ std::map<int, wxString> BusinessTitleListAltID;
+ std::map<int, wxString> BusinessTitleListPID;
+ std::map<int, wxString> BusinessTitleListType;
+ std::map<int, wxString> BusinessTitleListTokens;
+ std::map<int, int> BusinessTitleListPref;
+
+ std::map<int, wxString> BusinessRoleList;
+ std::map<int, wxString> BusinessRoleListLanguage;
+ std::map<int, wxString> BusinessRoleListAltID;
+ std::map<int, wxString> BusinessRoleListPID;
+ std::map<int, wxString> BusinessRoleListType;
+ std::map<int, wxString> BusinessRoleListTokens;
+ std::map<int, int> BusinessRoleListPref;
+
+ std::map<int, wxString> BusinessOrganisationsList;
+ std::map<int, wxString> BusinessOrganisationsListLanguage;
+ std::map<int, wxString> BusinessOrganisationsListAltID;
+ std::map<int, wxString> BusinessOrganisationsListPID;
+ std::map<int, wxString> BusinessOrganisationsListType;
+ std::map<int, wxString> BusinessOrganisationsListTokens;
+ std::map<int, wxString> BusinessOrganisationsListSortAs;
+ std::map<int, int> BusinessOrganisationsListPref;
+
+ std::map<int, wxString> BusinessNoteList;
+ std::map<int, wxString> BusinessNoteListLanguage;
+ std::map<int, wxString> BusinessNoteListAltID;
+ std::map<int, wxString> BusinessNoteListPID;
+ std::map<int, wxString> BusinessNoteListType;
+ std::map<int, wxString> BusinessNoteListTokens;
+ std::map<int, int> BusinessNoteListPref;
+
+ /* Items on the Categories tab */
+
+ std::map<int, wxString> CategoriesList;
+ std::map<int, wxString> CategoriesListAltID;
+ std::map<int, wxString> CategoriesListPID;
+ std::map<int, wxString> CategoriesListType;
+ std::map<int, wxString> CategoriesListTokens;
+ std::map<int, int> CategoriesListPref;
+
+ /* Items on the Groups tab */
+
+ std::map<int, wxString> GroupsList;
+ std::map<int, wxString> GroupsListAltID;
+ std::map<int, wxString> GroupsListPID;
+ std::map<int, wxString> GroupsListType;
+ std::map<int, wxString> GroupsListTokens;
+ std::map<int, int> GroupsListPref;
+
+ /* Items on the Pictures tab */
+
+ std::map<int, std::string> PicturesList;
+ std::map<int, wxString> PicturesListAltID;
+ std::map<int, wxString> PicturesListPID;
+ std::map<int, wxString> PicturesListType;
+ std::map<int, wxString> PicturesListPicEncType;
+ std::map<int, wxString> PicturesListPictureType;
+ std::map<int, wxString> PicturesListTokens;
+ std::map<int, wxString> PicturesListMediatype;
+ std::map<int, int> PicturesListPref;
+
+ /* Items on the Logos tab */
+
+ std::map<int, std::string> LogosList;
+ std::map<int, wxString> LogosListAltID;
+ std::map<int, wxString> LogosListPID;
+ std::map<int, wxString> LogosListType;
+ std::map<int, wxString> LogosListPicEncType;
+ std::map<int, wxString> LogosListPictureType;
+ std::map<int, wxString> LogosListTokens;
+ std::map<int, wxString> LogosListMediatype;
+ std::map<int, int> LogosListPref;
+
+ /* Items on the Sounds tab */
+
+ std::map<int, std::string> SoundsList;
+ std::map<int, wxString> SoundsListAltID;
+ std::map<int, wxString> SoundsListPID;
+ std::map<int, wxString> SoundsListType;
+ std::map<int, wxString> SoundsListAudioEncType;
+ std::map<int, wxString> SoundsListAudioType;
+ std::map<int, wxString> SoundsListTokens;
+ std::map<int, wxString> SoundsListMediatype;
+ std::map<int, int> SoundsListPref;
+
+ /* Items on the Calendaring tab */
+
+ std::map<int, wxString> CalendarList;
+ std::map<int, wxString> CalendarListAltID;
+ std::map<int, wxString> CalendarListPID;
+ std::map<int, wxString> CalendarListType;
+ std::map<int, wxString> CalendarListTokens;
+ std::map<int, wxString> CalendarListMediatype;
+ std::map<int, int> CalendarListPref;
+
+ std::map<int, wxString> CalendarRequestList;
+ std::map<int, wxString> CalendarRequestListAltID;
+ std::map<int, wxString> CalendarRequestListPID;
+ std::map<int, wxString> CalendarRequestListType;
+ std::map<int, wxString> CalendarRequestListTokens;
+ std::map<int, wxString> CalendarRequestListMediatype;
+ std::map<int, int> CalendarRequestListPref;
+
+ std::map<int, wxString> FreeBusyList;
+ std::map<int, wxString> FreeBusyListAltID;
+ std::map<int, wxString> FreeBusyListPID;
+ std::map<int, wxString> FreeBusyListType;
+ std::map<int, wxString> FreeBusyListTokens;
+ std::map<int, wxString> FreeBusyListMediatype;
+ std::map<int, int> FreeBusyListPref;
+
+ /* Items on the Security tab */
+
+ std::map<int, wxString> KeyList;
+ std::map<int, wxString> KeyListAltID;
+ std::map<int, wxString> KeyListPID;
+ std::map<int, bool> KeyListKeyType;
+ std::map<int, wxString> KeyListDataType;
+ std::map<int, wxString> KeyListDataEncType;
+ std::map<int, wxString> KeyListType;
+ std::map<int, wxString> KeyListTokens;
+ std::map<int, int> KeyListPref;
+
+ /* Items on the Other tab */
+
+ std::map<int, wxString> VendorList;
+ std::map<int, wxString> VendorListPEN;
+ std::map<int, wxString> VendorListElement;
+
+ std::map<int, wxString> XTokenList;
+ std::map<int, wxString> 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<int,wxString>::iterator *iterDataPtr = 0;
+ std::map<int,std::string>::iterator *iterDataStringPtr = 0;
+ std::map<int,wxString>::iterator *iterFileTypePtr = 0;
+ std::map<int,wxString>::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<int,int> *SplitPoints,
+ std::map<int,int> *SplitLength,
+ int intSize);
+
+ frmMain *MainPtr;
+ frmActivityMgr *ActMgrPtr;
+ wxETagProcessTimer *ETagTmrPtr;
+ wxContactFileMonitorTimer FMTimer;
+
+ int ContactEditorUID;
+
+ DECLARE_EVENT_TABLE()
+
+ //// end generated class members
+
+};
+
+#endif // __frmContactEditor__
--- /dev/null
+#include "frmContactEditorAddress.h"
+#include <map>
+#include <wx/tokenzr.h>
+
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *AddressList,
+ std::map<int, wxString> *AddressListTown,
+ std::map<int, wxString> *AddressListCounty,
+ std::map<int, wxString> *AddressListPostCode,
+ std::map<int, wxString> *AddressListCountry,
+ std::map<int, wxString> *AddressListLabel,
+ std::map<int, wxString> *AddressListLang,
+ std::map<int, wxString> *AddressListAltID,
+ std::map<int, wxString> *AddressListPID,
+ std::map<int, wxString> *AddressListTokens,
+ std::map<int, wxString> *AddressListGeo,
+ std::map<int, wxString> *AddressListTimezone,
+ std::map<int, wxString> *AddressListType,
+ std::map<int, wxString> *AddressListMediatype,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorAddress__
+#define __frmContactEditorAddress__
+
+#include <map>
+
+/**
+@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<int, wxString> *AddressList,
+ std::map<int, wxString> *AddressListTown,
+ std::map<int, wxString> *AddressListCounty,
+ std::map<int, wxString> *AddressListPostCode,
+ std::map<int, wxString> *AddressListCountry,
+ std::map<int, wxString> *AddressListLabel,
+ std::map<int, wxString> *AddressListLang,
+ std::map<int, wxString> *AddressListAltID,
+ std::map<int, wxString> *AddressListPID,
+ std::map<int, wxString> *AddressListTokens,
+ std::map<int, wxString> *AddressListGeo,
+ std::map<int, wxString> *AddressListTimezone,
+ std::map<int, wxString> *AddressListType,
+ std::map<int, wxString> *AddressListMediatype,
+ std::map<int, int> *AddressListPref,
+ wxListCtrl *AddressListCtrl,
+ int AddressIndex );
+
+ private:
+ bool EditorMode;
+ std::map<int, wxString> *AddressListPtr;
+ std::map<int, wxString> *AddressListTownPtr;
+ std::map<int, wxString> *AddressListCountyPtr;
+ std::map<int, wxString> *AddressListPostCodePtr;
+ std::map<int, wxString> *AddressListCountryPtr;
+ std::map<int, wxString> *AddressListLabelPtr;
+ std::map<int, wxString> *AddressListLangPtr;
+ std::map<int, wxString> *AddressListAltIDPtr;
+ std::map<int, wxString> *AddressListPIDPtr;
+ std::map<int, wxString> *AddressListTokensPtr;
+ std::map<int, wxString> *AddressListGeoPtr;
+ std::map<int, wxString> *AddressListTimezonePtr;
+ std::map<int, wxString> *AddressListTypePtr;
+ std::map<int, wxString> *AddressListMediatypePtr;
+ std::map<int, int> *AddressListPrefPtr;
+ wxListCtrl *AddressListCtrlPtr;
+ int AddressListIndex;
+ SectionType EditSectionType;
+ //// end generated class members
+
+};
+
+#endif // __frmContactEditorAddress__
--- /dev/null
+#include "frmContactEditorCalAdr.h"
+#include <wx/tokenzr.h>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *CalAdrList,
+ std::map<int, wxString> *CalAdrListAltID,
+ std::map<int, wxString> *CalAdrListPID,
+ std::map<int, wxString> *CalAdrListType,
+ std::map<int, wxString> *CalAdrListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorCalAdr__
+#define __frmContactEditorCalAdr__
+
+/**
+@file
+Subclass of frmContactEditorCalAdrADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *CalAdrList,
+ std::map<int, wxString> *CalAdrListAltID,
+ std::map<int, wxString> *CalAdrListPID,
+ std::map<int, wxString> *CalAdrListType,
+ std::map<int, wxString> *CalAdrListTokens,
+ std::map<int, int> *CalAdrListPref,
+ wxListCtrl *CalAdrListCtrl,
+ int CalAdrIndex );
+ //// end generated class members
+
+ bool EditorMode;
+ std::map<int, wxString> *CalAdrListPtr;
+ std::map<int, wxString> *CalAdrListAltIDPtr;
+ std::map<int, wxString> *CalAdrListPIDPtr;
+ std::map<int, wxString> *CalAdrListTypePtr;
+ std::map<int, wxString> *CalAdrListTokensPtr;
+ std::map<int, int> *CalAdrListPrefPtr;
+ wxListCtrl *CalAdrListCtrlPtr;
+ int CalAdrListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorCalAdr__
--- /dev/null
+#include "frmContactEditorCategory.h"
+#include <wx/tokenzr.h>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *CategoryList,
+ std::map<int, wxString> *CategoryListAltID,
+ std::map<int, wxString> *CategoryListPID,
+ std::map<int, wxString> *CategoryListType,
+ std::map<int, wxString> *CategoryListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorCategory__
+#define __frmContactEditorCategory__
+
+/**
+@file
+Subclass of frmContactEditorCategoryADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *CategoryList,
+ std::map<int, wxString> *CategoryListAltID,
+ std::map<int, wxString> *CategoryListPID,
+ std::map<int, wxString> *CategoryListType,
+ std::map<int, wxString> *CategoryListTokens,
+ std::map<int, int> *CategoryListPref,
+ wxListCtrl *CategoryListCtrl,
+ int CategoryIndex );
+ //// end generated class members
+
+ private:
+
+ bool EditorMode;
+ std::map<int, wxString> *CategoryListPtr;
+ std::map<int, wxString> *CategoryListAltIDPtr;
+ std::map<int, wxString> *CategoryListPIDPtr;
+ std::map<int, wxString> *CategoryListTypePtr;
+ std::map<int, wxString> *CategoryListTokensPtr;
+ std::map<int, int> *CategoryListPrefPtr;
+ wxListCtrl *CategoryListCtrlPtr;
+ int CategoryListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorCategory__
--- /dev/null
+#include "frmContactEditorEmail.h"
+#include <map>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *EmailList,
+ std::map<int, wxString> *EmailListAltID,
+ std::map<int, wxString> *EmailListPID,
+ std::map<int, wxString> *EmailListType,
+ std::map<int, wxString> *EmailListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorEmail__
+#define __frmContactEditorEmail__
+
+#include <map>
+
+/**
+@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<int, wxString> *EmailList,
+ std::map<int, wxString> *EmailListAltID,
+ std::map<int, wxString> *EmailListPID,
+ std::map<int, wxString> *EmailListType,
+ std::map<int, wxString> *EmailListTokens,
+ std::map<int, int> *EmailListPref,
+ wxListCtrl *EmailListCtrl,
+ int EmailIndex );
+
+ private:
+ bool EditorMode;
+ std::map<int, wxString> *EmailListPtr;
+ std::map<int, wxString> *EmailListAltIDPtr;
+ std::map<int, wxString> *EmailListPIDPtr;
+ std::map<int, wxString> *EmailListTypePtr;
+ std::map<int, wxString> *EmailListTokensPtr;
+ std::map<int, int> *EmailListPrefPtr;
+ wxListCtrl *EmailListCtrlPtr;
+ int EmailListIndex;
+ SectionType EditSectionType;
+
+ //// end generated class members
+
+};
+
+#endif // __frmContactEditorEmail__
--- /dev/null
+#include "frmContactEditorGeoposition.h"
+#include <map>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *GeopositionList,
+ std::map<int, wxString> *GeopositionListAltID,
+ std::map<int, wxString> *GeopositionListPID,
+ std::map<int, wxString> *GeopositionListType,
+ std::map<int, wxString> *GeopositionListTokens,
+ std::map<int, wxString> *GeopositionListMediatype,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorGeoposition__
+#define __frmContactEditorGeoposition__
+
+#include <map>
+
+/**
+@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<int, wxString> *GeopositionList,
+ std::map<int, wxString> *GeopositionListAltID,
+ std::map<int, wxString> *GeopositionListPID,
+ std::map<int, wxString> *GeopositionListType,
+ std::map<int, wxString> *GeopositionListTokens,
+ std::map<int, wxString> *GeopositionListMediatype,
+ std::map<int, int> *GeopositionListPref,
+ wxListCtrl *GeopositionListCtrl,
+ int GeopositionIndex );
+ //// end generated class members
+ private:
+ bool EditorMode;
+ std::map<int, wxString> *GeopositionListPtr;
+ std::map<int, wxString> *GeopositionListAltIDPtr;
+ std::map<int, wxString> *GeopositionListPIDPtr;
+ std::map<int, wxString> *GeopositionListTypePtr;
+ std::map<int, wxString> *GeopositionListTokensPtr;
+ std::map<int, wxString> *GeopositionListMediatypePtr;
+ std::map<int, int> *GeopositionListPrefPtr;
+ wxListCtrl *GeopositionListCtrlPtr;
+ int GeopositionListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorGeoposition__
--- /dev/null
+#include "frmContactEditorGroups.h"\r
+#include <wx/wx.h>\r
+#include <wx/dir.h>\r
+#include "../vcard/vcard.h"\r
+#include "../common/dirs.h"\r
+\r
+frmContactEditorGroup::frmContactEditorGroup( wxWindow* parent )\r
+:\r
+frmContactEditorGroupsADT( parent )\r
+{\r
+ EditorMode = FALSE;\r
+}\r
+\r
+void frmContactEditorGroup::FetchContacts( wxInitDialogEvent& event )\r
+{\r
+\r
+ // Load up the directory and get the list of contacts and UIDs.\r
+\r
+ // Ignore contacts which have KIND:group set.\r
+ \r
+ wxString AccountDirFinal = GetAccountDir(AccName, FALSE);\r
+\r
+ //wxString vcardfilenamewxs;\r
+ wxString vCardFilename;\r
+ wxString vCardFilenameFull;\r
+ wxString vCardDataString;\r
+ //wxStringTokenizer vcardfileline;\r
+ wxString lwxs;\r
+ wxString setname, setvalue;\r
+ //vCardNames = new std::map<wxString, wxString, std::greater<wxString>>;\r
+ std::multimap<wxString, ContactData, std::greater<wxString>> vCardNamesAsc;\r
+ std::multimap<wxString, ContactData, std::less<wxString>> vCardNamesDsc;\r
+ int ContactIndex = 0;\r
+ \r
+ wxDir vcardaccdir(AccountDirFinal);\r
+ \r
+ bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES);\r
+ while(ProcFiles){\r
+ \r
+ if (vCardFilename.Right(4) == wxT(".vcf") || \r
+ vCardFilename.Right(4) == wxT(".VCF") || \r
+ vCardFilename.Right(5) == wxT(".vcard") || \r
+ vCardFilename.Right(5) == wxT(".VCARD")){\r
+ \r
+ vCard Person;\r
+ \r
+ vCardFilenameFull.Append(AccountDirFinal);\r
+ vCardFilenameFull.Append(wxT("/"));\r
+ vCardFilenameFull.Append(vCardFilename);\r
+ \r
+ Person.LoadFile(vCardFilenameFull);\r
+ \r
+ if (Person.MeetBaseSpecification()){\r
+ \r
+ wxString KindStatus = Person.Get(wxT("KIND"));\r
+ \r
+ if (KindStatus == wxT("group")){\r
+ \r
+ vCardFilename.Clear();\r
+ vCardFilenameFull.Clear();\r
+ vCardDataString.Clear();\r
+ ProcFiles = vcardaccdir.GetNext(&vCardFilename);\r
+ continue;\r
+ \r
+ }\r
+ \r
+ wxString PersonName = Person.Get(wxT("N"));\r
+ wxString PersonUID = Person.Get(wxT("UID"));\r
+ wxString PersonFilename = vCardFilenameFull;\r
+ \r
+ ContactData PersonData;\r
+ \r
+ PersonData.ContactName = PersonName;\r
+ PersonData.ContactUID = PersonUID;\r
+ PersonData.ContactFilename = PersonFilename;\r
+ \r
+ //ContactsNames.insert(std::make_pair(PersonName, ContactIndex));\r
+ //ContactsUIDs.insert(std::make_pair(ContactIndex, PersonUID));\r
+ \r
+ if (XVMData.SortMode == 1){\r
+\r
+ // Split the name into sections.\r
+ \r
+ vCardDataString = Person.Get(wxT("N"));\r
+\r
+ vCardName NameData = Person.GetName();\r
+ \r
+ vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname;\r
+ \r
+ } else if (XVMData.SortMode == 2){\r
+ \r
+ // Split the name into sections.\r
+ \r
+ vCardName NameData = Person.GetName(); \r
+ \r
+ vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename;\r
+ \r
+ } else if (XVMData.SortMode == 3){\r
+ \r
+ // Check and make sure that the top most nickname is used.\r
+ \r
+ vCardDataString = Person.Get(wxT("NICKNAME"));\r
+ \r
+ if (vCardDataString.IsEmpty()){\r
+ \r
+ vCardDataString = wxT("(no nickname)");\r
+ \r
+ }\r
+ \r
+ } else if (XVMData.SortMode == 4){\r
+ \r
+ vCardDataString = Person.Get(wxT("FN"));\r
+ \r
+ }\r
+ \r
+ if (XVMData.AscendingMode == TRUE){\r
+ vCardNamesAsc.insert(std::make_pair(vCardDataString, PersonData));\r
+ } else {\r
+ vCardNamesDsc.insert(std::make_pair(vCardDataString, PersonData));\r
+ }\r
+ \r
+ } else {\r
+ \r
+ }\r
+ \r
+ \r
+ \r
+ }\r
+ \r
+ vCardFilename.Clear();\r
+ vCardFilenameFull.Clear();\r
+ vCardDataString.Clear();\r
+ ProcFiles = vcardaccdir.GetNext(&vCardFilename);\r
+ \r
+ }\r
+ \r
+ if (XVMData.AscendingMode == TRUE){\r
+ \r
+ for (std::map<wxString,ContactData>::iterator iter = vCardNamesAsc.begin(); \r
+ iter != vCardNamesAsc.end(); ++iter){\r
+\r
+ chkContacts->InsertItems(1, &iter->first, 0);\r
+ \r
+ ContactNamesData.insert(std::make_pair(ContactIndex, iter->second)); \r
+ \r
+ ContactIndex++;\r
+ \r
+ }\r
+ \r
+ \r
+ } else {\r
+ \r
+ ContactIndex = vCardNamesDsc.size() - 1;\r
+ \r
+ for (std::map<wxString,ContactData>::iterator iter = vCardNamesDsc.begin(); \r
+ iter != vCardNamesDsc.end(); ++iter){\r
+\r
+ chkContacts->InsertItems(1, &iter->first, 0);\r
+\r
+ ContactNamesData.insert(std::make_pair(ContactIndex, iter->second)); \r
+ \r
+ ContactIndex--;\r
+\r
+ }\r
+ \r
+ }\r
+\r
+}\r
+\r
+void frmContactEditorGroup::ProcessData( wxCommandEvent& event )\r
+{\r
+ \r
+ for (int i = 0; i < chkContacts->GetCount(); i++){\r
+ \r
+ if (chkContacts->IsChecked(i) == TRUE){\r
+ \r
+ // Get the UID and Name data from the struct\r
+ // via GetData.\r
+ \r
+ wxString ContactName;\r
+ wxString ContactUID;\r
+ \r
+ for (std::map<int, ContactData>::iterator iter = ContactNamesData.begin(); \r
+ iter != ContactNamesData.end(); ++iter){\r
+ \r
+ if (i == iter->first){\r
+ \r
+ ContactName = iter->second.ContactName;\r
+ ContactUID = iter->second.ContactUID;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ std::map<int, ContactData>::iterator CDataIter = ContactNamesData.find(i);\r
+ \r
+ wxListItem ItemData;\r
+ ItemData.SetId(0);\r
+ ItemData.SetText(chkContacts->GetString(i));\r
+ \r
+ // Check if UID already exists before adding again. If already there\r
+ // then don't bother adding again.\r
+ \r
+ bool ItemExists = FALSE;\r
+ \r
+ for (std::map<int, wxString>::iterator itemiter = GroupsListPtr->begin();\r
+ itemiter != GroupsListPtr->end(); ++itemiter){\r
+ \r
+ if (itemiter->second == ContactUID){\r
+ \r
+ ItemExists = TRUE;\r
+ break;\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ if (ItemExists == TRUE){\r
+ \r
+ continue;\r
+ \r
+ }\r
+ \r
+ GroupsListCtrlPtr->InsertItem(ItemData);\r
+ GroupsListPtr->insert(std::make_pair(GroupsListIndex, ContactUID));\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+ this->Close();\r
+ \r
+}\r
+\r
+void frmContactEditorGroup::SetupPointers(std::map<int, wxString> *GroupsList,\r
+ wxListCtrl *GroupsListCtrl, \r
+ wxString AccountName, \r
+ int GroupIndex)\r
+{\r
+\r
+ GroupsListCtrlPtr = GroupsListCtrl;\r
+ GroupsListPtr = GroupsList;\r
+ AccName = AccountName;\r
+ GroupsListIndex = GroupIndex;\r
+\r
+}\r
+\r
+void frmContactEditorGroup::SetEditorMode(bool EditMode, XABViewMode XVMIn)\r
+{\r
+\r
+ EditorMode = EditMode;\r
+ XVMData = XVMIn;\r
+\r
+ btnAction->SetLabel(_("Add"));\r
+ this->SetTitle(_("Add Member(s)"));\r
+\r
+}\r
+\r
+void frmContactEditorGroup::CloseWindow( wxCommandEvent& event )\r
+{\r
+ this->Close();\r
+}\r
--- /dev/null
+#ifndef __frmContactEditorGroups__\r
+#define __frmContactEditorGroups__\r
+\r
+#include <map>\r
+\r
+/**\r
+@file\r
+Subclass of frmContactEditorGroupsADT, which is generated by wxFormBuilder.\r
+*/\r
+\r
+#include "../AppXestiaAddrBk.h"\r
+#include "../frmMain.h"\r
+\r
+struct ContactData{\r
+ wxString ContactName;\r
+ wxString ContactUID;\r
+ wxString ContactFilename;\r
+};\r
+\r
+//// end generated include\r
+\r
+/** Implementing frmContactEditorGroupsADT */\r
+class frmContactEditorGroup : public frmContactEditorGroupsADT\r
+{\r
+ protected:\r
+ // Handlers for frmContactEditorGroupsADT events.\r
+ void FetchContacts( wxInitDialogEvent& event );\r
+ void ProcessData( wxCommandEvent& event );\r
+ void CloseWindow( wxCommandEvent& event );\r
+ public:\r
+ /** Constructor */\r
+ frmContactEditorGroup( wxWindow* parent );\r
+ void SetEditorMode(bool EditMode, XABViewMode XAVIn);\r
+ void SetupPointers(std::map<int, wxString> *GroupsList,\r
+ wxListCtrl *GroupsListCtrl, \r
+ wxString AccountName, \r
+ int GroupIndex);\r
+ private:\r
+ bool EditorMode;\r
+ std::map<int,wxString> *GroupsListPtr;\r
+ wxListCtrl *GroupsListCtrlPtr;\r
+ wxString AccName;\r
+ std::map<int, ContactData> ContactNamesData;\r
+ int GroupsListIndex;\r
+ XABViewMode XVMData;\r
+ //// end generated class members\r
+ \r
+};\r
+\r
+#endif // __frmContactEditorGroups__\r
--- /dev/null
+#include "frmContactEditorIM.h"
+#include <wx/msgdlg.h>
+#include <wx/tokenzr.h>
+
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *IMList,
+ std::map<int, wxString> *IMListAltID,
+ std::map<int, wxString> *IMListPID,
+ std::map<int, wxString> *IMListType,
+ std::map<int, wxString> *IMListTokens,
+ std::map<int, wxString> *IMListMediatype,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorIM__
+#define __frmContactEditorIM__
+
+/**
+@file
+Subclass of frmContactEditorIMADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+
+#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<int, wxString> *IMList,
+ std::map<int, wxString> *IMListAltID,
+ std::map<int, wxString> *IMListPID,
+ std::map<int, wxString> *IMListType,
+ std::map<int, wxString> *IMListTokens,
+ std::map<int, wxString> *IMListMediatype,
+ std::map<int, int> *IMListPref,
+ wxListCtrl *AddressListCtrl,
+ int AddressIndex );
+ //// end generated class members
+
+ private:
+ bool EditorMode;
+ std::map<int, wxString> *IMListPtr;
+ std::map<int, wxString> *IMListAltIDPtr;
+ std::map<int, wxString> *IMListPIDPtr;
+ std::map<int, wxString> *IMListTypePtr;
+ std::map<int, wxString> *IMListTokensPtr;
+ std::map<int, wxString> *IMListMediatypePtr;
+ std::map<int, int> *IMListPrefPtr;
+ wxListCtrl *IMListCtrlPtr;
+ int IMListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorIM__
--- /dev/null
+#include "frmContactEditorKey.h"
+#include <wx/tokenzr.h>
+#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<int,bool>::iterator booliter;
+ std::map<int,int>::iterator intiter;
+ std::map<int,wxString>::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<const unsigned char*>(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<const unsigned char*>(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<int, wxString> *KeyList,
+ std::map<int, wxString> *KeyListAltID,
+ std::map<int, wxString> *KeyListPID,
+ std::map<int, bool> *KeyListKeyType,
+ std::map<int, wxString> *KeyListDataType,
+ std::map<int, wxString> *KeyListType,
+ std::map<int, wxString> *KeyListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorKey__
+#define __frmContactEditorKey__
+
+/**
+@file
+Subclass of frmContactEditorKeyADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *KeyList,
+ std::map<int, wxString> *KeyListAltID,
+ std::map<int, wxString> *KeyListPID,
+ std::map<int, bool> *KeyListKeyType,
+ std::map<int, wxString> *KeyListDataType,
+ std::map<int, wxString> *KeyListType,
+ std::map<int, wxString> *KeyListTokens,
+ std::map<int, int> *KeyListPref,
+ wxListCtrl *KeyListCtrl,
+ int KeyIndex );
+ //// end generated class members
+
+ bool EditorMode;
+ std::map<int, wxString> *KeyListPtr;
+ std::map<int, wxString> *KeyListAltIDPtr;
+ std::map<int, wxString> *KeyListPIDPtr;
+ std::map<int, bool> *KeyListKeyTypePtr;
+ std::map<int, wxString> *KeyListDataTypePtr;
+ std::map<int, wxString> *KeyListTypePtr;
+ std::map<int, wxString> *KeyListTokensPtr;
+ std::map<int, int> *KeyListPrefPtr;
+ wxListCtrl *KeyListCtrlPtr;
+ int KeyListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorKey__
--- /dev/null
+#include "frmContactEditorLanguages.h"
+#include "../common/textprocessing.h"
+#include <map>
+
+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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *LanguageList,
+ std::map<int, wxString> *LanguageListAltID,
+ std::map<int, wxString> *LanguageListPID,
+ std::map<int, wxString> *LanguageListType,
+ std::map<int, wxString> *LanguageListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorLanguages__
+#define __frmContactEditorLanguages__
+#include <map>
+
+/**
+@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<int, wxString> *LanguageList,
+ std::map<int, wxString> *LanguageListAltID,
+ std::map<int, wxString> *LanguageListPID,
+ std::map<int, wxString> *LanguageListType,
+ std::map<int, wxString> *LanguageListTokens,
+ std::map<int, int> *LanguageListPref,
+ wxListCtrl *LanguageListCtrl,
+ int LanguageIndex );
+ //// end generated class members
+ private:
+ bool EditorMode;
+ std::map<int, wxString> *LanguageListPtr;
+ std::map<int, wxString> *LanguageListAltIDPtr;
+ std::map<int, wxString> *LanguageListPIDPtr;
+ std::map<int, wxString> *LanguageListTypePtr;
+ std::map<int, wxString> *LanguageListTokensPtr;
+ std::map<int, int> *LanguageListPrefPtr;
+ wxListCtrl *LanguageListCtrlPtr;
+ int LanguageListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorLanguages__
--- /dev/null
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *NicknamesList,
+ std::map<int, wxString> *NicknamesListAltID,
+ std::map<int, wxString> *NicknamesListPID,
+ std::map<int, wxString> *NicknamesListType,
+ std::map<int, wxString> *NicknamesListLanguage,
+ std::map<int, wxString> *NicknamesListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorNickname__
+#define __frmContactEditorNickname__
+
+/**
+@file
+Subclass of frmContactEditorNicknameADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include <string>
+#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<int, wxString> *NicknamesList,
+ std::map<int, wxString> *NicknamesListAltID,
+ std::map<int, wxString> *NicknamesListPID,
+ std::map<int, wxString> *NicknamesListType,
+ std::map<int, wxString> *NicknamesListLanguage,
+ std::map<int, wxString> *NicknamesListTokens,
+ std::map<int, int> *NicknamesListPref,
+ wxListCtrl *NicknamesListCtrl,
+ int NicknamesIndex );
+ //// end generated class members
+ private:
+ bool EditorMode;
+ std::map<int, wxString> *NicknamesListPtr;
+ std::map<int, wxString> *NicknamesListAltIDPtr;
+ std::map<int, wxString> *NicknamesListPIDPtr;
+ std::map<int, wxString> *NicknamesListTypePtr;
+ std::map<int, wxString> *NicknamesListLanguagePtr;
+ std::map<int, wxString> *NicknamesListTokensPtr;
+ std::map<int, int> *NicknamesListPrefPtr;
+ wxListCtrl *NicknamesListCtrlPtr;
+ int NicknamesListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorNickname__
--- /dev/null
+#include "frmContactEditorNotes.h"
+#include "../common/textprocessing.h"
+#include <wx/tokenzr.h>
+
+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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *NotesList,
+ std::map<int, wxString> *NotesListLang,
+ std::map<int, wxString> *NotesListAltID,
+ std::map<int, wxString> *NotesListPID,
+ std::map<int, wxString> *NotesListType,
+ std::map<int, wxString> *NotesListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorNotes__
+#define __frmContactEditorNotes__
+
+/**
+@file
+Subclass of frmContactEditorNotesADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *NotesList,
+ std::map<int, wxString> *NotesListLang,
+ std::map<int, wxString> *NotesListAltID,
+ std::map<int, wxString> *NotesListPID,
+ std::map<int, wxString> *NotesListType,
+ std::map<int, wxString> *NotesListTokens,
+ std::map<int, int> *NotesListPref,
+ wxListCtrl *NotesListCtrl,
+ int NotesIndex );
+ //// end generated class members
+
+ private:
+
+ bool EditorMode;
+ std::map<int, wxString> *NotesListPtr;
+ std::map<int, wxString> *NotesListLangPtr;
+ std::map<int, wxString> *NotesListAltIDPtr;
+ std::map<int, wxString> *NotesListPIDPtr;
+ std::map<int, wxString> *NotesListTypePtr;
+ std::map<int, wxString> *NotesListTokensPtr;
+ std::map<int, int> *NotesListPrefPtr;
+ wxListCtrl *NotesListCtrlPtr;
+ int NotesListIndex;
+ SectionType EditSectionType;
+};
+
+#endif // __frmContactEditorNotes__
--- /dev/null
+#include "frmContactEditorOrganisations.h"
+#include <wx/tokenzr.h>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *OrganisationList,
+ std::map<int, wxString> *OrganisationListLanguage,
+ std::map<int, wxString> *OrganisationListSortAs,
+ std::map<int, wxString> *OrganisationListAltID,
+ std::map<int, wxString> *OrganisationListPID,
+ std::map<int, wxString> *OrganisationListType,
+ std::map<int, wxString> *OrganisationListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorOrganisations__
+#define __frmContactEditorOrganisations__
+
+/**
+@file
+Subclass of frmContactEditorOrganisationsADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *OrganisationList,
+ std::map<int, wxString> *OrganisationListLanguage,
+ std::map<int, wxString> *OrganisationListSortAs,
+ std::map<int, wxString> *OrganisationListAltID,
+ std::map<int, wxString> *OrganisationListPID,
+ std::map<int, wxString> *OrganisationListType,
+ std::map<int, wxString> *OrganisationListTokens,
+ std::map<int, int> *OrganisationListPref,
+ wxListCtrl *OrganisationListCtrl,
+ int OrganisationIndex );
+ //// end generated class members
+
+ private:
+
+ bool EditorMode;
+ std::map<int, wxString> *OrganisationListPtr;
+ std::map<int, wxString> *OrganisationListLanguagePtr;
+ std::map<int, wxString> *OrganisationListSortAsPtr;
+ std::map<int, wxString> *OrganisationListAltIDPtr;
+ std::map<int, wxString> *OrganisationListPIDPtr;
+ std::map<int, wxString> *OrganisationListTypePtr;
+ std::map<int, wxString> *OrganisationListTokensPtr;
+ std::map<int, int> *OrganisationListPrefPtr;
+ wxListCtrl *OrganisationListCtrlPtr;
+ int OrganisationListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorOrganisations__
--- /dev/null
+#include "frmContactEditorPicture.h"
+
+#include <wx/wx.h>
+#include <wx/tokenzr.h>
+#include <wx/icon.h>
+#include <wx/mstream.h>
+#include <wx/fs_mem.h>
+#include <SFML/Audio.hpp>
+
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, std::string> *PictureList,
+ std::map<int, wxString> *PictureListAltID,
+ std::map<int, wxString> *PictureListPID,
+ std::map<int, wxString> *PictureListType,
+ std::map<int, wxString> *PictureListPicEncType,
+ std::map<int, wxString> *PictureListPictureType,
+ std::map<int, wxString> *PictureListTokens,
+ std::map<int, wxString> *PictureListMediatype,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorPicture__
+#define __frmContactEditorPicture__
+
+/**
+@file
+Subclass of frmContactEditorPictureADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include <string>
+#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<int, std::string> *PictureList,
+ std::map<int, wxString> *PictureListAltID,
+ std::map<int, wxString> *PictureListPID,
+ std::map<int, wxString> *PictureListType,
+ std::map<int, wxString> *PictureListPicEncType,
+ std::map<int, wxString> *PictureListPictureType,
+ std::map<int, wxString> *PictureListTokens,
+ std::map<int, wxString> *PictureListMediatype,
+ std::map<int, int> *PictureListPref,
+ wxListCtrl *PictureListCtrl,
+ int PictureIndex );
+ //// end generated class members
+
+ bool EditorMode;
+ std::map<int, std::string> *PictureListPtr;
+ std::map<int, wxString> *PictureListAltIDPtr;
+ std::map<int, wxString> *PictureListPIDPtr;
+ std::map<int, wxString> *PictureListTypePtr;
+ std::map<int, wxString> *PictureListPicEncTypePtr;
+ std::map<int, wxString> *PictureListPictureTypePtr;
+ std::map<int, wxString> *PictureListTokensPtr;
+ std::map<int, wxString> *PictureListMediatypePtr;
+ std::map<int, int> *PictureListPrefPtr;
+ wxListCtrl *PictureListCtrlPtr;
+ int PictureListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorPicture__
--- /dev/null
+#include "frmContactEditorRelated.h"
+#include <map>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *RelatedList,
+ std::map<int, wxString> *RelatedListRelType,
+ std::map<int, wxString> *RelatedListAltID,
+ std::map<int, wxString> *RelatedListPID,
+ std::map<int, wxString> *RelatedListType,
+ std::map<int, wxString> *RelatedListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorRelated__
+#define __frmContactEditorRelated__
+
+/**
+@file
+Subclass of frmContactEditorRelatedADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+#include <map>
+
+//// 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<int, wxString> *RelatedList,
+ std::map<int, wxString> *RelatedListRelType,
+ std::map<int, wxString> *RelatedListAltID,
+ std::map<int, wxString> *RelatedListPID,
+ std::map<int, wxString> *RelatedListType,
+ std::map<int, wxString> *RelatedListTokens,
+ std::map<int, int> *RelatedListPref,
+ wxListCtrl *RelatedListCtrl,
+ int RelatedIndex );
+ //// end generated class members
+
+ private:
+
+ bool EditorMode;
+ std::map<int, wxString> *RelatedListPtr;
+ std::map<int, wxString> *RelatedListRelTypePtr;
+ std::map<int, wxString> *RelatedListAltIDPtr;
+ std::map<int, wxString> *RelatedListPIDPtr;
+ std::map<int, wxString> *RelatedListTypePtr;
+ std::map<int, wxString> *RelatedListTokensPtr;
+ std::map<int, int> *RelatedListPrefPtr;
+ wxListCtrl *RelatedListCtrlPtr;
+ int RelatedListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorRelated__
--- /dev/null
+#include "frmContactEditorRoles.h"
+
+#include <map>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *RolesList,
+ std::map<int, wxString> *RolesListLanguage,
+ std::map<int, wxString> *RolesListAltID,
+ std::map<int, wxString> *RolesListPID,
+ std::map<int, wxString> *RolesListType,
+ std::map<int, wxString> *RolesListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorRoles__
+#define __frmContactEditorRoles__
+
+/**
+@file
+Subclass of frmContactEditorRolesADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *RolesList,
+ std::map<int, wxString> *RolesListLanguage,
+ std::map<int, wxString> *RolesListAltID,
+ std::map<int, wxString> *RolesListPID,
+ std::map<int, wxString> *RolesListType,
+ std::map<int, wxString> *RolesListTokens,
+ std::map<int, int> *RolesListPref,
+ wxListCtrl *RolesListCtrl,
+ int RolesIndex );
+ //// end generated class members
+
+ private:
+
+ bool EditorMode;
+ std::map<int, wxString> *RolesListPtr;
+ std::map<int, wxString> *RolesListLanguagePtr;
+ std::map<int, wxString> *RolesListAltIDPtr;
+ std::map<int, wxString> *RolesListPIDPtr;
+ std::map<int, wxString> *RolesListTypePtr;
+ std::map<int, wxString> *RolesListTokensPtr;
+ std::map<int, int> *RolesListPrefPtr;
+ wxListCtrl *RolesListCtrlPtr;
+ int RolesListIndex;
+ SectionType EditSectionType;
+};
+
+#endif // __frmContactEditorRoles__
--- /dev/null
+#include "frmContactEditorSound.h"
+
+#include <wx/tokenzr.h>
+#include <wx/file.h>
+#include <SFML/Audio.hpp>
+
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, std::string> *SoundList,
+ std::map<int, wxString> *SoundListAltID,
+ std::map<int, wxString> *SoundListPID,
+ std::map<int, wxString> *SoundListType,
+ std::map<int, wxString> *SoundListAudioType,
+ std::map<int, wxString> *SoundListAudioEncType,
+ std::map<int, wxString> *SoundListTokens,
+ std::map<int, wxString> *SoundListMediatype,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorSound__
+#define __frmContactEditorSound__
+
+/**
+@file
+Subclass of frmContactEditorSoundADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include <string>
+#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<int, std::string> *SoundList,
+ std::map<int, wxString> *SoundListAltID,
+ std::map<int, wxString> *SoundListPID,
+ std::map<int, wxString> *SoundListType,
+ std::map<int, wxString> *SoundListAudioType,
+ std::map<int, wxString> *SoundListAudioEncType,
+ std::map<int, wxString> *SoundListTokens,
+ std::map<int, wxString> *SoundListMediatype,
+ std::map<int, int> *SoundListPref,
+ wxListCtrl *SoundListCtrl,
+ int SoundIndex );
+ //// end generated class members
+
+ private:
+
+ bool EditorMode;
+ std::map<int, std::string> *SoundListPtr;
+ std::map<int, wxString> *SoundListAltIDPtr;
+ std::map<int, wxString> *SoundListPIDPtr;
+ std::map<int, wxString> *SoundListTypePtr;
+ std::map<int, wxString> *SoundListAudioTypePtr;
+ std::map<int, wxString> *SoundListAudioEncTypePtr;
+ std::map<int, wxString> *SoundListTokensPtr;
+ std::map<int, wxString> *SoundListMediatypePtr;
+ std::map<int, int> *SoundListPrefPtr;
+ wxListCtrl *SoundListCtrlPtr;
+ int SoundListIndex;
+ SectionType EditSectionType;
+ //// end generated class members
+
+};
+
+#endif // __frmContactEditorSound__
--- /dev/null
+#include "frmContactEditorTelephone.h"
+#include "../common/textprocessing.h"
+#include <wx/tokenzr.h>
+
+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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *TelephoneList,
+ std::map<int, wxString> *TelephoneListAltID,
+ std::map<int, wxString> *TelephoneListPID,
+ std::map<int, wxString> *TelephoneListType,
+ std::map<int, wxString> *TelephoneListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorTelephone__
+#define __frmContactEditorTelephone__
+
+/**
+@file
+Subclass of frmContactEditorTelephoneADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *TelephoneList,
+ std::map<int, wxString> *TelephoneListAltID,
+ std::map<int, wxString> *TelephoneListPID,
+ std::map<int, wxString> *TelephoneListType,
+ std::map<int, wxString> *TelephoneListTokens,
+ std::map<int, int> *TelephoneListPref,
+ wxListCtrl *TelephoneListCtrl,
+ int TelephoneIndex );
+ //// end generated class members
+
+ private:
+
+ bool EditorMode;
+ std::map<int, wxString> *TelephoneListPtr;
+ std::map<int, wxString> *TelephoneListAltIDPtr;
+ std::map<int, wxString> *TelephoneListPIDPtr;
+ std::map<int, wxString> *TelephoneListTypePtr;
+ std::map<int, wxString> *TelephoneListTokensPtr;
+ std::map<int, int> *TelephoneListPrefPtr;
+ wxListCtrl *TelephoneListCtrlPtr;
+ int TelephoneListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorTelephone__
--- /dev/null
+#include "frmContactEditorTimezones.h"
+#include <map>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *TZList,
+ std::map<int, wxString> *TZListAltID,
+ std::map<int, wxString> *TZListPID,
+ std::map<int, wxString> *TZListType,
+ std::map<int, wxString> *TZListTokens,
+ std::map<int, wxString> *TZListMediatype,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorTimezones__
+#define __frmContactEditorTimezones__
+
+#include <map>
+
+/**
+@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<int, wxString> *TZList,
+ std::map<int, wxString> *TZListAltID,
+ std::map<int, wxString> *TZListPID,
+ std::map<int, wxString> *TZListType,
+ std::map<int, wxString> *TZListTokens,
+ std::map<int, wxString> *TZListMediatype,
+ std::map<int, int> *TZListPref,
+ wxListCtrl *TZListCtrl,
+ int TZIndex );
+ //// end generated class members
+ private:
+ bool EditorMode;
+ std::map<int, wxString> *TZListPtr;
+ std::map<int, wxString> *TZListAltIDPtr;
+ std::map<int, wxString> *TZListPIDPtr;
+ std::map<int, wxString> *TZListTypePtr;
+ std::map<int, wxString> *TZListTokensPtr;
+ std::map<int, wxString> *TZListMediatypePtr;
+ std::map<int, int> *TZListPrefPtr;
+ wxListCtrl *TZListCtrlPtr;
+ int TZListIndex;
+ SectionType EditSectionType;
+
+
+};
+
+#endif // __frmContactEditorTimezones__
--- /dev/null
+#include "frmContactEditorTitles.h"
+
+#include <map>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *TitlesList,
+ std::map<int, wxString> *TitlesListLanguage,
+ std::map<int, wxString> *TitlesListAltID,
+ std::map<int, wxString> *TitlesListPID,
+ std::map<int, wxString> *TitlesListType,
+ std::map<int, wxString> *TitlesListTokens,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorTitles__
+#define __frmContactEditorTitles__
+
+/**
+@file
+Subclass of frmContactEditorTitlesADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *TitlesList,
+ std::map<int, wxString> *TitlesListLanguage,
+ std::map<int, wxString> *TitlesListAltID,
+ std::map<int, wxString> *TitlesListPID,
+ std::map<int, wxString> *TitlesListType,
+ std::map<int, wxString> *TitlesListTokens,
+ std::map<int, int> *TitlesListPref,
+ wxListCtrl *TitlesListCtrl,
+ int TitlesIndex );
+ //// end generated class members
+
+ private:
+
+ bool EditorMode;
+ std::map<int, wxString> *TitlesListPtr;
+ std::map<int, wxString> *TitlesListLanguagePtr;
+ std::map<int, wxString> *TitlesListAltIDPtr;
+ std::map<int, wxString> *TitlesListPIDPtr;
+ std::map<int, wxString> *TitlesListTypePtr;
+ std::map<int, wxString> *TitlesListTokensPtr;
+ std::map<int, int> *TitlesListPrefPtr;
+ wxListCtrl *TitlesListCtrlPtr;
+ int TitlesListIndex;
+ SectionType EditSectionType;
+};
+
+#endif // __frmContactEditorTitles__
--- /dev/null
+#include "frmContactEditorVendor.h"
+#include <wx/tokenzr.h>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *VendorList,
+ std::map<int, wxString> *VendorListPEN,
+ std::map<int, wxString> *VendorListElement,
+ wxListCtrl *VendorListCtrl,
+ int VendorIndex )
+{
+
+ VendorListPtr = VendorList;
+ VendorListPENPtr = VendorListPEN;
+ VendorListElementPtr = VendorListElement;
+ VendorListCtrlPtr = VendorListCtrl;
+ VendorListIndex = VendorIndex;
+
+}
+
+void frmContactEditorVendor::CloseWindow( wxCommandEvent& event )
+{
+ this->Close();
+}
--- /dev/null
+#ifndef __frmContactEditorVendor__
+#define __frmContactEditorVendor__
+
+/**
+@file
+Subclass of frmContactEditorVendorADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *VendorList,
+ std::map<int, wxString> *VendorListPEN,
+ std::map<int, wxString> *VendorListElement,
+ wxListCtrl *VendorListCtrl,
+ int VendorIndex );
+ //// end generated class members
+
+ bool EditorMode;
+ std::map<int, wxString> *VendorListPtr;
+ std::map<int, wxString> *VendorListPENPtr;
+ std::map<int, wxString> *VendorListElementPtr;
+ wxListCtrl *VendorListCtrlPtr;
+ int VendorListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorVendor__
--- /dev/null
+#include "frmContactEditorWebsites.h"
+
+#include <map>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *WebsiteList,
+ std::map<int, wxString> *WebsiteListAltID,
+ std::map<int, wxString> *WebsiteListPID,
+ std::map<int, wxString> *WebsiteListType,
+ std::map<int, wxString> *WebsiteListTokens,
+ std::map<int, wxString> *WebsiteListMediatype,
+ std::map<int, int> *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
--- /dev/null
+#ifndef __frmContactEditorWebsites__
+#define __frmContactEditorWebsites__
+
+/**
+@file
+Subclass of frmContactEditorWebsitesADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *WebsiteList,
+ std::map<int, wxString> *WebsiteListAltID,
+ std::map<int, wxString> *WebsiteListPID,
+ std::map<int, wxString> *WebsiteListType,
+ std::map<int, wxString> *WebsiteListTokens,
+ std::map<int, wxString> *WebsiteListMediatype,
+ std::map<int, int> *WebsiteListPref,
+ wxListCtrl *WebsiteListCtrl,
+ int WebsiteIndex );
+ //// end generated class members
+
+ private:
+
+ bool EditorMode;
+ std::map<int, wxString> *WebsiteListPtr;
+ std::map<int, wxString> *WebsiteListAltIDPtr;
+ std::map<int, wxString> *WebsiteListPIDPtr;
+ std::map<int, wxString> *WebsiteListTypePtr;
+ std::map<int, wxString> *WebsiteListTokensPtr;
+ std::map<int, wxString> *WebsiteListMediatypePtr;
+ std::map<int, int> *WebsiteListPrefPtr;
+ wxListCtrl *WebsiteListCtrlPtr;
+ int WebsiteListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorWebsites__
--- /dev/null
+#include "frmContactEditorXToken.h"
+#include <wx/tokenzr.h>
+#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<int,int>::iterator intiter;
+ std::map<int,wxString>::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<int, wxString> *XTokenList,
+ std::map<int, wxString> *XTokenListTokens,
+ wxListCtrl *XTokenListCtrl,
+ int XTokenIndex )
+{
+
+ XTokenListPtr = XTokenList;
+ XTokenListTokensPtr = XTokenListTokens;
+ XTokenListCtrlPtr = XTokenListCtrl;
+ XTokenListIndex = XTokenIndex;
+
+}
+
+void frmContactEditorXToken::CloseWindow( wxCommandEvent& event )
+{
+ this->Close();
+}
--- /dev/null
+#ifndef __frmContactEditorXToken__
+#define __frmContactEditorXToken__
+
+/**
+@file
+Subclass of frmContactEditorXTokenADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#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<int, wxString> *XTokenList,
+ std::map<int, wxString> *XTokenListTokens,
+ wxListCtrl *XTokenListCtrl,
+ int XTokenIndex );
+ //// end generated class members
+
+ bool EditorMode;
+ std::map<int, wxString> *XTokenListPtr;
+ std::map<int, wxString> *XTokenListTokensPtr;
+ wxListCtrl *XTokenListCtrlPtr;
+ int XTokenListIndex;
+ SectionType EditSectionType;
+
+};
+
+#endif // __frmContactEditorXToken__
--- /dev/null
+#include <iostream>
+
+#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
+
--- /dev/null
+#include <wx/ffile.h>
+#include <wx/arrstr.h>
+#include <wx/filefn.h>
+#include <wx/tokenzr.h>
+
+#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
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef EXPORT_VCARD3_H
+#define EXPORT_VCARD3_H
+
+void ExportVCard3(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount);
+
+#endif
+
--- /dev/null
+#include <wx/ffile.h>
+#include <wx/arrstr.h>
+#include <wx/filefn.h>
+#include <wx/tokenzr.h>
+
+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
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef EXPORT_VCARD4_H
+#define EXPORT_VCARD4_H
+
+void ExportVCard4(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount);
+
+#endif
+
+
--- /dev/null
+#include <wx/filedlg.h>
+#include <wx/arrstr.h>
+#include <csignal>
+
+#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();
+
+}
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+#include "../frmMain.h"
+
+#ifndef EXPORT_EXPORT_H
+#define EXPORT_EXPORT_H
+
+void ExportRun(frmMain *frmMainPtrInc, wxArrayString *FileListInc);
+
+#endif
+
--- /dev/null
+#include <wx/wx.h>
+#include <wx/string.h>
+#include <wx/mstream.h>
+#include <string.h>
+
+#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
--- /dev/null
+#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__
--- /dev/null
+#include "frmActivityMgr.h"
+#include <wx/mstream.h>
+#include <wx/file.h>
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <wx/dir.h>
+#include <wx/filefn.h>
+#include <thread>
+#include <curl/curl.h>
+
+#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<frmMain*>(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<int, wxString> RecoveryFileLines;
+ std::map<int, wxString>::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<int,CardDAV>::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<int,CardDAV>::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<int,CardDAV>::iterator CDAVter;
+
+ CDAVter = ActivityListConn.find(intSelectedData);
+
+ // Restart the task.
+
+ //CDAVter->second.Abort();
+
+ std::map<int,int>::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<int,int>::iterator TypeIter;
+ std::map<int,wxString>::iterator StringIter;
+ std::map<int,wxString>::iterator StringDetailIter;
+ std::map<int,wxString>::iterator StringAccountIter;
+ std::map<int,wxString>::iterator StringFilenameIter;
+ std::map<int,wxString>::iterator StringFullFilenameIter;
+ std::map<int,wxString>::iterator StringTaskDetailIter;
+ std::map<int,wxString>::iterator StringETagIter;
+ std::map<int,wxString>::iterator StringETagOrigIter;
+ std::map<int,CardDAV>::iterator CardDAVIter;
+ std::map<int,long>::iterator LongIter;
+ bool TasksFoundProc = FALSE;
+ wxString TaskDetail;
+
+ for (std::map<int,int>::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<frmMain*>(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<frmMain*>(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<wxString,wxString> vCardETag;
+ ContactListData ServerContactList;
+
+ std::map<wxString,vCardDownloadDataFileClass> vCardDownloadData;
+ //wxArrayString vCardDownload;
+ //std::map<wxString,wxString> 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<wxString,ETagData> ETagDBData = ETagDBPtr->GetETagData();
+
+ CardDAV CardDAVInstance = CardDAVIter->second;
+
+ bool ExitLoop = FALSE;
+
+ std::map<wxString,FileSyncData> *SCListData = NULL;
+
+ while (ExitLoop == FALSE){
+
+ //ServerContactList = CardDAVInstance.GetContactList(SyncTokenLoad.ToUTF8());
+ ServerContactList = CardDAVIter->second.GetContactList(SyncTokenLoad.ToUTF8());
+
+ // Create a pointer for the std::map<wxString,FileSyncData>.
+
+ 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<wxString, FileSyncData>::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<wxString,ETagData>::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<wxString,FileSyncData>::iterator srviter = SCListData->begin();
+ srviter != SCListData->end(); srviter++){
+
+ if (ETagDBData.find(srviter->first) == ETagDBData.end()){
+ continue;
+ }
+
+ std::map<wxString,ETagData>::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<frmMain*>(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<wxString,vCardDownloadDataFileClass>::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<frmMain*>(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<frmMain*>(frmMainPtr);
+
+ }
+
+ // Process the vCards to delete from the server.
+
+ std::map<wxString,wxString> *ETagFilenameMap = ETagDBPtr->GetFilenamePointer();
+
+
+ for (std::map<wxString,wxString>::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<int,int>::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<int, SSLCertData>::iterator SSLCDIter = SSLCertInc.SSLCollection.find(0);
+ std::multimap<wxString,wxString>::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
--- /dev/null
+#ifndef __frmActivityMgr__
+#define __frmActivityMgr__
+
+/**
+@file
+Subclass of frmActivityMgrADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "carddav/carddav.h"
+#include <map>
+#include <wx/timer.h>
+#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<int,int> ActivityList;
+ std::map<int,int> ActivityListType;
+ std::map<int,long> ActivityListIndex;
+ std::map<int,wxString> ActivityListData;
+ std::map<int,wxString> ActivityListTaskDetail;
+ std::map<int,wxString> ActivityListAccount;
+ std::map<int,wxString> ActivityListFilename;
+ std::map<int,wxString> ActivityListFullFilename;
+ std::map<int,CardDAV> ActivityListConn;
+ std::map<int,wxString> ActivityListETag;
+ std::map<int,wxString> ActivityListETagOriginal;
+ std::map<int,wxDateTime> ActivityListFinDate;
+ std::map<int,wxArrayString> 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__
--- /dev/null
+#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<wxString, wxString> *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
--- /dev/null
+#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<wxString, wxString> *MemoryFSList);
+ //// end generated class members
+
+};
+
+#endif // __frmConflictResolution__
--- /dev/null
+#include "frmContact.h"
+#include "common/getcontactinfo.h"
+#include "frmMain.h"
+#include <wx/fs_mem.h>
+#include <wx/filesys.h>
+#include <wx/app.h>
+
+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<wxString, wxString>::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<wxString, wxString>::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<wxString,wxString> *MemoryFSListIncPtr){
+
+ MemoryFSListPtr = MemoryFSListIncPtr;
+
+}
+
+void frmContact::SetUID(int UID){
+
+ ContactUID = UID;
+
+}
+
+wxString frmContact::GetFilename(){
+
+ return vCardFilename;
+
+}
\ No newline at end of file
--- /dev/null
+#include "vcard/vcard.h"
+#include <map>
+
+#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<wxString,wxString> *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<wxString,wxString> *MemoryFSListIncPtr);
+ void SetUID(int UID);
+ wxString GetFilename();
+ DECLARE_EVENT_TABLE();
+ //// end generated class members
+
+};
+
+#endif // __frmContact__
--- /dev/null
+#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();
+}
--- /dev/null
+#ifndef __frmEditAccount__
+#define __frmEditAccount__
+
+/**
+@file
+Subclass of frmEditAccountADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include <wx/fileconf.h>
+
+//// 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__
--- /dev/null
+#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
--- /dev/null
+#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__
--- /dev/null
+#include <iostream>
+#include <algorithm>
+#include <vector>
+#include <thread>
+
+#include <wx/wx.h>
+#include <wx/tokenzr.h>
+#include <wx/icon.h>
+#include <wx/mstream.h>
+#include <wx/fs_mem.h>
+#include <wx/ffile.h>
+#include <wx/filesys.h>
+#include <wx/dir.h>
+#include <wx/stdpaths.h>
+#include <wx/fileconf.h>
+//#include <boost/filesystem/fstream.hpp>
+
+// 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<frmActivityMgr*>(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<wxTreeItemId, int>::iterator AGTiter = AccountGroupTreeId.find(ActiveItemId);
+ std::multimap<int, wxString>::iterator AGFiter = AccountGroupFilename.find(AGTiter->second);
+ std::multimap<int, int>::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<wxString, wxString, std::greater<wxString>>;
+ std::multimap<wxString, wxString, std::greater<wxString>> vCardNamesAsc;
+ std::multimap<wxString, wxString, std::less<wxString>> 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<wxTreeItemId, int>::iterator AGTiter = AccountGroupTreeId.find(ActiveItemId);
+ std::multimap<int, wxString>::iterator AGFiter = AccountGroupFilename.find(AGTiter->second);
+ //std::multimap<wxTreeItemId, int>::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<wxString, wxString>::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<wxString, wxString>::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<int, wxString> ContactFileLines;
+ std::map<int, wxString>::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<int, wxString>::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<frmActivityMgr*>(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<frmActivityMgr*>(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<frmActivityMgr*>(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<wxString, wxAccountSyncTimer*>::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<frmActivityMgr*>(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<int, void*>::iterator WindowIter = WindowListPointers.begin();
+ WindowIter != WindowListPointers.end(); WindowIter++){
+
+ if (WindowListType[WindowIter->first] != 0){
+
+ continue;
+
+ }
+
+ frmContact *frmContactPtr = static_cast<frmContact*>(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<frmActivityMgr*>(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<void*,wxString>::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<frmSearch*>(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<frmSearch*>(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<frmActivityMgr*>(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<void*,wxString>::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<frmSearch*>(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<frmActivityMgr*>(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<frmContact*>(WData->WindowPointer);
+
+ wxString WindowTitle = frmContactPtr->GetTitle();
+
+ std::map<int, wxMenuItem*>::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<frmContactEditor*>(WData->WindowPointer);
+
+ wxString WindowTitle = frmCEPtr->GetTitle();
+
+ std::map<int, wxMenuItem*>::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<int, wxMenuItem*>::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<int, void*>::iterator WindowIter = WindowListPointers.find(event.GetId());
+
+ frmContact *frmContactPtr = static_cast<frmContact*>(WindowIter->second);
+
+ frmContactPtr->Show();
+ frmContactPtr->Raise();
+
+}
+
+void frmMain::ShowContactEditorWindow( wxCommandEvent &event ){
+
+ std::map<int, void*>::iterator WindowIter = WindowListPointers.find(event.GetId());
+
+ frmContactEditor *frmCEPtr = static_cast<frmContactEditor*>(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<int, void*>::iterator WindowIter = WindowListPointers.find(event.GetId());
+
+ frmSearch *frmSearchPtr = static_cast<frmSearch*>(WindowIter->second);
+
+ frmSearchPtr->Show();
+ frmSearchPtr->Raise();
+
+}
+
+void frmMain::ToggleConnectionStatus( wxCommandEvent &event ){
+
+ frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(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<int, SSLCertCollection>::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<int,int>::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<frmActivityMgr*>(ActMgrPtr);
+ wxPostEvent(frameActMgr, event2);
+}
+
+void frmMain::PauseAllTimers(){
+
+ for (std::map<wxString, wxAccountSyncTimer*>::iterator ASTiter = AccountSyncTimers.begin();
+ ASTiter != AccountSyncTimers.end(); ASTiter++){
+
+ ASTiter->second->Stop();
+
+ }
+
+}
+
+void frmMain::ResumeAllTimers(){
+
+ for (std::map<wxString, wxAccountSyncTimer*>::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<frmActivityMgr*>(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
--- /dev/null
+#ifndef __frmMain__
+#define __frmMain__
+
+/**
+@file
+Subclass of frmMainADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "common/preferences.h"
+#include <map>
+#include <utility>
+#include <wx/timer.h>
+#include <wx/filesys.h>
+#include <wx/combo.h>
+#include <wx/treectrl.h>
+#include <wx/treebase.h>
+#include <wx/imaglist.h>
+#include <wx/mstream.h>
+#include <wx/tooltip.h>
+
+#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<wxString, bool> WindowList;
+ std::map<int, wxTimer> AccountRefreshList;
+ std::map<int, wxString> AccountAccDirList;
+ std::map<int, SSLCertCollection> AccountSSLData;
+ std::map<int, int> AccountSSLResult;
+ std::multimap<int, int> AccountGroupList;
+ std::multimap<int, wxString> AccountGroupFilename;
+ std::multimap<wxTreeItemId, int> AccountGroupTreeId;
+ std::map<wxString, wxAccountSyncTimer*> AccountSyncTimers;
+ void *ActMgrPtr;
+ wxString ActiveAccount;
+ wxString ActiveAccountType;
+ wxString ActiveFilename;
+ wxETagProcessTimer ETagProcTimer;
+ std::map<wxString,wxString> MemoryFileList;
+ std::map<void*,wxString> ContactWindowList;
+ std::map<void*,wxString> ContactEditorWindowList;
+ std::map<void*,wxString> SearchWindowList;
+ std::map<int,wxMenuItem*> WindowListPointersMenu;
+ std::map<int,void*> WindowListPointers;
+ std::map<int,int> WindowListType;
+ //std::map<int,int> 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__
--- /dev/null
+#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__
--- /dev/null
+#include "frmNewAccount.h"
+#include <thread>
+#include <cstdlib>
+#include <wx/filefn.h>
+#include <wx/fileconf.h>
+
+#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
--- /dev/null
+#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__
--- /dev/null
+#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 <wx/wx.h>
+#include <wx/mstream.h>
+#include <wx/dialog.h>
+#include <wx/msgdlg.h>
+#include <wx/fileconf.h>
+
+
+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
--- /dev/null
+#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__
--- /dev/null
+#include "frmSSLCertificate.h"
+#include <wx/wx.h>
+
+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<int, struct SSLCertData>::iterator SCDIter;
+ SCDIter = SSLCertsInc.SSLCollection.find(StartFrom);
+
+ // Setup the summary tab.
+
+ // Split the subject data down.
+
+ std::map<wxString, wxString>::iterator SDIter = SCDIter->second.CertData.find(wxT("Subject"));
+ std::map<wxString, wxString> SubjectData = GetSubjectData(SDIter->second);
+
+ // Get the common name (CN).
+
+ std::map<wxString, wxString>::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<wxString, wxString>::iterator Oiter = SubjectData.find(wxT("O"));
+ lblIssuedToData->SetLabel(Oiter->second);
+
+ } else {
+
+ lblIssuedToData->SetLabel(CNiter->second);
+
+ }
+
+ // Setup the valid from date.
+
+ std::map<wxString, wxString>::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<wxString, wxString>::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<wxString, wxString>::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<int, struct SSLCertData>::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<wxString, wxString>::iterator CSDIter = iter->second.CertData.find(wxT("Subject"));
+ std::map<wxString, wxString> CertSubjectData = GetSubjectData(CSDIter->second);
+
+ // Get the common name (CN).
+
+ std::map<wxString, wxString>::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<wxString,wxString> frmSSLCertificate::GetSubjectData(wxString SubjectData)
+{
+
+ std::map<wxString,wxString> 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
--- /dev/null
+#ifndef __frmSSLCertificate__
+#define __frmSSLCertificate__
+
+/**
+@file
+Subclass of frmSSLCertificateADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "common/sslcertstructs.h"
+#include <map>
+#include <wx/tokenzr.h>
+#include <wx/msgdlg.h>
+
+//// 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<wxString,wxString> 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__
--- /dev/null
+#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 <thread>
+/*#include <boost/filesystem.hpp>
+#include <boost/filesystem/fstream.hpp>
+#include <boost/filesystem/path.hpp>*/
+#include <wx/tokenzr.h>
+#include <wx/dir.h>
+
+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<wxString,bool>::iterator SAiter;
+ std::map<wxString,wxString>::iterator SAPiter;
+ int intResultFound = 0;
+
+ for (std::map<wxString, wxString>::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<int, void*>::iterator siter = SearchFrames.begin();
+ siter != SearchFrames.end(); siter++){
+
+ // Get the settings from the form.
+
+ XABSearchPanel *XABSPPtr = static_cast<XABSearchPanel*>(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<int,void*>::iterator iter = SearchFrames.begin();
+ iter != SearchFrames.end(); ++iter){
+
+ XABSearchPanel *XABSPPtr;
+
+ XABSPPtr = static_cast<XABSearchPanel*>(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<wxString, bool>::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<int,void*>::iterator iter = SearchFrames.begin();
+ iter != SearchFrames.end(); ++iter){
+
+ XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
+
+ XABSPPtr->EnableButtons(FALSE, TRUE);
+
+ }
+
+ } else if (SearchFrames.size() >= 2){
+
+ for (std::map<int,void*>::iterator iter = SearchFrames.begin();
+ iter != SearchFrames.end(); ++iter){
+
+ XABSPPtr = static_cast<XABSearchPanel*>(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<int,void*>::iterator iter;
+ iter = SearchFrames.find(event.GetInt());
+
+ // Remove a search setting frame from the list.
+
+ XABSearchPanel *XABSPPtr;
+ XABSPPtr = static_cast<XABSearchPanel*>(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<int,void*>::iterator iter = SearchFrames.begin();
+ iter != SearchFrames.end(); ++iter){
+
+ XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
+
+ XABSPPtr->EnableButtons(TRUE, TRUE);
+
+ }
+
+ } else if (SearchFrames.size() == 1){
+
+ for (std::map<int,void*>::iterator iter = SearchFrames.begin();
+ iter != SearchFrames.end(); ++iter){
+
+ XABSPPtr = static_cast<XABSearchPanel*>(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<int, void*>::iterator siter = SearchFrames.begin();
+ siter != SearchFrames.end(); siter++){
+
+ XABSearchPanel *XABSPPtr = static_cast<XABSearchPanel*>(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<int,void*>::iterator iter = SearchFrames.begin();
+ iter != SearchFrames.end(); ++iter){
+
+ XABSearchPanel *XABSPPtr;
+
+ XABSPPtr = static_cast<XABSearchPanel*>(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<long,wxString> *SRAcc,
+ std::map<long,wxString> *SRFN){
+
+ std::map<long,wxString>::iterator fniter;
+
+ // Check comparison code.
+
+ for (std::map<long,wxString>::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
--- /dev/null
+#ifndef __frmSearch__
+#define __frmSearch__
+
+/**
+@file
+Subclass of frmSearchADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "vcard/vcard.h"
+
+#include <map>
+
+
+//// 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<int, void*> SearchFrames;
+ std::map<wxString, bool> SearchAccounts;
+ std::map<wxString, wxString> SearchAccountsNames;
+ std::map<wxString, wxString> SearchAccountsPaths;
+ std::map<long, wxString> SearchResultAccount;
+ std::map<long, wxString> SearchResultFilename;
+ int ScrollGen = 0;
+ int SearchUID = 0;
+ bool SearchEnabled = FALSE;
+ bool StopMode = FALSE;
+ bool CheckDuplicate(wxString Filename,
+ wxString Account,
+ std::map<long,wxString> *SRAcc,
+ std::map<long,wxString> *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__
--- /dev/null
+#include <wx/wx.h>
+#include <curl/curl.h>
+
+#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
--- /dev/null
+#ifndef __frmUpdate__
+#define __frmUpdate__
+
+/**
+@file
+Subclass of frmUpdateADT, which is generated by wxFormBuilder.
+*/
+#include <wx/wx.h>
+#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__
--- /dev/null
+#include <wx/icon.h>
+#include <wx/mstream.h>
+
+#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<int,ImportDataContact>* ContactDataInc)
+{
+
+ // Go through the list and setup each contact for the list.
+
+ int Seek = 0;
+
+ for (std::map<int,ImportDataContact>::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<int,ImportDataContact>* ContactDataInc)
+{
+
+ int ItemIndex = 0;
+
+ for (std::map<int, ImportDataContact>::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<int, wxString>::iterator AccNameIter = AccountAccDirList.find(i);
+
+ AccountName = AccNameIter->second;
+
+ }
+
+
+ }
+
+ return AccountName;
+
+}
\ No newline at end of file
--- /dev/null
+#ifndef __frmImportContacts__
+#define __frmImportContacts__
+
+/**
+@file
+Subclass of frmImportContactsADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+
+#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<int, wxString> 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<int,ImportDataContact>* ContactDataInc);
+ void GetResults(std::map<int,ImportDataContact>* ContactDataInc);
+ wxString GetAccount();
+ //// end generated class members
+
+};
+
+#endif // __frmImportContacts__
--- /dev/null
+#include <map>
+#include <wx/wx.h>
+#include <wx/clipbrd.h>
+#include <wx/dataobj.h>
+
+#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<int,wxString> *ResultDataInc)
+{
+
+ wxString ResultDataText;
+
+ for (std::map<int,wxString>::iterator iter = ResultDataInc->begin();
+ iter != ResultDataInc->end(); iter++){
+
+ ResultDataText.Append(iter->second + wxT("\n"));
+
+ }
+
+}
\ No newline at end of file
--- /dev/null
+#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<int,wxString> *ResultDataInc);
+ //// end generated class members
+
+};
+
+#endif // __frmImportResults__
--- /dev/null
+#include <wx/wx.h>
+
+#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
--- /dev/null
+#include <map>
+#include <wx/wx.h>
+
+#include "../vcard/vcard.h"
+#include "../vcard/vcard34conv.h"
+#include "import-struct.h"
+
+std::map<int,ImportDataContact> ImportVCard3(wxArrayString *FileListInc){
+
+ std::map<int,ImportDataContact> FinalData;
+
+ // Go through each of the file names, load them up and collect the
+ // contact information.
+
+ std::map<int,wxString>* 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<int,wxString>::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;
+
+}
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+#include "import-struct.h"
+
+#ifndef IMPORT_VCARD3_H
+#define IMPORT_VCARD3_H
+
+std::map<int,ImportDataContact> ImportVCard3(wxArrayString *FileListInc);
+
+#endif
--- /dev/null
+#include <map>
+#include <wx/wx.h>
+
+#include "../vcard/vcard.h"
+#include "import-struct.h"
+
+std::map<int,ImportDataContact> ImportVCard4(wxArrayString *FileListInc){
+
+ std::map<int,ImportDataContact> FinalData;
+
+ // Go through each of the file names, load them up and collect the
+ // contact information.
+
+ std::map<int,wxString>* 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<int,wxString>::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;
+
+}
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+#include <map>
+
+#include "import.h"
+#include "import-struct.h"
+
+#ifndef IMPORT_VCARD4_H
+#define IMPORT_VCARD4_H
+
+std::map<int,ImportDataContact> ImportVCard4(wxArrayString *FileListInc);
+#endif
--- /dev/null
+#include <wx/filedlg.h>
+#include <wx/filename.h>
+#include <wx/regex.h>
+#include <wx/tokenzr.h>
+#include <wx/ffile.h>
+#include <map>
+
+#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<int,wxString> 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<int, ImportDataContact> 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<int,ImportDataContact>::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();
+
+}
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+
+#include "../frmMain.h"
+
+#ifndef IMPORT_IMPORT_H
+#define IMPORT_IMPORT_H
+
+void ImportRun(frmMain *frmMainPtrInc);
+
+#endif
--- /dev/null
+#include <stdlib.h>
+
+#include <wx/wx.h>
+#include <wx/icon.h>
+#include <wx/mstream.h>
+#include <wx/cmdline.h>
+#include <wx/wxprec.h>
+#include <wx/filename.h>
+#include <curl/curl.h>
+
+#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 <xestiacc.h>
+
+ 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;
+
+}
+
--- /dev/null
+GNU gdb (GDB; openSUSE 13.2) 7.8
+Copyright (C) 2014 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+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:
+<http://bugs.opensuse.org/>.
+Find the GDB manual and other documentation resources online at:
+<http://www.gnu.org/software/gdb/documentation/>.
+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
--- /dev/null
+#include "XABSearchPanel.h"
+#include "../bitmaps.h"
+
+#include <wx/mstream.h>
+
+
+
+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<frmSearch*>(SCHWinPtr);
+
+ wxCommandEvent eventsend(SE_ADDSEARCHSETTING);
+ wxPostEvent(SCHWin, eventsend);
+
+}
+
+void XABSearchPanel::RemoveSearchWidget( wxCommandEvent& event )
+{
+
+ frmSearch *SCHWin = static_cast<frmSearch*>(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
--- /dev/null
+#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__
--- /dev/null
+#include "frmSearchAccounts.h"
+#include "../frmMain.h"
+
+frmSearchAccounts::frmSearchAccounts( wxWindow* parent )
+:
+frmSearchAccountsADT( parent )
+{
+
+}
+
+frmSearchAccounts::~frmSearchAccounts(){
+
+}
+
+void frmSearchAccounts::LoadSearchAccounts(std::map<wxString, bool> *SearchAccounts,
+ std::map<wxString, wxString> *SearchAccountsList)
+{
+
+ SAPtr = SearchAccounts;
+ SALPtr = SearchAccountsList;
+ std::map<wxString, wxString>::iterator SALiter;
+ wxString AccDir;
+
+ // Load the search accounts into the Checklist.
+
+ wxArrayString AccList;
+
+ for (std::map<wxString, bool>::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<wxString, bool>::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<wxString, wxString>::iterator SALiter;
+
+ for (int i = 0; i < chlAccounts->GetCount(); i++){
+
+ AccDir = chlAccounts->GetString(i);
+
+ for (std::map<wxString, bool>::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();
+}
--- /dev/null
+#ifndef __frmSearchAccounts__
+#define __frmSearchAccounts__
+
+/**
+@file
+Subclass of frmSearchAccountsADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+#include <map>
+
+//// end generated include
+
+/** Implementing frmSearchAccountsADT */
+class frmSearchAccounts : public frmSearchAccountsADT
+{
+ private:
+ std::map<wxString,bool> *SAPtr;
+ std::map<wxString,wxString> *SALPtr;
+ protected:
+ // Handlers for frmSearchAccountsADT events.
+ void UpdateSelectedAccounts( wxCommandEvent& event );
+ void CloseWindow( wxCommandEvent& event );
+ public:
+ /** Constructor */
+ frmSearchAccounts( wxWindow* parent );
+ ~frmSearchAccounts();
+ void LoadSearchAccounts(std::map<wxString, bool> *SearchAccounts,
+ std::map<wxString, wxString> *SearchAccountsList);
+ //// end generated class members
+
+};
+
+#endif // __frmSearchAccounts__
--- /dev/null
+//-------------------------------------------------------------------
+// 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 <iostream>
+#include <fstream>
+#include <iomanip>
+#include <ios>
+
+/*#include <boost/filesystem.hpp>
+#include <boost/filesystem/path.hpp>
+#include <boost/filesystem/fstream.hpp>*/
+#include <wx/wx.h>
+#include <wx/dir.h>
+#include <wx/tokenzr.h>
+#include <string.h>
+
+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 <iostream>" << 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 <iostream>" << 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 <iostream>" << 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;
+
+}
--- /dev/null
+//-------------------------------------------------------------------
+// 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 <iostream>
+#include <iomanip>
+#include <ios>
+
+#include <boost/filesystem.hpp>
+#include <boost/filesystem/path.hpp>
+#include <boost/filesystem/fstream.hpp>
+#include <wx/wx.h>
+#include <string.h>
+
+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 <iostream>" << 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 <iostream>" << 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 <iostream>" << endl << endl;
+ finalhppfile << "#ifndef BITMAPS_H" << endl;
+ finalhppfile << "#define BITMAPS_H" << endl << endl;
+
+ for (int bi = 0; bi<dirlist.GetCount() ; bi++)
+ {
+ 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].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
--- /dev/null
+#include "vcard.h"
+#include <wx/file.h>
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <cmath>
+
+// 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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, wxString> ContactFileLines;
+ std::map<int, wxString>::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<int,wxString>::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<int,wxString>* vCard::GetAllCards(){
+
+ return &Cards;
+
+}
\ No newline at end of file
--- /dev/null
+#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
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/arrstr.h>
+#include <map>
+
+#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<int,wxString> 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<int,wxString>* GetAllCards();
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+
+class vCard{
+private:
+
+public:
+ vCard(int settingsize);
+ ~vCard();
+}
+
+class vCardSetting{
+private:
+ wxString SettingName;
+ wxString SettingValue;
+public:
+ vCardSetting(
+ wxString SettingName,
+ wxString SettingValue
+ );
+ ~vCardSetting();
+}
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/arrstr.h>
+
+#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
--- /dev/null
+#include "vcard34conv.h"
+#include "vcard.h"
+#include "../version.h"
+#include "../common/textprocessing.h"
+#include <wx/file.h>
+#include <cmath>
+#include <map>
+
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <wx/datetime.h>
+#include <wx/wx.h>
+
+// 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<int, wxString> ContactFileLines;
+ std::map<int, wxString>::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<int,wxString>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int> TypeSplitPoints;
+ std::map<int, int> TypeSplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<int, int>::iterator SPoint;
+ std::map<int, int>::iterator TSLiter;
+ std::map<int, int>::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<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, wxString> ContactFileLines;
+ std::map<int, bool> ContactFileProcessed;
+ std::map<int, bool> ContactFileProcessedWorking;
+ std::map<int, wxString>::iterator striter;
+ std::map<int,bool>::iterator iterbool;
+ std::map<int,bool>::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<wxString, wxString> PropertyData;
+ std::map<wxString, bool> PropertyLock;
+ std::map<wxString, wxString> TempPropertyData;
+ std::map<wxString, bool> TempPropertyLock;
+ std::map<int, int> TempSplitPoints;
+ std::map<int, int> TempSplitLength;
+ std::map<int, int>::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<int,wxString>::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<int,int> DataLineProcess;
+ std::map<int, bool>::iterator DLSLiter;
+ std::map<int,int> DataLineProcessOriginal;
+ int DataLineSeek = 0;
+ int DataLineSeekOrig = 0;
+
+ std::map<int,wxString>::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<int,wxString>::iterator itersub = ContactFileLines.begin();
+ itersub != ContactFileLines.end(); ++itersub){
+
+ //DataLineProcess = DataLineProcessOriginal;
+ //DataLineSeek = DataLineSeekOrig;
+
+ ContactLineSub = itersub->second;
+
+ ExtraLineSeekSub = TRUE;
+
+ iterboolsub = ContactFileProcessed.find(itersub->first);
+ std::map<int,bool>::iterator iterorig = ContactFileProcessed.find(itersub->first);
+ //std::map<int,bool>::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<int,wxString>::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<wxString, wxString>::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<wxString, wxString>::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<int,int>::iterator dpiter = DataLineProcess.begin();
+ dpiter != DataLineProcess.end(); ++dpiter){
+
+ DLSLiter = ContactFileProcessed.find(dpiter->second);
+ DLSLiter->second = TRUE;
+
+ }
+
+ for (std::map<int,int>::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<wxString, wxString>::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<int,wxString>::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<int,wxString>::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<int,int> DataLineProcess;
+ std::map<int, bool>::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<wxString, wxString>::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<int, wxString> NumberedName;
+ std::map<int, wxString> NumberedData;
+ std::map<int, wxString> NumberedPropValues;
+ std::map<int, wxString> NumberedPropOldValue;
+
+ std::map<int, wxString> UnNumberedName;
+ std::map<int, wxString> UnNumberedData;
+ std::map<int, wxString> UnNumberedPropValues;
+ std::map<int, wxString> UnNumberedPropOldValue;
+
+ // Part 1: Get the itemn number.
+
+ std::map<int,bool>::iterator iterboolsecsub;
+ std::map<int,wxString>::iterator itersub;
+ std::map<int, wxString> 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<wxString, void*> ItemMapIndex;
+ //std::map<wxString, wxString> 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<int,wxString>::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<int,wxString>::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<int,wxString> *ItemListData;
+ ItemListData = new std::map<int,wxString>;
+
+ 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<int,wxString>::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<wxString, void*>::iterator iter = ItemMapIndex.begin();
+ iter != ItemMapIndex.end(); ++iter){
+
+ std::map<int, wxString> *ItemDataPtr;
+
+ ItemDataPtr = (std::map<int,wxString>*)iter->second;
+
+ for (std::map<int,wxString>::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<wxString, wxString>::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<int, wxString> *ItemEraseData;
+
+ for (std::map<wxString, void*>::iterator iter = ItemMapIndex.begin();
+ iter != ItemMapIndex.end(); ++iter){
+
+ ItemEraseData = (std::map<int,wxString>*)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<wxString,wxString> *PropertyDataMap,
+ std::map<wxString,bool> *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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, wxString> 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<int, int>::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<wxString, wxString>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, wxString> 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<wxString, wxString>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::iterator SLiter;
+ std::map<wxString, bool>::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<int, int>::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<int, int> SplitPoints;
+ std::map<int, int> SplitLength;
+ std::map<int, int>::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<int,int> *SplitPoints,
+ std::map<int,int> *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<int,int> *SplitPoints,
+ std::map<int,int> *SplitLength,
+ int intSize,
+ std::map<wxString,wxString> *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
--- /dev/null
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/arrstr.h>
+#include <map>
+#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<int,int> *SplitPoints,
+ std::map<int,int> *SplitLength,
+ int intSize);
+ void SplitValuesData(wxString *PropertyLine,
+ std::map<int,int> *SplitPoints,
+ std::map<int,int> *SplitLength,
+ int intSize,
+ std::map<wxString, wxString> *SplitData);
+ void ConvertV4PropertyProc(wxString *wxSPropertyName,
+ wxString *wxSPropertySeg1Ptr, wxString *wxSPropertySeg2Ptr,
+ wxString *wxSPropertyPropValuesOut, wxString *wxSPropertyDataOut,
+ wxString *wxSPropertyXVCard4Value, wxString *wxSPropertyDataNameOut,
+ std::map<wxString, wxString> *PropertyData,
+ std::map<wxString, bool> *PropertyLock,
+ bool ProcessItemData, bool *VCardV3Value, bool *XVCardV4Value);
+ void ProcessCaptureStringsB () {} ;
+ void ProcessCaptureStringsProc(wxString *strCapture);
+
+ template<typename StringCapture, typename... Args>
+ void ProcessCaptureStringsB(StringCapture *string, Args*... args) {
+
+ ProcessCaptureStringsProc(string);
+ ProcessCaptureStringsB(args...);
+
+ }
+
+ template<typename... Args>
+ void ProcessCaptureStrings(Args*... args) {
+
+ //int intSeekSelectedData = 0;
+
+ ProcessCaptureStringsB(args...);
+
+ }
+};
+
+#endif
\ No newline at end of file
--- /dev/null
+// 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
--- /dev/null
+#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
--- /dev/null
+#include <wx/combo.h>
+#include <wx/treectrl.h>
+#include <wx/treebase.h>
+#include <wx/wx.h>
+
+#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