From 677d919d8f9ffc26b332f717e9cbddf4c0670dfe Mon Sep 17 00:00:00 2001 From: Frederic Cervenansky Date: Wed, 29 Apr 2009 08:23:03 +0000 Subject: [PATCH] Added create DB. --- src2/creaImageIOWxGimmickView.cpp | 118 +++- src2/creaImageIOWxGimmickView.h | 3 + src2/icons/create-database-48x48.png | Bin 0 -> 4410 bytes src2/icons/create-database.xpm | 867 +++++++++++++++++++++++++++ 4 files changed, 956 insertions(+), 32 deletions(-) create mode 100644 src2/icons/create-database-48x48.png create mode 100644 src2/icons/create-database.xpm diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index 9f5a53f..ce9c01e 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -9,6 +9,7 @@ using namespace crea; #include "icons/page-down.xpm" #include "icons/remove.xpm" #include "icons/database-add.xpm" +#include "icons/create-database.xpm" #include "icons/help.xpm" #include "icons/synchronize.xpm" @@ -23,12 +24,13 @@ namespace creaImageIO // The ids of the different tools enum { - TOOL_ADDFILES_ID = 1, - TOOL_ADDDIR_ID = 2, - TOOL_REMOVE_ID = 3, - TOOL_ADDDATABASE_ID = 4, - TOOL_HELP_ID = 5, - TOOL_SYNCHRONIZE_ID = 6 + TOOL_CREATEDB_ID = 1, + TOOL_ADDFILES_ID = 2, + TOOL_ADDDIR_ID = 3, + TOOL_ADDDATABASE_ID = 4, + TOOL_REMOVE_ID = 5, + TOOL_SYNCHRONIZE_ID = 6, + TOOL_HELP_ID = 7 }; //====================================================================== @@ -45,7 +47,8 @@ namespace creaImageIO Icon_remove, Icon_database_add, Icon_help, - Icon_synchronize + Icon_synchronize, + Icon_create_database } icon_id; //================================================================ @@ -176,6 +179,11 @@ namespace creaImageIO mToolBar = new wxToolBar(this,-1,wxDefaultPosition,wxDefaultSize, style); + mToolAddFile = mToolBar->AddTool( TOOL_CREATEDB_ID, + _T("Create database"), + mIcon->GetBitmap(Icon_create_database), + _T("Create DB from an Attributes Descriptor file") + ); mToolAddFile = mToolBar->AddTool( TOOL_ADDFILES_ID, _T("Add file(s)"), mIcon->GetBitmap(Icon_page_down), @@ -186,26 +194,26 @@ namespace creaImageIO mIcon->GetBitmap(Icon_folder_down), _T("Add the content of a folder to database") ); + mToolAddDatabase = mToolBar->AddTool( TOOL_ADDDATABASE_ID, + _T("Open database"), + mIcon->GetBitmap(Icon_database_add), + _T("Open a local or distant database") + ); mToolRemove = mToolBar->AddTool( TOOL_REMOVE_ID, _T("Remove"), mIcon->GetBitmap(Icon_remove), _T("Remove selected items") ); - mToolAddDatabase = mToolBar->AddTool( TOOL_ADDDATABASE_ID, - _T("Open database"), - mIcon->GetBitmap(Icon_database_add), - _T("Open a local or distant database") + mToolSynchronize = mToolBar->AddTool( TOOL_SYNCHRONIZE_ID, + _T("Synchronize"), + mIcon->GetBitmap(Icon_synchronize), + _T("Synchronizes the database with disk") ); - mToolHelp = mToolBar->AddTool( TOOL_HELP_ID, + mToolHelp = mToolBar->AddTool( TOOL_HELP_ID, _T("Help"), mIcon->GetBitmap(Icon_help), _T("Open help window") ); - mToolSynchronize = mToolBar->AddTool( TOOL_SYNCHRONIZE_ID, - _T("Synchronize"), - mIcon->GetBitmap(Icon_synchronize), - _T("Synchronizes the database with disk") - ); //const wxBitmap& bitmap1, const wxString& shortHelpString = "", wxItemKind kind = wxITEM_NORMAL) mToolBar->Realize(); @@ -236,7 +244,7 @@ namespace creaImageIO void WxGimmickView::GetSelectedImages(std::vector& s, int dim) { std::vector files; - GetTreeViewMap()["Local database"]->GetSelectedAsString(files); + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetSelectedAsString(files); ReadImagesNotThreaded(s,files,dim); } //====================================================================== @@ -244,7 +252,7 @@ namespace creaImageIO //====================================================================== void WxGimmickView::GetSelectedFiles(std::vector& s) { - GetTreeViewMap()["Local database"]->GetSelectedAsString(s); + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetSelectedAsString(s); } //====================================================================== @@ -274,6 +282,7 @@ namespace creaImageIO icons[Icon_database_add] = wxIcon(database_add_xpm); icons[Icon_help] = wxIcon(help_xpm); icons[Icon_synchronize] = wxIcon(synchronize_xpm); + icons[Icon_create_database] = wxIcon(create_database_xpm); // unsigned int NbIcons = 8; // Make an image list containing small icons @@ -508,7 +517,7 @@ namespace creaImageIO //Going up prio = maxprio + 20; std::vector up; - GetTreeViewMap()["Local database"]->GetNodes(up,true); + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetNodes(up,true); std::vector::iterator iterUp; for(iterUp=up.begin();iterUp!=up.end();++iterUp) { @@ -526,7 +535,7 @@ namespace creaImageIO //Going down prio = maxprio + 19; std::vector down; - GetTreeViewMap()["Local database"]->GetNodes(down,false); + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->GetNodes(down,false); std::vector::iterator iterDown; for(iterDown=down.begin();iterDown!=down.end();++iterDown) { @@ -590,7 +599,7 @@ namespace creaImageIO { //TODO Select current tree handler wxBusyCursor busy; - GetTreeViewMap()["Local database"]->RemoveSelected(); + GetTreeViewMap()[crea::wx2std(mNotebook->GetPageText(mNotebook->GetSelection()))]->RemoveSelected(); ClearSelection(); } //================================================= @@ -607,14 +616,14 @@ namespace creaImageIO void WxGimmickView::OnSynchronize(wxCommandEvent& event) { wxBusyCursor busy; - const wxString choices[] = { _T("Check database for file deletion or addition and give a report."), - _T("Check database for file deletion or addition and attribute change and give a report."), - _T("Repair database (removes deleted files and adds new files)."), - _T("Repair database (removes deleted files, adds new files and resets changed attributes).") } ; + const wxString choices[] = { _T("Check database for files deletion and addition and give a report."), + _T("Check database for files deletion, addition and attributes change. Then give a report."), + _T("Repair database (remove deleted files and add new files)."), + _T("Repair database (remove deleted files, add new files and reset changed attributes).") } ; wxSingleChoiceDialog dialog(this, _T("Select one of the following synchronization actions:\n") - _T("Plase note that, due to the heavy amount of operations required, this action might take a while."), + _T("Please note that, due to the heavy amount of operations required, this action might take a while."), _T("Synchronization Settings"), WXSIZEOF(choices), choices); @@ -712,26 +721,71 @@ namespace creaImageIO std::stringstream st; for(int i = 0; i< files.size(); i++) { - st<< "remote_" << i+1; + //get name of DB (file name) + size_t pos = files[i].find_last_of("\\"); + std::string name = crea::wx2std(files[i].substr(pos+1)); + pos = name.find_last_of("."); + name = name.substr(0,pos); //create TreeHandler - mGimmick->addDB(st.str(), crea::wx2std(files[i])); + mGimmick->addDB(name, crea::wx2std(files[i])); //create TreeView - CreateSingleTreeView(st.str()); + CreateSingleTreeView(name); } } + } + //////////////////////////////////////////////////// + // Create a DB from an Attributes Descriptor files // + // @param event : WxEvent // + // @return : - // + ////////////////////////////////////////////////// + void WxGimmickView::OnCreateDB(wxCommandEvent& event) + { - + //Select DB + long style = wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST; + std::string wc("*.txt"); + wxFileDialog* FD = new wxFileDialog( 0, + _T("Select file"), + _T(""), + _T(""), + crea::std2wx(wc), + style, + wxDefaultPosition); + + if (FD->ShowModal()==wxID_OK) + { + wxBusyCursor busy; + wxArrayString afile; + FD->GetPaths(afile); + //get name of DB (file name) + std::string file = crea::wx2std(afile[0]); + size_t pos = file.find_last_of("\\"); + std::string name = file.substr(pos+1); + std::string directory = file.substr(0,pos); + pos = name.find_last_of("."); + name = name.substr(0,pos); + //get directory to store DB + directory += "\\" + name + ".sqlite3"; + //create createDB + mGimmick->createDB(name, file,directory); + //create TreeHandler + mGimmick->addDB(name, directory); + //create TreeView + CreateSingleTreeView(name); + } } //================================================= //================================================= BEGIN_EVENT_TABLE(WxGimmickView, wxPanel) + EVT_TOOL(TOOL_CREATEDB_ID, WxGimmickView::OnCreateDB) + EVT_TOOL(TOOL_ADDFILES_ID, WxGimmickView::OnCreateDB) EVT_TOOL(TOOL_ADDFILES_ID, WxGimmickView::OnAddFiles) EVT_TOOL(TOOL_ADDDIR_ID, WxGimmickView::OnAddDir) + EVT_TOOL(TOOL_ADDDATABASE_ID, WxGimmickView::OnAddDB) EVT_TOOL(TOOL_REMOVE_ID, WxGimmickView::OnRemove) EVT_TOOL(TOOL_SYNCHRONIZE_ID, WxGimmickView::OnSynchronize) - EVT_TOOL(TOOL_ADDDATABASE_ID, WxGimmickView::OnAddDB) END_EVENT_TABLE() //================================================= diff --git a/src2/creaImageIOWxGimmickView.h b/src2/creaImageIOWxGimmickView.h index 3f46561..33870d1 100644 --- a/src2/creaImageIOWxGimmickView.h +++ b/src2/creaImageIOWxGimmickView.h @@ -125,6 +125,9 @@ namespace creaImageIO // callback to add a database void OnAddDB(wxCommandEvent& event); + //Create a DB from an Attributes Descriptor files + void OnCreateDB(wxCommandEvent& event); + /// Progress dialog wxProgressDialog* mProgressDialog; ///The selection's maximum dimension diff --git a/src2/icons/create-database-48x48.png b/src2/icons/create-database-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..289bc71cf2833a3e2805dc0aa420547f367d5c4d GIT binary patch literal 4410 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 c #AEB8BE", +", c #C8CFD3", +"' c #D9DDE0", +") c #E7EAEC", +"! c #E9ECED", +"~ c #E6E9EB", +"{ c #DDE1E4", +"] c #D1D7DA", +"^ c #C8CFD2", +"/ c #C4CBCF", +"( c #C0C8CC", +"_ c #BEC6CB", +": c #C0C7CC", +"< c #C2CACE", +"[ c #C5CCD0", +"} c #CCD2D6", +"| c #D7DDE0", +"1 c #E3E7E9", +"2 c #E8EBED", +"3 c #DDE1E3", +"4 c #C9D0D3", +"5 c #ACB6BC", +"6 c #B2BBC1", +"7 c #EEF0F2", +"8 c #D7DCDF", +"9 c #B8C0C5", +"0 c #A1ADB3", +"a c #A2AEB4", +"b c #A6B1B8", +"c c #C1C9CE", +"d c #C8D0D4", +"e c #C8D0D6", +"f c #C6CFD5", +"g c #C0CBD2", +"h c #BBC6CE", +"i c #B4C1C9", +"j c #ACBAC2", +"k c #A2B1BA", +"l c #99A9B2", +"m c #92A2AC", +"n c #94A3AC", +"o c #9BA8AF", +"p c #ADB8BE", +"q c #CFD5D9", +"r c #EAEDEF", +"s c #E0E4E6", +"t c #B9C2C7", +"u c #B8C1C6", +"v c #EEF0F1", +"w c #D6DBDF", +"x c #A8B3B9", +"y c #9AA8B0", +"z c #B4BEC6", +"A c #CED6DC", +"B c #E6EBEF", +"C c #ECF0F3", +"D c #F0F3F5", +"E c #F3F6F7", +"F c #F3F6F8", +"G c #F1F4F6", +"H c #EDF1F4", +"I c #E9EEF1", +"J c #E3E9EE", +"K c #DFE6EB", +"L c #D9E2E8", +"M c #D4DEE5", +"N c #D0DBE2", +"O c #CBD7DF", +"P c #C5D3DC", +"Q c #BFCFD9", +"R c #B9CAD5", +"S c #B4C7D2", +"T c #AEC1CF", +"U c #A3B7C4", +"V c #96A8B5", +"W c #899BA6", +"X c #C8CFD4", +"Y c #F0F2F3", +"Z c #BCC4C8", +"` c #CED4D8", +" . c #EBEEEF", +".. c #A6B2B8", +"+. c #ABB8C0", +"@. c #CCD6DD", +"#. c #D8E1E7", +"$. c #E0E6EB", +"%. c #E4EAEE", +"&. c #EAEFF2", +"*. c #EEF1F4", +"=. c #F8F9FA", +"-. c #F9FAFB", +";. c #F4F6F8", +">. c #EEF2F5", +",. c #EBEFF2", +"'. c #E4EAEF", +"). c #E0E7EC", +"!. c #DAE3E8", +"~. c #C6D3DD", +"{. c #B5C7D3", +"]. c #AFC2CF", +"^. c #ABBFCD", +"/. c #A8BCCB", +"(. c #A5B9C8", +"_. c #9FB4C1", +":. c #91A5B1", +"<. c #94A4AD", +"[. c #DDE2E5", +"}. c #D8DDDF", +"|. c #FCFCFC", +"1. c #B0BBC2", +"2. c #C2CED6", +"3. c #CFDAE2", +"4. c #EFF2F5", +"5. c #A2B7C5", +"6. c #9EB4C2", +"7. c #99AFBD", +"8. c #8FA2AD", +"9. c #FCFCFD", +"0. c #FDFDFD", +"a. c #D0DAE1", +"b. c #CAD7DF", +"c. c #EDF0F3", +"d. c #E0E6EC", +"e. c #A7BCCB", +"f. c #A4BAC8", +"g. c #A1B7C5", +"h. c #9DB4C2", +"i. c #9AB1C0", +"j. c #FAFBFB", +"k. c #D5DEE3", +"l. c #C1CED4", +"m. c #F5F8F9", +"n. c #D5DFE5", +"o. c #CED9E1", +"p. c #D3DDE4", +"q. c #D6E0E6", +"r. c #DCE4EA", +"s. c #E2E8ED", +"t. c #E5EBEF", +"u. c #EDF1F3", +"v. c #E6ECEF", +"w. c #DDE5EA", +"x. c #D7E1E7", +"y. c #D3DDE5", +"z. c #CAD6DE", +"A. c #C4D2DC", +"B. c #BECED8", +"C. c #B8C9D5", +"D. c #B4C6D2", +"E. c #A7BBCA", +"F. c #A4B9C8", +"G. c #A8BCC9", +"H. c #E3E9ED", +"I. c #E8EDF1", +"J. c #628293", +"K. c #ADBEC8", +"L. c #F4F6F7", +"M. c #ECF1F4", +"N. c #D5DFE6", +"O. c #D2DCE3", +"P. c #CCD8E0", +"Q. c #C9D5DE", +"R. c #C2D1DB", +"S. c #BCCCD7", +"T. c #B7C9D4", +"U. c #B2C4D1", +"V. c #ADC0CE", +"W. c #AABECC", +"X. c #A6BBCA", +"Y. c #B0C2CE", +"Z. c #F5F7F9", +"`. c #DDE5EB", +" + c #AABDCB", +".+ c #5E7F91", +"++ c #628394", +"@+ c #728FA0", +"#+ c #AABCC6", +"$+ c #E1E7EB", +"%+ c #F7F9FA", +"&+ c #F0F3F6", +"*+ c #E6EBF0", +"=+ c #E5EAEF", +"-+ c #DBE4E9", +";+ c #C0D0D9", +">+ c #BACBD6", +",+ c #B6C8D3", +"'+ c #B7C8D4", +")+ c #C8D5DE", +"!+ c #DAE3E9", +"~+ c #E3EAEE", +"{+ c #C3D2DB", +"]+ c #ADC1CE", +"^+ c #A4B9C7", +"/+ c #668698", +"(+ c #6A899B", +"_+ c #7391A1", +":+ c #87A1B0", +"<+ c #ABBDC8", +"[+ c #CFD9E0", +"}+ c #E7ECEF", +"|+ c #F2F5F7", +"1+ c #F3F5F7", +"2+ c #EFF3F5", +"3+ c #EBF0F3", +"4+ c #E9EEF2", +"5+ c #F6F8FA", +"6+ c #DFE7EC", +"7+ c #658697", +"8+ c #6E8D9E", +"9+ c #7291A2", +"0+ c #7794A6", +"a+ c #7B98A9", +"b+ c #829DAE", +"c+ c #91AAB9", +"d+ c #AFC2CD", +"e+ c #BECDD6", +"f+ c #E6ECF0", +"g+ c #FBFCFC", +"h+ c #D2DDE4", +"i+ c #BACBD5", +"j+ c #819DAE", +"k+ c #88A3B3", +"l+ c #8EA7B7", +"m+ c #93ACBB", +"n+ c #99B0BF", +"o+ c #A0B6C4", +"p+ c #A6BBC9", +"q+ c #ACBFCE", +"r+ c #C1D0DA", +"s+ c #FAFBFC", +"t+ c #D8E2E8", +"u+ c #93ABBB", +"v+ c #A6BAC9", +"w+ c #D6DFE6", +"x+ c #728D9D", +"y+ c #7693A3", +"z+ c #6E8D9F", +"A+ c #B6C5CF", +"B+ c #AAB5BB", +"C+ c #CAD1D5", +"D+ c #788D99", +"E+ c #698594", +"F+ c #7390A1", +"G+ c #D9E0E6", +"H+ c #B4C0C8", +"I+ c #9EACB5", +"J+ c #C2CACF", +"K+ c #ECEFF0", +"L+ c #EBEDEF", +"M+ c #909EA5", +"N+ c #607580", +"O+ c #4B6370", +"P+ c #47606D", +"Q+ c #526C7A", +"R+ c #5F7988", +"S+ c #6C8695", +"T+ c #7B94A3", +"U+ c #859EAD", +"V+ c #8FA6B5", +"W+ c #9AB0BE", +"X+ c #A3B8C7", +"Y+ c #DCE4E9", +"Z+ c #E0E6EA", +"`+ c #DEE4E7", +" @ c #DBE0E3", +".@ c #CDD4D8", +"+@ c #ADB9BF", +"@@ c #8D9DA6", +"#@ c #6E828D", +"$@ c #4B6471", +"%@ c #49626E", +"&@ c #5C727D", +"*@ c #819199", +"=@ c #DDE2E4", +"-@ c #D4D9DC", +";@ c #8F9EA6", +">@ c #5C7380", +",@ c #576F7C", +"'@ c #57707D", +")@ c #58717E", +"!@ c #5B7481", +"~@ c #5E7784", +"{@ c #607986", +"]@ c #627A88", +"^@ c #667E8B", +"/@ c #6A818E", +"(@ c #6A818D", +"_@ c #687F8B", +":@ c #677E8A", +"<@ c #657C89", +"[@ c #617985", +"}@ c #5C7481", +"|@ c #5A727E", +"1@ c #768993", +"2@ c #FEFEFE", +"3@ c #889AA4", +"4@ c #687F8C", +"5@ c #728793", +"6@ c #F9FAFA", +"7@ c #D4DEDD", +"8@ c #C6D1D8", +"9@ c #E7EBED", +"0@ c #94A5AF", +"a@ c #7E929E", +"b@ c #8295A1", +"c@ c #ADB6BD", +"d@ c #BEC5C9", +"e@ c #C6CBCF", +"f@ c #BDC4C8", +"g@ c #CED2D5", +"h@ c #E9EBEC", +"i@ c #ABC1C0", +"j@ c #648395", +"k@ c #B4C3CC", +"l@ c #EDF0F2", +"m@ c #D2D9DE", +"n@ c #A7B5BE", +"o@ c #97A8B3", +"p@ c #93A5B0", +"q@ c #9AA9B3", +"r@ c #BCC5CA", +"s@ c #E3E4E6", +"t@ c #F3F4F4", +"u@ c #E5F1E8", +"v@ c #D4EADB", +"w@ c #B9DDC3", +"x@ c #B7DCC1", +"y@ c #D2E8D9", +"z@ c #E2EFE5", +"A@ c #EFF1F0", +"B@ c #E2E3E3", +"C@ c #C7D1CB", +"D@ c #7B97A6", +"E@ c #B2C2CB", +"F@ c #E9EEF0", +"G@ c #D7DEE3", +"H@ c #C1CDD4", +"I@ c #AFBEC8", +"J@ c #A4B5C1", +"K@ c #A3B4BF", +"L@ c #A3B4C0", +"M@ c #BBC5CC", +"N@ c #E9EAEB", +"O@ c #F5F9F5", +"P@ c #A2D3B1", +"Q@ c #48A86C", +"R@ c #128F41", +"S@ c #018636", +"T@ c #008636", +"U@ c #0F8D3F", +"V@ c #43A567", +"W@ c #98CEA9", +"X@ c #EEF3EF", +"Y@ c #E5E4E4", +"Z@ c #6F8E9F", +"`@ c #8AA4B2", +" # c #B0C1CC", +".# c #F2F4F6", +"+# c #E8EDF0", +"@# c #DBE2E8", +"## c #D6DEE4", +"$# c #D3DCE3", +"%# c #D2DBE2", +"&# c #D1DAE1", +"*# c #D5DEE4", +"=# c #D8E0E5", +"-# c #F7F8F7", +";# c #B0DABC", +"># c #21974D", +",# c #038A38", +"'# c #109142", +")# c #20994F", +"!# c #2A9F57", +"~# c #2FA15C", +"{# c #30A25C", +"]# c #2CA059", +"^# c #249B53", +"/# c #169447", +"(# c #078B3B", +"_# c #199346", +":# c #A4D4B2", +"<# c #EFF0EF", +"[# c #CCD3CE", +"}# c #7C98A9", +"|# c #86A1B1", +"1# c #94ABBA", +"2# c #A4B9C6", +"3# c #B4C5D0", +"4# c #C2D0D9", +"5# c #CFDAE1", +"6# c #D8E1E8", +"7# c #ECF1F3", +"8# c #F2F2F2", +"9# c #F5F9F6", +"0# c #75C08C", +"a# c #078E3B", +"b# c #129444", +"c# c #29A057", +"d# c #31A55D", +"e# c #32A65E", +"f# c #32A75E", +"g# c #31A65D", +"h# c #32A55E", +"i# c #31A45D", +"j# c #2EA25A", +"k# c #1C994C", +"l# c #098E3C", +"m# c #66B881", +"n# c #ECF1ED", +"o# c #CBD4CE", +"p# c #E5E9EB", +"q# c #FBFBFB", +"r# c #69BB82", +"s# c #048F38", +"t# c #1D9C4D", +"u# c #32A95D", +"v# c #33AA5D", +"w# c #36AB5D", +"x# c #A3D9B6", +"y# c #AFDEC1", +"z# c #AFDEC0", +"A# c #A0D7B5", +"B# c #2BA65A", +"C# c #32A85D", +"D# c #28A056", +"E# c #0A913D", +"F# c #57B375", +"G# c #F3F4F3", +"H# c #C7CFC9", +"I# c #DAE1E6", +"J# c #F8F8F8", +"K# c #90CEA2", +"L# c #029037", +"M# c #21A04F", +"N# c #34AA5D", +"O# c #3AAD5D", +"P# c #41AE5C", +"Q# c #47B05C", +"R# c #4DB15D", +"S# c #E9F5EB", +"T# c #E6F4EC", +"U# c #32A658", +"V# c #45AF5C", +"W# c #3FAE5C", +"X# c #38AC5D", +"Y# c #2CA459", +"Z# c #09923D", +"`# c #7AC391", +" $ c #EBECEB", +".$ c #EBEEF0", +"+$ c #D6EDDB", +"@$ c #119941", +"#$ c #1BA04A", +"$$ c #3CAD5C", +"%$ c #50B25C", +"&$ c #56B45C", +"*$ c #5AB65B", +"=$ c #5EB85C", +"-$ c #EBF6EB", +";$ c #FFFFFF", +">$ c #3AA957", +",$ c #59B55B", +"'$ c #54B35C", +")$ c #4DB15C", +"!$ c #43AE5C", +"~$ c #39AC5D", +"{$ c #29A556", +"]$ c #0D963E", +"^$ c #C6E4CE", +"/$ c #D9DBD9", +"($ c #62BC7D", +"_$ c #0E9B3C", +":$ c #42AE5B", +"<$ c #58B55B", +"[$ c #5FB85B", +"}$ c #65BB5B", +"|$ c #69BC5B", +"1$ c #6DBE5D", +"2$ c #EDF7EB", +"3$ c #41AC57", +"4$ c #68BB5B", +"5$ c #63BA5B", +"6$ c #5DB75B", +"7$ c #4CB15C", +"8$ c #3FAE5D", +"9$ c #1BA049", +"0$ c #4DB36E", +"a$ c #F2F1F1", +"b$ c #6E8A99", +"c$ c #718EA0", +"d$ c #E2E7EA", +"e$ c #E2F2E4", +"f$ c #29A440", +"g$ c #3BAA4D", +"h$ c #56B45B", +"i$ c #67BB5B", +"j$ c #6DBE5C", +"k$ c #72BF5F", +"l$ c #76C061", +"m$ c #79C264", +"n$ c #EEF7EC", +"o$ c #47AE5A", +"p$ c #74C060", +"q$ c #70BF5D", +"r$ c #6BBD5B", +"s$ c #64BA5B", +"t$ c #5CB75B", +"u$ c #52B35C", +"v$ c #40AD59", +"w$ c #20A23E", +"x$ c #D1EAD7", +"y$ c #CDD5CD", +"z$ c #A6B2B9", +"A$ c #E1E5E7", +"B$ c #7B909D", +"C$ c #6B8797", +"D$ c #728E9F", +"E$ c #7B98A8", +"F$ c #C2D0DA", +"G$ c #EFF1F3", +"H$ c #ADDBB4", +"I$ c #52B030", +"J$ c #6BBC54", +"K$ c #78C163", +"L$ c #7CC367", +"M$ c #80C56A", +"N$ c #83C66C", +"O$ c #EFF8ED", +"P$ c #4BB05E", +"Q$ c #7FC469", +"R$ c #7BC265", +"S$ c #76C161", +"T$ c #60B85B", +"U$ c #65BA59", +"V$ c #56B33D", +"W$ c #93D1A0", +"X$ c #E2E1E1", +"Y$ c #EFF1F2", +"Z$ c #9AA7AD", +"`$ c #627580", +" % c #4C6370", +".% c #435C69", +"+% c #6E8897", +"@% c #7D96A5", +"#% c #89A2B2", +"$% c #96ADBC", +"%% c #F8F8F9", +"&% c #82C786", +"*% c #73BC32", +"=% c #93CB50", +"-% c #78C365", +";% c #A7D89C", +">% c #ACD9A2", +",% c #B0DBA5", +"'% c #B2DCA7", +")% c #B1DBA5", +"!% c #AFDAA1", +"~% c #F5FAF3", +"{% c #F0F8F4", +"]% c #90CE9B", +"^% c #AFDAA2", +"/% c #AEDAA4", +"(% c #ABD8A0", +"_% c #A5D79C", +":% c #5EB862", +"<% c #8ECA51", +"[% c #79C044", +"}% c #70C07C", +"|% c #EDECEC", +"1% c #8E9DA5", +"2% c #58707D", +"3% c #536C79", +"4% c #627A87", +"5% c #677E8B", +"6% c #82959F", +"7% c #76C172", +"8% c #82C338", +"9% c #9BCE4E", +"0% c #A2D36E", +"a% c #F8FCF7", +"b% c #F9FCFB", +"c% c #5BB66A", +"d% c #86C64A", +"e% c #5AB557", +"f% c #FDFEFE", +"g% c #8497A1", +"h% c #647C89", +"i% c #647B88", +"j% c #80939D", +"k% c #72C063", +"l% c #86C43A", +"m% c #ABD669", +"n% c #FAFCF6", +"o% c #5CB76A", +"p% c #8BC84C", +"q% c #57B44C", +"r% c #F3F3F3", +"s% c #CFD8DE", +"t% c #E1E6E8", +"u% c #889AA5", +"v% c #778C99", +"w% c #8C9DA8", +"x% c #81C771", +"y% c #85C439", +"z% c #AAD568", +"A% c #FAFCF5", +"B% c #5BB76A", +"C% c #8AC74B", +"D% c #66BB55", +"E% c #638294", +"F% c #BBC9D1", +"G% c #CAD3D8", +"H% c #A1B0B9", +"I% c #90A2AD", +"J% c #8EA1AC", +"K% c #8FA1AC", +"L% c #99A9B3", +"M% c #F6F7F8", +"N% c #97D087", +"O% c #7FC136", +"P% c #96CB45", +"Q% c #B4DA84", +"R% c #B3DA89", +"S% c #B4DB8C", +"T% c #BADE9D", +"U% c #C1E1AC", +"V% c #F7FBF5", +"W% c #F1F9F5", +"X% c #A0D5A6", +"Y% c #BBDE9E", +"Z% c #B4DB8D", +"`% c #B0D987", +" & c #6EBB43", +".& c #99CD4B", +"+& c #82C447", +"@& c #8ACA7A", +"#& c #EFEFEF", +"$& c #638495", +"%& c #7F9AA9", +"&& c #B9C7D0", +"*& c #E8ECEF", +"=& c #E8ECEE", +"-& c #D1D9DE", +";& c #BBC7CF", +">& c #ABB9C4", +",& c #A5B5C0", +"'& c #A1B2BD", +")& c #A0B1BC", +"!& c #A3B3BE", +"~& c #BFE2B4", +"{& c #73BC36", +"]& c #95CB44", +"^& c #83C124", +"/& c #82C023", +"(& c #83C126", +"_& c #89C434", +":& c #F1F8E7", +"<& c #4EAF41", +"[& c #8CC637", +"}& c #76BF42", +"|& c #ACD99F", +"1& c #E7E6E6", +"2& c #7593A3", +"3& c #94ABB8", +"4& c #B7C7D0", +"5& c #DBE3E8", +"6& c #EBEFF1", +"7& c #E2E8EC", +"8& c #DBE2E7", +"9& c #D5DDE3", +"0& c #CFD9DF", +"a& c #CDD7DE", +"b& c #CBD5DD", +"c& c #C9D4DC", +"d& c #E9ECEF", +"e& c #E8F4E3", +"f& c #73BD49", +"g& c #85C22A", +"h& c #83C125", +"i& c #EFF7E4", +"j& c #4CAE3D", +"k& c #7FC028", +"l& c #6ABA43", +"m& c #DCEED6", +"n& c #D7DDD3", +"o& c #92AAB9", +"p& c #A9BCC9", +"q& c #B9C9D3", +"r& c #C7D4DC", +"s& c #E1E8ED", +"t& c #E7EDF0", +"u& c #9BD084", +"v& c #7CBE2E", +"w& c #74BC2D", +"x& c #8CCA75", +"y& c #F6F6F6", +"z& c #F0F2F4", +"A& c #E2F1DB", +"B& c #7EC150", +"C& c #81C025", +"D& c #82C124", +"E& c #7DBF25", +"F& c #74BD48", +"G& c #D7ECCF", +"H& c #E4E5E2", +"I& c #DDE4E9", +"J& c #BCDFA9", +"K& c #81C13F", +"L& c #82C024", +"M& c #80C024", +"N& c #78BE3B", +"O& c #AED89A", +"P& c #607F91", +"Q& c #EBEEF1", +"R& c #AFD993", +"S& c #86C441", +"T& c #CBE5A8", +"U& c #D0E9BB", +"V& c #C1E2AE", +"W& c #5DB435", +"X& c #7FBF24", +"Y& c #7DC03D", +"Z& c #A4D387", +"`& c #F8F9F7", +" * c #DADDD5", +".* c #6D8491", +"+* c #638394", +"@* c #F2F4F5", +"#* c #F9FBF7", +"$* c #BADE9E", +"%* c #90C950", +"&* c #82C128", +"** c #7EBF28", +"=* c #87C54B", +"-* c #B1DA94", +";* c #F4F8F1", +">* c #E1E4DC", +",* c #728792", +"'* c #F5F6F7", +")* c #FBFCFA", +"!* c #D7EBC4", +"~* c #9FD06C", +"{* c #8BC642", +"]* c #81C027", +"^* c #81C024", +"/* c #7EBF27", +"(* c #86C440", +"_* c #99CD66", +":* c #D1E9BD", +"<* c #E2E5DE", +"[* c #758893", +"}* c #738A97", +"|* c #738F9E", +"1* c #7793A4", +"2* c #FAFAFB", +"3* c #D2E9BB", +"4* c #B3DA8B", +"5* c #98CD5D", +"6* c #91C94D", +"7* c #8DC746", +"8* c #8CC746", +"9* c #8FC84D", +"0* c #95CB5B", +"a* c #B0D886", +"b* c #CEE7B6", +"c* c #F4F9F1", +"d* c #778B96", +"e* c #798E9A", +"f* c #7C929F", +"g* c #8399A7", +"h* c #89A1B0", +"i* c #90A8B7", +"j* c #97ADBC", +"k* c #DEE5EA", +"l* c #E5EAEE", +"m* c #EAEDF0", +"n* c #E3E6E8", +"o* c #D5DADC", +"p* c #F0F1F2", +"q* c #FAFBF9", +"r* c #F2F8ED", +"s* c #E6F3DA", +"t* c #D8ECC6", +"u* c #D7ECC5", +"v* c #E5F2D8", +"w* c #F2F8EC", +"x* c #F8FAF7", +"y* c #F4F4F3", +"z* c #E2E4DF", +"A* c #8496A2", +"B* c #82949E", +"C* c #81929C", +"D* c #83949E", +"E* c #8797A1", +"F* c #8B9BA4", +"G* c #8D9CA4", +"H* c #8D9BA4", +"I* c #8B99A1", +"J* c #A4AFB6", +"K* c #E7EDDF", +"L* c #EDEDEB", +"M* c #EFEEEE", +"N* c #EBEBEB", +"O* c #E4E9DD", +" . + @ # $ % & * = - ; ", +" > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 ) 3 4 5 ", +" 6 ' 7 8 9 0 a b > ; c d e e f g h i j k l m n o p q r s t ", +" u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W y X Y Z ", +" ` ...+.@.#.$.%.&.*.E =.-.;.>.,.'.).!.M N O ~.Q R {.].^./.(._.:.<.[.}. ", +" |.1.2.3.M L $.%.&.*.F -.-.;.4.,.'.).!.M N O ~.Q R {.].^./.(.5.6.7.8.9. ", +" 0.a.b.3.M #.K J I c.G ;.;.G H I J d.L M N O P Q R S T ^.e.f.g.h.i.6.j.k. ", +" l.m.n.o.p.q.r.s.t.&.u.4.4.H ,.v.s.w.x.y.o.z.A.B.C.D.T ^.E.F.g.h.G.H.I. ", +" J.K.L.M.r.N.L K s.B I ,.,.I v.H.K !.n.O.P.Q.R.S.T.U.V.W.X.F.Y.p.Z.`. + ", +" .+++@+#+$+%+&+&.*+=+J '.'.J s.K -+q.p.3.O ~.;+>+,+'+S.)+!+&+=.~+{+]+^+ ", +" .+++/+(+_+:+<+[+}+|+%+%+Z.1+2+H 3+4+I.B t.t.4+H F %+-.5+H 6+M )+>+]+^+ ", +" .+++7+(+8+9+0+a+b+c+U d+e+O M L ).f+4+M.&+;.%+0.g+Z.H t.K #.h+)+i+V.^+ ", +" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.K t+h+)+>+]+^+ ", +" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.K t+h+)+>+]+^+ ", +" .+++7+(+8+9+0+a+j+k+l+u+n+o+v+q+{.r+P.w+).I |+9.s+;.H t.K #.h+)+i+V.^+ ", +" ++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.K t+h+)+>+]+ ", +" x+y+z+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.K t+h+P.A+ ", +" B+) C+D+E+F+a+j+k+l+m+n+o+p+q+{.r+P.q.).I 1+9.s+;.H t.G+H+I+J+K+. ", +" < L+M+N+O+P+P+Q+R+S+T+U+V+W+X+^.{.r+P.N.Y+Z+`+ @.@+@@@#@$@P+%@&@*@=@-@ ", +" g+;@>@,@'@'@,@'@'@'@'@)@!@~@{@]@^@/@(@_@:@<@[@}@'@'@'@,@'@'@'@,@|@1@g+ ", +" 2@3@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@5@6@7@ ", +" 8@9@0@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@a@b@n c@d@e@e@f@g@h@i@ ", +" j@k@l@m@n@o@p@p@p@p@p@p@p@p@p@p@p@p@p@p@p@p@p@p@q@r@s@t@u@v@w@x@y@z@A@B@C@ ", +" .+++D@E@F@l@G@H@I@J@K@L@K@L@L@K@L@L@K@L@L@K@L@M@N@O@P@Q@R@S@T@T@T@U@V@W@X@Y@ ", +" .+++7+(+Z@`@ #k.F@Z..#+#$+@###$#%#a.&#$#*#=#{ -#;#>#,#'#)#!#~#{#]#^#/#(#_#:#<#[# ", +" .+++/+(+8+9+0+}#|#1#2#3#4#5#6#`.%.4+7#>.G 8#9#0#a#b#c#d#e#e#f#g#e#h#i#j#k#l#m#n#o# ", +" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.p#q#r#s#t#g#u#v#w#x#y#z#A#B#u#C#e#D#E#F#G#H# ", +" .+++7+(+8+9+0+a+j+k+l+u+n+o+v+q+{.r+P.I#J#K#L#M#N#O#P#Q#R#S#2@2@T#U#V#W#X#v#Y#Z#`# $ ", +" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P..$+$@$#$$$Q#%$&$*$=$-$;$2@T#>$,$'$)$!$~${$]$^$/$ ", +" ++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+%#q#($_$:$%$<$[$}$|$1$2$;$2@T#3$4$5$6$&$7$8$9$0$a$ ", +" b$c$8+9+0+a+j+k+l+u+n+o+v+q+{.r+d$e$f$g$h$[$i$j$k$l$m$n$2@2@T#o$p$q$r$s$t$u$v$w$x$y$ ", +" z$A$X B$C$D$E$j+k+l+m+n+o+p+q+{.F$G$H$I$J$s$r$k$K$L$M$N$O$;$2@T#P$Q$R$S$q$|$T$U$V$W$X$ ", +" . Y$Z$`$ %.%P+Q+R++%@%#%$%o+p+q+{.P %%&%*%=%-%;%>%,%'%)%!%~%;$2@{%]%^%,%/%(%_%:%<%[%}%|% ", +" g+1%2%3%3%3%3%3%3%3%3%3%3%)@~@4%5%6%q#7%8%9%0%a%2@2@2@2@2@2@2@2@2@2@2@2@2@2@b%c%9%d%e%a$ ", +" f%g%h%i%h%h%i%h%h%h%i%h%i%h%h%i%h%j%q#k%l%9%m%n%2@;$;$2@;$;$;$2@;$;$2@;$;$2@b%o%9%p%q%r% ", +" s%t%u%v%v%v%v%v%v%v%v%v%v%v%v%v%v%w%q#x%y%9%z%A%2@2@2@2@2@2@2@2@2@2@2@2@2@2@b%B%9%C%D%8# ", +" E%F%.#G%H%I%J%K%K%K%J%K%J%K%K%J%K%L%M%N%O%9%P%Q%R%R%S%T%U%V%;$2@W%X%Y%Z%R%R%`% &.&+&@&#& ", +" .+$&%&&&*&=&-&;&>&,&'&)&)&)&)&)&)&!&.$~&{&]&^&^&/&^&^&(&_&:&;$2@T#<&(&^&^&/&^&^&[&}&|&1& ", +" .+++/+(+2&3&4&5&G ;.6&7&8&9&0&a&b&c&d&e&f&g&^&^&/&^&^&/&h&i&;$2@T#j&/&^&^&/&^&^&k&l&m&n& ", +" .+++7+(+8+9+0+a+j+o&p&q&r&M w.s&t&C l@0.u&v&/&/&/&/&/&/&h&i&2@2@T#j&/&/&/&/&/&/&w&x&y& ", +" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.z&A&B&C&^&/&^&^&/&h&i&;$2@T#j&/&^&^&/&D&E&F&G&H& ", +" .+++/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.I&q#J&K&L&/&^&^&/&h&i&;$2@T#j&/&^&^&/&M&N&O&G# ", +" P&++7+(+8+9+0+a+j+k+l+u+n+o+v+q+{.r+P.w+Q&0.R&S&L&/&/&/&^&T&U&U&V&W&/&/&/&X&Y&Z&`& * ", +" .*+*/+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).@*#*$*%*&*L&/&^&^&^&/&^&^&/&L&**=*-*;*>* ", +" ,*S+(+8+9+0+a+j+k+l+m+n+o+p+q+{.r+P.q.).I '*)*!*~*{*]*L&^&^&/&D&^*/*(*_*:*`&<* ", +" [*}*|*1*a+j+k+l+u+n+o+v+q+{.r+P.w+).I |+J#2*V%3*4*5*6*7*8*9*0*a*b*c*r% ", +" d*e*f*g*h*i*j*6.(.^.{.r+P.n.k*l*m*v n*o*p*q*r*s*t*u*v*w*x*y*z* ", +" A*B*C*D*E*F*G*G*H*I*J* K*L*#&M*N*O* "}; -- 2.45.1